示例#1
0
        private List <List <double> > CreateDecayWidthEvaluatedAtDopplerShiftedTemperatureDataList()
        {
            List <List <double> > dataList = new List <List <double> >();

            List <double> cosineValues = GetLinearAbscissaList(-1, 1, NumberAveragingAngles);

            dataList.Add(cosineValues);

            QQDataProvider provider = CreateQQDataProvider();

            List <DecayWidthAverager> averagers = new List <DecayWidthAverager>();

            foreach (BottomiumState state in BottomiumStates)
            {
                averagers.Add(provider.CreateDecayWidthAverager(state));
            }

            foreach (DecayWidthAverager averager in averagers)
            {
                PlotFunction function = cosine => averager.GetDecayWidth(
                    DecayWidthAverager.GetDopplerShiftedTemperature(
                        MediumTemperatures_MeV[0], MediumVelocities[0], cosine));

                AddPlotFunctionLists(dataList, cosineValues, function);
            }

            foreach (DecayWidthAverager averager in averagers)
            {
                PlotFunction function = cosine => averager.GetDecayWidth(MediumTemperatures_MeV[0]);

                AddPlotFunctionLists(dataList, cosineValues, function);
            }

            return(dataList);
        }
示例#2
0
 private void AppendDecayWidthValue(
     StringBuilder list,
     BottomiumState state,
     double temperature,
     double velocity,
     double electricField,
     double magneticField,
     QQDataProvider provider
     )
 {
     list.AppendFormat("{0,-20}", provider.GetInMediumDecayWidth(
                           state, temperature, velocity, electricField, magneticField).ToUIString());
 }
示例#3
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();
        }
示例#4
0
 private void AppendDataLine(
     StringBuilder list,
     double temperature,
     double velocity,
     double electricField,
     double magneticField,
     QQDataProvider provider
     )
 {
     list.AppendFormat("{0,-20}", temperature.ToUIString());
     list.AppendFormat("{0,-20}", velocity.ToUIString());
     foreach (BottomiumState state in BottomiumStates)
     {
         AppendDecayWidthValue(
             list, state, temperature, velocity, electricField, magneticField, provider);
     }
     list.AppendLine();
 }
        private static double CalculateSpinStateOverlap(
            BottomiumState tripletState,
            double magneticFieldStrength
            )
        {
            Dictionary <int, double> hfs     = QQDataProvider.GetHyperfineEnergySplitting(tripletState);
            Dictionary <int, double> overlap = new Dictionary <int, double>();

            foreach (int j in hfs.Keys)
            {
                double helper1 = 4 * Constants.MagnetonBottomQuark_fm * magneticFieldStrength
                                 * Constants.HbarC_MeV_fm / hfs[j];
                double helper2 = helper1 / (1 + Math.Sqrt(1 + helper1 * helper1));

                overlap.Add(j, helper2 * helper2 / (1 + helper2 * helper2));
            }

            return(QQDataProvider.AverageHyperfineBottomiumProperties(tripletState, overlap));
        }
示例#6
0
        private string GetList(
            DopplerShiftEvaluationType dopplerShiftEvaluationType,
            ElectricDipoleAlignment electricDipoleAlignment,
            List <double> mediumTemperatures,
            List <double> mediumVelocities,
            double electricField,
            double magneticField
            )
        {
            QQDataProvider provider = CreateQQDataProvider(
                dopplerShiftEvaluationType, electricDipoleAlignment);

            StringBuilder list = new StringBuilder();

            AppendHeader(list, dopplerShiftEvaluationType);
            AppendDataLines(
                list, mediumTemperatures, mediumVelocities, electricField, magneticField, provider);

            return(list.ToString());
        }
示例#7
0
        private List <List <double> > CreateEnergiesFromQQDataFileContinuousDataList()
        {
            List <List <double> > dataList = new List <List <double> >();

            List <double> temperatureValues = GetLinearAbscissaList(0, 800, 800);

            dataList.Add(temperatureValues);

            QQDataProvider provider = CreateQQDataProvider();

            foreach (BottomiumState state in BottomiumStates)
            {
                DecayWidthAverager averager = provider.CreateDecayWidthAverager(state);

                PlotFunction energyFunction = temperature => averager.GetEnergy(temperature);

                AddPlotFunctionLists(dataList, temperatureValues, energyFunction);
            }

            return(dataList);
        }
