66 minNumberInteractionsBohr(10.0),
123 if (meanLoss <
minLoss) {
return meanLoss; }
132 G4double beta2 = tau*(tau + 2.0)/gam2;
147 if (tmaxkine <= 2.*tmax)
158 G4double twomeanLoss = meanLoss + meanLoss;
162 }
while (0.0 > loss || twomeanLoss < loss);
192 if(tmax <=
e0) {
return meanLoss; }
214 a1 = meanLoss*(1.-
rate)/
e1;
239 if(a1 > 0.0) {
AddExcitation(rndmEngineF, a1,
e1, emean, loss, sig2e); }
242 if(a2 > 0.0) {
AddExcitation(rndmEngineF, a2,
e2, emean, loss, sig2e); }
244 if(sig2e > 0.0) {
SampleGauss(rndmEngineF, emean, sig2e, loss); }
256 G4double namean = a3*w1*(alfa-1.)/((w1-1.)*alfa);
257 emean += namean*
e0*alfa1;
258 sig2e +=
e0*
e0*namean*(alfa-alfa1*alfa1);
276 if(sig2e > 0.0) {
SampleGauss(rndmEngineF, emean, sig2e, loss); }
virtual void InitialiseMe(const G4ParticleDefinition *) final
G4double GetLogEnergy1fluct() const
G4double GetEnergy1fluct() const
const G4Material * lastMaterial
G4double GetF1fluct() const
virtual G4double Dispersion(const G4Material *, const G4DynamicParticle *, G4double, G4double) override
static constexpr double twopi_mc2_rcl2
virtual G4double SampleFluctuations(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double, G4double) override
G4double GetLogMeanExcEnergy() const
G4double GetPDGCharge() const
virtual void flatArray(const int size, double *vect)=0
void AddExcitation(CLHEP::HepRandomEngine *rndm, G4double a, G4double e, G4double &eav, G4double &eloss, G4double &esig2)
G4double GetPDGMass() const
G4double G4Log(G4double x)
G4double GetEnergy0fluct() const
G4double m_Inv_particleMass
G4double minNumberInteractionsBohr
G4ParticleDefinition * GetDefinition() const
static constexpr double electron_mass_c2
virtual void SetParticleAndCharge(const G4ParticleDefinition *, G4double q2) final
G4double GetEnergy2fluct() const
static constexpr double eV
G4double GetMeanExcitationEnergy() const
ThreeVector shoot(const G4int Ap, const G4int Af)
virtual ~G4UniversalFluctuation()
static constexpr double eplus
const G4ParticleDefinition * particle
G4IonisParamMat * GetIonisation() const
void SampleGauss(CLHEP::HepRandomEngine *rndm, G4double eav, G4double esig2, G4double &eloss)
G4double GetLogEnergy2fluct() const
G4double GetKineticEnergy() const
G4UniversalFluctuation(const G4String &nam="UniFluc")
G4long G4Poisson(G4double mean)
const G4Material * GetMaterial() const
G4double GetF2fluct() const
static constexpr double keV
G4double GetElectronDensity() const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments