52 #ifndef UrbanMscModel93_h
53 #define UrbanMscModel93_h 1
57 #include "G4VMscModel.hh"
58 #include "G4MscStepLimitType.hh"
61 #include "G4SystemOfUnits.hh"
63 class G4ParticleChangeForMSC;
65 class G4LossTableManager;
78 void Initialise(
const G4ParticleDefinition*,
const G4DataVector&);
83 G4double KineticEnergy,
84 G4double AtomicNumber,
85 G4double AtomicWeight=0.,
87 G4double emax=DBL_MAX);
92 G4double& currentMinimalStep);
99 G4double KineticEnergy);
109 inline void SetParticle(
const G4ParticleDefinition*);
186 mass = p->GetPDGMass();
187 charge = p->GetPDGCharge()/CLHEP::eplus;
202 G4double lnZ1 = G4Log(
Zeff+1.);
218 G4double KineticEnergy)
223 static const G4double c_highland = 13.6*CLHEP::MeV;
226 KineticEnergy*(KineticEnergy+2.*
mass)));
242 G4double
a = (2.*xmeanth+9.*x2meanth-3.)/(2.*xmeanth-3.*x2meanth+1.);
243 G4double
prob = (a+2.)*xmeanth/
a;
247 if(G4UniformRand() <
prob) {
248 cth = -1.+2.*G4Exp(G4Log(G4UniformRand())/(a+1.));
250 cth = -1.+2.*G4UniformRand();
const G4ParticleDefinition * particle
const G4MaterialCutsCouple * couple
G4ParticleChangeForMSC * fParticleChange
G4int currentMaterialIndex
G4double ComputeTheta0(G4double truePathLength, G4double KineticEnergy)
void Initialise(const G4ParticleDefinition *, const G4DataVector &)
G4double ComputeGeomPathLength(G4double truePathLength)
G4double currentRadLength
void SetParticle(const G4ParticleDefinition *)
G4double LatCorrelation()
UrbanMscModel93(const G4String &nam="UrbanMsc93")
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *particle, G4double KineticEnergy, G4double AtomicNumber, G4double AtomicWeight=0., G4double cut=0., G4double emax=DBL_MAX)
void StartTracking(G4Track *)
G4LossTableManager * theManager
G4double currentKinEnergy
G4double SimpleScattering(G4double xmeanth, G4double x2meanth)
G4double SampleDisplacement()
Abs< T >::type abs(const T &t)
G4double ComputeTrueStepLength(G4double geomStepLength)
UrbanMscModel93 & operator=(const UrbanMscModel93 &right)
G4double SampleCosineTheta(G4double trueStepLength, G4double KineticEnergy)
virtual ~UrbanMscModel93()
G4ThreeVector & SampleScattering(const G4ThreeVector &, G4double safety)
G4double ComputeTruePathLengthLimit(const G4Track &track, G4double ¤tMinimalStep)