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(); }
/******************************************************************************************** * 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); }
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()); }