示例#8
0
        private FireballParam CreateFireballParam()
        {
            FireballParam param = new FireballParam
            {
                BreakupTemperature_MeV        = BreakupTemperature_MeV,
                CenterOfMassEnergy_TeV        = CenterOfMassEnergy_TeV,
                DiffusenessA_fm               = DiffusenessA_fm,
                DiffusenessB_fm               = DiffusenessB_fm,
                EMFCalculationMethod          = EMFCalculationMethod,
                EMFQuadratureOrder            = EMFQuadratureOrder,
                EMFUpdateInterval_fm          = EMFUpdateInterval_fm,
                ExpansionMode                 = ExpansionMode,
                FormationTimes_fm             = FormationTimes_fm,
                GridCellSize_fm               = GridCellSize_fm,
                GridRadius_fm                 = GridRadius_fm,
                ImpactParameter_fm            = ImpactParameter_fm,
                InitialMaximumTemperature_MeV = InitialMaximumTemperature_MeV,
                NuclearRadiusA_fm             = NuclearRadiusA_fm,
                NuclearRadiusB_fm             = NuclearRadiusB_fm,
                NucleonNumberA                = NucleonNumberA,
                NucleonNumberB                = NucleonNumberB,
                NucleusShapeA                 = NucleusShapeA,
                NucleusShapeB                 = NucleusShapeB,
                ProtonNumberA                 = ProtonNumberA,
                ProtonNumberB                 = ProtonNumberB,
                QGPConductivity_MeV           = QGPConductivity_MeV,
                QGPFormationTemperature_MeV   = QGPFormationTemperature_MeV,
                TemperatureProfile            = TemperatureProfile,
                ThermalTime_fm                = ThermalTime_fm,
                TransverseMomenta_GeV         = TransverseMomenta_GeV,
                UseElectricField              = UseElectricField,
                UseMagneticField              = UseMagneticField
            };

            QQDataProvider provider = CreateQQDataProvider();

            param.DecayWidthRetrievalFunction = provider.GetInMediumDecayWidth;

            return(param);
        }
示例#9
0
 private void AppendDataLines(
     StringBuilder list,
     List <double> mediumTemperatures,
     List <double> mediumVelocities,
     double electricField,
     double magneticField,
     QQDataProvider provider
     )
 {
     foreach (double temperature in mediumTemperatures)
     {
         foreach (double velocity in mediumVelocities)
         {
             AppendDataLine(
                 list, temperature, velocity, electricField, magneticField, provider);
         }
         if ((mediumTemperatures.Count > 1) && (mediumVelocities.Count > 1))
         {
             list.AppendLine();
         }
     }
 }
示例#10
0
        private List <List <double> > CreateEnergiesFromQQDataFileDataList(
            BottomiumState state
            )
        {
            List <List <double> > dataList = new List <List <double> >();

            List <QQDataSet> dataSets = QQDataProvider.GetBoundStateDataSets(
                QQDataPathFile, PotentialTypes, state);

            List <double> temperatures = new List <double>();
            List <double> energies     = new List <double>();

            foreach (QQDataSet dataSet in dataSets)
            {
                temperatures.Add(dataSet.Temperature);
                energies.Add(dataSet.Energy);
            }

            dataList.Add(temperatures);
            dataList.Add(energies);

            return(dataList);
        }
示例#11
0
        private List <List <double> > CreateDecayWidthsFromQQDataFileDataList(
            BottomiumState state
            )
        {
            List <List <double> > dataList = new List <List <double> >();

            List <QQDataSet> dataSets = QQDataProvider.GetBoundStateDataSets(
                QQDataPathFile, PotentialTypes, state);

            List <double> temperatures = new List <double>();
            List <double> decayWidths  = new List <double>();

            foreach (QQDataSet dataSet in dataSets)
            {
                temperatures.Add(dataSet.Temperature);
                decayWidths.Add(dataSet.GetGamma(DecayWidthType));
            }

            dataList.Add(temperatures);
            dataList.Add(decayWidths);

            return(dataList);
        }