Exemplo n.º 1
0
        public void ShowDecayWidthInput()
        {
            CurrentJobTitle = "ShowDecayWidthInput";

            List <List <QQDataSet> > dataSetLists = new List <List <QQDataSet> >();

            foreach (BottomiumState state in BottomiumStates)
            {
                dataSetLists.Add(QQDataProvider.GetBoundStateDataSets(
                                     QQDataPathFile, PotentialTypes, state));
            }

            LogMessages.Clear();
            foreach (BottomiumState state in BottomiumStates)
            {
                LogMessages.AppendFormat("{0,16}", state.ToUIString());
            }

            LogMessages.AppendLine();
            LogMessages.AppendLine();

            foreach (BottomiumState state in BottomiumStates)
            {
                LogMessages.AppendFormat("{0,6}{1,10}", "T", DecayWidthType);
            }

            LogMessages.AppendLine();
            LogMessages.AppendLine();

            for (int i = 0; i < dataSetLists[0].Count; i++)
            {
                foreach (List <QQDataSet> dataSetList in dataSetLists)
                {
                    if (i < dataSetList.Count)
                    {
                        LogMessages.AppendFormat("{0,6}{1,10}",
                                                 dataSetList[i].Temperature.ToUIString(),
                                                 dataSetList[i].GetGamma(DecayWidthType).ToUIString());
                    }
                    else
                    {
                        LogMessages.AppendFormat("{0,16}", "");
                    }
                }

                LogMessages.AppendLine();
            }

            LogMessages.AppendLine();
            LogMessages.AppendLine();
        }
Exemplo n.º 2
0
        /********************************************************************************************
        * Public members, functions and properties
        ********************************************************************************************/

        public void CalculateInMediumDecayWidth()
        {
            AssertInputValid_CalculateInMediumDecayWidth();

            PrepareJob("CalculateInMediumDecayWidth");

            string temperatureDecayWidthList = GetTemperatureDecayWidthList();

            LogMessages.AppendFormat("#" + Environment.NewLine + "#" + Environment.NewLine);
            LogMessages.AppendFormat(temperatureDecayWidthList);

            File.WriteAllText(YburnConfigFile.OutputPath + DataFileName,
                              LogHeader + "#" + Environment.NewLine + "#" + Environment.NewLine + temperatureDecayWidthList);
        }
