52#ifndef G4UrbanAdjointMscModel_h
53#define G4UrbanAdjointMscModel_h 1
99 G4double& currentMinimalStep)
override;
119 inline void UpdateCache();
148 G4double tlimitminfix,tlimitminfix2;
172 G4int currentMaterialIndex;
177 G4double coeffc1,coeffc2,coeffc3,coeffc4;
182 G4bool latDisplasmentbackup ;
197 displacementFlag = val;
206 if (p1 != particle) {
210 ChargeSquare = charge*charge;
216inline G4double G4UrbanAdjointMscModel::Randomizetlimit()
219 if(tlimit > tlimitmin)
223 temptlimit = G4RandGauss::shoot(rndmEngineMod,tlimit,0.1*delta);
225 }
while ((temptlimit < tlimit-delta) ||
226 (temptlimit > tlimit+delta));
228 else { temptlimit = tlimitmin; }
235inline void G4UrbanAdjointMscModel::UpdateCache()
240 G4double facz = 0.990395+w*(-0.168386+w*0.093286) ;
241 coeffth1 = facz*(1. - 8.7780e-2/Zeff);
242 coeffth2 = facz*(4.0780e-2 + 1.7315e-4*Zeff);
246 coeffc1 = 2.3785 - Z13*(4.1981e-1 - Z13*6.3100e-2);
247 coeffc2 = 4.7526e-1 + Z13*(1.7694 - Z13*3.3885e-1);
248 coeffc3 = 2.3683e-1 - Z13*(1.8111 - Z13*3.2774e-1);
249 coeffc4 = 1.7888e-2 + Z13*(1.9659e-2 - Z13*2.6664e-3);
264 G4double a = (2.*xmeanth+9.*x2meanth-3.)/(2.*xmeanth-3.*x2meanth+1.);
269 if(rndmEngineMod->
flat() < prob) {
272 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
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *particle, G4double KineticEnergy, G4double AtomicNumber, G4double AtomicWeight=0., G4double cut=0., G4double emax=DBL_MAX) override
virtual G4double ComputeTrueStepLength(G4double geomStepLength) override
virtual void StartTracking(G4Track *) override
G4double ComputeTheta0(G4double truePathLength, G4double KineticEnergy)
virtual ~G4UrbanAdjointMscModel()
void SetNewDisplacementFlag(G4bool)
virtual G4double ComputeGeomPathLength(G4double truePathLength) override
virtual G4ThreeVector & SampleScattering(const G4ThreeVector &, G4double safety) override
virtual G4double ComputeTruePathLengthLimit(const G4Track &track, G4double ¤tMinimalStep) override
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &) override