/********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public BinBoundaryCalculator(
            FireballParam fireballParam,
            CancellationToken cancellationToken
            )
        {
            FireballParam     = fireballParam.Clone();
            CancellationToken = cancellationToken;
        }
Пример #2
0
        private Fireball CreateFireball()
        {
            FireballParam param = FireballParam.Clone();

            param.ImpactParameter_fm = CurrentImpactParam;

            return(new Fireball(param));
        }
 public static FireballElectromagneticField CreateFireballElectricField(
     FireballParam param
     )
 {
     return(new FireballElectromagneticField(
                FireballFieldType.ElectricFieldStrength,
                new CoordinateSystem(param),
                new CollisionalElectromagneticField(param).CalculateAverageElectricFieldStrength,
                param.EMFUpdateInterval_fm));
 }
Пример #4
0
        /********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public QGPSuppression(
            FireballParam fireballParam,
            List <int> numberCentralityBins,
            List <List <double> > impactParamsAtBinBoundaries,
            CancellationToken cancellationToken
            )
        {
            FireballParam               = fireballParam.Clone();
            NumberCentralityBins        = numberCentralityBins;
            ImpactParamsAtBinBoundaries = impactParamsAtBinBoundaries;
            CancellationToken           = cancellationToken;

            FlatImpactParamsAtBinBoundaries = GetFlatImpactParams();
            NumberFlatBins     = FlatImpactParamsAtBinBoundaries.Count - 1;
            ArrayReshapingMask = GetArrayReshapingMask();
        }
Пример #5
0
        /********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public GlauberCalculation(
            FireballParam param
            )
        {
            Param = param.Clone();

            AssertValidMembers();

            InitCoordinateSystem();
            InitInelasticppCrossSection();
            InitNucleusAB();
            InitNucleonNumberDensityFieldsAB();
            InitNucleonNumberColumnDensityFieldsAB();
            InitOverlapField();
            InitNumberCollisionsField();
            InitNumberParticipantsField();
            InitTemperatureScalingField();
        }
Пример #6
0
        /********************************************************************************************
        * Public static members, functions and properties
        ********************************************************************************************/

        public static void CreateNucleusPair(
            FireballParam param,
            out Nucleus nucleusA,
            out Nucleus nucleusB
            )
        {
            nucleusA = CreateNucleus(
                shape: param.NucleusShapeA,
                nucleonNumber: param.NucleonNumberA,
                protonNumber: param.ProtonNumberA,
                nuclearRadius_fm: param.NuclearRadiusA_fm,
                diffuseness_fm: param.DiffusenessA_fm);

            nucleusB = CreateNucleus(
                shape: param.NucleusShapeB,
                nucleonNumber: param.NucleonNumberB,
                protonNumber: param.ProtonNumberB,
                nuclearRadius_fm: param.NuclearRadiusB_fm,
                diffuseness_fm: param.DiffusenessB_fm);
        }
