Beispiel #1
0
        /********************************************************************************************
        * Public members, functions and properties
        ********************************************************************************************/

        public void ArchiveQQData()
        {
            string pathFile = QQDataPathFile;

            QQDataSet dataSet = new QQDataSet(
                n: QuantumNumberN,
                l: QuantumNumberL,
                colorState: ColorState,
                potentialType: PotentialType,
                temperature: Temperature_MeV,
                debyeMass: DebyeMass_MeV,
                displacementRMS: DisplacementRMS_fm,
                softScale: SoftScale_MeV,
                ultraSoftScale: UltraSoftScale_MeV,
                boundMass: BoundMass_MeV,
                energy: Energy_MeV,
                gammaDamp: GammaDamp_MeV,
                gammaDiss: GammaDiss_MeV,
                gammaTot: GammaTot_MeV);

            QQDataDoc.Write(pathFile, dataSet);

            LogMessages.Clear();
            LogMessages.AppendLine("Results have been saved to QQ-data file.");
            LogMessages.AppendLine();
            LogMessages.AppendLine();
        }
Beispiel #2
0
        public void ShowInverseCumulativeMatrix()
        {
            CurrentJobTitle = "ShowInverseCumulativeMatrix";

            LogMessages.Clear();
            LogMessages.AppendLine("#Inverse cumulative matrix:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(BottomiumCascade.GetInverseCumulativeMatrixString());
            LogMessages.AppendLine();
        }
Beispiel #3
0
        public void ShowBranchingRatioMatrix()
        {
            CurrentJobTitle = "ShowBranchingRatioMatrix";

            LogMessages.Clear();
            LogMessages.AppendLine("#Branching ratio matrix:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(BottomiumCascade.GetBranchingRatioMatrixString());
            LogMessages.AppendLine();
        }
        public void ShowEMFNormalizationFactor()
        {
            CurrentJobTitle = "ShowEMFNormalizationFactor";

            LogMessages.Clear();
            LogMessages.AppendLine("#EMF Normalization Factor:");
            LogMessages.AppendLine();
            LogMessages.AppendLine("1/fm² * e/(m_π)² = " + EMFNormalization.ToString());
            LogMessages.AppendLine();
        }
Beispiel #5
0
        public void ShowArchivedQQData()
        {
            string pathFile = QQDataPathFile;

            LogMessages.Clear();
            LogMessages.AppendLine("Current QQ-data file:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(pathFile);
            LogMessages.AppendLine();
            LogMessages.AppendLine(QQDataDoc.ReadAllText(pathFile));
        }
Beispiel #6
0
        public void ShowProtonProtonDimuonDecays()
        {
            CurrentJobTitle = "ShowProtonProtonDimuonDecays";

            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            LogMessages.Clear();
            LogMessages.AppendLine("#Scaled pp dimuon decays:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(cascade.GetNormalizedProtonProtonDimuonDecaysString());
            LogMessages.AppendLine();
        }
Beispiel #7
0
        public void ShowInitialQQPopulations()
        {
            CurrentJobTitle = "ShowInitialQQPopulations";

            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            LogMessages.Clear();
            LogMessages.AppendLine("#Initial QQ populations:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(cascade.GetInitialQQPopulationsString());
            LogMessages.AppendLine();
        }
Beispiel #8
0
        public void ShowY1SFeedDownFractions()
        {
            CurrentJobTitle = "ShowY1SFeedDownFractions";

            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            LogMessages.Clear();
            LogMessages.AppendLine("#Y1S feed down fractions:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(cascade.GetY1SFeedDownFractionsString());
            LogMessages.AppendLine();
        }
Beispiel #9
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();
        }
Beispiel #10
0
        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;
            }
        }
Beispiel #11
0
        private void AppendLogEvent(DateTime when, string why, string who, string what)
        {
            string tmp = String.Format("[{0}] {1}: '{3}'", new string[] { when.ToShortTimeString(), why, who, what });

            LogMessages.AppendLine(tmp);
            Log.Info(tmp);
            try {
                if (Helper.PLUGIN_WINDOW_ACTIVE)
                {
                    if (this.ctrlListMessages != null)
                    {
                        this.ctrlTextboxMessageHistory.Clear();
                        this.ctrlTextboxMessageHistory.Label = LogMessages.ToString();
                    }
                }
            } catch (Exception e) {
                Log.Error(e);
            }
        }
Beispiel #12
0
        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;
            }
        }
Beispiel #13
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());
        }
Beispiel #14
0
        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());
        }
Beispiel #15
0
 private void CompareResultsWithDataSet(
     QQDataSet dataSet
     )
 {
     LogMessages.Clear();
     LogMessages.AppendLine("Comparison of current results to archived data:");
     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}",
                                          "",
                                          "DebyeMass",
                                          "√<r²>",
                                          "SoftScale",
                                          "US_Scale",
                                          "BoundMass",
                                          "Energy",
                                          "GammaDamp",
                                          "GammaDiss",
                                          "GammaTot"));
     LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}{8,-12}{9,-12}",
                                          "",
                                          "(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}",
                                          "Current:",
                                          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.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}{8,-12}{9,-12}",
                                          "Archived:",
                                          dataSet.DebyeMass.ToString("G6"),
                                          dataSet.DisplacementRMS.ToString("G6"),
                                          dataSet.SoftScale.ToString("G6"),
                                          dataSet.UltraSoftScale.ToString("G6"),
                                          dataSet.BoundMass.ToString("G6"),
                                          dataSet.Energy.ToString("G6"),
                                          dataSet.GammaDamp.ToString("G6"),
                                          dataSet.GammaDiss.ToString("G6"),
                                          dataSet.GammaTot.ToString("G6")));
     LogMessages.AppendLine(string.Format("{0,-12}{1,-12}{2,-12}{3,-12}{4,-12}{5,-12}{6,-12}{7,-12}{8,-12}{9,-12}",
                                          "Deviation:",
                                          (DebyeMass_MeV / dataSet.DebyeMass - 1).ToString("G3"),
                                          (DisplacementRMS_fm / dataSet.DisplacementRMS - 1).ToString("G3"),
                                          (SoftScale_MeV / dataSet.SoftScale - 1).ToString("G3"),
                                          (UltraSoftScale_MeV / dataSet.UltraSoftScale - 1).ToString("G3"),
                                          (BoundMass_MeV / dataSet.BoundMass - 1).ToString("G3"),
                                          (Energy_MeV / dataSet.Energy - 1).ToString("G3"),
                                          (GammaDamp_MeV / dataSet.GammaDamp - 1).ToString("G3"),
                                          (GammaDiss_MeV / dataSet.GammaDiss - 1).ToString("G3"),
                                          (GammaTot_MeV / dataSet.GammaTot - 1).ToString("G3")));
     LogMessages.AppendLine();
     LogMessages.AppendLine();
 }
Beispiel #16
0
        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;
            }
        }
Beispiel #17
0
        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());
        }
Beispiel #18
0
        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;
            }
        }