50 #define G4VMscModel_h 1
272 if(ionisation) { x = ionisation->
GetDEDX(kinEnergy, couple); }
289 localtkin = kinEnergy;
313 if(localrange > range) {
346 x = (*xSectionTable)[(*theDensityIdx)[idx]]->Value(ekin,
idxTable)
347 *(*theDensityFactor)[idx]/(ekin*ekin);
352 x = (x > 0.0) ? 1.0/x :
DBL_MAX;
G4double GetKineticEnergy(G4double &range, const G4MaterialCutsCouple *)
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
G4double GetDEDX(G4double &kineticEnergy, const G4MaterialCutsCouple *)
G4double GetRangeForLoss(G4double &kineticEnergy, const G4MaterialCutsCouple *)
G4double ConvertTrueToGeom(G4double &tLength, G4double &gLength)
G4double GetDensity() const
void SetLateralDisplasmentFlag(G4bool val)
void SetStepLimitType(G4MscStepLimitType)
const G4Step * GetStep() const
G4double ComputeSafety(const G4ThreeVector &position, G4double limit=DBL_MAX)
G4StepPoint * GetPreStepPoint() const
G4double GetEnergy(const G4ParticleDefinition *part, G4double range, const G4MaterialCutsCouple *couple)
G4VEnergyLossProcess * GetIonisation() const
virtual G4double ComputeTrueStepLength(G4double geomPathLength)
const G4MaterialCutsCouple * CurrentCouple() const
virtual G4double ComputeTruePathLengthLimit(const G4Track &track, G4double &stepLimit)
const G4ThreeVector & GetPosition() const
G4double GetRange(const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
void SetRangeFactor(G4double)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double tmax) override
static const G4double inveplus
G4double ComputeGeomLimit(const G4Track &, G4double &presafety, G4double limit)
G4ThreeVector fDisplacement
G4double GetTransportMeanFreePath(const G4ParticleDefinition *part, G4double kinEnergy)
G4double ComputeSafety(const G4ThreeVector &pGlobalPoint, G4double maxRadius=DBL_MAX)
G4ParticleChangeForMSC * GetParticleChangeForMSC(const G4ParticleDefinition *p=nullptr)
void SetIonisation(G4VEnergyLossProcess *, const G4ParticleDefinition *part)
const G4ThreeVector & GetMomentumDirection() const
G4double GetDEDX(const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
G4double CheckNextStep(const G4ThreeVector &position, const G4ThreeVector &direction, const G4double currentMaxStep, G4double &newSafety)
G4MscStepLimitType steppingAlgorithm
void SetGeomFactor(G4double)
G4PhysicsTable * xSectionTable
G4double GetPDGCharge() const
G4VMscModel(const G4String &nam)
virtual G4double ComputeGeomPathLength(G4double truePathLength)
const G4Material * GetMaterial() const
virtual G4ThreeVector & SampleScattering(const G4ThreeVector &, G4double safety)