Пример #7
0
        /********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public CollisionalElectromagneticField(
            FireballParam param
            )
        {
            NucleusPositionA = param.NucleusPositionA;
            NucleusPositionB = param.NucleusPositionB;

            Nucleus.CreateNucleusPair(param, out Nucleus nucleusA, out Nucleus nucleusB);

            NucleusEMFA = new NucleusElectromagneticField(
                param.EMFCalculationMethod,
                param.PartonPeakRapidity,
                nucleusA,
                param.EMFQuadratureOrder);

            NucleusEMFB = new NucleusElectromagneticField(
                param.EMFCalculationMethod,
                -param.PartonPeakRapidity,
                nucleusB,
                param.EMFQuadratureOrder);

            LCFFieldAverager = new LCFFieldAverager(param);
        }
Пример #8
0
        public FireballParam Clone()
        {
            FireballParam param = new FireballParam
            {
                Nullable_CenterOfMassEnergy_TeV      = Nullable_CenterOfMassEnergy_TeV,
                Nullable_DecayWidthRetrievalFunction = Nullable_DecayWidthRetrievalFunction,
                Nullable_DiffusenessA_fm             = Nullable_DiffusenessA_fm,
                Nullable_DiffusenessB_fm             = Nullable_DiffusenessB_fm,
                Nullable_EMFCalculationMethod        = Nullable_EMFCalculationMethod,
                Nullable_EMFQuadratureOrder          = Nullable_EMFQuadratureOrder,
                Nullable_EMFUpdateInterval_fm        = Nullable_EMFUpdateInterval_fm,
                Nullable_ExpansionMode                 = Nullable_ExpansionMode,
                Nullable_FormationTimes_fm             = Nullable_FormationTimes_fm,
                Nullable_GridCellSize_fm               = Nullable_GridCellSize_fm,
                Nullable_GridRadius_fm                 = Nullable_GridRadius_fm,
                Nullable_ImpactParameter_fm            = Nullable_ImpactParameter_fm,
                Nullable_InitialMaximumTemperature_MeV = Nullable_InitialMaximumTemperature_MeV,
                Nullable_BreakupTemperature_MeV        = Nullable_BreakupTemperature_MeV,
                Nullable_QGPFormationTemperature_MeV   = Nullable_QGPFormationTemperature_MeV,
                Nullable_NuclearRadiusA_fm             = Nullable_NuclearRadiusA_fm,
                Nullable_NuclearRadiusB_fm             = Nullable_NuclearRadiusB_fm,
                Nullable_NucleonNumberA                = Nullable_NucleonNumberA,
                Nullable_NucleonNumberB                = Nullable_NucleonNumberB,
                Nullable_ProtonNumberA                 = Nullable_ProtonNumberA,
                Nullable_ProtonNumberB                 = Nullable_ProtonNumberB,
                Nullable_QGPConductivity_MeV           = Nullable_QGPConductivity_MeV,
                Nullable_NucleusShapeA                 = Nullable_NucleusShapeA,
                Nullable_NucleusShapeB                 = Nullable_NucleusShapeB,
                Nullable_TemperatureProfile            = Nullable_TemperatureProfile,
                Nullable_ThermalTime_fm                = Nullable_ThermalTime_fm,
                Nullable_TransverseMomenta_GeV         = Nullable_TransverseMomenta_GeV,
                Nullable_UseElectricField              = Nullable_UseElectricField,
                Nullable_UseMagneticField              = Nullable_UseMagneticField
            };

            return(param);
        }
        private void GetValuesFromGlauberCalculation(
            double impactParam,
            out double ncoll,
            out double npart,
            out double dsigmadb,
            out double sigma
            )
        {
            FireballParam param = FireballParam.Clone();

            param.ImpactParameter_fm = impactParam;

            GlauberCalculation calc = new GlauberCalculation(param);

            ncoll = calc.TotalNumberCollisions;
            npart = calc.TotalNumberParticipants;

            dsigmadb = 2 * Math.PI * impactParam * (1.0 - Math.Exp(-ncoll));
            sigma    = param.GridCellSize_fm * dsigmadb;
            if (Sigmas.Count > 0)
            {
                sigma += Sigmas[Sigmas.Count - 1];
            }
        }
Пример #10
0
        /********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public Fireball(
            FireballParam param
            )
        {
            Param    = param.Clone();
            LifeTime = -1;

            // The initial step should change the temperature by 1/3 percent for pure Bjorken flow
            // (which is the case in the initial stages)
            TimeFactor  = 1e-2;
            CurrentTime = Param.ThermalTime_fm;
            TimeStep    = CurrentTime * TimeFactor;          //  = 3 * DeltaT(tF)/T(tF) * tF

            AssertValidMembers();

            GlauberCalculation = new GlauberCalculation(Param);

            InitCoordinateSystem();
            InitV();
            InitElectromagneticField();
            InitTemperature();
            InitDecayWidth();
            InitDampingFactor();
        }
Пример #11
0
 public CoordinateSystem(
     FireballParam param
     ) : this(param.GridRadius_fm, param.GridCellSize_fm, param.IsCollisionSymmetric)
 {
 }
Пример #12
0
        /********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public LCFFieldAverager(
            FireballParam param
            )
        {
            Param = param.Clone();
        }