170 secondaryParticle(nullptr),
172 idxSCoffRegions(nullptr),
174 theDEDXTable(nullptr),
175 theDEDXSubTable(nullptr),
176 theDEDXunRestrictedTable(nullptr),
177 theIonisationTable(nullptr),
178 theIonisationSubTable(nullptr),
179 theRangeTableForLoss(nullptr),
180 theCSDARangeTable(nullptr),
181 theSecondaryRangeTable(nullptr),
182 theInverseRangeTable(nullptr),
183 theLambdaTable(nullptr),
184 theSubLambdaTable(nullptr),
185 theDensityFactor(nullptr),
186 theDensityIdx(nullptr),
187 baseParticle(nullptr),
188 lossFluctuationFlag(true),
190 tablesAreBuilt(false),
195 useDeexcitation(false),
197 currentCouple(nullptr),
414 if(index >= n) {
for(
G4int i=n; i<=index; ++i) {
emModels.push_back(0);} }
447 G4cout <<
"G4VEnergyLossProcess::PreparePhysicsTable for "
454 if(masterProcess && masterProcess !=
this) {
isMaster =
false; }
474 if(pname !=
"deuteron" && pname !=
"triton" &&
475 pname !=
"alpha+" && pname !=
"helium" &&
476 pname !=
"hydrogen") {
486 size_t n = v->
size();
487 for(
size_t j=0; j<
n; ++j) {
488 if((*v)[j] ==
this) {
502 G4cout <<
"### G4VEnergyLossProcess::PreparePhysicsTable()"
503 <<
" interrupted for "
550 if(initialMass <
MeV) {
632 for(
G4int i=0; i<nmod; ++i) {
652 for (
size_t j=0; j<
n; ++j) {
670 G4cout <<
"G4VEnergyLossProcess::PrepearPhysicsTable() is done "
672 <<
" isIon= " <<
isIon;
680 G4cout <<
" SubCutoff Regime is ON for regions: " <<
G4endl;
695 G4cout <<
"### G4VEnergyLossProcess::BuildPhysicsTable() for "
742 for(
G4int i=0; i<numberOfModels; ++i) {
758 num ==
"e+" || num ==
"mu+" ||
759 num ==
"mu-" || num ==
"proton"||
760 num ==
"pi+" || num ==
"pi-" ||
761 num ==
"kaon+" || num ==
"kaon-" ||
762 num ==
"alpha" || num ==
"anti_proton" ||
763 num ==
"GenericIon")))
790 G4cout <<
"### G4VEnergyLossProcess::BuildPhysicsTable() done for "
803 G4cout <<
"G4VEnergyLossProcess::BuildDEDXTable() of type " << tType
821 G4cout <<
"G4VEnergyLossProcess::BuildDEDXTable WARNING: wrong type "
831 G4cout << numOfCouples <<
" materials"
833 <<
" maxKinEnergy= " << emax
835 <<
" EmTableType= " << tType
836 <<
" table= " << table <<
" " <<
this
839 if(!table) {
return table; }
846 for(
size_t i=0; i<numOfCouples; ++i) {
849 G4cout <<
"G4VEnergyLossProcess::BuildDEDXVector Idx= " << i
850 <<
" flagTable= " << table->
GetFlag(i)
858 if((*table)[i]) {
delete (*table)[i]; }
876 G4cout <<
"G4VEnergyLossProcess::BuildDEDXTable(): table is built for "
897 G4cout <<
"G4VEnergyLossProcess::BuildLambdaTable WARNING: wrong type "
902 G4cout <<
"G4VEnergyLossProcess::BuildLambdaTable() of type "
903 << tType <<
" for process "
906 <<
" EmTableType= " << tType
907 <<
" table= " << table
910 if(!table) {
return table;}
925 for(
size_t i=0; i<numOfCouples; ++i) {
943 if(emax <= emin) { emax = 2*emin; }
958 G4cout <<
"Lambda table is built for "
972 G4cout << std::setprecision(6);
977 G4cout <<
" dE/dx and range tables from "
981 <<
" Lambda tables from threshold to "
984 <<
" bins per decade, spline: "
998 G4cout <<
" CSDA range table up"
1009 G4cout <<
"non restricted DEDXTable address= "
1052 reg = regionStore->
GetRegion(
"DefaultRegionForTheWorld",
false);
1229 G4cout <<
"G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength ";
1233 <<
" Ekin(MeV)= " << preStepKinEnergy/
MeV
1237 <<
"InteractionLength= " << x/
cm <<
"[cm] " <<
G4endl;
1293 if(eloss < 0.0) { eloss = 0.0; }
1362 if(preSafety < rcut) {
1367 if(preSafety < rcut) { yes =
true; }
1371 G4double postSafety = preSafety - length;
1372 if(postSafety < rcut) {
1375 if(postSafety < rcut) { yes =
true; }
1407 eloss, eadd, length);
1408 if(eloss < 0.0) { eloss = 0.5*eloss_before; }
1449 if(eloss >= esecfluo) {
1521 for(
G4int i=0; i<
n; ++i) {
1544 G4double subcut = (*theSubCuts)[idx];
1546 if(cut <= subcut) {
return esec; }
1552 *(((*theSubLambdaTable)[(*theDensityIdx)[idx]])->Value(e,
idxSubLambda));
1556 if(length*cross <
perMillion) {
return esec; }
1578 fragment += del/length;
1579 if (fragment > 1.0) {
break; }
1588 std::vector<G4DynamicParticle*>::iterator it;
1594 tracks.push_back(t);
1597 esec += 2.0*electron_mass_c2;
1610 }
while (fragment <= 1.0);
1711 for (
G4int i=0; i<num; ++i) {
1795 G4cout <<
"Physics tables are stored for "
1798 <<
" in the directory <" << directory
1802 G4cout <<
"Fail to store Physics Tables for "
1805 <<
" in the directory <" << directory
1823 G4cout <<
"G4VEnergyLossProcess::RetrievePhysicsTable() for "
1852 "InverseRange",fpi))
1868 if(!fpi) yes =
false;
1870 "SubIonisation",yes))
1907 G4bool isRetrieved =
false;
1915 for(
size_t i=0; i<
n; ++i) {
1916 if((*aTable)[i]) { (*aTable)[i]->SetSpline(
true); }
1921 <<
" is Retrieved from <" << filename <<
">"
1927 if(mandatory && !isRetrieved) {
1931 << filename <<
"> is not Retrieved"
1974 if(cross < 0.0) { cross = 0.0; }
2052 <<
" is added to the list of collaborative processes of "
2074 for (
size_t i=0; i<
n; ++i) {
2080 pv = (*p)[(*theDensityIdx)[i]];
2131 for (
size_t i=0; i<
n; ++i) {
2136 pv = (*p)[(*theDensityIdx)[i]];
2137 if(pv) { rmax = pv->
Value(emax,
idxCSDA)/(*theDensityFactor)[i]; }
2152 G4cout <<
"### Set Range table " << p
2164 G4cout <<
"### Set SecondaryRange table " << p
2176 G4cout <<
"### Set InverseRange table " << p
2187 G4cout <<
"### Set Lambda table " << p
2207 for (i=0; i<
n; ++i) {
2208 pv = (*theLambdaTable)[i];
2214 for (
size_t j=0; j<nb; ++j) {
2227 <<
" Max CS at i= " << i <<
" emax(MeV)= " << emax/
MeV
2228 <<
" lambda= " << smax <<
G4endl;
2233 for (i=0; i<
n; ++i) {
2234 pv = (*theLambdaTable)[i];
2236 G4int j = (*theDensityIdx)[i];
2250 G4cout <<
"### Set SebLambda table " << p
2274 G4cout <<
"### SetCrossSectionBiasingFactor: for "
2276 <<
" biasFactor= " << f <<
" weightFlag= " << flag
2291 G4cout <<
"### ActivateForcedInteraction: for "
2293 <<
" length(mm)= " << length/
mm
2294 <<
" in G4Region <" << region
2295 <<
"> weightFlag= " << flag
2309 if (0.0 <= factor) {
2318 G4cout <<
"### ActivateSecondaryBiasing: for "
2320 <<
" factor= " << factor
2321 <<
" in G4Region <" << region
2322 <<
"> energyLimit(MeV)= " << energyLimit/
MeV
2341 if(0.0 < val && val < 1.0) {
2351 if(0.0 < v1 && 0.0 < v2 && v2 < 1.e+50) {
2354 }
else if(v1 <= 0.0) {
2373 if(2 < n && n < 1000000000) {
2407 G4String ss =
"G4VEnergyLossProcess::" + tit;
2409 ed <<
"Parameter is out of range: " << val
2410 <<
" it will have no effect!\n" <<
" Process "
G4VEnergyLossProcess(const G4String &name="EnergyLoss", G4ProcessType type=fElectromagnetic)
G4double condition(const G4ErrorSymMatrix &m)
G4bool UseCutAsFinalRange() const
G4VSubCutProducer * SubCutProducer()
G4double MaxSecondaryKinEnergy(const G4DynamicParticle *dynParticle)
G4int NumberOfBinsPerDecade() const
G4ParticleDefinition * GetDefinition() const
const G4VProcess * GetMasterProcess() const
G4LossTableManager * lManager
std::vector< G4double > theEnergyOfCrossSectionMax
void SetDEDXTable(G4PhysicsTable *p, G4EmTableType tType)
G4int GetParentID() const
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
G4int NumberOfBins() const
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
void InitializeForPostStep(const G4Track &)
G4double preStepKinEnergy
const G4String & GetName() const
G4SafetyHelper * GetSafetyHelper() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
const std::vector< G4double > * GetDensityFactors()
static void SetPhysicsVector(G4PhysicsTable *physTable, size_t idx, G4PhysicsVector *vec)
G4int WorkerVerbose() const
G4double MaxKinEnergy() const
static G4LossTableManager * Instance()
void ActivateForcedInteraction(G4double length=0.0, const G4String &r="")
G4GPILSelection aGPILSelection
virtual G4double SampleFluctuations(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmax, G4double length, G4double meanLoss)=0
virtual void SampleSecondaries(const G4Step &step, std::vector< G4Track * > &tracks, G4double &eloss, G4double cut) const =0
void AlongStepDeexcitation(std::vector< G4Track * > &tracks, const G4Step &step, G4double &eLoss, G4int coupleIndex)
G4double ApplySecondaryBiasing(std::vector< G4DynamicParticle * > &, const G4Track &track, G4VEmModel *currentModel, G4ParticleChangeForGamma *pParticleChange, G4double &eloss, G4int coupleIdx, G4double tcut, G4double safety=0.0)
virtual void CorrectionsAlongStep(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &eloss, G4double &niel, G4double length)
void UpdateEmModel(const G4String &, G4double, G4double)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin=0.0, G4double tmax=DBL_MAX)=0
std::ostringstream G4ExceptionDescription
G4double GetKineticEnergy() const
void PrintInfoDefinition(const G4ParticleDefinition &part)
CLHEP::Hep3Vector G4ThreeVector
void SetIonisation(G4bool val)
G4double GetStepLength() const
G4double HighEnergyLimit() const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
const G4DynamicParticle * GetDynamicParticle() const
G4bool SecondaryBiasingRegion(G4int coupleIdx)
G4bool IsPIXEActive() const
G4PhysicsTable * SubLambdaTable() const
G4double LowestElectronEnergy() const
G4VEmModel * currentModel
G4VEmModel * GetModel(G4int, G4bool ver=false)
G4double GetProductionCut(G4int index) const
void DeRegister(G4VEnergyLossProcess *p)
G4PhysicsTable * RangeTableForLoss() const
virtual G4double GetContinuousStepLimit(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety)
const std::vector< G4double > * theDensityFactor
G4StepStatus GetStepStatus() const
G4bool BuildCSDARange() const
const G4String & GetName() const
G4PhysicsTable * SecondaryRangeTable() const
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
void AddCollaborativeProcess(G4VEnergyLossProcess *)
const G4ThreeVector & GetPosition() const
const std::vector< G4int > * theDensityIdx
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
void ActivateForcedInteraction(G4double length=0.0, const G4String ®ion="", G4bool flag=true)
void SetLinearLossLimit(G4double val)
const G4ParticleDefinition * secondaryParticle
virtual G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
void SetStepFunction(G4double v1, G4double v2)
G4bool ForcedInteractionRegion(G4int coupleIdx)
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4PhysicsTable * CSDARangeTable() const
G4PhysicsTable * theSecondaryRangeTable
virtual G4bool StorePhysicsTable(const G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
G4VEmFluctuationModel * fluctModel
G4ParticleChangeForLoss fParticleChange
G4VSubCutProducer * subcutProducer
G4double theNumberOfInteractionLengthLeft
void SelectModel(G4double kinEnergy)
G4bool GetFlag(size_t idx) const
G4PhysicsTable * theIonisationTable
void SetTouchableHandle(const G4TouchableHandle &apValue)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *, const G4Region *)
G4VEmModel * GetModelByIndex(G4int idx=0, G4bool ver=false) const
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
size_t currentCoupleIndex
G4int NumberOfModels() const
void ResetForcedInteraction()
G4PhysicsTable * IonisationTableForSubsec() const
G4double GetParentWeight() const
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
G4VEmFluctuationModel * GetModelOfFluctuations()
const G4DataVector * SubCutoff() const
size_t GetVectorLength() const
G4double preStepRangeEnergy
G4PhysicsVector * LambdaPhysicsVector(const G4MaterialCutsCouple *, G4double cut)
void InitializeForAlongStep(const G4Track &)
G4double GetProposedKineticEnergy() const
G4PhysicsTable * IonisationTable() const
void FillLambdaVector(G4PhysicsVector *, const G4MaterialCutsCouple *, G4bool startFromNull=true, G4EmTableType t=fRestricted)
G4ProcessManager * GetProcessManager() const
G4VAtomDeexcitation * atomDeexcitation
void FillSecondDerivatives()
G4PhysicsTable * BuildLambdaTable(G4EmTableType tType=fRestricted)
const G4String & GetPhysicsTableFileName(const G4ParticleDefinition *, const G4String &directory, const G4String &tableName, G4bool ascii=false)
static G4PhysicsTable * PreparePhysicsTable(G4PhysicsTable *physTable)
G4double MinSubRange() const
const G4String & GetParticleName() const
G4bool lossFluctuationFlag
G4LossTableBuilder * GetTableBuilder()
void SetWeight(G4double aValue)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetCreatorModelIndex(G4int idx)
G4bool ExistPhysicsTable(const G4String &fileName) const
const G4ParticleDefinition * theGamma
static const G4double reg
const G4MaterialCutsCouple * currentCouple
void PrintWarning(G4String, G4double val)
void Initialise(const G4ParticleDefinition &part, const G4String &procName, G4int verbose)
const G4DataVector * theCuts
void SetHighEnergyLimit(G4double)
virtual G4double Dispersion(const G4Material *, const G4DynamicParticle *, G4double tmax, G4double length)=0
static G4RegionStore * GetInstance()
G4PhysicsTable * theSubLambdaTable
G4StepPoint * GetPreStepPoint() const
G4PhysicsTable * LambdaTable() const
void ProposeWeight(G4double finalWeight)
void SetAngularGeneratorFlag(G4bool)
G4double LinearLossLimit() const
void SetSecondaryWeightByProcess(G4bool)
void SetInverseRangeTable(G4PhysicsTable *p)
G4double LambdaFactor() const
void SetCrossSectionBiasingFactor(G4double f, G4bool flag=true)
G4ProcessVector * GetAtRestProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4double GetKineticEnergy() const
G4double SampleSubCutSecondaries(std::vector< G4Track * > &, const G4Step &, G4VEmModel *model, G4int matIdx)
const G4ParticleDefinition * baseParticle
G4GLOB_DLL std::ostream G4cout
void FillDEDXVector(G4PhysicsVector *, const G4MaterialCutsCouple *, G4EmTableType t=fRestricted)
void FillSecondariesAlongStep(G4double &eloss, G4double &weight)
const G4DataVector * theSubCuts
G4PhysicsTable * DEDXTable() const
G4double ScaledKinEnergyForLoss(G4double range)
size_t GetTableSize() const
G4double GetDEDXForScaledEnergy(G4double scaledKinEnergy)
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=0)
const G4ThreeVector & GetPosition() const
const G4Element * GetCurrentElement() const
G4double LowestMuHadEnergy() const
const G4ParticleDefinition * theGenericIon
const G4ParticleDefinition * thePositron
void ComputeLambdaForScaledEnergy(G4double scaledKinEnergy)
std::vector< G4Track * > scTracks
G4double preStepScaledEnergy
G4double GetStepLimit(G4int coupleIdx, G4double previousStep)
G4double currentInteractionLength
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4double GetSubDEDXForScaledEnergy(G4double scaledKinEnergy)
const G4ParticleDefinition * GetParticleDefinition() const
G4PhysicsTable * theCSDARangeTable
virtual ~G4VEnergyLossProcess()
const G4String & GetParticleType() const
void SetMaxKinEnergy(G4double e)
void Register(G4VEnergyLossProcess *p)
std::vector< G4double > theDEDXAtMaxEnergy
virtual G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
void AddEmModel(G4int, G4VEmModel *, G4VEmFluctuationModel *fluc=0, const G4Region *region=0)
G4double MinKinEnergy() const
const G4ParticleDefinition * particle
virtual void ProcessDescription(std::ostream &outFile) const
G4double GetGlobalTime() const
G4PhysicsTable * DEDXTableForSubsec() const
G4double Energy(size_t index) const
G4double Value(G4double theEnergy, size_t &lastidx) const
const G4String & GetProcessName() const
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety, G4GPILSelection *selection)
void AddSecondary(G4Track *aSecondary)
virtual G4double ChargeSquareRatio(const G4Track &)
const G4TouchableHandle & GetTouchableHandle() const
G4Material * GetMaterial() const
void RegisterExtraParticle(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
G4bool IsActive(G4double kinEnergy)
void DumpModelList(G4int verb)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::vector< const G4Region * > scoffRegions
const G4DataVector * Initialise(const G4ParticleDefinition *part, const G4ParticleDefinition *secPart, G4double minSubRange, G4int verb)
G4double ComputeSafety(const G4ThreeVector &pGlobalPoint, G4double maxRadius=DBL_MAX)
G4PhysicsTable * theLambdaTable
static G4TransportationManager * GetTransportationManager()
virtual G4bool RetrievePhysicsTable(const G4ParticleDefinition *, const G4String &directory, G4bool ascii)
static const G4double emax
void SetMasterThread(G4bool val)
virtual void PreparePhysicsTable(const G4ParticleDefinition &)
G4double G4Log(G4double x)
const G4ParticleDefinition * theElectron
void ActivateSecondaryBiasing(const G4String ®ion, G4double factor, G4double energyLimit)
static const double perMillion
virtual G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
static G4ProductionCutsTable * GetProductionCutsTable()
const G4Material * currentMaterial
void SetLambdaTable(G4PhysicsTable *p)
G4PhysicsTable * theInverseRangeTable
static G4Positron * Positron()
G4int NumberOfModels() const
G4SafetyHelper * safetyHelper
std::vector< G4double > theCrossSectionMax
G4bool LossFluctuation() const
static const G4double factor
virtual void PrintInfo()=0
G4PhysicsTable * InverseRangeTable() const
void BuildPhysicsTable(const G4ParticleDefinition *aParticle)
G4double GetPDGMass() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
static G4ParticleTable * GetParticleTable()
virtual void StartTracking(G4Track *)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double maxKinEnergyCSDA
void InitialiseBaseMaterials(G4PhysicsTable *table)
void SetNumberOfSecondaries(G4int totSecondaries)
G4bool UseAngularGeneratorForIonisation() const
static G4int Register(const G4String &)
G4double GetLocalEnergyDeposit() const
G4double MeanFreePath(const G4Track &track)
G4PhysicsTable * theDEDXunRestrictedTable
G4StepPoint * GetPostStepPoint() const
void UpdateEmModel(const G4String &, G4double, G4double)
G4bool StoreTable(const G4ParticleDefinition *p, G4PhysicsTable *, G4bool ascii, const G4String &directory, const G4String &tname)
const G4double x[NPOINTSGL]
static G4EmParameters * Instance()
G4VParticleChange * pParticleChange
G4PhysicsTable * theRangeTableForLoss
void SetEmModel(G4VEmModel *, G4int index=1)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double ContinuousStepLimit(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double ¤tSafety)
std::vector< G4VEmModel * > emModels
G4double GetSafety() const
void SetProposedCharge(G4double theCharge)
void PreparePhysicsTable(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p, G4bool theMaster)
void SetCSDARangeTable(G4PhysicsTable *pRange)
G4double GetDEDXDispersion(const G4MaterialCutsCouple *couple, const G4DynamicParticle *dp, G4double length)
void LocalPhysicsTables(const G4ParticleDefinition *aParticle, G4VEnergyLossProcess *p)
G4double GetLambdaForScaledEnergy(G4double scaledKinEnergy)
static G4Electron * Electron()
G4double GetGlobalTime() const
void SetSecondaryRangeTable(G4PhysicsTable *p)
G4bool StorePhysicsTable(const G4String &filename, G4bool ascii=false)
G4TrackStatus GetTrackStatus() const
G4VAtomDeexcitation * AtomDeexcitation()
G4PhysicsTable * DEDXunRestrictedTable() const
std::vector< G4double > theRangeAtMaxEnergy
G4bool RetrieveTable(const G4ParticleDefinition *p, G4PhysicsTable *, G4bool ascii, const G4String &directory, const G4String &tname, G4bool mandatory)
G4PhysicsTable * theDEDXTable
G4double theInitialNumberOfInteractionLength
G4bool GetFlag(size_t i) const
void ProposeTrackStatus(G4TrackStatus status)
void SetLowestEnergyLimit(G4double)
void SetSubLambdaTable(G4PhysicsTable *p)
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition *, const G4Material *, G4double cut)
G4ProcessVector * GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
G4Track * GetTrack() const
G4double MaxEnergyForCSDARange() const
G4double GetPDGCharge() const
G4EmBiasingManager * biasManager
void ActivateSubCutoff(G4bool val, const G4Region *region=0)
void SetRangeTableForLoss(G4PhysicsTable *p)
static G4bool RetrievePhysicsTable(G4PhysicsTable *physTable, const G4String &fileName, G4bool ascii)
G4ProductionCuts * GetProductionCuts() const
G4PhysicsTable * theDEDXSubTable
G4EmParameters * theParameters
G4int GetProcessSubType() const
G4double GetScaledRangeForScaledEnergy(G4double scaledKinEnergy)
std::vector< G4VEnergyLossProcess * > scProcesses
G4PhysicsTable * BuildDEDXTable(G4EmTableType tType=fRestricted)
G4VEmModel * EmModel(G4int index=1) const
void DefineMaterial(const G4MaterialCutsCouple *couple)
void SetVerboseLevel(G4int value)
void SetDEDXBinning(G4int nbins)
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition *, const G4ParticleDefinition *)=0
const G4Material * GetMaterial() const
G4PhysicsTable * theIonisationSubTable
G4double CrossSectionPerVolume(G4double kineticEnergy, const G4MaterialCutsCouple *couple)
std::vector< G4DynamicParticle * > secParticles
size_t idxDEDXunRestricted
const std::vector< G4int > * GetCoupleIndexes()
const G4Element * GetCurrentElement() const
G4bool IsIonisationProcess() const
void SetMinKinEnergy(G4double e)
G4EmModelManager * modelManager