Exemplo n.º 3
0
        public void CalculateSuppression()
        {
            PrepareJob("CalculateSuppression", BinBoundsStatusTitles);

            CalculateBinBoundaries(
                out List <int> numberCentralityBins, out List <List <string> > centralityBinStrings,
                out List <double> impactParams, out List <double> nColls, out List <double> nParts,
                out List <double> dSigmadbs, out List <double> sigmas);

            SetStatusVariables(SuppressionStatusTitles);
            DetermineMaxLifeTime();

            BottomiumVector[][][] qgpSuppressionFactors
                = CalculateQGPSuppressionFactors(numberCentralityBins);

            // quit here if process has been aborted
            if (JobCancelToken.IsCancellationRequested)
            {
                LogMessages.Clear();
                LogMessages.Append(LogHeader + LogFooter);
                return;
            }

            // prepare output
            LogMessages.Clear();
            LogMessages.Append(LogHeader);

            LogMessages.AppendLine();
            LogMessages.AppendLine();

            LogMessages.AppendLine("#Preliminary suppression factors:");
            LogMessages.AppendLine("#");
            LogMessages.AppendFormat("#{0,11}{1,12}{2,12}",
                                     "Centrality", "<Npart>", "pT (GeV/c)");
            foreach (string sStateName in Enum.GetNames(typeof(BottomiumState)))
            {
                LogMessages.AppendFormat("{0,12}", string.Format("RAAQGP({0})", sStateName));
            }
            LogMessages.AppendLine();
            LogMessages.AppendLine("#");

            for (int binGroupIndex = 0; binGroupIndex < numberCentralityBins.Count; binGroupIndex++)
            {
                if (binGroupIndex > 0)
                {
                    LogMessages.AppendLine();
                }

                for (int binIndex = 0; binIndex < numberCentralityBins[binGroupIndex]; binIndex++)
                {
                    for (int pTIndex = 0; pTIndex < TransverseMomenta_GeV.Count; pTIndex++)
                    {
                        LogMessages.AppendFormat("{0,12}{1,12}{2,12}",
                                                 centralityBinStrings[binGroupIndex][binIndex],
                                                 MeanParticipantsInBin[binGroupIndex][binIndex].ToUIString(),
                                                 TransverseMomenta_GeV[pTIndex].ToUIString());

                        foreach (BottomiumState state in Enum.GetValues(typeof(BottomiumState)))
                        {
                            LogMessages.AppendFormat("{0,12}",
                                                     qgpSuppressionFactors[binGroupIndex][binIndex][pTIndex][state].ToUIString());
                        }

                        LogMessages.AppendLine();
                    }

                    LogMessages.AppendFormat("{0,12}{1,12}{2,12}",
                                             centralityBinStrings[binGroupIndex][binIndex],
                                             MeanParticipantsInBin[binGroupIndex][binIndex].ToUIString(),
                                             "<pT>");

                    foreach (BottomiumState state in Enum.GetValues(typeof(BottomiumState)))
                    {
                        double[] rAAQGPsBinValues = new double[TransverseMomenta_GeV.Count];
                        for (int pTIndex = 0; pTIndex < TransverseMomenta_GeV.Count; pTIndex++)
                        {
                            rAAQGPsBinValues[pTIndex] = qgpSuppressionFactors[binGroupIndex][binIndex][pTIndex][state];
                        }

                        LogMessages.AppendFormat("{0,12}",
                                                 TransverseMomentumAverager.Calculate(state, TransverseMomenta_GeV.ToArray(), rAAQGPsBinValues)
                                                 .ToUIString());
                    }

                    LogMessages.AppendLine();
                }
            }

            LogMessages.AppendLine();
            LogMessages.AppendLine();

            LogMessages.AppendLine("#Final suppression factors:");
            LogMessages.AppendLine("#");
            LogMessages.AppendLine(string.Format(
                                       "#{0,11}{1,12}{2,12}{3,15}{4,15}{5,15}{6,15}{7,15}",
                                       "Centrality",
                                       "<Npart>",
                                       "pT (GeV/c)",
                                       "RAA(Y1S)",
                                       "RAA(Y2S)",
                                       "RAA(Y3S)",
                                       "(2S/1S)PbPb-pp",
                                       "(3S/1S)PbPb-pp"));
            LogMessages.AppendLine("#");

            // calculate final suppression factors
            double[][] rAAs = new double[TransverseMomenta_GeV.Count][];
            // run through the centrality bin groups
            for (int binGroupIndex = 0; binGroupIndex < numberCentralityBins.Count; binGroupIndex++)
            {
                if (binGroupIndex > 0)
                {
                    LogMessages.AppendLine();
                }

                // run through the centrality bins
                for (int binIndex = 0; binIndex < numberCentralityBins[binGroupIndex]; binIndex++)
                {
                    // run through the pT bins
                    for (int pTIndex = 0; pTIndex < TransverseMomenta_GeV.Count; pTIndex++)
                    {
                        rAAs[pTIndex] = CalculateFullSuppressionFactors(qgpSuppressionFactors[binGroupIndex][binIndex][pTIndex]);

                        LogMessages.AppendFormat("{0,12}{1,12}{2,12}",
                                                 centralityBinStrings[binGroupIndex][binIndex],
                                                 MeanParticipantsInBin[binGroupIndex][binIndex].ToUIString(),
                                                 TransverseMomenta_GeV[pTIndex].ToUIString());

                        for (int stateIndex = 0; stateIndex < 5; stateIndex++)
                        {
                            LogMessages.AppendFormat("{0,15}",
                                                     rAAs[pTIndex][stateIndex].ToUIString());
                        }

                        LogMessages.AppendLine();
                    }

                    LogMessages.AppendFormat("{0,12}{1,12}{2,12}",
                                             centralityBinStrings[binGroupIndex][binIndex],
                                             MeanParticipantsInBin[binGroupIndex][binIndex].ToUIString(),
                                             "<pT>");

                    // average of all pT values
                    for (int l = 0; l < 5; l++)
                    {
                        double[] rAABinValues = new double[TransverseMomenta_GeV.Count];
                        for (int pTIndex = 0; pTIndex < TransverseMomenta_GeV.Count; pTIndex++)
                        {
                            rAABinValues[pTIndex] = rAAs[pTIndex][l];
                        }

                        LogMessages.AppendFormat("{0,15}",
                                                 TransverseMomentumAverager.Calculate((BottomiumState)l,
                                                                                      TransverseMomenta_GeV.ToArray(),
                                                                                      rAABinValues).ToUIString());
                    }

                    LogMessages.AppendLine();
                }
            }

            LogMessages.Append(LogFooter);

            File.WriteAllText(YburnConfigFile.OutputPath + DataFileName, LogMessages.ToString());
        }