60 minLoss(10.*
CLHEP::eV)
104 if (averageLoss <
minLoss) {
return averageLoss; }
129 siga = std::sqrt((tmax/beta2 - 0.5*tcut)*CLHEP::twopi_mc2_rcl2*
138 loss = G4RandGauss::shoot(rndmEngineF,
meanLoss, siga);
140 }
while (0.0 > loss || twomeanLoss < loss);
146 loss =
meanLoss*G4RandGamma::shoot(rndmEngineF, neff, 1.0)/neff;
153 e0 = ioni->GetEnergy0fluct();
158 ipotFluct = ioni->GetMeanExcitationEnergy();
162 const G4double scaling = std::min(1.+0.5*CLHEP::keV/tcut, 1.50);
166 G4Log(2.*CLHEP::electron_mass_c2*beta2*gam2)-beta2 : 0.0;
167 return SampleGlandz(rndmEngineF, material, tcut)*scaling;
195 if(a1 <= 0.) { a3 /=
rate; }
202 if(a1 > 0.0) {
AddExcitation(rndmEngineF, a1, e1, emean, loss, sig2e); }
204 if(sig2e > 0.0) {
SampleGauss(rndmEngineF, emean, sig2e, loss); }
215 const G4double namean = a3*w1*(alfa-1.)/((w1-1.)*alfa);
216 emean += namean*
e0*alfa1;
217 sig2e +=
e0*
e0*namean*(alfa-alfa1*alfa1);
235 if(sig2e > 0.0) {
SampleGauss(rndmEngineF, emean, sig2e, loss); }
253 return (tmax/(beta*beta) - 0.5*tcut) * CLHEP::twopi_mc2_rcl2 * length
G4double G4Log(G4double x)
G4long G4Poisson(G4double mean)
virtual void flatArray(const int size, double *vect)=0
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4Material * GetMaterial() const
G4IonisParamMat * GetIonisation() const
G4double GetElectronDensity() const
G4double GetPDGMass() const
G4double GetPDGCharge() const
const G4ParticleDefinition * particle
G4double SampleFluctuations(const G4MaterialCutsCouple *, const G4DynamicParticle *, const G4double, const G4double, const G4double, const G4double) override
void AddExcitation(CLHEP::HepRandomEngine *rndm, const G4double ax, const G4double ex, G4double &eav, G4double &eloss, G4double &esig2)
void InitialiseMe(const G4ParticleDefinition *) override
G4double minNumberInteractionsBohr
void SampleGauss(CLHEP::HepRandomEngine *rndm, const G4double eav, const G4double esig2, G4double &eloss)
G4double Dispersion(const G4Material *, const G4DynamicParticle *, const G4double, const G4double, const G4double) override
void SetParticleAndCharge(const G4ParticleDefinition *, G4double q2) override
virtual G4double SampleGlandz(CLHEP::HepRandomEngine *rndm, const G4Material *, const G4double tcut)
~G4UniversalFluctuation() override
G4UniversalFluctuation(const G4String &nam="UniFluc")
G4double m_Inv_particleMass