89 minNumberInteractionsBohr(10.0),
98 particleMass = chargeSquare = ipotFluct = electronDensity = f1Fluct = f2Fluct
99 = e1Fluct = e2Fluct = e1LogFluct = e2LogFluct = ipotLogFluct = e0 = esmall
140 if (meanLoss < minLoss) {
return meanLoss; }
147 G4double beta2 = tau*(tau + 2.0)/gam2;
158 (meanLoss >= minNumberInteractionsBohr*tmax))
162 (1.+massrate*(2.*gam+massrate)) ;
163 if (tmaxkine <= 2.*tmax)
167 * electronDensity * chargeSquare);
175 G4double twomeanLoss = meanLoss + meanLoss;
178 }
while (0.0 > loss || twomeanLoss < loss);
193 if (material != lastMaterial) {
203 esmall = 0.5*sqrt(e0*ipotFluct);
208 if(tmax <= e0) {
return meanLoss; }
212 if(meanLoss < 25.*ipotFluct)
223 for (
G4int istep=0; istep < nstep; ++istep) {
227 G4double a1 = 0. , a2 = 0., a3 = 0. ;
229 if(tmax > ipotFluct) {
232 if(w2 > ipotLogFluct) {
233 G4double C = meanLoss*(1.-rate)/(w2-ipotLogFluct);
234 a1 = C*f1Fluct*(w2-e1LogFluct)/e1Fluct;
235 if(w2 > e2LogFluct) {
236 a2 = C*f2Fluct*(w2-e2LogFluct)/e2Fluct;
244 a1 = meanLoss*(1.-rate)/e1;
267 a3 = rate*meanLoss*(tmax-e0)/(e0*tmax*
G4Log(w1));
320 alfa = w1*(nmaxCont+a3)/(w1*nmaxCont+a3);
322 G4double namean = a3*w1*(alfa-1.)/((w1-1.)*alfa);
323 emean += namean*e0*alfa1;
324 sig2e += e0*e0*namean*(alfa-alfa1*alfa1);
369 * electronDensity * chargeSquare;
380 if(part != particle) {
static G4Pow * GetInstance()
ThreeVector shoot(const G4int Ap, const G4int Af)
G4IonisParamMat * GetIonisation() const
G4long G4Poisson(G4double mean)
G4double GetKineticEnergy() const
G4double expA(G4double A) const
G4double GetEnergy2fluct() const
G4double GetLogEnergy2fluct() const
G4UniversalFluctuation(const G4String &nam="UniFluc")
G4ParticleDefinition * GetDefinition() const
G4double GetLogMeanExcEnergy() const
virtual G4double Dispersion(const G4Material *, const G4DynamicParticle *, G4double, G4double)
G4double GetEnergy0fluct() const
virtual ~G4UniversalFluctuation()
virtual void SetParticleAndCharge(const G4ParticleDefinition *, G4double q2)
G4double GetElectronDensity() const
virtual void InitialiseMe(const G4ParticleDefinition *)
virtual G4double SampleFluctuations(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double, G4double, G4double)
G4double G4Log(G4double x)
G4double GetLogEnergy1fluct() const
G4double GetPDGMass() const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double GetMeanExcitationEnergy() const
G4double GetF2fluct() const
G4double GetPDGCharge() const
G4double GetF1fluct() const
const G4Material * GetMaterial() const
G4double GetEnergy1fluct() const