71 auto ioni =
material->GetIonisation();
74 e1Fluct = ioni->GetEnergy1fluct();
75 e2Fluct = ioni->GetEnergy2fluct();
109 if(a1+a2 <= 0.) { a3 /=
rate; }
116 if(a1 > 0.0) {
AddExcitation(rndmEngineF, a1,
e1, emean, loss, sig2e); }
119 if(a2 > 0.0) {
AddExcitation(rndmEngineF, a2,
e2, emean, loss, sig2e); }
121 if(sig2e > 0.0) {
SampleGauss(rndmEngineF, emean, sig2e, loss); }
132 const G4double namean = a3*w1*(alfa-1.)/((w1-1.)*alfa);
133 emean += namean*
e0*alfa1;
134 sig2e +=
e0*
e0*namean*(alfa-alfa1*alfa1);
152 if(sig2e > 0.0) {
SampleGauss(rndmEngineF, emean, sig2e, loss); }
static const G4double e1[44]
static const G4double e2[44]
G4double C(G4double temp)
G4double G4Log(G4double x)
G4long G4Poisson(G4double mean)
virtual void flatArray(const int size, double *vect)=0
void AddExcitation(CLHEP::HepRandomEngine *rndm, const G4double ax, const G4double ex, G4double &eav, G4double &eloss, G4double &esig2)
void SampleGauss(CLHEP::HepRandomEngine *rndm, const G4double eav, const G4double esig2, G4double &eloss)
~G4UrbanFluctuation() override
const G4Material * lastMaterial
G4UrbanFluctuation(const G4String &nam="UrbanFluc")
G4double SampleGlandz(CLHEP::HepRandomEngine *rndm, const G4Material *, const G4double tcut) override