35#ifndef G4UrbanAdjointMscModel_h
36#define G4UrbanAdjointMscModel_h 1
74 G4double& currentMinimalStep)
override;
97 inline void UpdateCache();
114 G4double masslimite, lambdalimit, fr;
122 G4double tlimitminfix, tlimitminfix2;
149 G4double coeffc1, coeffc2, coeffc3, coeffc4;
154 G4int currentMaterialIndex;
159 G4bool latDisplasmentbackup;
166 displacementFlag = val;
181 ChargeSquare = charge * charge;
186inline G4double G4UrbanAdjointMscModel::Randomizetlimit()
189 if(tlimit > tlimitmin)
191 G4double delta = tlimit - tlimitmin;
194 temptlimit = G4RandGauss::shoot(rndmEngineMod, tlimit, 0.1 * delta);
196 }
while((temptlimit < tlimit - delta) || (temptlimit > tlimit + delta));
200 temptlimit = tlimitmin;
207inline void G4UrbanAdjointMscModel::UpdateCache()
212 G4double facz = 0.990395 + w * (-0.168386 + w * 0.093286);
213 coeffth1 = facz * (1. - 8.7780e-2 / Zeff);
214 coeffth2 = facz * (4.0780e-2 + 1.7315e-4 * Zeff);
218 coeffc1 = 2.3785 - Z13 * (4.1981e-1 - Z13 * 6.3100e-2);
219 coeffc2 = 4.7526e-1 + Z13 * (1.7694 - Z13 * 3.3885e-1);
220 coeffc3 = 2.3683e-1 - Z13 * (1.8111 - Z13 * 3.2774e-1);
221 coeffc4 = 1.7888e-2 + Z13 * (1.9659e-2 - Z13 * 2.6664e-3);
236 (2. * xmeanth + 9. * x2meanth - 3.) / (2. * xmeanth - 3. * x2meanth + 1.);
237 G4double prob = (a + 2.) * xmeanth / a;
241 if(rndmEngineMod->
flat() < prob)
247 cth = -1. + 2. * rndmEngineMod->
flat();
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static G4Electron * Electron()
G4double GetPDGMass() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *particle, G4double KineticEnergy, G4double AtomicNumber, G4double AtomicWeight=0., G4double cut=0., G4double emax=DBL_MAX) override
G4UrbanAdjointMscModel(const G4String &nam="UrbanMsc")
G4UrbanAdjointMscModel & operator=(const G4UrbanAdjointMscModel &right)=delete
G4double ComputeTrueStepLength(G4double geomStepLength) override
~G4UrbanAdjointMscModel() override
void StartTracking(G4Track *) override
G4double ComputeTheta0(G4double truePathLength, G4double KineticEnergy)
G4UrbanAdjointMscModel(const G4UrbanAdjointMscModel &)=delete
void SetNewDisplacementFlag(G4bool)
G4double ComputeGeomPathLength(G4double truePathLength) override
G4ThreeVector & SampleScattering(const G4ThreeVector &, G4double safety) override
G4double ComputeTruePathLengthLimit(const G4Track &track, G4double ¤tMinimalStep) override
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override