42 #ifndef UrbanMscModel93_h
43 #define UrbanMscModel93_h 1
47 #include "G4VMscModel.hh"
48 #include "G4MscStepLimitType.hh"
51 #include "G4SystemOfUnits.hh"
53 class G4ParticleChangeForMSC;
55 class G4LossTableManager;
68 void Initialise(
const G4ParticleDefinition*,
const G4DataVector&);
73 G4double KineticEnergy,
74 G4double AtomicNumber,
75 G4double AtomicWeight=0.,
77 G4double emax=DBL_MAX);
82 G4double& currentMinimalStep);
89 G4double KineticEnergy);
99 inline void SetParticle(
const G4ParticleDefinition*);
176 mass = p->GetPDGMass();
177 charge = p->GetPDGCharge()/CLHEP::eplus;
192 G4double lnZ1 = G4Log(
Zeff+1.);
208 G4double KineticEnergy)
213 static const G4double c_highland = 13.6*
CLHEP::MeV;
216 KineticEnergy*(KineticEnergy+2.*
mass)));
232 G4double
a = (2.*xmeanth+9.*x2meanth-3.)/(2.*xmeanth-3.*x2meanth+1.);
233 G4double prob = (a+2.)*xmeanth/
a;
237 if(G4UniformRand() < prob) {
238 cth = -1.+2.*G4Exp(G4Log(G4UniformRand())/(a+1.));
240 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)