104 if (averageLoss <
minLoss) {
return averageLoss; }
140 }
while (0.0 > loss || twomeanLoss < loss);
152 auto ioni =
material->GetIonisation();
153 e0 = ioni->GetEnergy0fluct();
158 ipotFluct = ioni->GetMeanExcitationEnergy();
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); }
static const G4double e1[44]
G4double G4Log(G4double x)
G4long G4Poisson(G4double mean)
static constexpr double eV
virtual void flatArray(const int size, double *vect)=0
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4Material * GetMaterial() 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
static constexpr double eplus
static constexpr double electron_mass_c2
static constexpr double keV
static constexpr double twopi_mc2_rcl2
ThreeVector shoot(const G4int Ap, const G4int Af)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments