Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
G4WentzelVIRelModel Class Reference

#include <G4WentzelVIRelModel.hh>

Inheritance diagram for G4WentzelVIRelModel:
G4WentzelVIModel G4VMscModel G4VEmModel

Public Member Functions

virtual G4double ChargeSquareRatio (const G4Track &)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, const G4Element *, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, G4double KineticEnergy, G4double AtomicNumber, G4double AtomicWeight=0., G4double cut=DBL_MAX, G4double emax=DBL_MAX) override
 
virtual G4double ComputeCrossSectionPerShell (const G4ParticleDefinition *, G4int Z, G4int shellIdx, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeDEDX (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
virtual G4double ComputeDEDXPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
G4double ComputeGeomLimit (const G4Track &, G4double &presafety, G4double limit)
 
G4double ComputeGeomPathLength (G4double truePathLength) override
 
G4double ComputeMeanFreePath (const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeSafety (const G4ThreeVector &position, G4double limit=DBL_MAX)
 
G4double ComputeTruePathLengthLimit (const G4Track &track, G4double &currentMinimalStep) override
 
G4double ComputeTrueStepLength (G4double geomStepLength) override
 
virtual void CorrectionsAlongStep (const G4MaterialCutsCouple *, const G4DynamicParticle *, const G4double &length, G4double &eloss)
 
G4double CrossSection (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual G4double CrossSectionPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4bool DeexcitationFlag () const
 
virtual void DefineForRegion (const G4Region *)
 
void DefineMaterial (const G4MaterialCutsCouple *cup)
 
void DumpParameters (std::ostream &out) const
 
virtual void FillNumberOfSecondaries (G4int &numberOfTriplets, G4int &numberOfRecoil)
 
G4bool ForceBuildTableFlag () const
 
 G4WentzelVIRelModel ()
 
 G4WentzelVIRelModel (const G4WentzelVIRelModel &)=delete
 
G4VEmAngularDistributionGetAngularDistribution ()
 
virtual G4double GetChargeSquareRatio (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4PhysicsTableGetCrossSectionTable ()
 
const G4ElementGetCurrentElement () const
 
const G4IsotopeGetCurrentIsotope () const
 
G4double GetDEDX (const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
 
G4double GetDEDX (const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple, G4double logKineticEnergy)
 
G4ElementDataGetElementData ()
 
std::vector< G4EmElementSelector * > * GetElementSelectors ()
 
G4double GetEnergy (const G4ParticleDefinition *part, G4double range, const G4MaterialCutsCouple *couple)
 
G4double GetFixedCut () const
 
G4VEnergyLossProcessGetIonisation () const
 
G4VEmFluctuationModelGetModelOfFluctuations ()
 
const G4StringGetName () const
 
virtual G4double GetPartialCrossSection (const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
 
virtual G4double GetParticleCharge (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4double GetRange (const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
 
G4double GetRange (const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple, G4double logKineticEnergy)
 
G4PhysicsTableGetSecondMomentTable ()
 
G4double GetTransportMeanFreePath (const G4ParticleDefinition *part, G4double kinEnergy)
 
G4double GetTransportMeanFreePath (const G4ParticleDefinition *part, G4double kinEnergy, G4double logKinEnergy)
 
G4VEmModelGetTripletModel ()
 
G4WentzelOKandVIxSectionGetWVICrossSection ()
 
G4double HighEnergyActivationLimit () const
 
G4double HighEnergyLimit () const
 
void Initialise (const G4ParticleDefinition *, const G4DataVector &) override
 
void InitialiseElementSelectors (const G4ParticleDefinition *, const G4DataVector &)
 
virtual void InitialiseForElement (const G4ParticleDefinition *, G4int Z)
 
virtual void InitialiseForMaterial (const G4ParticleDefinition *, const G4Material *)
 
void InitialiseLocal (const G4ParticleDefinition *, G4VEmModel *masterModel) override
 
void InitialiseParameters (const G4ParticleDefinition *)
 
G4bool IsActive (G4double kinEnergy) const
 
G4bool IsLocked () const
 
G4bool IsMaster () const
 
G4double LowEnergyActivationLimit () const
 
G4double LowEnergyLimit () const
 
G4bool LPMFlag () const
 
G4double MaxSecondaryKinEnergy (const G4DynamicParticle *dynParticle)
 
virtual G4double MinEnergyCut (const G4ParticleDefinition *, const G4MaterialCutsCouple *)
 
virtual G4double MinPrimaryEnergy (const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
 
virtual void ModelDescription (std::ostream &outFile) const
 
G4WentzelVIRelModeloperator= (const G4WentzelVIRelModel &right)=delete
 
G4double PolarAngleLimit () const
 
G4ThreeVectorSampleScattering (const G4ThreeVector &, G4double safety) override
 
void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double tmax) override
 
G4double SecondaryThreshold () const
 
G4double SecondMoment (const G4ParticleDefinition *, const G4MaterialCutsCouple *, G4double kineticEnergy)
 
G4int SelectIsotopeNumber (const G4Element *)
 
const G4ElementSelectRandomAtom (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
const G4ElementSelectRandomAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4int SelectRandomAtomNumber (const G4Material *)
 
const G4ElementSelectTargetAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double logKineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
void SetActivationHighEnergyLimit (G4double)
 
void SetActivationLowEnergyLimit (G4double)
 
void SetAngularDistribution (G4VEmAngularDistribution *)
 
void SetAngularGeneratorFlag (G4bool)
 
void SetCrossSectionTable (G4PhysicsTable *, G4bool isLocal)
 
void SetCurrentCouple (const G4MaterialCutsCouple *)
 
void SetDeexcitationFlag (G4bool val)
 
void SetElementSelectors (std::vector< G4EmElementSelector * > *)
 
void SetFixedCut (G4double)
 
void SetFluctuationFlag (G4bool val)
 
void SetForceBuildTable (G4bool val)
 
void SetGeomFactor (G4double)
 
void SetHighEnergyLimit (G4double)
 
void SetIonisation (G4VEnergyLossProcess *, const G4ParticleDefinition *part)
 
void SetLambdaLimit (G4double)
 
void SetLateralDisplasmentFlag (G4bool val)
 
void SetLocked (G4bool)
 
void SetLowEnergyLimit (G4double)
 
void SetLPMFlag (G4bool val)
 
void SetMasterThread (G4bool val)
 
void SetParticleChange (G4VParticleChange *, G4VEmFluctuationModel *f=nullptr)
 
void SetPolarAngleLimit (G4double)
 
void SetRangeFactor (G4double)
 
void SetSafetyFactor (G4double)
 
void SetSampleZ (G4bool)
 
void SetSecondaryThreshold (G4double)
 
void SetSingleScatteringFactor (G4double)
 
void SetSkin (G4double)
 
void SetStepLimitType (G4MscStepLimitType)
 
void SetTripletModel (G4VEmModel *)
 
virtual void SetupForMaterial (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
void SetUseBaseMaterials (G4bool val)
 
void SetUseSecondMoment (G4bool)
 
void SetWVICrossSection (G4WentzelOKandVIxSection *)
 
void StartTracking (G4Track *) override
 
G4bool UseAngularGeneratorFlag () const
 
G4bool UseBaseMaterials () const
 
G4bool UseSecondMoment () const
 
virtual G4double Value (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
 ~G4WentzelVIRelModel () override
 

Protected Member Functions

G4double ComputeTransportXSectionPerVolume (G4double cosTheta)
 
G4double ConvertTrueToGeom (G4double &tLength, G4double &gLength)
 
const G4MaterialCutsCoupleCurrentCouple () const
 
G4ParticleChangeForGammaGetParticleChangeForGamma ()
 
G4ParticleChangeForLossGetParticleChangeForLoss ()
 
G4ParticleChangeForMSCGetParticleChangeForMSC (const G4ParticleDefinition *p=nullptr)
 
virtual G4double MaxSecondaryEnergy (const G4ParticleDefinition *, G4double kineticEnergy)
 
void SetCurrentElement (const G4Element *)
 
void SetupParticle (const G4ParticleDefinition *)
 

Protected Attributes

size_t basedCoupleIndex = 0
 
G4double cosTetMaxNuc = 0.0
 
G4double cosThetaMax = -1.0
 
G4double cosThetaMin = 1.0
 
const G4MaterialCutsCouplecurrentCouple = nullptr
 
size_t currentCoupleIndex = 0
 
const G4DataVectorcurrentCuts = nullptr
 
const G4MaterialcurrentMaterial = nullptr
 
G4int currentMaterialIndex = 0
 
G4double currentRange = 0.0
 
G4double dtrl = 0.05
 
G4double effKinEnergy = 0.0
 
G4double facgeom = 2.5
 
G4double facrange = 0.04
 
G4double facsafety = 0.6
 
G4ThreeVector fDisplacement
 
G4ElementDatafElementData = nullptr
 
G4double fixedCut = -1.0
 
G4ParticleChangeForMSCfParticleChange = nullptr
 
G4PhysicsTablefSecondMoments = nullptr
 
G4double geomMax
 
G4double geomMin
 
size_t idx2 = 0
 
G4double inveplus
 
G4double invssFactor = 1.0
 
G4bool isCombined
 
G4double lambdaeff = 0.0
 
G4double lambdalimit
 
G4bool latDisplasment = true
 
G4bool lossFlucFlag = true
 
G4double lowEnergyLimit
 
G4int nelments = 0
 
const G4ParticleDefinitionparticle = nullptr
 
const G4MaterialpBaseMaterial = nullptr
 
G4double pFactor = 1.0
 
G4VParticleChangepParticleChange = nullptr
 
G4double preKinEnergy = 0.0
 
std::vector< G4doubleprob
 
G4bool samplez = false
 
G4bool singleScatteringMode
 
G4double skin = 1.0
 
G4double ssFactor = 1.05
 
G4MscStepLimitType steppingAlgorithm
 
const std::vector< G4double > * theDensityFactor = nullptr
 
const std::vector< G4int > * theDensityIdx = nullptr
 
G4double tlimitminfix
 
G4double tPathLength = 0.0
 
G4bool useSecondMoment
 
G4WentzelOKandVIxSectionwokvi
 
std::vector< G4doublexsecn
 
G4PhysicsTablexSectionTable = nullptr
 
G4double xtsec = 0.0
 
G4double zPathLength = 0.0
 

Private Member Functions

void ComputeEffectiveMass ()
 
G4double ComputeSecondMoment (const G4ParticleDefinition *, G4double kineticEnergy)
 

Private Attributes

G4VEmAngularDistributionanglModel = nullptr
 
const G4ParticleDefinitioncurrentPart = nullptr
 
G4double dedx = 0.0
 
std::vector< G4EmElementSelector * > * elmSelectors = nullptr
 
G4double eMaxActive = DBL_MAX
 
G4double eMinActive = 0.0
 
const G4MaterialCutsCouplefCurrentCouple = nullptr
 
const G4ElementfCurrentElement = nullptr
 
const G4IsotopefCurrentIsotope = nullptr
 
G4LossTableManagerfEmManager
 
G4bool flagDeexcitation = false
 
G4bool flagForceBuildTable = false
 
G4VEmFluctuationModelflucModel = nullptr
 
G4NistManagerfNistManager
 
G4VEmModelfTripletModel = nullptr
 
G4double highLimit
 
G4VEnergyLossProcessionisation = nullptr
 
G4bool isLocked = false
 
G4bool isMaster = true
 
G4bool localElmSelectors = true
 
G4double localrange = DBL_MAX
 
G4bool localTable = true
 
G4double localtkin = 0.0
 
G4double lowLimit
 
const G4String name
 
G4int nsec = 5
 
G4int nSelectors = 0
 
G4double polarAngleLimit
 
G4SafetyHelpersafetyHelper = nullptr
 
G4double secondaryThreshold = DBL_MAX
 
G4bool theLPMflag = false
 
G4bool useAngularGenerator = false
 
G4bool useBaseMaterials = false
 
std::vector< G4doublexsec
 

Static Private Attributes

static std::vector< G4doubleeffMass
 

Detailed Description

Definition at line 65 of file G4WentzelVIRelModel.hh.

Constructor & Destructor Documentation

◆ G4WentzelVIRelModel() [1/2]

G4WentzelVIRelModel::G4WentzelVIRelModel ( )
explicit

Definition at line 73 of file G4WentzelVIRelModel.cc.

73 :
74 G4WentzelVIModel(true, "WentzelVIRel")
75{
79}
static G4NistManager * Instance()
G4WentzelVIModel(G4bool comb=true, const G4String &nam="WentzelVIUni")
void SetWVICrossSection(G4WentzelOKandVIxSection *)
G4NistManager * fNistManager

References fNistManager, G4NistManager::Instance(), and G4WentzelVIModel::SetWVICrossSection().

◆ ~G4WentzelVIRelModel()

G4WentzelVIRelModel::~G4WentzelVIRelModel ( )
override

Definition at line 83 of file G4WentzelVIRelModel.cc.

84{}

◆ G4WentzelVIRelModel() [2/2]

G4WentzelVIRelModel::G4WentzelVIRelModel ( const G4WentzelVIRelModel )
delete

Member Function Documentation

◆ ChargeSquareRatio()

G4double G4VEmModel::ChargeSquareRatio ( const G4Track track)
virtualinherited

Reimplemented in G4BraggIonGasModel, and G4BetheBlochIonGasModel.

Definition at line 374 of file G4VEmModel.cc.

375{
377 track.GetMaterial(), track.GetKineticEnergy());
378}
const G4ParticleDefinition * GetParticleDefinition() const
G4Material * GetMaterial() const
G4double GetKineticEnergy() const
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
Definition: G4VEmModel.cc:382

References G4VEmModel::GetChargeSquareRatio(), G4Track::GetKineticEnergy(), G4Track::GetMaterial(), and G4Track::GetParticleDefinition().

Referenced by G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength().

◆ ComputeCrossSectionPerAtom() [1/2]

G4double G4VEmModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition part,
const G4Element elm,
G4double  kinEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
inlineinherited

Definition at line 566 of file G4VEmModel.hh.

571{
573 return ComputeCrossSectionPerAtom(part,kinEnergy,elm->GetZ(),elm->GetN(),
574 cutEnergy,maxEnergy);
575}
G4double GetZ() const
Definition: G4Element.hh:131
G4double GetN() const
Definition: G4Element.hh:135
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.cc:341
void SetCurrentElement(const G4Element *)
Definition: G4VEmModel.hh:497

References G4VEmModel::ComputeCrossSectionPerAtom(), G4Element::GetN(), G4Element::GetZ(), and G4VEmModel::SetCurrentElement().

◆ ComputeCrossSectionPerAtom() [2/2]

G4double G4WentzelVIRelModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition p,
G4double  KineticEnergy,
G4double  AtomicNumber,
G4double  AtomicWeight = 0.,
G4double  cut = DBL_MAX,
G4double  emax = DBL_MAX 
)
overridevirtual

Reimplemented from G4WentzelVIModel.

Definition at line 116 of file G4WentzelVIRelModel.cc.

121{
122 G4double cross = 0.0;
123 if(p != particle) { SetupParticle(p); }
124 if(kinEnergy < lowEnergyLimit) { return cross; }
125 if(nullptr == CurrentCouple()) {
126 G4Exception("G4WentzelVIRelModel::ComputeCrossSectionPerAtom", "em0011",
127 FatalException, " G4MaterialCutsCouple is not defined");
128 return cross;
129 }
131 G4int iz = G4lrint(Z);
132 G4double tmass = (1 == iz) ? CLHEP::proton_mass_c2
134 wokvi->SetTargetMass(tmass);
136 if(cosTetMaxNuc < 1.0) {
137 G4double cost = wokvi->SetupTarget(iz, cutEnergy);
139 /*
140 //if(p->GetParticleName() == "e-")
141 G4cout << "G4WentzelVIRelModel::CS: Z= " << G4int(Z)
142 << " e(MeV)= " << kinEnergy
143 << " 1-cosN= " << 1 - cosTetMaxNuc << " cross(bn)= " << cross/barn
144 << " " << particle->GetParticleName() << G4endl;
145 */
146 }
147 return cross;
148}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
G4double GetAtomicMassAmu(const G4String &symb) const
const G4MaterialCutsCouple * CurrentCouple() const
Definition: G4VEmModel.hh:490
G4double SetupTarget(G4int Z, G4double cut)
G4double ComputeTransportCrossSectionPerAtom(G4double CosThetaMax)
virtual G4double SetupKinematic(G4double kinEnergy, const G4Material *mat)
const G4ParticleDefinition * particle
const G4Material * currentMaterial
void SetupParticle(const G4ParticleDefinition *)
G4WentzelOKandVIxSection * wokvi
void DefineMaterial(const G4MaterialCutsCouple *cup)
static constexpr double proton_mass_c2
float amu_c2
Definition: hepunit.py:276
int G4lrint(double ad)
Definition: templates.hh:134

References source.hepunit::amu_c2, G4WentzelOKandVIxSection::ComputeTransportCrossSectionPerAtom(), G4WentzelVIModel::cosTetMaxNuc, G4VEmModel::CurrentCouple(), G4WentzelVIModel::currentMaterial, DefineMaterial(), FatalException, fNistManager, G4Exception(), G4lrint(), G4NistManager::GetAtomicMassAmu(), G4WentzelVIModel::lowEnergyLimit, G4WentzelVIModel::particle, CLHEP::proton_mass_c2, G4WentzelOKandVIxSection::SetTargetMass(), G4WentzelOKandVIxSection::SetupKinematic(), G4WentzelVIModel::SetupParticle(), G4WentzelOKandVIxSection::SetupTarget(), G4WentzelVIModel::wokvi, and Z.

◆ ComputeCrossSectionPerShell()

G4double G4VEmModel::ComputeCrossSectionPerShell ( const G4ParticleDefinition ,
G4int  Z,
G4int  shellIdx,
G4double  kinEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
virtualinherited

Definition at line 351 of file G4VEmModel.cc.

354{
355 return 0.0;
356}

Referenced by G4EmCalculator::ComputeCrossSectionPerShell().

◆ ComputeDEDX()

G4double G4VEmModel::ComputeDEDX ( const G4MaterialCutsCouple couple,
const G4ParticleDefinition part,
G4double  kineticEnergy,
G4double  cutEnergy = DBL_MAX 
)
inlineinherited

Definition at line 528 of file G4VEmModel.hh.

532{
533 SetCurrentCouple(couple);
534 return pFactor*ComputeDEDXPerVolume(pBaseMaterial,part,kinEnergy,cutEnergy);
535}
void SetCurrentCouple(const G4MaterialCutsCouple *)
Definition: G4VEmModel.hh:472
const G4Material * pBaseMaterial
Definition: G4VEmModel.hh:427
G4double pFactor
Definition: G4VEmModel.hh:432
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
Definition: G4VEmModel.cc:228

References G4VEmModel::ComputeDEDXPerVolume(), G4VEmModel::pBaseMaterial, G4VEmModel::pFactor, and G4VEmModel::SetCurrentCouple().

◆ ComputeDEDXPerVolume()

G4double G4VEmModel::ComputeDEDXPerVolume ( const G4Material ,
const G4ParticleDefinition ,
G4double  kineticEnergy,
G4double  cutEnergy = DBL_MAX 
)
virtualinherited

◆ ComputeEffectiveMass()

void G4WentzelVIRelModel::ComputeEffectiveMass ( )
private

Definition at line 152 of file G4WentzelVIRelModel.cc.

153{
154 const G4ProductionCutsTable* theCoupleTable =
156 size_t ncouples = theCoupleTable->GetTableSize();
157#ifdef G4MULTITHREADED
158 G4MUTEXLOCK(&G4WentzelVIRelModel::WentzelVIRelModelMutex);
159 if(ncouples != effMass.size()) {
160#endif
161 effMass.resize(ncouples, 0.0);
162 for(size_t i=0; i<ncouples; ++i) {
163 const G4Material* mat =
164 theCoupleTable->GetMaterialCutsCouple(i)->GetMaterial();
165 const G4ElementVector* elmVector = mat->GetElementVector();
166 G4int nelm = mat->GetNumberOfElements();
167 G4double sum = 0.0;
168 G4double norm= 0.0;
169 for(G4int j=0; j<nelm; ++j) {
170 G4int Z = (*elmVector)[j]->GetZasInt();
172 G4int Z2 = Z*Z;
173 sum += mass*Z2;
174 norm += Z2;
175 }
176 effMass[i] = sum/norm;
177 }
178#ifdef G4MULTITHREADED
179 }
180 G4MUTEXUNLOCK(&G4WentzelVIRelModel::WentzelVIRelModelMutex);
181#endif
182}
std::vector< const G4Element * > G4ElementVector
#define G4MUTEXLOCK(mutex)
Definition: G4Threading.hh:251
#define G4MUTEXUNLOCK(mutex)
Definition: G4Threading.hh:254
const G4Material * GetMaterial() const
const G4ElementVector * GetElementVector() const
Definition: G4Material.hh:186
size_t GetNumberOfElements() const
Definition: G4Material.hh:182
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
static std::vector< G4double > effMass
static constexpr double amu_c2

References CLHEP::amu_c2, effMass, fNistManager, G4MUTEXLOCK, G4MUTEXUNLOCK, G4NistManager::GetAtomicMassAmu(), G4Material::GetElementVector(), G4MaterialCutsCouple::GetMaterial(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4Material::GetNumberOfElements(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), and Z.

Referenced by Initialise().

◆ ComputeGeomLimit()

G4double G4VMscModel::ComputeGeomLimit ( const G4Track track,
G4double presafety,
G4double  limit 
)
inlineinherited

Definition at line 290 of file G4VMscModel.hh.

293{
295 track.GetStep()->GetPreStepPoint()->GetPosition(),
296 track.GetMomentumDirection(),
297 limit, presafety);
298}
G4double CheckNextStep(const G4ThreeVector &position, const G4ThreeVector &direction, const G4double currentMaxStep, G4double &newSafety)
const G4ThreeVector & GetPosition() const
G4StepPoint * GetPreStepPoint() const
const G4ThreeVector & GetMomentumDirection() const
const G4Step * GetStep() const
G4SafetyHelper * safetyHelper
Definition: G4VMscModel.hh:186

References G4SafetyHelper::CheckNextStep(), G4Track::GetMomentumDirection(), G4StepPoint::GetPosition(), G4Step::GetPreStepPoint(), G4Track::GetStep(), and G4VMscModel::safetyHelper.

Referenced by G4UrbanAdjointMscModel::ComputeTruePathLengthLimit(), G4LowEWentzelVIModel::ComputeTruePathLengthLimit(), G4GoudsmitSaundersonMscModel::ComputeTruePathLengthLimit(), G4UrbanMscModel::ComputeTruePathLengthLimit(), and G4WentzelVIModel::ComputeTruePathLengthLimit().

◆ ComputeGeomPathLength()

G4double G4WentzelVIModel::ComputeGeomPathLength ( G4double  truePathLength)
overridevirtualinherited

Implements G4VMscModel.

Definition at line 353 of file G4WentzelVIModel.cc.

354{
355 zPathLength = tPathLength = truelength;
356
357 // small step use only single scattering
358 cosThetaMin = 1.0;
360 //G4cout << "xtsec= " << xtsec << " Nav= "
361 // << zPathLength*xtsec << G4endl;
365
366 } else {
367 //G4cout << "ComputeGeomPathLength: tLength= " << tPathLength
368 // << " Leff= " << lambdaeff << G4endl;
369 // small step
372 zPathLength *= (1.0 - 0.5*tau + tau*tau/6.0);
373
374 // medium step
375 } else {
376 G4double e1 = 0.0;
379 }
380 effKinEnergy = 0.5*(e1 + preKinEnergy);
383 //G4cout << " tLength= "<< tPathLength<< " Leff= " << lambdaeff << G4endl;
387 }
388 }
389 }
390 //G4cout << "Comp.geom: zLength= "<<zPathLength<<" tLength= "
391 // << tPathLength<< " Leff= " << lambdaeff << G4endl;
392 return zPathLength;
393}
static const G4double e1[44]
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
const G4double numlimit
const G4int minNCollisions
G4double GetTransportMeanFreePath(const G4ParticleDefinition *part, G4double kinEnergy)
Definition: G4VMscModel.hh:319
G4double GetEnergy(const G4ParticleDefinition *part, G4double range, const G4MaterialCutsCouple *couple)
Definition: G4VMscModel.cc:224
G4double ComputeTransportXSectionPerVolume(G4double cosTheta)
const G4MaterialCutsCouple * currentCouple
#define DBL_MAX
Definition: templates.hh:62

References G4WentzelVIModel::ComputeTransportXSectionPerVolume(), G4WentzelVIModel::cosTetMaxNuc, G4WentzelVIModel::cosThetaMin, G4WentzelVIModel::currentCouple, G4WentzelVIModel::currentMaterial, G4WentzelVIModel::currentRange, DBL_MAX, e1, G4WentzelVIModel::effKinEnergy, G4Exp(), G4VMscModel::GetEnergy(), G4VMscModel::GetTransportMeanFreePath(), G4WentzelVIModel::lambdaeff, minNCollisions, numlimit, G4WentzelVIModel::particle, G4WentzelVIModel::preKinEnergy, G4WentzelOKandVIxSection::SetupKinematic(), G4WentzelVIModel::singleScatteringMode, G4WentzelVIModel::tPathLength, G4WentzelVIModel::wokvi, G4WentzelVIModel::xtsec, and G4WentzelVIModel::zPathLength.

◆ ComputeMeanFreePath()

G4double G4VEmModel::ComputeMeanFreePath ( const G4ParticleDefinition part,
G4double  kineticEnergy,
const G4Material material,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
inlineinherited

Definition at line 553 of file G4VEmModel.hh.

558{
559 G4double cross = CrossSectionPerVolume(material,part,ekin,emin,emax);
560 return (cross > 0.0) ? 1./cross : DBL_MAX;
561}
static const G4double emax
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.cc:237
string material
Definition: eplot.py:19

References G4VEmModel::CrossSectionPerVolume(), DBL_MAX, emax, and eplot::material.

◆ ComputeSafety()

G4double G4VMscModel::ComputeSafety ( const G4ThreeVector position,
G4double  limit = DBL_MAX 
)
inlineinherited

◆ ComputeSecondMoment()

G4double G4WentzelVIModel::ComputeSecondMoment ( const G4ParticleDefinition p,
G4double  kineticEnergy 
)
privateinherited

Definition at line 759 of file G4WentzelVIModel.cc.

761{
762 G4double xs = 0.0;
763
764 SetupParticle(p);
766
767 if(cosTetMaxNuc >= 1.0) { return xs; }
768
769 const G4ElementVector* theElementVector = currentMaterial->GetElementVector();
770 const G4double* theAtomNumDensityVector =
773
774 G4double cut = (*currentCuts)[currentMaterialIndex];
775 if(fixedCut > 0.0) { cut = fixedCut; }
776
777 // loop over elements
778 for (G4int i=0; i<nelm; ++i) {
779 G4double costm =
780 wokvi->SetupTarget((*theElementVector)[i]->GetZasInt(), cut);
781 xs += theAtomNumDensityVector[i]
783 }
784 return xs;
785}
const G4double * GetVecNbOfAtomsPerVolume() const
Definition: G4Material.hh:202
G4double ComputeSecondTransportMoment(G4double CosThetaMax)

References G4WentzelOKandVIxSection::ComputeSecondTransportMoment(), G4WentzelVIModel::cosTetMaxNuc, G4WentzelVIModel::currentMaterial, G4WentzelVIModel::currentMaterialIndex, G4WentzelVIModel::fixedCut, G4Material::GetElementVector(), G4Material::GetNumberOfElements(), G4Material::GetVecNbOfAtomsPerVolume(), G4WentzelOKandVIxSection::SetupKinematic(), G4WentzelVIModel::SetupParticle(), G4WentzelOKandVIxSection::SetupTarget(), and G4WentzelVIModel::wokvi.

Referenced by G4WentzelVIModel::Initialise(), and G4WentzelVIModel::SecondMoment().

◆ ComputeTransportXSectionPerVolume()

G4double G4WentzelVIModel::ComputeTransportXSectionPerVolume ( G4double  cosTheta)
protectedinherited

Definition at line 704 of file G4WentzelVIModel.cc.

705{
706 // prepare recomputation of x-sections
707 const G4ElementVector* theElementVector = currentMaterial->GetElementVector();
708 const G4double* theAtomNumDensityVector =
711 if(nelm > nelments) {
712 nelments = nelm;
713 xsecn.resize(nelm);
714 prob.resize(nelm);
715 }
716
717 // check consistency
718 xtsec = 0.0;
719 if(cosTetMaxNuc >= cosTheta) { return 0.0; }
720
721 G4double cut = (*currentCuts)[currentMaterialIndex];
722 if(fixedCut > 0.0) { cut = fixedCut; }
723
724 // loop over elements
725 G4double xs = 0.0;
726 for (G4int i=0; i<nelm; ++i) {
727 G4double costm =
728 wokvi->SetupTarget((*theElementVector)[i]->GetZasInt(), cut);
729 G4double density = theAtomNumDensityVector[i];
730
731 G4double esec = 0.0;
732 if(costm < cosTheta) {
733
734 // recompute the transport x-section
735 if(1.0 > cosTheta) {
736 xs += density*wokvi->ComputeTransportCrossSectionPerAtom(cosTheta);
737 }
738 // recompute the total x-section
739 G4double nucsec = wokvi->ComputeNuclearCrossSection(cosTheta, costm);
740 esec = wokvi->ComputeElectronCrossSection(cosTheta, costm);
741 nucsec += esec;
742 if(nucsec > 0.0) { esec /= nucsec; }
743 xtsec += nucsec*density;
744 }
745 xsecn[i] = xtsec;
746 prob[i] = esec;
747 //G4cout << i << " xs= " << xs << " xtsec= " << xtsec
748 // << " 1-cosTheta= " << 1-cosTheta
749 // << " 1-cosTetMaxNuc2= " <<1-cosTetMaxNuc2<< G4endl;
750 }
751
752 //G4cout << "ComputeXS result: xsec(1/mm)= " << xs
753 // << " txsec(1/mm)= " << xtsec <<G4endl;
754 return xs;
755}
G4double ComputeElectronCrossSection(G4double CosThetaMin, G4double CosThetaMax)
G4double ComputeNuclearCrossSection(G4double CosThetaMin, G4double CosThetaMax)
std::vector< G4double > prob
std::vector< G4double > xsecn

References G4WentzelOKandVIxSection::ComputeElectronCrossSection(), G4WentzelOKandVIxSection::ComputeNuclearCrossSection(), G4WentzelOKandVIxSection::ComputeTransportCrossSectionPerAtom(), G4WentzelVIModel::cosTetMaxNuc, G4WentzelVIModel::currentMaterial, G4WentzelVIModel::currentMaterialIndex, G4WentzelVIModel::fixedCut, G4Material::GetElementVector(), G4Material::GetNumberOfElements(), G4Material::GetVecNbOfAtomsPerVolume(), G4WentzelVIModel::nelments, G4WentzelVIModel::prob, G4WentzelOKandVIxSection::SetupTarget(), G4WentzelVIModel::wokvi, G4WentzelVIModel::xsecn, and G4WentzelVIModel::xtsec.

Referenced by G4WentzelVIModel::ComputeGeomPathLength(), and G4WentzelVIModel::ComputeTrueStepLength().

◆ ComputeTruePathLengthLimit()

G4double G4WentzelVIModel::ComputeTruePathLengthLimit ( const G4Track track,
G4double currentMinimalStep 
)
overridevirtualinherited

Implements G4VMscModel.

Definition at line 255 of file G4WentzelVIModel.cc.

258{
259 G4double tlimit = currentMinimalStep;
260 const G4DynamicParticle* dp = track.GetDynamicParticle();
261 const G4StepPoint* sp = track.GetStep()->GetPreStepPoint();
262 G4StepStatus stepStatus = sp->GetStepStatus();
263 singleScatteringMode = false;
264
265 //G4cout << "G4WentzelVIModel::ComputeTruePathLengthLimit stepStatus= "
266 // << stepStatus << " " << track.GetDefinition()->GetParticleName()
267 // << G4endl;
268
269 // initialisation for each step, lambda may be computed from scratch
273 const G4double logPreKinEnergy = dp->GetLogKineticEnergy();
277
278 //G4cout << "lambdaeff= " << lambdaeff << " Range= " << currentRange
279 // << " tlimit= " << tlimit << " 1-cost= " << 1 - cosTetMaxNuc << G4endl;
280
281 // extra check for abnormal situation
282 // this check needed to run MSC with eIoni and eBrem inactivated
283 if(tlimit > currentRange) { tlimit = currentRange; }
284
285 // stop here if small range particle
286 if(tlimit < tlimitminfix) {
287 return ConvertTrueToGeom(tlimit, currentMinimalStep);
288 }
289
290 // pre step
291 G4double presafety = sp->GetSafety();
292 // far from geometry boundary
293 if(currentRange < presafety) {
294 return ConvertTrueToGeom(tlimit, currentMinimalStep);
295 }
296
297 // compute presafety again if presafety <= 0 and no boundary
298 // i.e. when it is needed for optimization purposes
299 if(stepStatus != fGeomBoundary && presafety < tlimitminfix) {
300 presafety = ComputeSafety(sp->GetPosition(), tlimit);
301 if(currentRange < presafety) {
302 return ConvertTrueToGeom(tlimit, currentMinimalStep);
303 }
304 }
305 /*
306 G4cout << "e(MeV)= " << preKinEnergy/MeV
307 << " " << particle->GetParticleName()
308 << " CurLimit(mm)= " << tlimit/mm <<" safety(mm)= " << presafety/mm
309 << " R(mm)= " <<currentRange/mm
310 << " L0(mm^-1)= " << lambdaeff*mm
311 << G4endl;
312 */
313 // natural limit for high energy
316
317 // low-energy e-
319 rlimit = std::min(rlimit, facsafety*presafety);
320 }
321
322 // cut correction
324 //G4cout << "rcut= " << rcut << " rlimit= " << rlimit << " presafety= "
325 // << presafety << " 1-cosThetaMax= " <<1-cosThetaMax
326 //<< " 1-cosTetMaxNuc= " << 1-cosTetMaxNuc << G4endl;
327 if(rcut > rlimit) { rlimit = std::min(rlimit, rcut*sqrt(rlimit/rcut)); }
328
329 tlimit = std::min(tlimit, rlimit);
330 tlimit = std::max(tlimit, tlimitminfix);
331
332 // step limit in infinite media
333 tlimit = std::min(tlimit, 50*currentMaterial->GetRadlen()/facgeom);
334
335 //compute geomlimit and force few steps within a volume
337 && stepStatus == fGeomBoundary) {
338
339 G4double geomlimit = ComputeGeomLimit(track, presafety, currentRange);
340 tlimit = std::min(tlimit, geomlimit/facgeom);
341 }
342 /*
343 G4cout << particle->GetParticleName() << " e= " << preKinEnergy
344 << " L0= " << lambdaeff << " R= " << currentRange
345 << " tlimit= " << tlimit
346 << " currentMinimalStep= " << currentMinimalStep << G4endl;
347 */
348 return ConvertTrueToGeom(tlimit, currentMinimalStep);
349}
@ fUseDistanceToBoundary
G4StepStatus
Definition: G4StepStatus.hh:40
@ fGeomBoundary
Definition: G4StepStatus.hh:43
G4double GetLogKineticEnergy() const
G4double GetKineticEnergy() const
G4ProductionCuts * GetProductionCuts() const
G4double GetRadlen() const
Definition: G4Material.hh:216
G4double GetProductionCut(G4int index) const
const G4DynamicParticle * GetDynamicParticle() const
const G4MaterialCutsCouple * GetMaterialCutsCouple() const
G4double facrange
Definition: G4VMscModel.hh:196
G4double ComputeGeomLimit(const G4Track &, G4double &presafety, G4double limit)
Definition: G4VMscModel.hh:290
G4double GetRange(const G4ParticleDefinition *part, G4double kineticEnergy, const G4MaterialCutsCouple *couple)
Definition: G4VMscModel.cc:189
G4MscStepLimitType steppingAlgorithm
Definition: G4VMscModel.hh:209
G4double ConvertTrueToGeom(G4double &tLength, G4double &gLength)
Definition: G4VMscModel.hh:280
G4double ComputeSafety(const G4ThreeVector &position, G4double limit=DBL_MAX)
Definition: G4VMscModel.hh:272
G4double facsafety
Definition: G4VMscModel.hh:198
G4double facgeom
Definition: G4VMscModel.hh:197
void DefineMaterial(const G4MaterialCutsCouple *)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References G4VMscModel::ComputeGeomLimit(), G4VMscModel::ComputeSafety(), G4VMscModel::ConvertTrueToGeom(), G4WentzelVIModel::cosTetMaxNuc, G4WentzelVIModel::cosThetaMax, G4WentzelVIModel::currentCouple, G4WentzelVIModel::currentMaterial, G4WentzelVIModel::currentRange, G4WentzelVIModel::DefineMaterial(), G4WentzelVIModel::effKinEnergy, G4VMscModel::facgeom, G4VMscModel::facrange, G4VMscModel::facsafety, fGeomBoundary, fUseDistanceToBoundary, G4Track::GetDynamicParticle(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetLogKineticEnergy(), G4Track::GetMaterialCutsCouple(), G4Step::GetPreStepPoint(), G4ProductionCuts::GetProductionCut(), G4MaterialCutsCouple::GetProductionCuts(), G4Material::GetRadlen(), G4VMscModel::GetRange(), G4Track::GetStep(), G4VMscModel::GetTransportMeanFreePath(), G4WentzelVIModel::invssFactor, G4WentzelVIModel::lambdaeff, G4INCL::Math::max(), G4INCL::Math::min(), G4WentzelVIModel::particle, G4WentzelVIModel::preKinEnergy, G4WentzelOKandVIxSection::SetupKinematic(), G4WentzelVIModel::singleScatteringMode, G4InuclParticleNames::sp, G4VMscModel::steppingAlgorithm, G4WentzelVIModel::tlimitminfix, and G4WentzelVIModel::wokvi.

◆ ComputeTrueStepLength()

G4double G4WentzelVIModel::ComputeTrueStepLength ( G4double  geomStepLength)
overridevirtualinherited

Implements G4VMscModel.

Definition at line 397 of file G4WentzelVIModel.cc.

398{
399 // initialisation of single scattering x-section
400 /*
401 G4cout << "ComputeTrueStepLength: Step= " << geomStepLength
402 << " geomL= " << zPathLength
403 << " Lambda= " << lambdaeff
404 << " 1-cosThetaMaxNuc= " << 1 - cosTetMaxNuc << G4endl;
405 */
407 zPathLength = tPathLength = geomStepLength;
408
409 } else {
410
411 // step defined by transportation
412 // change both geom and true step lengths
413 if(geomStepLength < zPathLength) {
414
415 // single scattering
416 if(G4int(geomStepLength*xtsec) < minNCollisions) {
417 zPathLength = tPathLength = geomStepLength;
420
421 // multiple scattering
422 } else {
423 // small step
424 if(geomStepLength < numlimit*lambdaeff) {
425 G4double tau = geomStepLength/lambdaeff;
426 tPathLength = geomStepLength*(1.0 + 0.5*tau + tau*tau/3.0);
427
428 // energy correction for a big step
429 } else {
430 tPathLength *= geomStepLength/zPathLength;
431 G4double e1 = 0.0;
434 }
435 effKinEnergy = 0.5*(e1 + preKinEnergy);
438 G4double tau = geomStepLength/lambdaeff;
439
440 if(tau < 0.999999) { tPathLength = -lambdaeff*G4Log(1.0 - tau); }
441 else { tPathLength = currentRange; }
442 }
443 zPathLength = geomStepLength;
444 }
445 }
446 }
447 // check of step length
448 // define threshold angle between single and multiple scattering
451 xtsec = 0.0;
452
453 // recompute transport cross section - do not change energy
454 // anymore - cannot be applied for big steps
456 // new computation
458 //G4cout << "%%%% cross= " << cross << " xtsec= " << xtsec
459 // << " 1-cosTMin= " << 1.0 - cosThetaMin << G4endl;
460 if(cross <= 0.0) {
464 cosThetaMin = 1.0;
465 } else if(xtsec > 0.0) {
466
467 lambdaeff = 1./cross;
468 G4double tau = zPathLength*cross;
469 if(tau < numlimit) {
470 tPathLength = zPathLength*(1.0 + 0.5*tau + tau*tau/3.0);
471 } else if(tau < 0.999999) {
472 tPathLength = -lambdaeff*G4Log(1.0 - tau);
473 } else {
475 }
476 }
477 }
478 }
480 /*
481 G4cout <<"Comp.true: zLength= "<<zPathLength<<" tLength= "<<tPathLength
482 <<" Leff(mm)= "<<lambdaeff/mm<<" sig0(1/mm)= " << xtsec <<G4endl;
483 G4cout << particle->GetParticleName() << " 1-cosThetaMin= " << 1-cosThetaMin
484 << " 1-cosTetMaxNuc= " << 1-cosTetMaxNuc
485 << " e(MeV)= " << preKinEnergy/MeV << " "
486 << " SSmode= " << singleScatteringMode << G4endl;
487 */
488 return tPathLength;
489}
G4double G4Log(G4double x)
Definition: G4Log.hh:226

References G4WentzelVIModel::ComputeTransportXSectionPerVolume(), G4WentzelVIModel::cosTetMaxNuc, G4WentzelVIModel::cosThetaMin, G4WentzelVIModel::currentCouple, G4WentzelVIModel::currentMaterial, G4WentzelVIModel::currentRange, DBL_MAX, e1, G4WentzelVIModel::effKinEnergy, G4Log(), G4VMscModel::GetEnergy(), G4VMscModel::GetTransportMeanFreePath(), G4WentzelVIModel::lambdaeff, G4INCL::Math::min(), minNCollisions, numlimit, G4WentzelVIModel::particle, G4WentzelVIModel::preKinEnergy, G4WentzelOKandVIxSection::SetupKinematic(), G4WentzelVIModel::singleScatteringMode, G4WentzelVIModel::ssFactor, G4WentzelVIModel::tPathLength, G4WentzelVIModel::wokvi, G4WentzelVIModel::xtsec, and G4WentzelVIModel::zPathLength.

◆ ConvertTrueToGeom()

G4double G4VMscModel::ConvertTrueToGeom ( G4double tLength,
G4double gLength 
)
inlineprotectedinherited

◆ CorrectionsAlongStep()

void G4VEmModel::CorrectionsAlongStep ( const G4MaterialCutsCouple ,
const G4DynamicParticle ,
const G4double length,
G4double eloss 
)
virtualinherited

◆ CrossSection()

G4double G4VEmModel::CrossSection ( const G4MaterialCutsCouple couple,
const G4ParticleDefinition part,
G4double  kineticEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
inlineinherited

◆ CrossSectionPerVolume()

G4double G4VEmModel::CrossSectionPerVolume ( const G4Material mat,
const G4ParticleDefinition p,
G4double  kineticEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
virtualinherited

Reimplemented in G4LivermorePhotoElectricModel, G4PAIModel, G4PAIPhotModel, G4BetheBlochNoDeltaModel, G4BraggNoDeltaModel, G4eeToHadronsModel, G4eeToHadronsMultiModel, G4ICRU73NoDeltaModel, G4MuBetheBlochModel, G4AtimaEnergyLossModel, G4BetheBlochModel, G4BraggIonModel, G4BraggModel, G4ICRU73QOModel, G4LindhardSorensenIonModel, G4MollerBhabhaModel, G4PEEffectFluoModel, G4PenelopeRayleighModelMI, G4LEPTSAttachmentModel, G4LEPTSDissociationModel, G4LEPTSElasticModel, G4LEPTSExcitationModel, G4LEPTSIonisationModel, G4LEPTSPositroniumModel, G4LEPTSRotExcitationModel, G4LEPTSVibExcitationModel, G4eplusTo2GammaOKVIModel, G4eplusTo3GammaOKVIModel, G4PenelopeComptonModel, G4eeToTwoGammaModel, G4GoudsmitSaundersonMscModel, G4IonParametrisedLossModel, G4DNABornExcitationModel1, G4DNABornExcitationModel2, G4DNABornIonisationModel1, G4DNABornIonisationModel2, G4DNAChampionElasticModel, G4DNACPA100ElasticModel, G4DNACPA100ExcitationModel, G4DNACPA100IonisationModel, G4DNADingfelderChargeDecreaseModel, G4DNADingfelderChargeIncreaseModel, G4DNADiracRMatrixExcitationModel, G4DNAEmfietzoglouExcitationModel, G4DNAEmfietzoglouIonisationModel, G4DNAIonElasticModel, G4DNAMeltonAttachmentModel, G4DNAMillerGreenExcitationModel, G4DNAModelInterface, G4TDNAOneStepThermalizationModel< MODEL >, G4DNAQuinnPlasmonExcitationModel, G4DNARelativisticIonisationModel, G4DNARuddIonisationExtendedModel, G4DNARuddIonisationModel, G4DNASancheExcitationModel, G4DNAScreenedRutherfordElasticModel, G4DNATransformElectronModel, G4DNAUeharaScreenedRutherfordElasticModel, G4MicroElecElasticModel, G4MicroElecElasticModel_new, G4MicroElecInelasticModel, G4MicroElecInelasticModel_new, G4MicroElecLOPhononModel, G4DNAELSEPAElasticModel, G4PenelopeBremsstrahlungModel, and G4PenelopeIonisationModel.

Definition at line 237 of file G4VEmModel.cc.

242{
243 SetupForMaterial(p, mat, ekin);
244 const G4double* theAtomNumDensityVector = mat->GetVecNbOfAtomsPerVolume();
245 G4int nelm = mat->GetNumberOfElements();
246 if(nelm > nsec) {
247 xsec.resize(nelm);
248 nsec = nelm;
249 }
250 G4double cross = 0.0;
251 for (G4int i=0; i<nelm; ++i) {
252 cross += theAtomNumDensityVector[i]*
253 ComputeCrossSectionPerAtom(p,mat->GetElement(i),ekin,emin,emax);
254 xsec[i] = cross;
255 }
256 return cross;
257}
const G4Element * GetElement(G4int iel) const
Definition: G4Material.hh:198
std::vector< G4double > xsec
Definition: G4VEmModel.hh:466
G4int nsec
Definition: G4VEmModel.hh:444
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
Definition: G4VEmModel.cc:440

References G4VEmModel::ComputeCrossSectionPerAtom(), emax, G4Material::GetElement(), G4Material::GetNumberOfElements(), G4Material::GetVecNbOfAtomsPerVolume(), G4VEmModel::nsec, G4VEmModel::SetupForMaterial(), and G4VEmModel::xsec.

Referenced by G4AdjointBremsstrahlungModel::AdjointCrossSection(), G4EmCalculator::ComputeCrossSectionPerVolume(), G4VEmProcess::ComputeCurrentLambda(), G4VEmModel::ComputeMeanFreePath(), G4TablesForExtrapolator::ComputeTrasportXS(), G4VEmModel::CrossSection(), G4LivermorePhotoElectricModel::CrossSectionPerVolume(), G4PenelopeRayleighModelMI::CrossSectionPerVolume(), G4DNADummyModel::CrossSectionPerVolume(), G4VEnergyLossProcess::CrossSectionPerVolume(), G4VEmAdjointModel::DiffCrossSectionPerVolumePrimToSecond(), G4VMscModel::GetTransportMeanFreePath(), G4VEmModel::SelectRandomAtom(), and G4VEmModel::Value().

◆ CurrentCouple()

const G4MaterialCutsCouple * G4VEmModel::CurrentCouple ( ) const
inlineprotectedinherited

◆ DeexcitationFlag()

G4bool G4VEmModel::DeexcitationFlag ( ) const
inlineinherited

Definition at line 704 of file G4VEmModel.hh.

705{
706 return flagDeexcitation;
707}
G4bool flagDeexcitation
Definition: G4VEmModel.hh:455

References G4VEmModel::flagDeexcitation.

Referenced by G4EmModelManager::DumpModelList().

◆ DefineForRegion()

void G4VEmModel::DefineForRegion ( const G4Region )
virtualinherited

Reimplemented in G4PAIModel, and G4PAIPhotModel.

Definition at line 360 of file G4VEmModel.cc.

361{}

Referenced by G4EmModelManager::AddEmModel().

◆ DefineMaterial()

void G4WentzelVIRelModel::DefineMaterial ( const G4MaterialCutsCouple cup)

◆ DumpParameters()

void G4VMscModel::DumpParameters ( std::ostream &  out) const
inherited

Definition at line 137 of file G4VMscModel.cc.

138{
139 G4String alg = "UseSafety";
140 if (steppingAlgorithm == fUseDistanceToBoundary) alg = "DistanceToBoundary";
141 else if (steppingAlgorithm == fMinimal) alg = "Minimal";
142 else if (steppingAlgorithm == fUseSafetyPlus) alg = "SafetyPlus";
143
144 out << std::setw(18) << "StepLim=" << alg << " Rfact=" << facrange
145 << " Gfact=" << facgeom << " Sfact=" << facsafety << " DispFlag:" << latDisplasment
146 << " Skin=" << skin << " Llim=" << lambdalimit/CLHEP::mm << " mm" << G4endl;
147}
@ fMinimal
@ fUseSafetyPlus
#define G4endl
Definition: G4ios.hh:57
G4double skin
Definition: G4VMscModel.hh:199
G4double lambdalimit
Definition: G4VMscModel.hh:201
G4bool latDisplasment
Definition: G4VMscModel.hh:206
static constexpr double mm
Definition: SystemOfUnits.h:96

References G4VMscModel::facgeom, G4VMscModel::facrange, G4VMscModel::facsafety, fMinimal, fUseDistanceToBoundary, fUseSafetyPlus, G4endl, G4VMscModel::lambdalimit, G4VMscModel::latDisplasment, CLHEP::mm, G4VMscModel::skin, and G4VMscModel::steppingAlgorithm.

Referenced by G4EmModelManager::DumpModelList().

◆ FillNumberOfSecondaries()

void G4VEmModel::FillNumberOfSecondaries ( G4int numberOfTriplets,
G4int numberOfRecoil 
)
virtualinherited

Definition at line 365 of file G4VEmModel.cc.

367{
368 numberOfTriplets = 0;
369 numberOfRecoil = 0;
370}

Referenced by G4VEmProcess::PostStepDoIt(), and G4VEnergyLossProcess::PostStepDoIt().

◆ ForceBuildTableFlag()

G4bool G4VEmModel::ForceBuildTableFlag ( ) const
inlineinherited

Definition at line 711 of file G4VEmModel.hh.

712{
713 return flagForceBuildTable;
714}
G4bool flagForceBuildTable
Definition: G4VEmModel.hh:456

References G4VEmModel::flagForceBuildTable.

Referenced by G4VMscModel::GetParticleChangeForMSC().

◆ GetAngularDistribution()

G4VEmAngularDistribution * G4VEmModel::GetAngularDistribution ( )
inlineinherited

Definition at line 621 of file G4VEmModel.hh.

622{
623 return anglModel;
624}
G4VEmAngularDistribution * anglModel
Definition: G4VEmModel.hh:414

References G4VEmModel::anglModel.

Referenced by G4EmModelManager::DumpModelList(), G4AtimaEnergyLossModel::Initialise(), G4BetheBlochModel::Initialise(), G4BraggIonModel::Initialise(), G4BraggModel::Initialise(), G4ICRU73QOModel::Initialise(), G4LindhardSorensenIonModel::Initialise(), G4MollerBhabhaModel::Initialise(), G4AdjointBremsstrahlungModel::RapidSampleSecondaries(), G4LivermoreBremsstrahlungModel::SampleSecondaries(), G4eBremParametrizedModel::SampleSecondaries(), G4eBremsstrahlungRelModel::SampleSecondaries(), G4SeltzerBergerModel::SampleSecondaries(), G4DNABornIonisationModel1::SampleSecondaries(), G4DNABornIonisationModel2::SampleSecondaries(), G4DNAEmfietzoglouIonisationModel::SampleSecondaries(), G4DNARuddIonisationExtendedModel::SampleSecondaries(), G4DNARuddIonisationModel::SampleSecondaries(), G4PAIModel::SampleSecondaries(), G4PAIPhotModel::SampleSecondaries(), G4LivermoreIonisationModel::SampleSecondaries(), G4LivermorePhotoElectricModel::SampleSecondaries(), G4LivermoreRayleighModel::SampleSecondaries(), G4MicroElecInelasticModel::SampleSecondaries(), G4MicroElecInelasticModel_new::SampleSecondaries(), G4MuBremsstrahlungModel::SampleSecondaries(), G4MuPairProductionModel::SampleSecondaries(), G4AtimaEnergyLossModel::SampleSecondaries(), G4BetheBlochModel::SampleSecondaries(), G4BetheHeitlerModel::SampleSecondaries(), G4BraggIonModel::SampleSecondaries(), G4BraggModel::SampleSecondaries(), G4ICRU73QOModel::SampleSecondaries(), G4LindhardSorensenIonModel::SampleSecondaries(), G4MollerBhabhaModel::SampleSecondaries(), G4PairProductionRelModel::SampleSecondaries(), G4PEEffectFluoModel::SampleSecondaries(), and G4IonParametrisedLossModel::SampleSecondaries().

◆ GetChargeSquareRatio()

G4double G4VEmModel::GetChargeSquareRatio ( const G4ParticleDefinition p,
const G4Material ,
G4double  kineticEnergy 
)
virtualinherited

◆ GetCrossSectionTable()

G4PhysicsTable * G4VEmModel::GetCrossSectionTable ( )
inlineinherited

◆ GetCurrentElement()

const G4Element * G4VEmModel::GetCurrentElement ( ) const
inlineinherited

◆ GetCurrentIsotope()

const G4Isotope * G4VEmModel::GetCurrentIsotope ( ) const
inlineinherited

Definition at line 512 of file G4VEmModel.hh.

513{
514 return fCurrentIsotope;
515}
const G4Isotope * fCurrentIsotope
Definition: G4VEmModel.hh:418

References G4VEmModel::fCurrentIsotope.

Referenced by G4VEmProcess::GetTargetIsotope().

◆ GetDEDX() [1/2]

G4double G4VMscModel::GetDEDX ( const G4ParticleDefinition part,
G4double  kineticEnergy,
const G4MaterialCutsCouple couple 
)
inherited

Definition at line 159 of file G4VMscModel.cc.

161{
162 G4double x;
163 if (nullptr != ionisation) {
164 x = ionisation->GetDEDX(kinEnergy, couple);
165 } else {
166 const G4double q = part->GetPDGCharge()*inveplus;
167 x = dedx*q*q;
168 }
169 return x;
170}
G4double GetDEDX(G4double kineticEnergy, const G4MaterialCutsCouple *)
G4VEnergyLossProcess * ionisation
Definition: G4VMscModel.hh:187
G4double dedx
Definition: G4VMscModel.hh:190

References G4VMscModel::dedx, G4VEnergyLossProcess::GetDEDX(), G4ParticleDefinition::GetPDGCharge(), G4VEmModel::inveplus, and G4VMscModel::ionisation.

Referenced by G4UrbanAdjointMscModel::SampleScattering(), and G4UrbanMscModel::SampleScattering().

◆ GetDEDX() [2/2]

G4double G4VMscModel::GetDEDX ( const G4ParticleDefinition part,
G4double  kineticEnergy,
const G4MaterialCutsCouple couple,
G4double  logKineticEnergy 
)
inherited

Definition at line 174 of file G4VMscModel.cc.

176{
177 G4double x;
178 if (nullptr != ionisation) {
179 x = ionisation->GetDEDX(kinEnergy, couple, logKinEnergy);
180 } else {
181 const G4double q = part->GetPDGCharge()*inveplus;
182 x = dedx*q*q;
183 }
184 return x;
185}

References G4VMscModel::dedx, G4VEnergyLossProcess::GetDEDX(), G4ParticleDefinition::GetPDGCharge(), G4VEmModel::inveplus, and G4VMscModel::ionisation.

◆ GetElementData()

G4ElementData * G4VEmModel::GetElementData ( )
inlineinherited

◆ GetElementSelectors()

std::vector< G4EmElementSelector * > * G4VEmModel::GetElementSelectors ( )
inlineinherited

◆ GetEnergy()

G4double G4VMscModel::GetEnergy ( const G4ParticleDefinition part,
G4double  range,
const G4MaterialCutsCouple couple 
)
inherited

Definition at line 224 of file G4VMscModel.cc.

226{
227 G4double e;
228 //G4cout << "G4VMscModel::GetEnergy R(mm)= " << range << " " << ionisation
229 // << " Rlocal(mm)= " << localrange << " Elocal(MeV)= " << localtkin << G4endl;
230 if(nullptr != ionisation) { e = ionisation->GetKineticEnergy(range, couple); }
231 else {
232 e = localtkin;
233 if(localrange > range) {
234 G4double q = part->GetPDGCharge()*inveplus;
235 e -= (localrange - range)*dedx*q*q*couple->GetMaterial()->GetDensity();
236 }
237 }
238 return e;
239}
G4double GetDensity() const
Definition: G4Material.hh:176
G4double GetKineticEnergy(G4double range, const G4MaterialCutsCouple *)
G4double localtkin
Definition: G4VMscModel.hh:191
G4double localrange
Definition: G4VMscModel.hh:192

References G4VMscModel::dedx, G4Material::GetDensity(), G4VEnergyLossProcess::GetKineticEnergy(), G4MaterialCutsCouple::GetMaterial(), G4ParticleDefinition::GetPDGCharge(), G4VEmModel::inveplus, G4VMscModel::ionisation, G4VMscModel::localrange, and G4VMscModel::localtkin.

Referenced by G4UrbanAdjointMscModel::ComputeGeomPathLength(), G4GoudsmitSaundersonMscModel::ComputeGeomPathLength(), G4UrbanMscModel::ComputeGeomPathLength(), G4WentzelVIModel::ComputeGeomPathLength(), G4WentzelVIModel::ComputeTrueStepLength(), G4GoudsmitSaundersonMscModel::SampleMSC(), G4UrbanAdjointMscModel::SampleScattering(), and G4UrbanMscModel::SampleScattering().

◆ GetFixedCut()

G4double G4WentzelVIModel::GetFixedCut ( ) const
inlineinherited

Definition at line 208 of file G4WentzelVIModel.hh.

209{
210 return fixedCut;
211}

References G4WentzelVIModel::fixedCut.

◆ GetIonisation()

G4VEnergyLossProcess * G4VMscModel::GetIonisation ( ) const
inlineinherited

Definition at line 302 of file G4VMscModel.hh.

303{
304 return ionisation;
305}

References G4VMscModel::ionisation.

◆ GetModelOfFluctuations()

G4VEmFluctuationModel * G4VEmModel::GetModelOfFluctuations ( )
inlineinherited

◆ GetName()

const G4String & G4VEmModel::GetName ( ) const
inlineinherited

◆ GetPartialCrossSection()

G4double G4VEmModel::GetPartialCrossSection ( const G4Material ,
G4int  level,
const G4ParticleDefinition ,
G4double  kineticEnergy 
)
virtualinherited

◆ GetParticleChangeForGamma()

G4ParticleChangeForGamma * G4VEmModel::GetParticleChangeForGamma ( )
protectedinherited

Definition at line 123 of file G4VEmModel.cc.

124{
125 G4ParticleChangeForGamma* p = nullptr;
126 if (pParticleChange != nullptr) {
127 p = static_cast<G4ParticleChangeForGamma*>(pParticleChange);
128 } else {
129 p = new G4ParticleChangeForGamma();
130 pParticleChange = p;
131 }
132 if(fTripletModel != nullptr) { fTripletModel->SetParticleChange(p); }
133 return p;
134}
void SetParticleChange(G4VParticleChange *, G4VEmFluctuationModel *f=nullptr)
Definition: G4VEmModel.cc:447
G4VParticleChange * pParticleChange
Definition: G4VEmModel.hh:425
G4VEmModel * fTripletModel
Definition: G4VEmModel.hh:415

References G4VEmModel::fTripletModel, G4VEmModel::pParticleChange, and G4VEmModel::SetParticleChange().

Referenced by G4MicroElecLOPhononModel::G4MicroElecLOPhononModel(), G4DNAChampionElasticModel::Initialise(), G4DNACPA100ElasticModel::Initialise(), G4DNADingfelderChargeDecreaseModel::Initialise(), G4DNADingfelderChargeIncreaseModel::Initialise(), G4DNAMeltonAttachmentModel::Initialise(), G4DNAMillerGreenExcitationModel::Initialise(), G4DNARuddIonisationExtendedModel::Initialise(), G4DNARuddIonisationModel::Initialise(), G4DNASancheExcitationModel::Initialise(), G4DNAScreenedRutherfordElasticModel::Initialise(), G4DNATransformElectronModel::Initialise(), G4DNAUeharaScreenedRutherfordElasticModel::Initialise(), G4LEPTSAttachmentModel::Initialise(), G4LEPTSDissociationModel::Initialise(), G4LEPTSElasticModel::Initialise(), G4LEPTSExcitationModel::Initialise(), G4LEPTSIonisationModel::Initialise(), G4LEPTSPositroniumModel::Initialise(), G4LEPTSRotExcitationModel::Initialise(), G4LEPTSVibExcitationModel::Initialise(), G4BoldyshevTripletModel::Initialise(), G4eplusTo3GammaOKVIModel::Initialise(), G4eSingleCoulombScatteringModel::Initialise(), G4IonCoulombScatteringModel::Initialise(), G4eeToHadronsMultiModel::Initialise(), G4JAEAElasticScatteringModel::Initialise(), G4JAEAPolarizedElasticScatteringModel::Initialise(), G4LivermoreComptonModel::Initialise(), G4LivermoreGammaConversion5DModel::Initialise(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePhotoElectricModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecElasticModel_new::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4MicroElecLOPhononModel::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4PolarizedAnnihilationModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4eeToTwoGammaModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4PairProductionRelModel::Initialise(), G4PEEffectFluoModel::Initialise(), G4XrayRayleighModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNACPA100ExcitationModel::Initialise(), G4DNACPA100IonisationModel::Initialise(), G4DNADiracRMatrixExcitationModel::Initialise(), G4DNAEmfietzoglouExcitationModel::Initialise(), G4DNAEmfietzoglouIonisationModel::Initialise(), G4DNAQuinnPlasmonExcitationModel::Initialise(), G4DNARelativisticIonisationModel::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNAModelInterface::Initialise(), and G4DNAIonElasticModel::Initialise().

◆ GetParticleChangeForLoss()

G4ParticleChangeForLoss * G4VEmModel::GetParticleChangeForLoss ( )
protectedinherited

◆ GetParticleChangeForMSC()

G4ParticleChangeForMSC * G4VMscModel::GetParticleChangeForMSC ( const G4ParticleDefinition p = nullptr)
protectedinherited

Definition at line 78 of file G4VMscModel.cc.

79{
80 // recomputed for each new run
81 if(nullptr == safetyHelper) {
85 }
86 G4ParticleChangeForMSC* change = nullptr;
87 if (nullptr != pParticleChange) {
88 change = static_cast<G4ParticleChangeForMSC*>(pParticleChange);
89 } else {
90 change = new G4ParticleChangeForMSC();
91 }
92 if(IsMaster() && nullptr != p) {
93
94 // table is always built for low mass particles
95 if(p->GetParticleName() != "GenericIon" &&
97
99 G4LossTableBuilder* builder =
103 emin = std::max(emin, param->MinKinEnergy());
104 emax = std::min(emax, param->MaxKinEnergy());
105 if(emin < emax) {
107 emin, emax, true);
108 }
109 }
110 }
111 return change;
112}
static G4EmParameters * Instance()
G4double MinKinEnergy() const
G4double MaxKinEnergy() const
G4PhysicsTable * BuildTableForModel(G4PhysicsTable *table, G4VEmModel *model, const G4ParticleDefinition *, G4double emin, G4double emax, G4bool spline)
static G4LossTableManager * Instance()
G4LossTableBuilder * GetTableBuilder()
const G4String & GetParticleName() const
void InitialiseHelper()
static G4TransportationManager * GetTransportationManager()
G4SafetyHelper * GetSafetyHelper() const
G4double LowEnergyLimit() const
Definition: G4VEmModel.hh:662
G4bool IsMaster() const
Definition: G4VEmModel.hh:746
G4double HighEnergyLimit() const
Definition: G4VEmModel.hh:655
G4double HighEnergyActivationLimit() const
Definition: G4VEmModel.hh:669
G4double LowEnergyActivationLimit() const
Definition: G4VEmModel.hh:676
G4bool ForceBuildTableFlag() const
Definition: G4VEmModel.hh:711
static constexpr double GeV

References G4LossTableBuilder::BuildTableForModel(), emax, G4VEmModel::ForceBuildTableFlag(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4TransportationManager::GetSafetyHelper(), G4LossTableManager::GetTableBuilder(), G4TransportationManager::GetTransportationManager(), CLHEP::GeV, G4VEmModel::HighEnergyActivationLimit(), G4VEmModel::HighEnergyLimit(), G4SafetyHelper::InitialiseHelper(), G4EmParameters::Instance(), G4LossTableManager::Instance(), G4VEmModel::IsMaster(), G4VEmModel::LowEnergyActivationLimit(), G4VEmModel::LowEnergyLimit(), G4INCL::Math::max(), G4EmParameters::MaxKinEnergy(), G4INCL::Math::min(), G4EmParameters::MinKinEnergy(), G4VEmModel::pParticleChange, G4VMscModel::safetyHelper, and G4VEmModel::xSectionTable.

Referenced by G4UrbanAdjointMscModel::Initialise(), G4GoudsmitSaundersonMscModel::Initialise(), G4UrbanMscModel::Initialise(), and G4WentzelVIModel::Initialise().

◆ GetParticleCharge()

G4double G4VEmModel::GetParticleCharge ( const G4ParticleDefinition p,
const G4Material ,
G4double  kineticEnergy 
)
virtualinherited

◆ GetRange() [1/2]

G4double G4VMscModel::GetRange ( const G4ParticleDefinition part,
G4double  kineticEnergy,
const G4MaterialCutsCouple couple 
)
inherited

Definition at line 189 of file G4VMscModel.cc.

191{
192 // << ionisation << " " << part->GetParticleName() << G4endl;
193 localtkin = kinEnergy;
194 if (nullptr != ionisation) {
195 localrange = ionisation->GetRange(kinEnergy, couple);
196 } else {
197 const G4double q = part->GetPDGCharge()*inveplus;
198 localrange = kinEnergy/(dedx*q*q*couple->GetMaterial()->GetDensity());
199 }
200 //G4cout << "R(mm)= " << localrange << " " << ionisation << G4endl;
201 return localrange;
202}
G4double GetRange(G4double kineticEnergy, const G4MaterialCutsCouple *)

References G4VMscModel::dedx, G4Material::GetDensity(), G4MaterialCutsCouple::GetMaterial(), G4ParticleDefinition::GetPDGCharge(), G4VEnergyLossProcess::GetRange(), G4VEmModel::inveplus, G4VMscModel::ionisation, G4VMscModel::localrange, and G4VMscModel::localtkin.

Referenced by G4VMultipleScattering::AlongStepDoIt(), G4UrbanAdjointMscModel::ComputeTruePathLengthLimit(), G4LowEWentzelVIModel::ComputeTruePathLengthLimit(), G4GoudsmitSaundersonMscModel::ComputeTruePathLengthLimit(), G4UrbanMscModel::ComputeTruePathLengthLimit(), and G4WentzelVIModel::ComputeTruePathLengthLimit().

◆ GetRange() [2/2]

G4double G4VMscModel::GetRange ( const G4ParticleDefinition part,
G4double  kineticEnergy,
const G4MaterialCutsCouple couple,
G4double  logKineticEnergy 
)
inherited

Definition at line 206 of file G4VMscModel.cc.

208{
209 //G4cout << "G4VMscModel::GetRange E(MeV)= " << kinEnergy << " "
210 // << ionisation << " " << part->GetParticleName() << G4endl;
211 localtkin = kinEnergy;
212 if (nullptr != ionisation) {
213 localrange = ionisation->GetRange(kinEnergy, couple, logKinEnergy);
214 } else {
215 const G4double q = part->GetPDGCharge()*inveplus;
216 localrange = kinEnergy/(dedx*q*q*couple->GetMaterial()->GetDensity());
217 }
218 //G4cout << "R(mm)= " << localrange << " " << ionisation << G4endl;
219 return localrange;
220}

References G4VMscModel::dedx, G4Material::GetDensity(), G4MaterialCutsCouple::GetMaterial(), G4ParticleDefinition::GetPDGCharge(), G4VEnergyLossProcess::GetRange(), G4VEmModel::inveplus, G4VMscModel::ionisation, G4VMscModel::localrange, and G4VMscModel::localtkin.

◆ GetSecondMomentTable()

G4PhysicsTable * G4WentzelVIModel::GetSecondMomentTable ( )
inlineinherited

Definition at line 246 of file G4WentzelVIModel.hh.

247{
248 return fSecondMoments;
249}
G4PhysicsTable * fSecondMoments

References G4WentzelVIModel::fSecondMoments.

Referenced by G4WentzelVIModel::InitialiseLocal().

◆ GetTransportMeanFreePath() [1/2]

G4double G4VMscModel::GetTransportMeanFreePath ( const G4ParticleDefinition part,
G4double  kinEnergy 
)
inlineinherited

◆ GetTransportMeanFreePath() [2/2]

G4double G4VMscModel::GetTransportMeanFreePath ( const G4ParticleDefinition part,
G4double  kinEnergy,
G4double  logKinEnergy 
)
inlineinherited

Definition at line 332 of file G4VMscModel.hh.

334{
335 G4double x;
336 if (nullptr != xSectionTable) {
337 x = pFactor*(*xSectionTable)[basedCoupleIndex]->LogVectorValue(ekin, logekin)/(ekin*ekin);
338 } else {
339 x = pFactor*CrossSectionPerVolume(pBaseMaterial, part, ekin, 0.0, DBL_MAX);
340 }
341 return (x > 0.0) ? 1.0/x : DBL_MAX;
342}

References G4VEmModel::basedCoupleIndex, G4VEmModel::CrossSectionPerVolume(), DBL_MAX, G4VEmModel::pBaseMaterial, G4VEmModel::pFactor, and G4VEmModel::xSectionTable.

◆ GetTripletModel()

G4VEmModel * G4VEmModel::GetTripletModel ( )
inlineinherited

◆ GetWVICrossSection()

G4WentzelOKandVIxSection * G4WentzelVIModel::GetWVICrossSection ( )
inlineinherited

Definition at line 225 of file G4WentzelVIModel.hh.

226{
227 return wokvi;
228}

References G4WentzelVIModel::wokvi.

Referenced by DefineMaterial().

◆ HighEnergyActivationLimit()

G4double G4VEmModel::HighEnergyActivationLimit ( ) const
inlineinherited

◆ HighEnergyLimit()

G4double G4VEmModel::HighEnergyLimit ( ) const
inlineinherited

Definition at line 655 of file G4VEmModel.hh.

656{
657 return highLimit;
658}
G4double highLimit
Definition: G4VEmModel.hh:437

References G4VEmModel::highLimit.

Referenced by G4DNAChampionElasticModel::CrossSectionPerVolume(), G4DNACPA100ElasticModel::CrossSectionPerVolume(), G4DNACPA100ExcitationModel::CrossSectionPerVolume(), G4DNACPA100IonisationModel::CrossSectionPerVolume(), G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume(), G4DNAEmfietzoglouIonisationModel::CrossSectionPerVolume(), G4DNAMeltonAttachmentModel::CrossSectionPerVolume(), G4DNASancheExcitationModel::CrossSectionPerVolume(), G4DNAScreenedRutherfordElasticModel::CrossSectionPerVolume(), G4DNATransformElectronModel::CrossSectionPerVolume(), G4DNAELSEPAElasticModel::CrossSectionPerVolume(), G4DNAChampionElasticModel::G4DNAChampionElasticModel(), G4DNACPA100ElasticModel::G4DNACPA100ElasticModel(), G4DNAMeltonAttachmentModel::G4DNAMeltonAttachmentModel(), G4DNASancheExcitationModel::G4DNASancheExcitationModel(), G4DNAUeharaScreenedRutherfordElasticModel::G4DNAUeharaScreenedRutherfordElasticModel(), G4eeToHadronsModel::G4eeToHadronsModel(), G4IonParametrisedLossModel::G4IonParametrisedLossModel(), G4LivermorePolarizedRayleighModel::G4LivermorePolarizedRayleighModel(), G4ContinuousGainOfEnergy::GetContinuousStepLimit(), G4PenelopeBremsstrahlungModel::GetCrossSectionTableForCouple(), G4VMscModel::GetParticleChangeForMSC(), G4DNAChampionElasticModel::Initialise(), G4DNACPA100ElasticModel::Initialise(), G4DNADingfelderChargeDecreaseModel::Initialise(), G4DNADingfelderChargeIncreaseModel::Initialise(), G4DNAMeltonAttachmentModel::Initialise(), G4DNAMillerGreenExcitationModel::Initialise(), G4DNARuddIonisationExtendedModel::Initialise(), G4DNARuddIonisationModel::Initialise(), G4DNASancheExcitationModel::Initialise(), G4DNAScreenedRutherfordElasticModel::Initialise(), G4DNAUeharaScreenedRutherfordElasticModel::Initialise(), G4BoldyshevTripletModel::Initialise(), G4PAIModel::Initialise(), G4PAIPhotModel::Initialise(), G4JAEAElasticScatteringModel::Initialise(), G4JAEAPolarizedElasticScatteringModel::Initialise(), G4LivermoreComptonModel::Initialise(), G4LivermoreGammaConversion5DModel::Initialise(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreIonisationModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecElasticModel_new::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeBremsstrahlungModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopeIonisationModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4MuBremsstrahlungModel::Initialise(), G4MuPairProductionModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4GoudsmitSaundersonMscModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), G4WentzelVIModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNACPA100ExcitationModel::Initialise(), G4DNACPA100IonisationModel::Initialise(), G4DNADiracRMatrixExcitationModel::Initialise(), G4DNAEmfietzoglouExcitationModel::Initialise(), G4DNAEmfietzoglouIonisationModel::Initialise(), G4DNAQuinnPlasmonExcitationModel::Initialise(), G4DNARelativisticIonisationModel::Initialise(), G4EmModelManager::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNADummyModel::Initialise(), G4DNAIonElasticModel::Initialise(), G4mplIonisation::InitialiseEnergyLossProcess(), G4ionIonisation::InitialiseEnergyLossProcess(), G4MuBremsstrahlungModel::InitialiseLocal(), G4MuPairProductionModel::InitialiseLocal(), G4eBremsstrahlungRelModel::InitialiseLocal(), G4PairProductionRelModel::InitialiseLocal(), G4CoulombScattering::InitialiseProcess(), G4VEmProcess::PostStepDoIt(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4DNACPA100IonisationModel::SampleSecondaries(), G4DNAEmfietzoglouIonisationModel::SampleSecondaries(), G4DNASancheExcitationModel::SampleSecondaries(), G4EmConfigurator::SetExtraEmModel(), G4mplIonisationModel::SetParticle(), G4mplIonisationWithDeltaModel::SetParticle(), G4eBremsstrahlung::StreamProcessInfo(), and G4EmConfigurator::UpdateModelEnergyRange().

◆ Initialise()

void G4WentzelVIRelModel::Initialise ( const G4ParticleDefinition p,
const G4DataVector cuts 
)
overridevirtual

Reimplemented from G4WentzelVIModel.

Definition at line 88 of file G4WentzelVIRelModel.cc.

90{
91 // Access to materials
92 const G4ProductionCutsTable* theCoupleTable =
94 if(theCoupleTable->GetTableSize() != effMass.size()) {
96 }
97
99}
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override

References ComputeEffectiveMass(), effMass, G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), and G4WentzelVIModel::Initialise().

◆ InitialiseElementSelectors()

void G4VEmModel::InitialiseElementSelectors ( const G4ParticleDefinition part,
const G4DataVector cuts 
)
inherited

Definition at line 138 of file G4VEmModel.cc.

140{
141 // using spline for element selectors should be investigated in details
142 // because small number of points may provide biased results
143 // large number of points requires significant increase of memory
144 G4bool spline = false;
145
146 //G4cout << "IES: for " << GetName() << " Emin(MeV)= " << lowLimit/MeV
147 // << " Emax(MeV)= " << highLimit/MeV << G4endl;
148
149 // two times less bins because probability functon is normalized
150 // so correspondingly is more smooth
151 if(highLimit <= lowLimit) { return; }
152
154
155 G4ProductionCutsTable* theCoupleTable=
157 G4int numOfCouples = theCoupleTable->GetTableSize();
158
159 // prepare vector
160 if(!elmSelectors) {
161 elmSelectors = new std::vector<G4EmElementSelector*>;
162 }
163 if(numOfCouples > nSelectors) {
164 for(G4int i=nSelectors; i<numOfCouples; ++i) {
165 elmSelectors->push_back(nullptr);
166 }
167 nSelectors = numOfCouples;
168 }
169
170 // initialise vector
171 for(G4int i=0; i<numOfCouples; ++i) {
172
173 // no need in element selectors for infinite cuts
174 if(cuts[i] == DBL_MAX) { continue; }
175
176 auto couple = theCoupleTable->GetMaterialCutsCouple(i);
177 auto material = couple->GetMaterial();
178 SetCurrentCouple(couple);
179
180 // selector already exist then delete
181 delete (*elmSelectors)[i];
182
183 G4double emin = std::max(lowLimit, MinPrimaryEnergy(material, part, cuts[i]));
184 G4double emax = std::max(highLimit, 10*emin);
185 static const G4double invlog106 = 1.0/(6*G4Log(10.));
186 G4int nbins = (G4int)(nbinsPerDec*G4Log(emax/emin)*invlog106);
187 nbins = std::max(nbins, 3);
188
189 (*elmSelectors)[i] = new G4EmElementSelector(this,material,nbins,
190 emin,emax,spline);
191 ((*elmSelectors)[i])->Initialise(part, cuts[i]);
192 /*
193 G4cout << "G4VEmModel::InitialiseElmSelectors i= " << i
194 << " " << part->GetParticleName()
195 << " for " << GetName() << " cut= " << cuts[i]
196 << " " << (*elmSelectors)[i] << G4endl;
197 ((*elmSelectors)[i])->Dump(part);
198 */
199 }
200}
bool G4bool
Definition: G4Types.hh:86
G4int NumberOfBinsPerDecade() const
virtual G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
Definition: G4VEmModel.cc:415
G4double lowLimit
Definition: G4VEmModel.hh:436
G4int nSelectors
Definition: G4VEmModel.hh:443
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)=0

References DBL_MAX, G4VEmModel::elmSelectors, emax, G4Log(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), G4VEmModel::highLimit, G4VEmModel::Initialise(), G4EmParameters::Instance(), G4VEmModel::lowLimit, eplot::material, G4INCL::Math::max(), G4VEmModel::MinPrimaryEnergy(), G4VEmModel::nSelectors, G4EmParameters::NumberOfBinsPerDecade(), and G4VEmModel::SetCurrentCouple().

Referenced by G4eSingleCoulombScatteringModel::Initialise(), G4PAIModel::Initialise(), G4PAIPhotModel::Initialise(), G4JAEAElasticScatteringModel::Initialise(), G4JAEAPolarizedElasticScatteringModel::Initialise(), G4LivermoreComptonModel::Initialise(), G4LivermoreGammaConversion5DModel::Initialise(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4MuBremsstrahlungModel::Initialise(), G4MuPairProductionModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4eBremParametrizedModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), and G4XrayRayleighModel::Initialise().

◆ InitialiseForElement()

void G4VEmModel::InitialiseForElement ( const G4ParticleDefinition ,
G4int  Z 
)
virtualinherited

◆ InitialiseForMaterial()

void G4VEmModel::InitialiseForMaterial ( const G4ParticleDefinition part,
const G4Material material 
)
virtualinherited

Definition at line 209 of file G4VEmModel.cc.

211{
212 if(material != nullptr) {
213 size_t n = material->GetNumberOfElements();
214 for(size_t i=0; i<n; ++i) {
215 G4int Z = material->GetElement(i)->GetZasInt();
216 InitialiseForElement(part, Z);
217 }
218 }
219}
virtual void InitialiseForElement(const G4ParticleDefinition *, G4int Z)
Definition: G4VEmModel.cc:223

References G4VEmModel::InitialiseForElement(), eplot::material, CLHEP::detail::n, and Z.

Referenced by G4EmCalculator::FindEmModel().

◆ InitialiseLocal()

void G4WentzelVIModel::InitialiseLocal ( const G4ParticleDefinition ,
G4VEmModel masterModel 
)
overridevirtualinherited

Reimplemented from G4VEmModel.

Definition at line 190 of file G4WentzelVIModel.cc.

192{
193 fSecondMoments = static_cast<G4WentzelVIModel*>(masterModel)
195}
G4PhysicsTable * GetSecondMomentTable()

References G4WentzelVIModel::fSecondMoments, and G4WentzelVIModel::GetSecondMomentTable().

◆ InitialiseParameters()

void G4VMscModel::InitialiseParameters ( const G4ParticleDefinition part)
inherited

Definition at line 116 of file G4VMscModel.cc.

117{
118 if(IsLocked()) { return; }
120 if(std::abs(part->GetPDGEncoding()) == 11) {
122 facrange = param->MscRangeFactor();
124 } else {
126 facrange = param->MscMuHadRangeFactor();
128 }
129 skin = param->MscSkin();
130 facgeom = param->MscGeomFactor();
131 facsafety = param->MscSafetyFactor();
132 lambdalimit = param->MscLambdaLimit();
133}
G4double MscMuHadRangeFactor() const
G4MscStepLimitType MscMuHadStepLimitType() const
G4double MscSafetyFactor() const
G4MscStepLimitType MscStepLimitType() const
G4double MscGeomFactor() const
G4bool LateralDisplacement() const
G4bool MuHadLateralDisplacement() const
G4double MscLambdaLimit() const
G4double MscRangeFactor() const
G4double MscSkin() const
G4bool IsLocked() const
Definition: G4VEmModel.hh:877

References G4VMscModel::facgeom, G4VMscModel::facrange, G4VMscModel::facsafety, G4ParticleDefinition::GetPDGEncoding(), G4EmParameters::Instance(), G4VEmModel::IsLocked(), G4VMscModel::lambdalimit, G4VMscModel::latDisplasment, G4EmParameters::LateralDisplacement(), G4EmParameters::MscGeomFactor(), G4EmParameters::MscLambdaLimit(), G4EmParameters::MscMuHadRangeFactor(), G4EmParameters::MscMuHadStepLimitType(), G4EmParameters::MscRangeFactor(), G4EmParameters::MscSafetyFactor(), G4EmParameters::MscSkin(), G4EmParameters::MscStepLimitType(), G4EmParameters::MuHadLateralDisplacement(), G4VMscModel::skin, and G4VMscModel::steppingAlgorithm.

Referenced by G4GoudsmitSaundersonMscModel::Initialise(), G4UrbanMscModel::Initialise(), and G4WentzelVIModel::Initialise().

◆ IsActive()

G4bool G4VEmModel::IsActive ( G4double  kinEnergy) const
inlineinherited

◆ IsLocked()

G4bool G4VEmModel::IsLocked ( ) const
inlineinherited

◆ IsMaster()

G4bool G4VEmModel::IsMaster ( ) const
inlineinherited

Definition at line 746 of file G4VEmModel.hh.

747{
748 return isMaster;
749}
G4bool isMaster
Definition: G4VEmModel.hh:457

References G4VEmModel::isMaster.

Referenced by G4PenelopeBremsstrahlungModel::BuildXSTable(), G4PenelopeBremsstrahlungModel::ClearTables(), G4MuPairProductionModel::DataCorrupted(), G4PenelopePhotoElectricModel::GetNumberOfShellXS(), G4VMscModel::GetParticleChangeForMSC(), G4BoldyshevTripletModel::Initialise(), G4eSingleCoulombScatteringModel::Initialise(), G4PAIModel::Initialise(), G4PAIPhotModel::Initialise(), G4EmMultiModel::Initialise(), G4mplIonisationModel::Initialise(), G4mplIonisationWithDeltaModel::Initialise(), G4JAEAElasticScatteringModel::Initialise(), G4JAEAPolarizedElasticScatteringModel::Initialise(), G4LivermoreBremsstrahlungModel::Initialise(), G4LivermoreComptonModel::Initialise(), G4LivermoreGammaConversion5DModel::Initialise(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePhotoElectricModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeBremsstrahlungModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopeIonisationModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4MuBremsstrahlungModel::Initialise(), G4MuPairProductionModel::Initialise(), G4BetheBlochModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4BraggIonModel::Initialise(), G4BraggModel::Initialise(), G4eBremParametrizedModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4eeToTwoGammaModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4GoudsmitSaundersonMscModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4LindhardSorensenIonModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), G4WentzelVIModel::Initialise(), G4PenelopeBremsstrahlungModel::InitialiseLocal(), G4PenelopeGammaConversionModel::ReadDataFile(), G4PenelopePhotoElectricModel::ReadDataFile(), G4BetheHeitlerModel::~G4BetheHeitlerModel(), G4BoldyshevTripletModel::~G4BoldyshevTripletModel(), G4BraggIonModel::~G4BraggIonModel(), G4BraggModel::~G4BraggModel(), G4eBremsstrahlungRelModel::~G4eBremsstrahlungRelModel(), G4eDPWACoulombScatteringModel::~G4eDPWACoulombScatteringModel(), G4GoudsmitSaundersonMscModel::~G4GoudsmitSaundersonMscModel(), G4JAEAElasticScatteringModel::~G4JAEAElasticScatteringModel(), G4JAEAPolarizedElasticScatteringModel::~G4JAEAPolarizedElasticScatteringModel(), G4LivermoreBremsstrahlungModel::~G4LivermoreBremsstrahlungModel(), G4LivermoreComptonModel::~G4LivermoreComptonModel(), G4LivermoreGammaConversion5DModel::~G4LivermoreGammaConversion5DModel(), G4LivermoreGammaConversionModel::~G4LivermoreGammaConversionModel(), G4LivermoreNuclearGammaConversionModel::~G4LivermoreNuclearGammaConversionModel(), G4LivermorePhotoElectricModel::~G4LivermorePhotoElectricModel(), G4LivermorePolarizedComptonModel::~G4LivermorePolarizedComptonModel(), G4LivermorePolarizedGammaConversionModel::~G4LivermorePolarizedGammaConversionModel(), G4LivermorePolarizedRayleighModel::~G4LivermorePolarizedRayleighModel(), G4LivermoreRayleighModel::~G4LivermoreRayleighModel(), G4LowEPComptonModel::~G4LowEPComptonModel(), G4LowEPPolarizedComptonModel::~G4LowEPPolarizedComptonModel(), G4mplIonisationModel::~G4mplIonisationModel(), G4mplIonisationWithDeltaModel::~G4mplIonisationWithDeltaModel(), G4PAIModel::~G4PAIModel(), G4PAIPhotModel::~G4PAIPhotModel(), G4PairProductionRelModel::~G4PairProductionRelModel(), G4PenelopeBremsstrahlungModel::~G4PenelopeBremsstrahlungModel(), G4PenelopeGammaConversionModel::~G4PenelopeGammaConversionModel(), G4PenelopeIonisationModel::~G4PenelopeIonisationModel(), G4PenelopePhotoElectricModel::~G4PenelopePhotoElectricModel(), G4PenelopeRayleighModel::~G4PenelopeRayleighModel(), G4PenelopeRayleighModelMI::~G4PenelopeRayleighModelMI(), G4SeltzerBergerModel::~G4SeltzerBergerModel(), and G4WentzelVIModel::~G4WentzelVIModel().

◆ LowEnergyActivationLimit()

G4double G4VEmModel::LowEnergyActivationLimit ( ) const
inlineinherited

◆ LowEnergyLimit()

G4double G4VEmModel::LowEnergyLimit ( ) const
inlineinherited

Definition at line 662 of file G4VEmModel.hh.

663{
664 return lowLimit;
665}

References G4VEmModel::lowLimit.

Referenced by G4eBremsstrahlungRelModel::ComputeCrossSectionPerAtom(), G4KleinNishinaCompton::ComputeCrossSectionPerAtom(), G4KleinNishinaModel::ComputeCrossSectionPerAtom(), G4LivermoreComptonModel::ComputeCrossSectionPerAtom(), G4LivermorePolarizedComptonModel::ComputeCrossSectionPerAtom(), G4LowEPComptonModel::ComputeCrossSectionPerAtom(), G4LowEPPolarizedComptonModel::ComputeCrossSectionPerAtom(), G4mplIonisationWithDeltaModel::ComputeCrossSectionPerElectron(), G4EmCalculator::ComputeDEDX(), G4eBremsstrahlungRelModel::ComputeDEDXPerVolume(), G4mplIonisationWithDeltaModel::ComputeDEDXPerVolume(), G4IonParametrisedLossModel::ComputeDEDXPerVolume(), G4IonParametrisedLossModel::CorrectionsAlongStep(), G4PenelopeRayleighModelMI::CrossSectionPerVolume(), G4PenelopeComptonModel::CrossSectionPerVolume(), G4DNAChampionElasticModel::CrossSectionPerVolume(), G4DNACPA100ElasticModel::CrossSectionPerVolume(), G4DNACPA100ExcitationModel::CrossSectionPerVolume(), G4DNACPA100IonisationModel::CrossSectionPerVolume(), G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume(), G4DNAEmfietzoglouIonisationModel::CrossSectionPerVolume(), G4DNAMeltonAttachmentModel::CrossSectionPerVolume(), G4DNASancheExcitationModel::CrossSectionPerVolume(), G4DNAScreenedRutherfordElasticModel::CrossSectionPerVolume(), G4DNAELSEPAElasticModel::CrossSectionPerVolume(), G4EmCalculator::FindEmModel(), G4DNAChampionElasticModel::G4DNAChampionElasticModel(), G4DNACPA100ElasticModel::G4DNACPA100ElasticModel(), G4DNAMeltonAttachmentModel::G4DNAMeltonAttachmentModel(), G4DNASancheExcitationModel::G4DNASancheExcitationModel(), G4DNAUeharaScreenedRutherfordElasticModel::G4DNAUeharaScreenedRutherfordElasticModel(), G4eeToHadronsModel::G4eeToHadronsModel(), G4LivermorePolarizedRayleighModel::G4LivermorePolarizedRayleighModel(), G4PenelopeBremsstrahlungModel::GetCrossSectionTableForCouple(), G4VMscModel::GetParticleChangeForMSC(), G4DNAChampionElasticModel::Initialise(), G4DNACPA100ElasticModel::Initialise(), G4DNADingfelderChargeDecreaseModel::Initialise(), G4DNADingfelderChargeIncreaseModel::Initialise(), G4DNAMeltonAttachmentModel::Initialise(), G4DNAMillerGreenExcitationModel::Initialise(), G4DNARuddIonisationExtendedModel::Initialise(), G4DNARuddIonisationModel::Initialise(), G4DNASancheExcitationModel::Initialise(), G4DNAScreenedRutherfordElasticModel::Initialise(), G4DNAUeharaScreenedRutherfordElasticModel::Initialise(), G4BoldyshevTripletModel::Initialise(), G4PAIModel::Initialise(), G4PAIPhotModel::Initialise(), G4JAEAElasticScatteringModel::Initialise(), G4JAEAPolarizedElasticScatteringModel::Initialise(), G4LivermoreComptonModel::Initialise(), G4LivermoreGammaConversion5DModel::Initialise(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreIonisationModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecElasticModel_new::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeBremsstrahlungModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopeIonisationModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4MuPairProductionModel::Initialise(), G4eBremParametrizedModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4GoudsmitSaundersonMscModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), G4WentzelVIModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNACPA100ExcitationModel::Initialise(), G4DNACPA100IonisationModel::Initialise(), G4DNADiracRMatrixExcitationModel::Initialise(), G4DNAEmfietzoglouExcitationModel::Initialise(), G4DNAEmfietzoglouIonisationModel::Initialise(), G4DNAQuinnPlasmonExcitationModel::Initialise(), G4DNARelativisticIonisationModel::Initialise(), G4EmModelManager::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNADummyModel::Initialise(), G4DNAIonElasticModel::Initialise(), G4mplIonisation::InitialiseEnergyLossProcess(), G4eBremsstrahlungRelModel::InitialiseLocal(), G4PairProductionRelModel::InitialiseLocal(), G4CoulombScattering::InitialiseProcess(), G4VEmProcess::PostStepDoIt(), G4eBremsstrahlungRelModel::SampleSecondaries(), G4DNACPA100IonisationModel::SampleSecondaries(), G4DNAEmfietzoglouIonisationModel::SampleSecondaries(), G4LivermoreComptonModel::SampleSecondaries(), G4LivermorePolarizedComptonModel::SampleSecondaries(), G4LowEPComptonModel::SampleSecondaries(), G4LowEPPolarizedComptonModel::SampleSecondaries(), G4PenelopeComptonModel::SampleSecondaries(), G4PolarizedComptonModel::SampleSecondaries(), G4KleinNishinaCompton::SampleSecondaries(), G4KleinNishinaModel::SampleSecondaries(), G4EmConfigurator::SetExtraEmModel(), G4mplIonisationModel::SetParticle(), G4mplIonisationWithDeltaModel::SetParticle(), and G4EmConfigurator::UpdateModelEnergyRange().

◆ LPMFlag()

G4bool G4VEmModel::LPMFlag ( ) const
inlineinherited

◆ MaxSecondaryEnergy()

G4double G4VEmModel::MaxSecondaryEnergy ( const G4ParticleDefinition ,
G4double  kineticEnergy 
)
protectedvirtualinherited

◆ MaxSecondaryKinEnergy()

G4double G4VEmModel::MaxSecondaryKinEnergy ( const G4DynamicParticle dynParticle)
inlineinherited

◆ MinEnergyCut()

G4double G4VEmModel::MinEnergyCut ( const G4ParticleDefinition ,
const G4MaterialCutsCouple  
)
virtualinherited

◆ MinPrimaryEnergy()

G4double G4VEmModel::MinPrimaryEnergy ( const G4Material ,
const G4ParticleDefinition ,
G4double  cut = 0.0 
)
virtualinherited

◆ ModelDescription()

void G4VEmModel::ModelDescription ( std::ostream &  outFile) const
virtualinherited

Reimplemented in G4eeToHadronsMultiModel.

Definition at line 469 of file G4VEmModel.cc.

470{
471 outFile << "The description for this model has not been written yet.\n";
472}

◆ operator=()

G4WentzelVIRelModel & G4WentzelVIRelModel::operator= ( const G4WentzelVIRelModel right)
delete

◆ PolarAngleLimit()

G4double G4VEmModel::PolarAngleLimit ( ) const
inlineinherited

◆ SampleScattering()

G4ThreeVector & G4WentzelVIModel::SampleScattering ( const G4ThreeVector oldDirection,
G4double  safety 
)
overridevirtualinherited

Implements G4VMscModel.

Definition at line 494 of file G4WentzelVIModel.cc.

496{
497 fDisplacement.set(0.0,0.0,0.0);
498 //G4cout << "!##! G4WentzelVIModel::SampleScattering for "
499 // << particle->GetParticleName() << G4endl;
500
501 // ignore scattering for zero step length and energy below the limit
503 { return fDisplacement; }
504
505 G4double invlambda = 0.0;
506 if(lambdaeff < DBL_MAX) { invlambda = 0.5/lambdaeff; }
507
508 // use average kinetic energy over the step
509 G4double cut = (*currentCuts)[currentMaterialIndex];
510 if(fixedCut > 0.0) { cut = fixedCut; }
511 /*
512 G4cout <<"SampleScat: E0(MeV)= "<< preKinEnergy/MeV
513 << " Leff= " << lambdaeff <<" sig0(1/mm)= " << xtsec
514 << " xmsc= " << tPathLength*invlambda
515 << " safety= " << safety << G4endl;
516 */
517 // step limit due msc
518 G4int nMscSteps = 1;
520 G4double z0 = x0*invlambda;
521 //G4double zzz = 0.0;
522 G4double prob2 = 0.0;
523
524 CLHEP::HepRandomEngine* rndmEngine = G4Random::getTheEngine();
525
526 // large scattering angle case - two step approach
528 static const G4double zzmin = 0.05;
529 if(useSecondMoment) {
530 G4double z1 = invlambda*invlambda;
532 prob2 = (z2 - z1)/(1.5*z1 - z2);
533 }
534 // if(z0 > zzmin && safety > tlimitminfix) {
535 if(z0 > zzmin) {
536 x0 *= 0.5;
537 z0 *= 0.5;
538 nMscSteps = 2;
539 }
540 //if(z0 > zzmin) { zzz = G4Exp(-1.0/z0); }
541 G4double zzz = 0.0;
542 if(z0 > zzmin) {
543 zzz = G4Exp(-1.0/z0);
544 z0 += zzz;
545 prob2 *= (1 + zzz);
546 }
547 prob2 /= (1 + prob2);
548 }
549
550 // step limit due to single scattering
551 G4double x1 = 2*tPathLength;
552 if(0.0 < xtsec) { x1 = -G4Log(rndmEngine->flat())/xtsec; }
553
554 // no scattering case
556 { return fDisplacement; }
557
558 const G4ElementVector* theElementVector =
561
562 // geometry
563 G4double sint, cost, phi;
564 G4ThreeVector temp(0.0,0.0,1.0);
565
566 // current position and direction relative to the end point
567 // because of magnetic field geometry is computed relatively to the
568 // end point of the step
569 G4ThreeVector dir(0.0,0.0,1.0);
570 fDisplacement.set(0.0,0.0,-zPathLength);
571
573
574 // start a loop
575 G4double x2 = x0;
576 G4double step, z;
577 G4bool singleScat;
578 /*
579 G4cout << "Start of the loop x1(mm)= " << x1 << " x2(mm)= " << x2
580 << " 1-cost1= " << 1 - cosThetaMin << " SSmode= " << singleScatteringMode
581 << " xtsec= " << xtsec << " Nst= " << nMscSteps << G4endl;
582 */
583 do {
584
585 //G4cout << "# x1(mm)= "<< x1<< " x2(mm)= "<< x2 << G4endl;
586 // single scattering case
587 if(singleScatteringMode && x1 > x2) {
588 fDisplacement += x2*mscfac*dir;
589 break;
590 }
591
592 // what is next single of multiple?
593 if(x1 <= x2) {
594 step = x1;
595 singleScat = true;
596 } else {
597 step = x2;
598 singleScat = false;
599 }
600
601 //G4cout << "# step(mm)= "<< step<< " singlScat= "<< singleScat << G4endl;
602
603 // new position
604 fDisplacement += step*mscfac*dir;
605
606 if(singleScat) {
607
608 // select element
609 G4int i = 0;
610 if(nelm > 1) {
611 G4double qsec = rndmEngine->flat()*xtsec;
612 for (; i<nelm; ++i) { if(xsecn[i] >= qsec) { break; } }
613 }
614 G4double cosTetM =
615 wokvi->SetupTarget((*theElementVector)[i]->GetZasInt(), cut);
616 //G4cout << "!!! " << cosThetaMin << " " << cosTetM << " "
617 // << prob[i] << G4endl;
618 temp = wokvi->SampleSingleScattering(cosThetaMin, cosTetM, prob[i]);
619
620 // direction is changed
621 temp.rotateUz(dir);
622 dir = temp;
623 //G4cout << dir << G4endl;
624
625 // new proposed step length
626 x2 -= step;
627 x1 = -G4Log(rndmEngine->flat())/xtsec;
628
629 // multiple scattering
630 } else {
631 --nMscSteps;
632 x1 -= step;
633 x2 = x0;
634
635 // sample z in interval 0 - 1
636 G4bool isFirst = true;
637 if(prob2 > 0.0 && rndmEngine->flat() < prob2) { isFirst = false; }
638 do {
639 //z = -z0*G4Log(1.0 - (1.0 - zzz)*rndmEngine->flat());
640 if(isFirst) { z = -G4Log(rndmEngine->flat()); }
641 else { z = G4RandGamma::shoot(rndmEngine, 2.0, 2.0); }
642 z *= z0;
643 // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
644 } while(z > 1.0);
645
646 cost = 1.0 - 2.0*z/*factCM*/;
647 if(cost > 1.0) { cost = 1.0; }
648 else if(cost < -1.0) { cost =-1.0; }
649 sint = sqrt((1.0 - cost)*(1.0 + cost));
650 phi = twopi*rndmEngine->flat();
651 G4double vx1 = sint*cos(phi);
652 G4double vy1 = sint*sin(phi);
653
654 // lateral displacement
655 if (latDisplasment) {
656 G4double rms = invsqrt12*sqrt(2*z0);
657 G4double r = x0*mscfac;
658 G4double dx = r*(0.5*vx1 + rms*G4RandGauss::shoot(rndmEngine,0.0,1.0));
659 G4double dy = r*(0.5*vy1 + rms*G4RandGauss::shoot(rndmEngine,0.0,1.0));
660 G4double d = r*r - dx*dx - dy*dy;
661
662 // change position
663 if(d >= 0.0) {
664 temp.set(dx,dy,sqrt(d) - r);
665 temp.rotateUz(dir);
666 fDisplacement += temp;
667 }
668 }
669 // change direction
670 temp.set(vx1,vy1,cost);
671 temp.rotateUz(dir);
672 dir = temp;
673 }
674 // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
675 } while (0 < nMscSteps);
676
677 dir.rotateUz(oldDirection);
678
679 //G4cout<<"G4WentzelVIModel sampling is done 1-cost= "<< 1.-dir.z()<<G4endl;
680 // end of sampling -------------------------------
681
683
684 // lateral displacement
685 fDisplacement.rotateUz(oldDirection);
686
687 /*
688 G4cout << " r(mm)= " << fDisplacement.mag()
689 << " safety= " << safety
690 << " trueStep(mm)= " << tPathLength
691 << " geomStep(mm)= " << zPathLength
692 << " x= " << fDisplacement.x()
693 << " y= " << fDisplacement.y()
694 << " z= " << fDisplacement.z()
695 << G4endl;
696 */
697
698 //G4cout<< "G4WentzelVIModel::SampleScattering end NewDir= " << dir<< G4endl;
699 return fDisplacement;
700}
static constexpr double twopi
Definition: G4SIunits.hh:56
const G4double invsqrt12
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:33
virtual double flat()=0
void ProposeMomentumDirection(const G4ThreeVector &Pfinal)
G4ThreeVector fDisplacement
Definition: G4VMscModel.hh:208
G4ThreeVector & SampleSingleScattering(G4double CosThetaMin, G4double CosThetaMax, G4double elecRatio)
G4double SecondMoment(const G4ParticleDefinition *, const G4MaterialCutsCouple *, G4double kineticEnergy)
G4ParticleChangeForMSC * fParticleChange
ThreeVector shoot(const G4int Ap, const G4int Af)

References G4WentzelVIModel::cosThetaMin, G4WentzelVIModel::currentCouple, G4WentzelVIModel::currentMaterial, G4WentzelVIModel::currentMaterialIndex, DBL_MAX, G4WentzelVIModel::effKinEnergy, G4VMscModel::fDisplacement, G4WentzelVIModel::fixedCut, CLHEP::HepRandomEngine::flat(), G4WentzelVIModel::fParticleChange, G4Exp(), G4Log(), G4Material::GetElementVector(), G4Material::GetNumberOfElements(), invsqrt12, G4WentzelVIModel::lambdaeff, G4VMscModel::latDisplasment, G4WentzelVIModel::lowEnergyLimit, G4WentzelVIModel::particle, G4WentzelVIModel::preKinEnergy, G4WentzelVIModel::prob, G4ParticleChangeForMSC::ProposeMomentumDirection(), CLHEP::Hep3Vector::rotateUz(), G4WentzelOKandVIxSection::SampleSingleScattering(), G4WentzelVIModel::SecondMoment(), CLHEP::Hep3Vector::set(), G4WentzelOKandVIxSection::SetupTarget(), G4INCL::DeJongSpin::shoot(), G4WentzelVIModel::singleScatteringMode, G4WentzelVIModel::tPathLength, twopi, G4WentzelVIModel::useSecondMoment, G4WentzelVIModel::wokvi, G4WentzelVIModel::xsecn, G4WentzelVIModel::xtsec, G4InuclParticleNames::z0, and G4WentzelVIModel::zPathLength.

◆ SampleSecondaries()

void G4VMscModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  ,
const G4MaterialCutsCouple ,
const G4DynamicParticle ,
G4double  tmin,
G4double  tmax 
)
overridevirtualinherited

Implements G4VEmModel.

Definition at line 151 of file G4VMscModel.cc.

155{}

◆ SecondaryThreshold()

G4double G4VEmModel::SecondaryThreshold ( ) const
inlineinherited

◆ SecondMoment()

G4double G4WentzelVIModel::SecondMoment ( const G4ParticleDefinition part,
const G4MaterialCutsCouple couple,
G4double  kineticEnergy 
)
inlineinherited

Definition at line 254 of file G4WentzelVIModel.hh.

257{
258 G4double x = 0.0;
259 if(useSecondMoment) {
260 DefineMaterial(couple);
261 x = (fSecondMoments) ?
262 (*fSecondMoments)[(*theDensityIdx)[currentMaterialIndex]]->Value(ekin, idx2)
263 *(*theDensityFactor)[currentMaterialIndex]/(ekin*ekin)
264 : ComputeSecondMoment(part, ekin);
265 }
266 return x;
267}
G4double ComputeSecondMoment(const G4ParticleDefinition *, G4double kineticEnergy)

References G4WentzelVIModel::ComputeSecondMoment(), G4WentzelVIModel::currentMaterialIndex, G4WentzelVIModel::DefineMaterial(), G4WentzelVIModel::fSecondMoments, G4WentzelVIModel::idx2, and G4WentzelVIModel::useSecondMoment.

Referenced by G4WentzelVIModel::SampleScattering().

◆ SelectIsotopeNumber()

G4int G4VEmModel::SelectIsotopeNumber ( const G4Element elm)
inherited

Definition at line 319 of file G4VEmModel.cc.

320{
322 const size_t ni = elm->GetNumberOfIsotopes();
323 fCurrentIsotope = elm->GetIsotope(0);
324 size_t idx = 0;
325 if(ni > 1) {
326 const G4double* ab = elm->GetRelativeAbundanceVector();
328 for(; idx<ni; ++idx) {
329 x -= ab[idx];
330 if (x <= 0.0) {
331 fCurrentIsotope = elm->GetIsotope(idx);
332 break;
333 }
334 }
335 }
336 return fCurrentIsotope->GetN();
337}
static const G4double ab
#define G4UniformRand()
Definition: Randomize.hh:52
G4double * GetRelativeAbundanceVector() const
Definition: G4Element.hh:167
const G4Isotope * GetIsotope(G4int iso) const
Definition: G4Element.hh:170
size_t GetNumberOfIsotopes() const
Definition: G4Element.hh:159
G4int GetN() const
Definition: G4Isotope.hh:93

References ab, G4VEmModel::fCurrentIsotope, G4UniformRand, G4Element::GetIsotope(), G4Isotope::GetN(), G4Element::GetNumberOfIsotopes(), G4Element::GetRelativeAbundanceVector(), and G4VEmModel::SetCurrentElement().

Referenced by G4eSingleCoulombScatteringModel::SampleSecondaries(), G4IonCoulombScatteringModel::SampleSecondaries(), G4eCoulombScatteringModel::SampleSecondaries(), G4hCoulombScatteringModel::SampleSecondaries(), and G4BetheHeitler5DModel::SampleSecondaries().

◆ SelectRandomAtom() [1/2]

const G4Element * G4VEmModel::SelectRandomAtom ( const G4Material mat,
const G4ParticleDefinition pd,
G4double  kineticEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
inherited

Definition at line 275 of file G4VEmModel.cc.

280{
281 size_t n = mat->GetNumberOfElements();
282 fCurrentElement = mat->GetElement(0);
283 if (n > 1) {
284 const G4double x = G4UniformRand()*
285 G4VEmModel::CrossSectionPerVolume(mat,pd,kinEnergy,tcut,tmax);
286 for(size_t i=0; i<n; ++i) {
287 if (x <= xsec[i]) {
288 fCurrentElement = mat->GetElement(i);
289 break;
290 }
291 }
292 }
293 return fCurrentElement;
294}

References G4VEmModel::CrossSectionPerVolume(), G4VEmModel::fCurrentElement, G4UniformRand, G4Material::GetElement(), G4Material::GetNumberOfElements(), CLHEP::detail::n, and G4VEmModel::xsec.

◆ SelectRandomAtom() [2/2]

const G4Element * G4VEmModel::SelectRandomAtom ( const G4MaterialCutsCouple couple,
const G4ParticleDefinition part,
G4double  kineticEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
inlineinherited

Definition at line 580 of file G4VEmModel.hh.

585{
586 SetCurrentCouple(couple);
588 ((*elmSelectors)[couple->GetIndex()])->SelectRandomAtom(kinEnergy) :
589 SelectRandomAtom(pBaseMaterial,part,kinEnergy,cutEnergy,maxEnergy);
590 fCurrentIsotope = nullptr;
591 return fCurrentElement;
592}
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.hh:580

References G4VEmModel::elmSelectors, G4VEmModel::fCurrentElement, G4VEmModel::fCurrentIsotope, G4MaterialCutsCouple::GetIndex(), G4VEmModel::nSelectors, G4VEmModel::pBaseMaterial, G4VEmModel::SelectRandomAtom(), and G4VEmModel::SetCurrentCouple().

Referenced by G4AdjointBremsstrahlungModel::RapidSampleSecondaries(), G4LivermoreBremsstrahlungModel::SampleSecondaries(), G4JAEAElasticScatteringModel::SampleSecondaries(), G4JAEAPolarizedElasticScatteringModel::SampleSecondaries(), G4LivermoreComptonModel::SampleSecondaries(), G4LivermoreNuclearGammaConversionModel::SampleSecondaries(), G4LivermorePhotoElectricModel::SampleSecondaries(), G4LivermorePolarizedComptonModel::SampleSecondaries(), G4LivermorePolarizedGammaConversionModel::SampleSecondaries(), G4LivermorePolarizedRayleighModel::SampleSecondaries(), G4LivermoreRayleighModel::SampleSecondaries(), G4LowEPComptonModel::SampleSecondaries(), G4LowEPPolarizedComptonModel::SampleSecondaries(), G4PenelopePhotoElectricModel::SampleSecondaries(), G4MuBremsstrahlungModel::SampleSecondaries(), G4MuPairProductionModel::SampleSecondaries(), G4hCoulombScatteringModel::SampleSecondaries(), G4KleinNishinaModel::SampleSecondaries(), G4PEEffectFluoModel::SampleSecondaries(), G4VEmModel::SelectRandomAtom(), and G4VEmModel::SelectTargetAtom().

◆ SelectRandomAtomNumber()

G4int G4VEmModel::SelectRandomAtomNumber ( const G4Material mat)
inherited

◆ SelectTargetAtom()

const G4Element * G4VEmModel::SelectTargetAtom ( const G4MaterialCutsCouple couple,
const G4ParticleDefinition part,
G4double  kineticEnergy,
G4double  logKineticEnergy,
G4double  cutEnergy = 0.0,
G4double  maxEnergy = DBL_MAX 
)
inlineinherited

◆ SetActivationHighEnergyLimit()

void G4VEmModel::SetActivationHighEnergyLimit ( G4double  val)
inlineinherited

◆ SetActivationLowEnergyLimit()

void G4VEmModel::SetActivationLowEnergyLimit ( G4double  val)
inlineinherited

◆ SetAngularDistribution()

void G4VEmModel::SetAngularDistribution ( G4VEmAngularDistribution p)
inlineinherited

Definition at line 628 of file G4VEmModel.hh.

629{
630 if(p != anglModel) {
631 delete anglModel;
632 anglModel = p;
633 }
634}

References G4VEmModel::anglModel.

Referenced by G4EmLivermorePhysics::ConstructProcess(), G4EmLowEPPhysics::ConstructProcess(), G4EmStandardPhysics::ConstructProcess(), G4EmStandardPhysics_option3::ConstructProcess(), G4EmStandardPhysics_option4::ConstructProcess(), G4EmStandardPhysicsSS::ConstructProcess(), G4BetheHeitlerModel::G4BetheHeitlerModel(), G4DNABornIonisationModel1::G4DNABornIonisationModel1(), G4DNABornIonisationModel2::G4DNABornIonisationModel2(), G4DNAEmfietzoglouIonisationModel::G4DNAEmfietzoglouIonisationModel(), G4DNARuddIonisationExtendedModel::G4DNARuddIonisationExtendedModel(), G4DNARuddIonisationModel::G4DNARuddIonisationModel(), G4eBremParametrizedModel::G4eBremParametrizedModel(), G4eBremsstrahlungRelModel::G4eBremsstrahlungRelModel(), G4IonParametrisedLossModel::G4IonParametrisedLossModel(), G4LivermoreBremsstrahlungModel::G4LivermoreBremsstrahlungModel(), G4LivermoreIonisationModel::G4LivermoreIonisationModel(), G4LivermorePhotoElectricModel::G4LivermorePhotoElectricModel(), G4LivermoreRayleighModel::G4LivermoreRayleighModel(), G4MicroElecInelasticModel::G4MicroElecInelasticModel(), G4MicroElecInelasticModel_new::G4MicroElecInelasticModel_new(), G4MuBremsstrahlungModel::G4MuBremsstrahlungModel(), G4MuPairProductionModel::G4MuPairProductionModel(), G4PAIModel::G4PAIModel(), G4PAIPhotModel::G4PAIPhotModel(), G4PairProductionRelModel::G4PairProductionRelModel(), G4PEEffectFluoModel::G4PEEffectFluoModel(), G4SeltzerBergerModel::G4SeltzerBergerModel(), G4AtimaEnergyLossModel::Initialise(), G4BetheBlochModel::Initialise(), G4BraggIonModel::Initialise(), G4BraggModel::Initialise(), G4ICRU73QOModel::Initialise(), G4LindhardSorensenIonModel::Initialise(), and G4MollerBhabhaModel::Initialise().

◆ SetAngularGeneratorFlag()

void G4VEmModel::SetAngularGeneratorFlag ( G4bool  val)
inlineinherited

Definition at line 725 of file G4VEmModel.hh.

726{
728}
G4bool useAngularGenerator
Definition: G4VEmModel.hh:461

References G4VEmModel::useAngularGenerator.

Referenced by G4VEnergyLossProcess::PreparePhysicsTable().

◆ SetCrossSectionTable()

void G4VEmModel::SetCrossSectionTable ( G4PhysicsTable p,
G4bool  isLocal 
)
inherited

Definition at line 455 of file G4VEmModel.cc.

456{
457 if(p != xSectionTable) {
458 if(xSectionTable != nullptr && localTable) {
460 delete xSectionTable;
461 }
462 xSectionTable = p;
463 }
464 localTable = isLocal;
465}
void clearAndDestroy()
G4bool localTable
Definition: G4VEmModel.hh:459

References G4PhysicsTable::clearAndDestroy(), G4VEmModel::localTable, and G4VEmModel::xSectionTable.

Referenced by G4VMultipleScattering::BuildPhysicsTable().

◆ SetCurrentCouple()

void G4VEmModel::SetCurrentCouple ( const G4MaterialCutsCouple ptr)
inlineinherited

Definition at line 472 of file G4VEmModel.hh.

473{
474 if(fCurrentCouple != ptr) {
475 fCurrentCouple = ptr;
477 pBaseMaterial = ptr->GetMaterial();
478 pFactor = 1.0;
479 if(useBaseMaterials) {
480 basedCoupleIndex = (*theDensityIdx)[currentCoupleIndex];
481 if(nullptr != pBaseMaterial->GetBaseMaterial())
483 pFactor = (*theDensityFactor)[currentCoupleIndex];
484 }
485 }
486}
const G4Material * GetBaseMaterial() const
Definition: G4Material.hh:229
G4bool useBaseMaterials
Definition: G4VEmModel.hh:462
size_t currentCoupleIndex
Definition: G4VEmModel.hh:448

References G4VEmModel::basedCoupleIndex, G4VEmModel::currentCoupleIndex, G4VEmModel::fCurrentCouple, G4Material::GetBaseMaterial(), G4MaterialCutsCouple::GetIndex(), G4MaterialCutsCouple::GetMaterial(), G4VEmModel::pBaseMaterial, G4VEmModel::pFactor, and G4VEmModel::useBaseMaterials.

Referenced by G4VMultipleScattering::AlongStepGetPhysicalInteractionLength(), G4EmMultiModel::ComputeCrossSectionPerAtom(), G4VEmModel::ComputeDEDX(), G4TablesForExtrapolator::ComputeTrasportXS(), G4UrbanAdjointMscModel::ComputeTruePathLengthLimit(), G4GoudsmitSaundersonMscModel::ComputeTruePathLengthLimit(), G4UrbanMscModel::ComputeTruePathLengthLimit(), G4VEmModel::CrossSection(), G4AdjointPhotoElectricModel::DefineCurrentMaterialAndElectronEnergy(), G4WentzelVIModel::DefineMaterial(), DefineMaterial(), G4EmCalculator::GetCrossSectionPerVolume(), G4LivermoreGammaConversion5DModel::Initialise(), G4VEmModel::InitialiseElementSelectors(), G4PEEffectFluoModel::SampleSecondaries(), G4EmMultiModel::SampleSecondaries(), G4VEnergyLossProcess::SelectModel(), G4VEmProcess::SelectModel(), G4VEmModel::SelectRandomAtom(), G4VEmModel::SelectTargetAtom(), and G4VEmModel::Value().

◆ SetCurrentElement()

void G4VEmModel::SetCurrentElement ( const G4Element elm)
inlineprotectedinherited

◆ SetDeexcitationFlag()

void G4VEmModel::SetDeexcitationFlag ( G4bool  val)
inlineinherited

Definition at line 823 of file G4VEmModel.hh.

824{
825 flagDeexcitation = val;
826}

References G4VEmModel::flagDeexcitation.

Referenced by G4DNABornIonisationModel1::G4DNABornIonisationModel1(), G4DNABornIonisationModel2::G4DNABornIonisationModel2(), G4DNACPA100IonisationModel::G4DNACPA100IonisationModel(), G4DNAEmfietzoglouIonisationModel::G4DNAEmfietzoglouIonisationModel(), G4DNARelativisticIonisationModel::G4DNARelativisticIonisationModel(), G4DNARuddIonisationExtendedModel::G4DNARuddIonisationExtendedModel(), G4DNARuddIonisationModel::G4DNARuddIonisationModel(), G4KleinNishinaModel::G4KleinNishinaModel(), G4LEPTSIonisationModel::G4LEPTSIonisationModel(), G4LivermoreComptonModel::G4LivermoreComptonModel(), G4LivermorePhotoElectricModel::G4LivermorePhotoElectricModel(), G4LivermorePolarizedComptonModel::G4LivermorePolarizedComptonModel(), G4LowEPComptonModel::G4LowEPComptonModel(), G4LowEPPolarizedComptonModel::G4LowEPPolarizedComptonModel(), G4MicroElecInelasticModel::G4MicroElecInelasticModel(), G4MicroElecInelasticModel_new::G4MicroElecInelasticModel_new(), G4PEEffectFluoModel::G4PEEffectFluoModel(), G4PenelopeBremsstrahlungModel::G4PenelopeBremsstrahlungModel(), G4PenelopeComptonModel::G4PenelopeComptonModel(), G4PenelopeIonisationModel::G4PenelopeIonisationModel(), G4PenelopePhotoElectricModel::G4PenelopePhotoElectricModel(), G4AtimaEnergyLossModel::Initialise(), G4BetheBlochModel::Initialise(), G4BraggIonModel::Initialise(), G4BraggModel::Initialise(), G4ICRU73QOModel::Initialise(), and G4LindhardSorensenIonModel::Initialise().

◆ SetElementSelectors()

void G4VEmModel::SetElementSelectors ( std::vector< G4EmElementSelector * > *  p)
inlineinherited

Definition at line 852 of file G4VEmModel.hh.

853{
854 if(p != elmSelectors) {
855 elmSelectors = p;
856 nSelectors = (nullptr != elmSelectors) ? G4int(elmSelectors->size()) : 0;
857 localElmSelectors = false;
858 }
859}
G4bool localElmSelectors
Definition: G4VEmModel.hh:460

References G4VEmModel::elmSelectors, G4VEmModel::localElmSelectors, and G4VEmModel::nSelectors.

Referenced by G4eDPWACoulombScatteringModel::InitialiseLocal(), G4eSingleCoulombScatteringModel::InitialiseLocal(), G4PAIModel::InitialiseLocal(), G4PAIPhotModel::InitialiseLocal(), G4JAEAElasticScatteringModel::InitialiseLocal(), G4JAEAPolarizedElasticScatteringModel::InitialiseLocal(), G4LivermoreComptonModel::InitialiseLocal(), G4LivermoreNuclearGammaConversionModel::InitialiseLocal(), G4LivermorePolarizedComptonModel::InitialiseLocal(), G4LivermorePolarizedGammaConversionModel::InitialiseLocal(), G4LivermorePolarizedRayleighModel::InitialiseLocal(), G4LivermoreRayleighModel::InitialiseLocal(), G4LowEPComptonModel::InitialiseLocal(), G4LowEPPolarizedComptonModel::InitialiseLocal(), G4PenelopePhotoElectricModel::InitialiseLocal(), G4MuBremsstrahlungModel::InitialiseLocal(), G4MuPairProductionModel::InitialiseLocal(), G4BetheHeitlerModel::InitialiseLocal(), G4eBremParametrizedModel::InitialiseLocal(), G4eBremsstrahlungRelModel::InitialiseLocal(), G4eCoulombScatteringModel::InitialiseLocal(), G4hCoulombScatteringModel::InitialiseLocal(), G4KleinNishinaCompton::InitialiseLocal(), G4KleinNishinaModel::InitialiseLocal(), and G4PairProductionRelModel::InitialiseLocal().

◆ SetFixedCut()

void G4WentzelVIModel::SetFixedCut ( G4double  val)
inlineinherited

Definition at line 201 of file G4WentzelVIModel.hh.

202{
203 fixedCut = val;
204}

References G4WentzelVIModel::fixedCut.

◆ SetFluctuationFlag()

void G4VEmModel::SetFluctuationFlag ( G4bool  val)
inlineinherited

Definition at line 732 of file G4VEmModel.hh.

733{
734 lossFlucFlag = val;
735}
G4bool lossFlucFlag
Definition: G4VEmModel.hh:450

References G4VEmModel::lossFlucFlag.

Referenced by G4EmCalculator::ComputeNuclearDEDX().

◆ SetForceBuildTable()

void G4VEmModel::SetForceBuildTable ( G4bool  val)
inlineinherited

Definition at line 830 of file G4VEmModel.hh.

831{
833}

References G4VEmModel::flagForceBuildTable.

◆ SetGeomFactor()

void G4VMscModel::SetGeomFactor ( G4double  val)
inlineinherited

Definition at line 237 of file G4VMscModel.hh.

238{
239 if(!IsLocked()) { facgeom = val; }
240}

References G4VMscModel::facgeom, and G4VEmModel::IsLocked().

◆ SetHighEnergyLimit()

void G4VEmModel::SetHighEnergyLimit ( G4double  val)
inlineinherited

Definition at line 767 of file G4VEmModel.hh.

768{
769 highLimit = val;
770}

References G4VEmModel::highLimit.

Referenced by G4EmModelActivator::ActivateEmOptions(), G4EmModelActivator::ActivatePAI(), LBE::ConstructEM(), G4EmDNAPhysics_option2::ConstructProcess(), G4EmDNAPhysics_option5::ConstructProcess(), G4EmDNAPhysics_option7::ConstructProcess(), G4EmDNAPhysics_stationary::ConstructProcess(), G4EmLivermorePhysics::ConstructProcess(), G4EmLowEPPhysics::ConstructProcess(), G4EmPenelopePhysics::ConstructProcess(), G4EmStandardPhysics::ConstructProcess(), G4EmStandardPhysics_option1::ConstructProcess(), G4EmStandardPhysics_option2::ConstructProcess(), G4EmStandardPhysics_option4::ConstructProcess(), G4EmStandardPhysicsGS::ConstructProcess(), G4EmStandardPhysicsWVI::ConstructProcess(), G4BraggIonModel::G4BraggIonModel(), G4BraggModel::G4BraggModel(), G4DNAChampionElasticModel::G4DNAChampionElasticModel(), G4DNACPA100ElasticModel::G4DNACPA100ElasticModel(), G4DNACPA100ExcitationModel::G4DNACPA100ExcitationModel(), G4DNACPA100IonisationModel::G4DNACPA100IonisationModel(), G4DNAELSEPAElasticModel::G4DNAELSEPAElasticModel(), G4DNAEmfietzoglouExcitationModel::G4DNAEmfietzoglouExcitationModel(), G4DNAEmfietzoglouIonisationModel::G4DNAEmfietzoglouIonisationModel(), G4DNAIonElasticModel::G4DNAIonElasticModel(), G4DNAMeltonAttachmentModel::G4DNAMeltonAttachmentModel(), G4DNASancheExcitationModel::G4DNASancheExcitationModel(), G4DNAScreenedRutherfordElasticModel::G4DNAScreenedRutherfordElasticModel(), G4DNATransformElectronModel::G4DNATransformElectronModel(), G4DNAUeharaScreenedRutherfordElasticModel::G4DNAUeharaScreenedRutherfordElasticModel(), G4eDPWACoulombScatteringModel::G4eDPWACoulombScatteringModel(), G4ICRU73QOModel::G4ICRU73QOModel(), G4MicroElecElasticModel::G4MicroElecElasticModel(), G4MicroElecElasticModel_new::G4MicroElecElasticModel_new(), G4PenelopeAnnihilationModel::G4PenelopeAnnihilationModel(), G4PenelopeBremsstrahlungModel::G4PenelopeBremsstrahlungModel(), G4PenelopeComptonModel::G4PenelopeComptonModel(), G4PenelopeGammaConversionModel::G4PenelopeGammaConversionModel(), G4PenelopeIonisationModel::G4PenelopeIonisationModel(), G4PenelopePhotoElectricModel::G4PenelopePhotoElectricModel(), G4PenelopeRayleighModel::G4PenelopeRayleighModel(), G4PenelopeRayleighModelMI::G4PenelopeRayleighModelMI(), G4TDNAOneStepThermalizationModel< MODEL >::G4TDNAOneStepThermalizationModel(), G4XrayRayleighModel::G4XrayRayleighModel(), G4VLEPTSModel::Init(), G4DNAChampionElasticModel::Initialise(), G4DNACPA100ElasticModel::Initialise(), G4DNADingfelderChargeDecreaseModel::Initialise(), G4DNADingfelderChargeIncreaseModel::Initialise(), G4DNAMeltonAttachmentModel::Initialise(), G4DNAMillerGreenExcitationModel::Initialise(), G4DNARuddIonisationExtendedModel::Initialise(), G4DNARuddIonisationModel::Initialise(), G4DNASancheExcitationModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNAModelInterface::Initialise(), G4DNAIonElasticModel::Initialise(), G4hhIonisation::InitialiseEnergyLossProcess(), G4mplIonisation::InitialiseEnergyLossProcess(), G4ePairProduction::InitialiseEnergyLossProcess(), G4MuBremsstrahlung::InitialiseEnergyLossProcess(), G4MuIonisation::InitialiseEnergyLossProcess(), G4MuPairProduction::InitialiseEnergyLossProcess(), G4PolarizedBremsstrahlung::InitialiseEnergyLossProcess(), G4PolarizedIonisation::InitialiseEnergyLossProcess(), G4eBremsstrahlung::InitialiseEnergyLossProcess(), G4eIonisation::InitialiseEnergyLossProcess(), G4hIonisation::InitialiseEnergyLossProcess(), G4ionIonisation::InitialiseEnergyLossProcess(), G4DNAAttachment::InitialiseProcess(), G4DNAChargeDecrease::InitialiseProcess(), G4DNAChargeIncrease::InitialiseProcess(), G4DNADissociation::InitialiseProcess(), G4DNAElastic::InitialiseProcess(), G4DNAExcitation::InitialiseProcess(), G4DNAIonisation::InitialiseProcess(), G4DNAPlasmonExcitation::InitialiseProcess(), G4DNAPositronium::InitialiseProcess(), G4DNARotExcitation::InitialiseProcess(), G4DNAVibExcitation::InitialiseProcess(), G4PolarizedCompton::InitialiseProcess(), G4PolarizedGammaConversion::InitialiseProcess(), G4PolarizedPhotoElectric::InitialiseProcess(), G4ComptonScattering::InitialiseProcess(), G4CoulombScattering::InitialiseProcess(), G4eplusAnnihilation::InitialiseProcess(), G4GammaConversion::InitialiseProcess(), G4PhotoElectricEffect::InitialiseProcess(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4DNAUeharaScreenedRutherfordElasticModel::SelectHighEnergyLimit(), G4VEmAdjointModel::SetHighEnergyLimit(), G4DNAELSEPAElasticModel::SetMaximumEnergy(), G4mplIonisationModel::SetParticle(), G4mplIonisationWithDeltaModel::SetParticle(), and G4EmConfigurator::UpdateModelEnergyRange().

◆ SetIonisation()

void G4VMscModel::SetIonisation ( G4VEnergyLossProcess p,
const G4ParticleDefinition part 
)
inlineinherited

Definition at line 309 of file G4VMscModel.hh.

311{
312 ionisation = p;
313 currentPart = part;
314}
const G4ParticleDefinition * currentPart
Definition: G4VMscModel.hh:188

References G4VMscModel::currentPart, and G4VMscModel::ionisation.

Referenced by G4VMultipleScattering::PreparePhysicsTable(), and G4VMultipleScattering::StartTracking().

◆ SetLambdaLimit()

void G4VMscModel::SetLambdaLimit ( G4double  val)
inlineinherited

Definition at line 244 of file G4VMscModel.hh.

245{
246 if(!IsLocked()) { lambdalimit = val; }
247}

References G4VEmModel::IsLocked(), and G4VMscModel::lambdalimit.

◆ SetLateralDisplasmentFlag()

void G4VMscModel::SetLateralDisplasmentFlag ( G4bool  val)
inlineinherited

Definition at line 216 of file G4VMscModel.hh.

217{
218 if(!IsLocked()) { latDisplasment = val; }
219}

References G4VEmModel::IsLocked(), and G4VMscModel::latDisplasment.

Referenced by G4EmModelActivator::SetMscParameters().

◆ SetLocked()

void G4VEmModel::SetLocked ( G4bool  val)
inlineinherited

◆ SetLowEnergyLimit()

void G4VEmModel::SetLowEnergyLimit ( G4double  val)
inlineinherited

Definition at line 774 of file G4VEmModel.hh.

775{
776 lowLimit = val;
777}

References G4VEmModel::lowLimit.

Referenced by G4EmModelActivator::ActivatePAI(), G4EmDNAPhysics_option2::ConstructProcess(), G4EmDNAPhysics_option5::ConstructProcess(), G4EmDNAPhysics_stationary::ConstructProcess(), G4EmLivermorePhysics::ConstructProcess(), G4EmLowEPPhysics::ConstructProcess(), G4EmPenelopePhysics::ConstructProcess(), G4EmStandardPhysics::ConstructProcess(), G4EmStandardPhysics_option1::ConstructProcess(), G4EmStandardPhysics_option2::ConstructProcess(), G4EmStandardPhysics_option3::ConstructProcess(), G4EmStandardPhysics_option4::ConstructProcess(), G4EmStandardPhysicsGS::ConstructProcess(), G4EmStandardPhysicsWVI::ConstructProcess(), G4DNASancheExcitationModel::ExtendLowEnergyLimit(), G4AtimaEnergyLossModel::G4AtimaEnergyLossModel(), G4BetheBlochModel::G4BetheBlochModel(), G4BetheHeitler5DModel::G4BetheHeitler5DModel(), G4DNAChampionElasticModel::G4DNAChampionElasticModel(), G4DNACPA100ElasticModel::G4DNACPA100ElasticModel(), G4DNACPA100ExcitationModel::G4DNACPA100ExcitationModel(), G4DNACPA100IonisationModel::G4DNACPA100IonisationModel(), G4DNAELSEPAElasticModel::G4DNAELSEPAElasticModel(), G4DNAEmfietzoglouExcitationModel::G4DNAEmfietzoglouExcitationModel(), G4DNAEmfietzoglouIonisationModel::G4DNAEmfietzoglouIonisationModel(), G4DNAIonElasticModel::G4DNAIonElasticModel(), G4DNAMeltonAttachmentModel::G4DNAMeltonAttachmentModel(), G4DNASancheExcitationModel::G4DNASancheExcitationModel(), G4DNAScreenedRutherfordElasticModel::G4DNAScreenedRutherfordElasticModel(), G4DNATransformElectronModel::G4DNATransformElectronModel(), G4DNAUeharaScreenedRutherfordElasticModel::G4DNAUeharaScreenedRutherfordElasticModel(), G4DummyModel::G4DummyModel(), G4eBremParametrizedModel::G4eBremParametrizedModel(), G4eBremsstrahlungRelModel::G4eBremsstrahlungRelModel(), G4eDPWACoulombScatteringModel::G4eDPWACoulombScatteringModel(), G4LivermoreBremsstrahlungModel::G4LivermoreBremsstrahlungModel(), G4MicroElecElasticModel::G4MicroElecElasticModel(), G4MicroElecElasticModel_new::G4MicroElecElasticModel_new(), G4SeltzerBergerModel::G4SeltzerBergerModel(), G4TDNAOneStepThermalizationModel< MODEL >::G4TDNAOneStepThermalizationModel(), G4VLEPTSModel::Init(), G4DNAChampionElasticModel::Initialise(), G4DNACPA100ElasticModel::Initialise(), G4DNADingfelderChargeDecreaseModel::Initialise(), G4DNADingfelderChargeIncreaseModel::Initialise(), G4DNAMeltonAttachmentModel::Initialise(), G4DNAMillerGreenExcitationModel::Initialise(), G4DNARuddIonisationExtendedModel::Initialise(), G4DNARuddIonisationModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4BetheHeitler5DModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNAModelInterface::Initialise(), G4DNAIonElasticModel::Initialise(), G4hhIonisation::InitialiseEnergyLossProcess(), G4mplIonisation::InitialiseEnergyLossProcess(), G4ePairProduction::InitialiseEnergyLossProcess(), G4MuBremsstrahlung::InitialiseEnergyLossProcess(), G4MuIonisation::InitialiseEnergyLossProcess(), G4MuPairProduction::InitialiseEnergyLossProcess(), G4PolarizedBremsstrahlung::InitialiseEnergyLossProcess(), G4PolarizedIonisation::InitialiseEnergyLossProcess(), G4eBremsstrahlung::InitialiseEnergyLossProcess(), G4eIonisation::InitialiseEnergyLossProcess(), G4hIonisation::InitialiseEnergyLossProcess(), G4ionIonisation::InitialiseEnergyLossProcess(), G4DNAAttachment::InitialiseProcess(), G4DNAChargeDecrease::InitialiseProcess(), G4DNAChargeIncrease::InitialiseProcess(), G4DNADissociation::InitialiseProcess(), G4DNAElastic::InitialiseProcess(), G4DNAExcitation::InitialiseProcess(), G4DNAIonisation::InitialiseProcess(), G4DNAPlasmonExcitation::InitialiseProcess(), G4DNAPositronium::InitialiseProcess(), G4DNARotExcitation::InitialiseProcess(), G4DNAVibExcitation::InitialiseProcess(), G4PolarizedCompton::InitialiseProcess(), G4PolarizedGammaConversion::InitialiseProcess(), G4PolarizedPhotoElectric::InitialiseProcess(), G4ComptonScattering::InitialiseProcess(), G4CoulombScattering::InitialiseProcess(), G4eplusAnnihilation::InitialiseProcess(), G4GammaConversion::InitialiseProcess(), G4PhotoElectricEffect::InitialiseProcess(), G4VEmAdjointModel::SetLowEnergyLimit(), G4mplIonisationModel::SetParticle(), G4mplIonisationWithDeltaModel::SetParticle(), and G4EmConfigurator::UpdateModelEnergyRange().

◆ SetLPMFlag()

void G4VEmModel::SetLPMFlag ( G4bool  val)
inlineinherited

◆ SetMasterThread()

void G4VEmModel::SetMasterThread ( G4bool  val)
inlineinherited

◆ SetParticleChange()

void G4VEmModel::SetParticleChange ( G4VParticleChange p,
G4VEmFluctuationModel f = nullptr 
)
inherited

◆ SetPolarAngleLimit()

void G4VEmModel::SetPolarAngleLimit ( G4double  val)
inlineinherited

◆ SetRangeFactor()

void G4VMscModel::SetRangeFactor ( G4double  val)
inlineinherited

Definition at line 230 of file G4VMscModel.hh.

231{
232 if(!IsLocked()) { facrange = val; }
233}

References G4VMscModel::facrange, and G4VEmModel::IsLocked().

Referenced by G4EmModelActivator::SetMscParameters().

◆ SetSafetyFactor()

void G4VMscModel::SetSafetyFactor ( G4double  val)
inlineinherited

Definition at line 251 of file G4VMscModel.hh.

252{
253 if(!IsLocked()) { facsafety = val; }
254}

References G4VMscModel::facsafety, and G4VEmModel::IsLocked().

◆ SetSampleZ()

void G4VMscModel::SetSampleZ ( G4bool  val)
inlineinherited

Definition at line 265 of file G4VMscModel.hh.

266{
267 if(!IsLocked()) { samplez = val; }
268}
G4bool samplez
Definition: G4VMscModel.hh:205

References G4VEmModel::IsLocked(), and G4VMscModel::samplez.

◆ SetSecondaryThreshold()

void G4VEmModel::SetSecondaryThreshold ( G4double  val)
inlineinherited

◆ SetSingleScatteringFactor()

void G4WentzelVIModel::SetSingleScatteringFactor ( G4double  val)
inherited

Definition at line 789 of file G4WentzelVIModel.cc.

790{
791 if(val > 0.05) {
792 ssFactor = val;
793 invssFactor = 1.0/(val - 0.05);
794 }
795}

References G4WentzelVIModel::invssFactor, and G4WentzelVIModel::ssFactor.

Referenced by G4LowEWentzelVIModel::G4LowEWentzelVIModel(), and G4WentzelVIModel::G4WentzelVIModel().

◆ SetSkin()

void G4VMscModel::SetSkin ( G4double  val)
inlineinherited

Definition at line 223 of file G4VMscModel.hh.

224{
225 if(!IsLocked()) { skin = val; }
226}

References G4VEmModel::IsLocked(), and G4VMscModel::skin.

Referenced by G4EmModelActivator::SetMscParameters().

◆ SetStepLimitType()

void G4VMscModel::SetStepLimitType ( G4MscStepLimitType  val)
inlineinherited

Definition at line 258 of file G4VMscModel.hh.

259{
260 if(!IsLocked()) { steppingAlgorithm = val; }
261}

References G4VEmModel::IsLocked(), and G4VMscModel::steppingAlgorithm.

Referenced by G4EmModelActivator::SetMscParameters().

◆ SetTripletModel()

void G4VEmModel::SetTripletModel ( G4VEmModel p)
inlineinherited

Definition at line 645 of file G4VEmModel.hh.

646{
647 if(p != fTripletModel) {
648 delete fTripletModel;
649 fTripletModel = p;
650 }
651}

References G4VEmModel::fTripletModel.

Referenced by G4eplusTo2GammaOKVIModel::G4eplusTo2GammaOKVIModel().

◆ SetupForMaterial()

void G4VEmModel::SetupForMaterial ( const G4ParticleDefinition ,
const G4Material ,
G4double  kineticEnergy 
)
virtualinherited

◆ SetupParticle()

void G4WentzelVIModel::SetupParticle ( const G4ParticleDefinition p)
inlineprotectedinherited

◆ SetUseBaseMaterials()

void G4VEmModel::SetUseBaseMaterials ( G4bool  val)
inlineinherited

◆ SetUseSecondMoment()

void G4WentzelVIModel::SetUseSecondMoment ( G4bool  val)
inlineinherited

Definition at line 232 of file G4WentzelVIModel.hh.

233{
234 useSecondMoment = val;
235}

References G4WentzelVIModel::useSecondMoment.

◆ SetWVICrossSection()

void G4WentzelVIModel::SetWVICrossSection ( G4WentzelOKandVIxSection ptr)
inlineinherited

Definition at line 215 of file G4WentzelVIModel.hh.

216{
217 if(ptr != wokvi) {
218 delete wokvi;
219 wokvi = ptr;
220 }
221}

References G4WentzelVIModel::wokvi.

Referenced by G4WentzelVIRelModel().

◆ StartTracking()

void G4WentzelVIModel::StartTracking ( G4Track track)
overridevirtualinherited

Reimplemented from G4VEmModel.

Definition at line 243 of file G4WentzelVIModel.cc.

244{
245 /*
246 G4cout << "G4WentzelVIModel::StartTracking " << track << " " << this << " "
247 << track->GetParticleDefinition()->GetParticleName()
248 << " workvi: " << wokvi << G4endl;
249 */
251}

References G4Track::GetParticleDefinition(), and G4WentzelVIModel::SetupParticle().

◆ UseAngularGeneratorFlag()

G4bool G4VEmModel::UseAngularGeneratorFlag ( ) const
inlineinherited

◆ UseBaseMaterials()

G4bool G4VEmModel::UseBaseMaterials ( ) const
inlineinherited

Definition at line 760 of file G4VEmModel.hh.

761{
762 return useBaseMaterials;
763}

References G4VEmModel::useBaseMaterials.

◆ UseSecondMoment()

G4bool G4WentzelVIModel::UseSecondMoment ( ) const
inlineinherited

Definition at line 239 of file G4WentzelVIModel.hh.

240{
241 return useSecondMoment;
242}

References G4WentzelVIModel::useSecondMoment.

◆ Value()

G4double G4VEmModel::Value ( const G4MaterialCutsCouple couple,
const G4ParticleDefinition p,
G4double  kineticEnergy 
)
virtualinherited

Field Documentation

◆ anglModel

G4VEmAngularDistribution* G4VEmModel::anglModel = nullptr
privateinherited

◆ basedCoupleIndex

size_t G4VEmModel::basedCoupleIndex = 0
protectedinherited

◆ cosTetMaxNuc

G4double G4WentzelVIModel::cosTetMaxNuc = 0.0
protectedinherited

◆ cosThetaMax

G4double G4WentzelVIModel::cosThetaMax = -1.0
protectedinherited

◆ cosThetaMin

G4double G4WentzelVIModel::cosThetaMin = 1.0
protectedinherited

◆ currentCouple

const G4MaterialCutsCouple* G4WentzelVIModel::currentCouple = nullptr
protectedinherited

◆ currentCoupleIndex

size_t G4VEmModel::currentCoupleIndex = 0
protectedinherited

Definition at line 448 of file G4VEmModel.hh.

Referenced by G4VEmModel::SetCurrentCouple().

◆ currentCuts

const G4DataVector* G4WentzelVIModel::currentCuts = nullptr
protectedinherited

Definition at line 146 of file G4WentzelVIModel.hh.

Referenced by G4WentzelVIModel::Initialise().

◆ currentMaterial

const G4Material* G4WentzelVIModel::currentMaterial = nullptr
protectedinherited

◆ currentMaterialIndex

G4int G4WentzelVIModel::currentMaterialIndex = 0
protectedinherited

◆ currentPart

const G4ParticleDefinition* G4VMscModel::currentPart = nullptr
privateinherited

Definition at line 188 of file G4VMscModel.hh.

Referenced by G4VMscModel::SetIonisation().

◆ currentRange

G4double G4WentzelVIModel::currentRange = 0.0
protectedinherited

◆ dedx

G4double G4VMscModel::dedx = 0.0
privateinherited

◆ dtrl

G4double G4VMscModel::dtrl = 0.05
protectedinherited

◆ effKinEnergy

G4double G4WentzelVIModel::effKinEnergy = 0.0
protectedinherited

◆ effMass

std::vector< G4double > G4WentzelVIRelModel::effMass
staticprivate

Definition at line 94 of file G4WentzelVIRelModel.hh.

Referenced by ComputeEffectiveMass(), DefineMaterial(), and Initialise().

◆ elmSelectors

std::vector<G4EmElementSelector*>* G4VEmModel::elmSelectors = nullptr
privateinherited

◆ eMaxActive

G4double G4VEmModel::eMaxActive = DBL_MAX
privateinherited

◆ eMinActive

G4double G4VEmModel::eMinActive = 0.0
privateinherited

◆ facgeom

G4double G4VMscModel::facgeom = 2.5
protectedinherited

◆ facrange

G4double G4VMscModel::facrange = 0.04
protectedinherited

◆ facsafety

G4double G4VMscModel::facsafety = 0.6
protectedinherited

◆ fCurrentCouple

const G4MaterialCutsCouple* G4VEmModel::fCurrentCouple = nullptr
privateinherited

Definition at line 416 of file G4VEmModel.hh.

Referenced by G4VEmModel::CurrentCouple(), and G4VEmModel::SetCurrentCouple().

◆ fCurrentElement

const G4Element* G4VEmModel::fCurrentElement = nullptr
privateinherited

◆ fCurrentIsotope

const G4Isotope* G4VEmModel::fCurrentIsotope = nullptr
privateinherited

◆ fDisplacement

G4ThreeVector G4VMscModel::fDisplacement
protectedinherited

◆ fElementData

G4ElementData* G4VEmModel::fElementData = nullptr
protectedinherited

◆ fEmManager

G4LossTableManager* G4VEmModel::fEmManager
privateinherited

Definition at line 420 of file G4VEmModel.hh.

Referenced by G4VEmModel::G4VEmModel(), and G4VEmModel::~G4VEmModel().

◆ fixedCut

G4double G4WentzelVIModel::fixedCut = -1.0
protectedinherited

◆ flagDeexcitation

G4bool G4VEmModel::flagDeexcitation = false
privateinherited

Definition at line 455 of file G4VEmModel.hh.

Referenced by G4VEmModel::DeexcitationFlag(), and G4VEmModel::SetDeexcitationFlag().

◆ flagForceBuildTable

G4bool G4VEmModel::flagForceBuildTable = false
privateinherited

◆ flucModel

G4VEmFluctuationModel* G4VEmModel::flucModel = nullptr
privateinherited

◆ fNistManager

G4NistManager* G4WentzelVIRelModel::fNistManager
private

◆ fParticleChange

G4ParticleChangeForMSC* G4WentzelVIModel::fParticleChange = nullptr
protectedinherited

◆ fSecondMoments

G4PhysicsTable* G4WentzelVIModel::fSecondMoments = nullptr
protectedinherited

◆ fTripletModel

G4VEmModel* G4VEmModel::fTripletModel = nullptr
privateinherited

◆ geomMax

G4double G4VMscModel::geomMax
protectedinherited

Definition at line 203 of file G4VMscModel.hh.

◆ geomMin

G4double G4VMscModel::geomMin
protectedinherited

Definition at line 202 of file G4VMscModel.hh.

◆ highLimit

G4double G4VEmModel::highLimit
privateinherited

◆ idx2

size_t G4WentzelVIModel::idx2 = 0
protectedinherited

Definition at line 173 of file G4WentzelVIModel.hh.

Referenced by G4WentzelVIModel::SecondMoment().

◆ inveplus

G4double G4VEmModel::inveplus
protectedinherited

◆ invssFactor

G4double G4WentzelVIModel::invssFactor = 1.0
protectedinherited

◆ ionisation

G4VEnergyLossProcess* G4VMscModel::ionisation = nullptr
privateinherited

◆ isCombined

G4bool G4WentzelVIModel::isCombined
protectedinherited

◆ isLocked

G4bool G4VEmModel::isLocked = false
privateinherited

◆ isMaster

G4bool G4VEmModel::isMaster = true
privateinherited

◆ lambdaeff

G4double G4WentzelVIModel::lambdaeff = 0.0
protectedinherited

◆ lambdalimit

G4double G4VMscModel::lambdalimit
protectedinherited

◆ latDisplasment

G4bool G4VMscModel::latDisplasment = true
protectedinherited

◆ localElmSelectors

G4bool G4VEmModel::localElmSelectors = true
privateinherited

Definition at line 460 of file G4VEmModel.hh.

Referenced by G4VEmModel::SetElementSelectors(), and G4VEmModel::~G4VEmModel().

◆ localrange

G4double G4VMscModel::localrange = DBL_MAX
privateinherited

Definition at line 192 of file G4VMscModel.hh.

Referenced by G4VMscModel::GetEnergy(), and G4VMscModel::GetRange().

◆ localTable

G4bool G4VEmModel::localTable = true
privateinherited

Definition at line 459 of file G4VEmModel.hh.

Referenced by G4VEmModel::SetCrossSectionTable(), and G4VEmModel::~G4VEmModel().

◆ localtkin

G4double G4VMscModel::localtkin = 0.0
privateinherited

Definition at line 191 of file G4VMscModel.hh.

Referenced by G4VMscModel::GetEnergy(), and G4VMscModel::GetRange().

◆ lossFlucFlag

G4bool G4VEmModel::lossFlucFlag = true
protectedinherited

◆ lowEnergyLimit

G4double G4WentzelVIModel::lowEnergyLimit
protectedinherited

◆ lowLimit

G4double G4VEmModel::lowLimit
privateinherited

◆ name

const G4String G4VEmModel::name
privateinherited

◆ nelments

G4int G4WentzelVIModel::nelments = 0
protectedinherited

◆ nsec

G4int G4VEmModel::nsec = 5
privateinherited

Definition at line 444 of file G4VEmModel.hh.

Referenced by G4VEmModel::CrossSectionPerVolume(), and G4VEmModel::G4VEmModel().

◆ nSelectors

G4int G4VEmModel::nSelectors = 0
privateinherited

◆ particle

const G4ParticleDefinition* G4WentzelVIModel::particle = nullptr
protectedinherited

◆ pBaseMaterial

const G4Material* G4VEmModel::pBaseMaterial = nullptr
protectedinherited

◆ pFactor

G4double G4VEmModel::pFactor = 1.0
protectedinherited

◆ polarAngleLimit

G4double G4VEmModel::polarAngleLimit
privateinherited

Definition at line 441 of file G4VEmModel.hh.

Referenced by G4VEmModel::PolarAngleLimit(), and G4VEmModel::SetPolarAngleLimit().

◆ pParticleChange

G4VParticleChange* G4VEmModel::pParticleChange = nullptr
protectedinherited

◆ preKinEnergy

G4double G4WentzelVIModel::preKinEnergy = 0.0
protectedinherited

◆ prob

std::vector<G4double> G4WentzelVIModel::prob
protectedinherited

◆ safetyHelper

G4SafetyHelper* G4VMscModel::safetyHelper = nullptr
privateinherited

◆ samplez

G4bool G4VMscModel::samplez = false
protectedinherited

Definition at line 205 of file G4VMscModel.hh.

Referenced by G4VMscModel::SetSampleZ().

◆ secondaryThreshold

G4double G4VEmModel::secondaryThreshold = DBL_MAX
privateinherited

◆ singleScatteringMode

G4bool G4WentzelVIModel::singleScatteringMode
protectedinherited

◆ skin

G4double G4VMscModel::skin = 1.0
protectedinherited

◆ ssFactor

G4double G4WentzelVIModel::ssFactor = 1.05
protectedinherited

◆ steppingAlgorithm

G4MscStepLimitType G4VMscModel::steppingAlgorithm
protectedinherited

◆ theDensityFactor

const std::vector<G4double>* G4VEmModel::theDensityFactor = nullptr
protectedinherited

Definition at line 428 of file G4VEmModel.hh.

Referenced by G4VEmModel::G4VEmModel().

◆ theDensityIdx

const std::vector<G4int>* G4VEmModel::theDensityIdx = nullptr
protectedinherited

Definition at line 429 of file G4VEmModel.hh.

Referenced by G4VEmModel::G4VEmModel().

◆ theLPMflag

G4bool G4VEmModel::theLPMflag = false
privateinherited

Definition at line 454 of file G4VEmModel.hh.

Referenced by G4VEmModel::LPMFlag(), and G4VEmModel::SetLPMFlag().

◆ tlimitminfix

G4double G4WentzelVIModel::tlimitminfix
protectedinherited

◆ tPathLength

G4double G4WentzelVIModel::tPathLength = 0.0
protectedinherited

◆ useAngularGenerator

G4bool G4VEmModel::useAngularGenerator = false
privateinherited

◆ useBaseMaterials

G4bool G4VEmModel::useBaseMaterials = false
privateinherited

◆ useSecondMoment

G4bool G4WentzelVIModel::useSecondMoment
protectedinherited

◆ wokvi

G4WentzelOKandVIxSection* G4WentzelVIModel::wokvi
protectedinherited

◆ xsec

std::vector<G4double> G4VEmModel::xsec
privateinherited

◆ xsecn

std::vector<G4double> G4WentzelVIModel::xsecn
protectedinherited

◆ xSectionTable

G4PhysicsTable* G4VEmModel::xSectionTable = nullptr
protectedinherited

◆ xtsec

G4double G4WentzelVIModel::xtsec = 0.0
protectedinherited

◆ zPathLength

G4double G4WentzelVIModel::zPathLength = 0.0
protectedinherited

The documentation for this class was generated from the following files: