66 minNumberInteractionsBohr(2.0),
71 particleMass = proton_mass_c2;
101 if(meanLoss <= minLoss) {
return meanLoss; }
106 G4double navr = meanLoss*meanLoss/siga;
108 if (navr >= minNumberInteractionsBohr) {
111 if ( meanLoss > minFraction*kineticEnergy ) {
112 G4double gam = (kineticEnergy - meanLoss)/particleMass + 1.0;
114 if(b2 < xmin*beta2) b2 = xmin*beta2;
117 siga *= 0.25*(1.0 + x)*(x3 + (1.0/b2 - 0.5)/(1.0/beta2 - 0.5) );
120 G4double twomeanLoss = meanLoss + meanLoss;
123 if(twomeanLoss < siga) {
127 x = (loss - meanLoss)/siga;
132 loss = G4RandGauss::shoot(meanLoss,siga);
134 }
while (0.0 > loss || loss > twomeanLoss);
140 loss = meanLoss*n/navr;
158 G4double etot = kineticEnergy + particleMass;
159 beta2 = kineticEnergy*(kineticEnergy + 2.0*particleMass)/(etot*etot);
160 G4double siga = (1.0/beta2 - 0.5) * twopi_mc2_rcl2 * tmax * length
161 * electronDensity * chargeSquare;
G4long G4Poisson(G4double mean)
G4BohrFluctuations(const G4String &nam="BohrFluc")
virtual ~G4BohrFluctuations()
virtual G4double Dispersion(const G4Material *, const G4DynamicParticle *, G4double, G4double) override
virtual void InitialiseMe(const G4ParticleDefinition *) override
virtual G4double SampleFluctuations(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double, G4double) override
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4Material * GetMaterial() const
G4double GetElectronDensity() const
G4double GetPDGMass() const
G4double GetPDGCharge() const