예제 #1
0
        public double AverageByBottomiumDistribution(
            LCFFieldFunction function
            )
        {
            CoordinateSystem   system  = new CoordinateSystem(Param);
            GlauberCalculation glauber = new GlauberCalculation(Param);

            double[,] functionColumnDensityValues
                = new double[system.XAxis.Count, system.YAxis.Count];

            for (int i = 0; i < system.XAxis.Count; i++)
            {
                for (int j = 0; j < system.YAxis.Count; j++)
                {
                    Func <double, double> integrand
                        = rapidity => function(system.XAxis[i], system.YAxis[j], rapidity);

                    functionColumnDensityValues[i, j]
                        = AverageRapidityDependence(integrand)
                          * glauber.NumberCollisionsField[i, j];
                }
            }
            SimpleFireballField functionColumnDensity = new SimpleFireballField(
                FireballFieldType.NumberCollisions, system, functionColumnDensityValues);

            return(functionColumnDensity.IntegrateValues()
                   / glauber.NumberCollisionsField.IntegrateValues());
        }
        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];
            }
        }
예제 #3
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();
        }