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()); }
public double CalculateAverageMagneticFieldStrength( double properTime_fm, double conductivity_MeV ) { LCFFieldFunction function = (x_fm, y_fm, rapidity) => CalculateMagneticFieldInLCF( properTime_fm, x_fm, y_fm, rapidity, conductivity_MeV).Norm; return(LCFFieldAverager.AverageByBottomiumDistribution(function)); }
/******************************************************************************************** * Public members, functions and properties ********************************************************************************************/ public double CalculateAverageSpinStateOverlap( BottomiumState tripletState, double properTime_fm ) { FireballParam param = CreateFireballParam(); LCFFieldFunction mixingCoefficientSquared = (x, y, rapidity) => { CollisionalElectromagneticField emf = new CollisionalElectromagneticField(param); double B_per_fm2 = emf.CalculateMagneticFieldInLCF( properTime_fm, x, y, rapidity, QGPConductivity_MeV).Norm; return(CalculateSpinStateOverlap(tripletState, B_per_fm2)); }; LCFFieldAverager avg = new LCFFieldAverager(param); return(avg.AverageByBottomiumDistribution(mixingCoefficientSquared)); }