51#ifndef G4VEnergyLossProcess_h
52#define G4VEnergyLossProcess_h 1
158 G4bool ascii =
false)
override;
244 size_t& idxCouple)
const;
382 inline std::vector<G4TwoPeaksXS*>*
TwoPeaksXS()
const;
573 G4double kinEnergy,
size_t& idx)
const
1035 return (
nullptr !=
emModels && index < emModels->size())
1036 ? (*emModels)[index] :
nullptr;
G4double condition(const G4ErrorSymMatrix &m)
G4VEmModel * GetModel(G4int idx, G4bool ver=false)
G4VEmModel * SelectModel(G4double energy, size_t index)
const G4Material * GetMaterial() const
G4double Energy(const std::size_t index) const
G4double Value(const G4double energy, std::size_t &lastidx) const
void SetCurrentCouple(const G4MaterialCutsCouple *)
const G4ParticleDefinition * BaseParticle() const
G4double GetDEDXForScaledEnergy(G4double scaledKinE)
G4double ScaledKinEnergyForLoss(G4double range)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=nullptr, const G4Region *region=nullptr)
G4CrossSectionType fXSType
G4PhysicsTable * RangeTableForLoss() const
G4double GetLimitScaledRangeForScaledEnergy(G4double scaledKinE)
const G4ParticleDefinition * theGamma
G4bool UseBaseMaterial() const
G4double GetContinuousStepLimit(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety) override
void SetMaxKinEnergy(G4double e)
G4bool lossFluctuationFlag
G4ParticleChangeForLoss fParticleChange
void PreparePhysicsTable(const G4ParticleDefinition &) override
G4PhysicsTable * theDEDXTable
G4double GetCSDADEDX(G4double kineticEnergy, const G4MaterialCutsCouple *)
G4PhysicsTable * InverseRangeTable() const
G4double MeanFreePath(const G4Track &track)
void SetFluctModel(G4VEmFluctuationModel *)
const G4DataVector * theCuts
G4double preStepLogScaledEnergy
G4VEnergyLossProcess(G4VEnergyLossProcess &)=delete
G4double GetKineticEnergy(G4double range, const G4MaterialCutsCouple *)
G4PhysicsTable * CSDARangeTable() const
void SetSpline(G4bool val)
G4PhysicsTable * theIonisationTable
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition *, const G4ParticleDefinition *)=0
void SelectModel(G4double kinEnergy)
void SetRangeTableForLoss(G4PhysicsTable *p)
const G4ParticleDefinition * baseParticle
G4int NumberOfSubCutoffRegions() const
G4PhysicsTable * theInverseRangeTable
G4PhysicsVector * LambdaPhysicsVector(const G4MaterialCutsCouple *, G4double cut)
void ProcessDescription(std::ostream &outFile) const override
const G4ParticleDefinition * thePositron
G4double GetScaledRangeForScaledEnergy(G4double scaledKinE)
G4double GetIonisationForScaledEnergy(G4double scaledKinE)
G4PhysicsTable * theIonisationSubTable
G4PhysicsTable * BuildDEDXTable(G4EmTableType tType=fRestricted)
G4VEmModel * GetModelByIndex(size_t idx=0, G4bool ver=false) const
const G4MaterialCutsCouple * currentCouple
G4double MaxKinEnergy() const
const G4ParticleDefinition * theGenericIon
G4bool TablesAreBuilt() const
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition *, const G4Material *, G4double cut)
G4double preStepScaledEnergy
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
const G4Element * GetCurrentElement() const
void SetDEDXBinning(G4int nbins)
void SetStepFunction(G4double v1, G4double v2)
G4double GetLambda(G4double kineticEnergy, const G4MaterialCutsCouple *)
G4VSubCutProducer * subcutProducer
void SetEmModel(G4VEmModel *, G4int index=0)
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
const G4Material * currentMaterial
G4VEnergyLossProcess & operator=(const G4VEnergyLossProcess &right)=delete
G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
void FillSecondariesAlongStep(G4double weight)
G4EmModelManager * modelManager
G4double ContinuousStepLimit(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety)
std::vector< G4TwoPeaksXS * > * TwoPeaksXS() const
G4VEmFluctuationModel * fluctModel
void SetParticle(const G4ParticleDefinition *p)
G4EmParameters * theParameters
G4VEmModel * EmModel(size_t index=0) const
G4PhysicsTable * SecondaryRangeTable() const
const std::vector< G4double > * theDensityFactor
void StreamInfo(std::ostream &out, const G4ParticleDefinition &part, G4bool rst=false) const
size_t idxDEDXunRestricted
G4PhysicsTable * theRangeTableForLoss
void SetLossFluctuations(G4bool val)
void SetCrossSectionType(G4CrossSectionType val)
const G4ParticleDefinition * Particle() const
void SetInverseRangeTable(G4PhysicsTable *p)
G4bool RetrievePhysicsTable(const G4ParticleDefinition *, const G4String &directory, G4bool ascii) override
G4VEmModel * SelectModelForMaterial(G4double kinEnergy, size_t &idxCouple) const
G4bool StoreTable(const G4ParticleDefinition *p, G4PhysicsTable *, G4bool ascii, const G4String &directory, const G4String &tname)
void ActivateForcedInteraction(G4double length, const G4String ®ion, G4bool flag=true)
G4CrossSectionType CrossSectionType() const
void SetDynamicMassCharge(G4double massratio, G4double charge2ratio)
G4double MinKinEnergy() const
G4GPILSelection aGPILSelection
void SetBaseParticle(const G4ParticleDefinition *p)
size_t currentCoupleIndex
G4double CrossSectionBiasingFactor() const
std::vector< const G4Region * > * scoffRegions
std::vector< G4TwoPeaksXS * > * fXSpeaks
G4bool IsIonisationProcess() const
G4PhysicsTable * theLambdaTable
G4double CrossSectionPerVolume(G4double kineticEnergy, const G4MaterialCutsCouple *couple)
const std::vector< G4int > * theDensityIdx
void SetDEDXTable(G4PhysicsTable *p, G4EmTableType tType)
void SetTwoPeaksXS(std::vector< G4TwoPeaksXS * > *p)
void SetSecondaryRangeTable(G4PhysicsTable *p)
G4PhysicsTable * BuildLambdaTable(G4EmTableType tType=fRestricted)
G4double maxKinEnergyCSDA
G4bool StorePhysicsTable(const G4ParticleDefinition *, const G4String &directory, G4bool ascii=false) override
~G4VEnergyLossProcess() override
G4double GetCSDARange(G4double kineticEnergy, const G4MaterialCutsCouple *)
void SetIonisation(G4bool val)
G4bool IsRegionForCubcutProcessor(const G4Track &aTrack)
void DefineMaterial(const G4MaterialCutsCouple *couple)
std::vector< G4Track * > scTracks
G4double GetDEDX(G4double kineticEnergy, const G4MaterialCutsCouple *)
G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety, G4GPILSelection *selection) override
G4VEmFluctuationModel * FluctModel() const
void SetLinearLossLimit(G4double val)
void SetLowestEnergyLimit(G4double)
G4bool RetrieveTable(const G4ParticleDefinition *p, G4PhysicsTable *, G4bool ascii, const G4String &directory, const G4String &tname, G4bool mandatory)
G4EmBiasingManager * biasManager
void SetLambdaTable(G4PhysicsTable *p)
const G4ParticleDefinition * secondaryParticle
void BuildPhysicsTable(const G4ParticleDefinition &) override
G4VEnergyLossProcess(const G4String &name="EnergyLoss", G4ProcessType type=fElectromagnetic)
G4VEmModel * currentModel
G4PhysicsTable * theSecondaryRangeTable
G4double preStepKinEnergy
G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &) override
G4VAtomDeexcitation * atomDeexcitation
G4PhysicsTable * theDEDXunRestrictedTable
G4double GetRange(G4double kineticEnergy, const G4MaterialCutsCouple *)
std::vector< G4VEmModel * > * emModels
G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple, const G4DynamicParticle *dp, G4double length)
size_t CurrentMaterialCutsCoupleIndex() const
G4PhysicsTable * IonisationTable() const
void ActivateSubCutoff(const G4Region *region)
void PrintWarning(const G4String &, G4double val) const
void SetSecondaryParticle(const G4ParticleDefinition *p)
G4PhysicsTable * LambdaTable() const
void SetCSDARangeTable(G4PhysicsTable *pRange)
size_t NumberOfModels() const
const G4ParticleDefinition * particle
void ComputeLambdaForScaledEnergy(G4double scaledKinE, G4double logScaledKinE)
G4double preStepLogKinEnergy
G4PhysicsTable * DEDXunRestrictedTable() const
const G4ParticleDefinition * theElectron
G4double GetLambdaForScaledEnergy(G4double scaledKinE)
G4PhysicsTable * theCSDARangeTable
G4LossTableManager * lManager
virtual void StreamProcessInfo(std::ostream &) const
G4SafetyHelper * safetyHelper
G4PhysicsTable * DEDXTable() const
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &) override
void StartTracking(G4Track *) override
void SetMinKinEnergy(G4double e)
std::vector< G4DynamicParticle * > secParticles
const G4ParticleDefinition * SecondaryParticle() const
const char * name(G4int ptype)