protected void PrepareJob( string jobTitle ) { CurrentJobTitle = jobTitle; SetJobStartTimeStamp(); LogMessages.Clear(); LogMessages.Append(LogHeader); }
protected void PrepareJob( string jobTitle, string[] statusTitles ) { CurrentJobTitle = jobTitle; SetStatusVariables(statusTitles); SetJobStartTimeStamp(); LogMessages.Clear(); LogMessages.Append(LogHeader); }
public void CalculateFreeWaveFunction() { PrepareJob("CalculateFreeWaveFunction", FreeWaveStatusTitles); try { QQFreeState freeState = new QQFreeState(GetQQStateParam()) { CalculationCancelToken = JobCancelToken, StatusValues = StatusValues }; freeState.SearchEigenfunction(); // quit here if process has been aborted if (JobCancelToken.IsCancellationRequested) { LogMessages.Clear(); LogMessages.Append(LogHeader + LogFooter); return; } UpdateOutputParameters(freeState); LogMessages.Clear(); LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#"); LogMessages.AppendLine("Temperature DebyeMass SoftScale BoundMass Energy GammaDamp "); LogMessages.AppendLine("(MeV) (MeV) (MeV) (MeV) (MeV) (MeV) "); LogMessages.AppendLine(); LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}", Temperature_MeV.ToString("G6"), DebyeMass_MeV.ToString("G6"), SoftScale_MeV.ToString("G6"), BoundMass_MeV.ToString("G6"), Energy_MeV.ToString("G6"), GammaDamp_MeV.ToString("G6"))); LogMessages.AppendLine(LogFooter); List <string> dataList = new List <string>(); dataList.Add(LogHeader + "#" + Environment.NewLine + "#"); dataList.AddRange(CreateWaveFunctionDataList(freeState)); File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList); } catch { throw; } }
protected void WriteOutputToLogAndDataFile( StringBuilder output, bool addLogHeaderAndFooter = true ) { StringBuilder content = new StringBuilder(output.ToString()); if (addLogHeaderAndFooter) { content.Insert(0, LogHeader); content.Append(LogFooter); } LogMessages.Clear(); LogMessages.Append(content); WriteDataFile(content); }
public void CalculateQuarkMass() { PrepareJob("CalculateQuarkMass", BoundWaveStatusTitles); try { QQBoundState boundState = new QQBoundState(GetQQStateParam(), QuantumNumberN) { CalculationCancelToken = JobCancelToken, StatusValues = StatusValues }; QuarkMass_MeV = boundState.SearchQuarkMass(BoundMass_MeV); // quit here if process has been aborted if (JobCancelToken.IsCancellationRequested) { LogMessages.Clear(); LogMessages.Append(LogHeader + LogFooter); return; } UpdateOutputParameters(boundState); LogMessages.Clear(); LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#" + Environment.NewLine + LogFooter); List <string> dataList = new List <string>(); dataList.Add(LogHeader + "#" + Environment.NewLine + "#"); dataList.AddRange(CreateWaveFunctionDataList(boundState)); File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList); } catch { throw; } }
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()); }
public void CalculateBinBoundaries() { PrepareJob("CalculateBinBoundaries", 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); // 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(string.Format("#{0,7}{1,12}{2,12}{3,14}{4,14}", "b (fm)", "Ncoll", "Npart", "dσ/db (fm)", "σ (fm²)")); LogMessages.AppendLine("#"); for (int i = 0; i < impactParams.Count; i++) { LogMessages.AppendLine(string.Format("{0,8}{1,12}{2,12}{3,14}{4,14}", impactParams[i].ToUIString(), nColls[i].ToUIString(), nParts[i].ToUIString(), dSigmadbs[i].ToUIString(), sigmas[i].ToUIString())); } LogMessages.AppendLine(); LogMessages.AppendLine(); LogMessages.AppendLine(string.Format("#{0,11}{1,19}{2,12}", "Centrality", "Bin size (fm)", "<Npart>")); LogMessages.AppendLine("#"); for (int binGroupIndex = 0; binGroupIndex < numberCentralityBins.Count; binGroupIndex++) { if (binGroupIndex > 0) { LogMessages.AppendLine(); } for (int binIndex = 0; binIndex < numberCentralityBins[binGroupIndex]; binIndex++) { LogMessages.AppendLine(string.Format("{0,12}{1,8} < b < {2,4}{3,12}", centralityBinStrings[binGroupIndex][binIndex], ImpactParamsAtBinBoundaries_fm[binGroupIndex][binIndex].ToUIString(), ImpactParamsAtBinBoundaries_fm[binGroupIndex][binIndex + 1].ToUIString(), MeanParticipantsInBin[binGroupIndex][binIndex].ToUIString())); } } LogMessages.Append(LogFooter); File.WriteAllText(YburnConfigFile.OutputPath + DataFileName, LogMessages.ToString()); }
public void CalculateDirectPionDecayWidths() { PrepareJob("CalculateDirectPionDecayWidths", DirectPionDecayWidthsStatusTitles); List <double> impactParams = new List <double>(); List <double> nCollQGPs = new List <double>(); List <double> nCollPions = new List <double>(); List <double> nColls = new List <double>(); int step = 0; do { // quit here if process has been aborted if (JobCancelToken.IsCancellationRequested) { LogMessages.Clear(); LogMessages.Append(LogHeader + LogFooter); return; } impactParams.Add(step * GridCellSize_fm); Fireball.Fireball fireball = CreateFireballToCalcDirectPionDecayWidth( impactParams[step]); // Set BjorkenLifeTime for the LogHeader if (step == 0) { BjorkenLifeTime_fm = fireball.BjorkenLifeTime; } // calculate the areas fireball.CalculateNumberCollisions(BreakupTemperature_MeV, out double nCollQGP, out double nCollPion); nCollQGPs.Add(nCollQGP); nCollPions.Add(nCollPion); nColls.Add(fireball.IntegrateFireballField(FireballFieldType.NumberCollisions)); StatusValues[0] = impactParams[step].ToUIString(); StatusValues[1] = nColls[step].ToUIString(); StatusValues[2] = nCollQGPs[step].ToUIString(); StatusValues[3] = nCollPions[step].ToUIString(); step++; }while((step == 1 ? true : nColls[step - 1] > 1)); // 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(string.Format("#{0,7}{1,12}{2,12}{3,12}", "b (fm)", "Ncoll", "NcollQGP", "NcollPion")); LogMessages.AppendLine("#"); for (int i = 0; i < impactParams.Count; i++) { LogMessages.AppendLine(string.Format("{0,8}{1,12}{2,12}{3,12}", impactParams[i].ToUIString(), nColls[i].ToUIString(), nCollQGPs[i].ToUIString(), nCollPions[i].ToUIString())); } LogMessages.Append(LogFooter); File.WriteAllText(YburnConfigFile.OutputPath + DataFileName, LogMessages.ToString()); }
public void CalculateDissociationDecayWidth() { PrepareJob("CalculateDissociationDecayWidth", BoundWaveStatusTitles); try { QQBoundState boundState = new QQBoundState(GetQQStateParam(), QuantumNumberN) { CalculationCancelToken = JobCancelToken, StatusValues = StatusValues }; boundState.SearchEigenfunction(); // quit here if process has been aborted if (JobCancelToken.IsCancellationRequested) { LogMessages.Clear(); LogMessages.Append(LogHeader + LogFooter); return; } UpdateOutputParameters(boundState); SetStatusVariables(CrossSectionStatusTitles); // calculate decay width and cross section DecayWidth decayWidth = new DecayWidth(JobCancelToken, boundState, MaxEnergy_MeV, EnergySteps, Temperature_MeV, StatusValues); decayWidth.CalculateGammaDiss(); // quit here if process has been aborted if (JobCancelToken.IsCancellationRequested) { LogMessages.Clear(); LogMessages.Append(LogHeader + LogFooter); return; } GammaDiss_MeV = decayWidth.GammaDiss_MeV; GammaTot_MeV = GammaDamp_MeV + GammaDiss_MeV; LogMessages.Clear(); LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#"); LogMessages.AppendLine("Temperature DebyeMass √<r²> SoftScale US_Scale BoundMass Energy GammaDamp GammaDiss GammaTot "); LogMessages.AppendLine("(MeV) (MeV) (fm) (Mev) (Mev) (MeV) (MeV) (MeV) (MeV) (MeV) "); LogMessages.AppendLine(); LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}{8,-12}{9,-12}", Temperature_MeV.ToString("G6"), DebyeMass_MeV.ToString("G6"), DisplacementRMS_fm.ToString("G6"), SoftScale_MeV.ToString("G6"), UltraSoftScale_MeV.ToString("G6"), BoundMass_MeV.ToString("G6"), Energy_MeV.ToString("G6"), GammaDamp_MeV.ToString("G6"), GammaDiss_MeV.ToString("G6"), GammaTot_MeV.ToString("G6"))); LogMessages.Append(LogFooter); List <string> dataList = new List <string>(); dataList.Add(LogHeader + "#" + Environment.NewLine + "#"); dataList.AddRange(CreateWaveFunctionDataList(boundState)); dataList.Add(string.Empty); dataList.Add(string.Empty); dataList.AddRange(decayWidth.CrossSectionStringList); File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList); } catch { throw; } }
public void CalculateBoundWaveFunction() { PrepareJob("CalculateBoundWaveFunction", BoundWaveStatusTitles); try { QQBoundState boundState = new QQBoundState(GetQQStateParam(), QuantumNumberN) { CalculationCancelToken = JobCancelToken, StatusValues = StatusValues, UseFixedAlpha = UseFixedAlpha }; boundState.SearchEigenfunction(); // quit here if process has been aborted if (JobCancelToken.IsCancellationRequested) { LogMessages.Clear(); LogMessages.Append(LogHeader + LogFooter); return; } UpdateOutputParameters(boundState); LogMessages.Clear(); LogMessages.AppendLine(LogHeader + "#" + Environment.NewLine + "#"); LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}", "Temperature", "DebyeMass", "√<r²>", "SoftScale", "US_Scale", "BoundMass", "Energy", "GammaDamp")); LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}", "(MeV)", "(MeV)", "(fm)", "(Mev)", "(Mev)", "(MeV)", "(MeV)", "(MeV)")); LogMessages.AppendLine(); LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}", Temperature_MeV.ToString("G6"), DebyeMass_MeV.ToString("G6"), DisplacementRMS_fm.ToString("G6"), SoftScale_MeV.ToString("G6"), UltraSoftScale_MeV.ToString("G6"), BoundMass_MeV.ToString("G6"), Energy_MeV.ToString("G6"), GammaDamp_MeV.ToString("G6"))); LogMessages.Append(LogFooter); List <string> dataList = new List <string>(); dataList.Add(LogHeader + "#" + Environment.NewLine + "#"); dataList.AddRange(CreateWaveFunctionDataList(boundState)); File.WriteAllLines(YburnConfigFile.OutputPath + DataFileName, dataList); } catch { throw; } }