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

#include <G4LivermoreGammaConversionModel.hh>

Inheritance diagram for G4LivermoreGammaConversionModel:
G4PairProductionRelModel 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 kinEnergy, G4double Z, G4double A=0.0, G4double cut=0.0, 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 ComputeMeanFreePath (const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
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 *)
 
virtual void FillNumberOfSecondaries (G4int &numberOfTriplets, G4int &numberOfRecoil)
 
G4bool ForceBuildTableFlag () const
 
 G4LivermoreGammaConversionModel (const G4LivermoreGammaConversionModel &)=delete
 
 G4LivermoreGammaConversionModel (const G4ParticleDefinition *p=nullptr, const G4String &nam="LivermoreConversion")
 
G4VEmAngularDistributionGetAngularDistribution ()
 
virtual G4double GetChargeSquareRatio (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4PhysicsTableGetCrossSectionTable ()
 
const G4ElementGetCurrentElement () const
 
const G4IsotopeGetCurrentIsotope () const
 
G4ElementDataGetElementData ()
 
std::vector< G4EmElementSelector * > * GetElementSelectors ()
 
G4VEmFluctuationModelGetModelOfFluctuations ()
 
const G4StringGetName () const
 
virtual G4double GetPartialCrossSection (const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
 
virtual G4double GetParticleCharge (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4VEmModelGetTripletModel ()
 
G4double HighEnergyActivationLimit () const
 
G4double HighEnergyLimit () const
 
void Initialise (const G4ParticleDefinition *, const G4DataVector &) override
 
void InitialiseElementSelectors (const G4ParticleDefinition *, const G4DataVector &)
 
void InitialiseForElement (const G4ParticleDefinition *, G4int Z) override
 
virtual void InitialiseForMaterial (const G4ParticleDefinition *, const G4Material *)
 
void InitialiseLocal (const G4ParticleDefinition *, G4VEmModel *masterModel) override
 
G4bool IsActive (G4double kinEnergy) const
 
G4bool IsLocked () const
 
G4bool IsMaster () const
 
G4double LowEnergyActivationLimit () const
 
G4double LowEnergyLimit () const
 
G4bool LPMflag () 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
 
G4LivermoreGammaConversionModeloperator= (const G4LivermoreGammaConversionModel &right)=delete
 
G4double PolarAngleLimit () const
 
void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
 
G4double SecondaryThreshold () const
 
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 SetFluctuationFlag (G4bool val)
 
void SetForceBuildTable (G4bool val)
 
void SetHighEnergyLimit (G4double)
 
void SetLocked (G4bool)
 
void SetLowEnergyLimit (G4double)
 
void SetLPMflag (G4bool val)
 
void SetLPMFlag (G4bool val)
 
void SetMasterThread (G4bool val)
 
void SetParticleChange (G4VParticleChange *, G4VEmFluctuationModel *f=nullptr)
 
void SetPolarAngleLimit (G4double)
 
void SetSecondaryThreshold (G4double)
 
void SetTripletModel (G4VEmModel *)
 
void SetupForMaterial (const G4ParticleDefinition *, const G4Material *, G4double) override
 
void SetUseBaseMaterials (G4bool val)
 
virtual void StartTracking (G4Track *)
 
G4bool UseAngularGeneratorFlag () const
 
G4bool UseBaseMaterials () const
 
virtual G4double Value (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
virtual ~G4LivermoreGammaConversionModel ()
 

Protected Member Functions

G4double ComputeDXSectionPerAtom (G4double eplusEnergy, G4double gammaEnergy, G4double Z)
 
G4double ComputeParametrizedXSectionPerAtom (G4double gammaEnergy, G4double Z)
 
void ComputePhi12 (const G4double delta, G4double &phi1, G4double &phi2)
 
G4double ComputeRelDXSectionPerAtom (G4double eplusEnergy, G4double gammaEnergy, G4double Z)
 
G4double ComputeXSectionPerAtom (G4double gammaEnergy, G4double Z)
 
const G4MaterialCutsCoupleCurrentCouple () const
 
G4ParticleChangeForGammaGetParticleChangeForGamma ()
 
G4ParticleChangeForLossGetParticleChangeForLoss ()
 
virtual G4double MaxSecondaryEnergy (const G4ParticleDefinition *, G4double kineticEnergy)
 
G4double ScreenFunction1 (const G4double delta)
 
void ScreenFunction12 (const G4double delta, G4double &f1, G4double &f2)
 
G4double ScreenFunction2 (const G4double delta)
 
void SetCurrentElement (const G4Element *)
 

Protected Attributes

size_t basedCoupleIndex = 0
 
size_t currentCoupleIndex = 0
 
G4double fCoulombCorrectionThreshold
 
G4ElementDatafElementData = nullptr
 
G4PowfG4Calc
 
G4bool fIsUseCompleteScreening
 
G4bool fIsUseLPMCorrection
 
G4double fLPMEnergy
 
G4double fParametrizedXSectionThreshold
 
G4ParticleDefinitionfTheElectron
 
G4ParticleDefinitionfTheGamma
 
G4ParticleDefinitionfThePositron
 
G4double inveplus
 
G4bool lossFlucFlag = true
 
const G4MaterialpBaseMaterial = nullptr
 
G4double pFactor = 1.0
 
G4VParticleChangepParticleChange = nullptr
 
const std::vector< G4double > * theDensityFactor = nullptr
 
const std::vector< G4int > * theDensityIdx = nullptr
 
G4PhysicsTablexSectionTable = nullptr
 

Static Protected Attributes

static const G4double gEgLPMActivation = 100.*CLHEP::GeV
 
static std::vector< ElementData * > gElementData
 
static const G4double gFelLowZet [8]
 
static const G4double gFinelLowZet [8]
 
static const G4double gLPMconstant
 
static LPMFuncs gLPMFuncs
 
static const G4int gMaxZet = 120
 
static const G4double gWGL [8]
 
static const G4double gXGL [8]
 
static const G4double gXSecFactor
 

Private Member Functions

void ComputeLPMfunctions (G4double &fXiS, G4double &fGS, G4double &fPhiS, const G4double eps, const G4double egamma, const G4int izet)
 
void ComputeLPMGsPhis (G4double &funcGS, G4double &funcPhiS, const G4double varShat)
 
void GetLPMFunctions (G4double &lpmGs, G4double &lpmPhis, const G4double sval)
 
void InitialiseElementData ()
 
void InitLPMFunctions ()
 
void ReadData (size_t Z, const char *path=nullptr)
 

Private Attributes

G4VEmAngularDistributionanglModel = nullptr
 
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
 
G4ParticleChangeForGammafParticleChange
 
G4VEmModelfTripletModel = nullptr
 
G4double highLimit
 
G4bool isLocked = false
 
G4bool isMaster = true
 
G4bool localElmSelectors = true
 
G4bool localTable = true
 
G4double lowLimit
 
G4int maxZ
 
const G4String name
 
G4int nsec = 5
 
G4int nSelectors = 0
 
G4double polarAngleLimit
 
G4double secondaryThreshold = DBL_MAX
 
G4bool theLPMflag = false
 
G4bool useAngularGenerator = false
 
G4bool useBaseMaterials = false
 
G4int verboseLevel
 
std::vector< G4doublexsec
 

Static Private Attributes

static G4PhysicsFreeVectordata [101] = {nullptr}
 
static G4double lowEnergyLimit = 2.*CLHEP::electron_mass_c2
 

Detailed Description

Definition at line 46 of file G4LivermoreGammaConversionModel.hh.

Constructor & Destructor Documentation

◆ G4LivermoreGammaConversionModel() [1/2]

G4LivermoreGammaConversionModel::G4LivermoreGammaConversionModel ( const G4ParticleDefinition p = nullptr,
const G4String nam = "LivermoreConversion" 
)
explicit

Definition at line 57 of file G4LivermoreGammaConversionModel.cc.

60{
61 verboseLevel = 0;
62 // Verbosity scale for debugging purposes:
63 // 0 = nothing
64 // 1 = calculation of cross sections, file openings...
65 // 2 = entering in methods
66 if(verboseLevel > 0)
67 {
68 G4cout << "G4LivermoreGammaConversionModel is constructed " << G4endl;
69 }
70}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4PairProductionRelModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="BetheHeitlerLPM")

References G4cout, G4endl, and verboseLevel.

◆ ~G4LivermoreGammaConversionModel()

G4LivermoreGammaConversionModel::~G4LivermoreGammaConversionModel ( )
virtual

Definition at line 74 of file G4LivermoreGammaConversionModel.cc.

75{
76 if(IsMaster()) {
77 for(G4int i = 0; i <= maxZ; ++i)
78 {
79 if(data[i])
80 {
81 delete data[i];
82 data[i] = nullptr;
83 }
84 }
85 }
86}
int G4int
Definition: G4Types.hh:85
static G4PhysicsFreeVector * data[101]
G4bool IsMaster() const
Definition: G4VEmModel.hh:746

References data, G4VEmModel::IsMaster(), and maxZ.

◆ G4LivermoreGammaConversionModel() [2/2]

G4LivermoreGammaConversionModel::G4LivermoreGammaConversionModel ( const G4LivermoreGammaConversionModel )
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 G4LivermoreGammaConversionModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition particle,
G4double  kinEnergy,
G4double  Z,
G4double  A = 0.0,
G4double  cut = 0.0,
G4double  emax = DBL_MAX 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 187 of file G4LivermoreGammaConversionModel.cc.

190{
191 if (verboseLevel > 1)
192 {
193 G4cout << "G4LivermoreGammaConversionModel::ComputeCrossSectionPerAtom() Z= "
194 << Z << G4endl;
195 }
196
197 if (GammaEnergy < lowEnergyLimit) { return 0.0; }
198
199 G4double xs = 0.0;
200
201 G4int intZ = std::max(1, std::min(G4lrint(Z), maxZ));
202
203 G4PhysicsFreeVector* pv = data[intZ];
204
205 // if element was not initialised
206 // do initialisation safely for MT mode
207 if(pv == nullptr)
208 {
209 InitialiseForElement(particle, intZ);
210 pv = data[intZ];
211 if(pv == nullptr) { return xs; }
212 }
213 // x-section is taken from the table
214 xs = pv->Value(GammaEnergy);
215
216 if(verboseLevel > 0)
217 {
218 G4cout << "*** Gamma conversion xs for Z=" << Z << " at energy E(MeV)="
219 << GammaEnergy/MeV << " cs=" << xs/millibarn << " mb" << G4endl;
220 }
221 return xs;
222}
static constexpr double millibarn
Definition: G4SIunits.hh:86
static constexpr double MeV
Definition: G4SIunits.hh:200
double G4double
Definition: G4Types.hh:83
const G4int Z[17]
void InitialiseForElement(const G4ParticleDefinition *, G4int Z) override
G4double Value(const G4double energy, std::size_t &lastidx) const
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
int G4lrint(double ad)
Definition: templates.hh:134

References data, G4cout, G4endl, G4lrint(), InitialiseForElement(), lowEnergyLimit, G4INCL::Math::max(), maxZ, MeV, millibarn, G4INCL::Math::min(), G4PhysicsVector::Value(), verboseLevel, 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

◆ ComputeDXSectionPerAtom()

G4double G4PairProductionRelModel::ComputeDXSectionPerAtom ( G4double  eplusEnergy,
G4double  gammaEnergy,
G4double  Z 
)
protectedinherited

Definition at line 227 of file G4PairProductionRelModel.cc.

230{
231 G4double xSection = 0.;
232 const G4int iz = std::min(gMaxZet, G4lrint(Z));
233 const G4double eps = pEnergy/gammaEnergy;
234 const G4double epsm = 1.-eps;
235 const G4double dum = eps*epsm;
237 // complete screening:
238 const G4double Lel = gElementData[iz]->fLradEl;
239 const G4double fc = gElementData[iz]->fCoulomb;
240 xSection = (eps*eps + epsm*epsm + 2.*dum/3.)*(Lel-fc) - dum/9.;
241 } else {
242 // normal case:
243 const G4double eps0 = CLHEP::electron_mass_c2/gammaEnergy;
244 const G4double fc = gElementData[iz]->fCoulomb;
245 const G4double lnZ13 = gElementData[iz]->fLogZ13;
246 const G4double delta = gElementData[iz]->fDeltaFactor*eps0/dum;
247 G4double phi1, phi2;
248 ComputePhi12(delta, phi1, phi2);
249 xSection = (eps*eps + epsm*epsm)*(0.25*phi1-lnZ13-fc)
250 + 2.*dum*(0.25*phi2-lnZ13-fc)/3.;
251 }
252 // non-const. part of the DCS differential in total energy transfer not in eps
253 // ds/dEt=ds/deps deps/dEt with deps/dEt=1/Eg
254 return std::max(xSection, 0.0)/gammaEnergy;
255}
static const G4double eps
static std::vector< ElementData * > gElementData
void ComputePhi12(const G4double delta, G4double &phi1, G4double &phi2)
static constexpr double electron_mass_c2

References G4PairProductionRelModel::ComputePhi12(), CLHEP::electron_mass_c2, eps, G4PairProductionRelModel::fIsUseCompleteScreening, G4lrint(), G4PairProductionRelModel::gElementData, G4PairProductionRelModel::gMaxZet, G4INCL::Math::max(), G4INCL::Math::min(), and Z.

Referenced by G4PairProductionRelModel::ComputeXSectionPerAtom().

◆ ComputeLPMfunctions()

void G4PairProductionRelModel::ComputeLPMfunctions ( G4double fXiS,
G4double fGS,
G4double fPhiS,
const G4double  eps,
const G4double  egamma,
const G4int  izet 
)
privateinherited

Definition at line 615 of file G4PairProductionRelModel.cc.

618{
619 // 1. y = E_+/E_{\gamma} with E_+ being the total energy transfered
620 // to one of the e-/e+ pair
621 // s' = \sqrt{ \frac{1}{8} \frac{1}{y(1-y)} \frac{E^{KL}_{LPM}}{E_{\gamma}} }
622 const G4double varSprime = std::sqrt(0.125*fLPMEnergy/(eps*egamma*(1.0-eps)));
623 const G4double condition = gElementData[izet]->fLPMVarS1Cond;
624 funcXiS = 2.0;
625 if (varSprime > 1.0) {
626 funcXiS = 1.0;
627 } else if (varSprime > condition) {
628 const G4double dum = gElementData[izet]->fLPMILVarS1Cond;
629 const G4double funcHSprime = G4Log(varSprime)*dum;
630 funcXiS = 1.0 + funcHSprime
631 - 0.08*(1.0-funcHSprime)*funcHSprime*(2.0-funcHSprime)*dum;
632 }
633 // 2. s=\frac{s'}{\sqrt{\xi(s')}}
634 const G4double varShat = varSprime / std::sqrt(funcXiS);
635 GetLPMFunctions(funcGS, funcPhiS, varShat);
636 // MAKE SURE SUPPRESSION IS SMALLER THAN 1: due to Migdal's approximation on xi
637 if (funcXiS * funcPhiS > 1. || varShat > 0.57) {
638 funcXiS = 1. / funcPhiS;
639 }
640}
G4double condition(const G4ErrorSymMatrix &m)
G4double G4Log(G4double x)
Definition: G4Log.hh:226
void GetLPMFunctions(G4double &lpmGs, G4double &lpmPhis, const G4double sval)

References condition(), eps, G4PairProductionRelModel::fLPMEnergy, G4Log(), G4PairProductionRelModel::gElementData, and G4PairProductionRelModel::GetLPMFunctions().

Referenced by G4PairProductionRelModel::ComputeRelDXSectionPerAtom(), and G4PairProductionRelModel::SampleSecondaries().

◆ ComputeLPMGsPhis()

void G4PairProductionRelModel::ComputeLPMGsPhis ( G4double funcGS,
G4double funcPhiS,
const G4double  varShat 
)
privateinherited

Definition at line 556 of file G4PairProductionRelModel.cc.

556 {
557 if (varShat < 0.01) {
558 funcPhiS = 6.0*varShat*(1.0-CLHEP::pi*varShat);
559 funcGS = 12.0*varShat-2.0*funcPhiS;
560 } else {
561 const G4double varShat2 = varShat*varShat;
562 const G4double varShat3 = varShat*varShat2;
563 const G4double varShat4 = varShat2*varShat2;
564 if (varShat < 0.415827397755) { // Stanev ap.: for \psi(s) and compute G(s)
565 funcPhiS = 1.0-G4Exp( -6.0*varShat*(1.0+varShat*(3.0-CLHEP::pi))
566 + varShat3/(0.623+0.796*varShat+0.658*varShat2));
567 // 1-\exp \left\{-4s-\frac{8s^2}{1+3.936s+4.97s^2-0.05s^3+7.5s^4} \right\}
568 const G4double funcPsiS = 1.0-G4Exp( -4.0*varShat - 8.0*varShat2/(1.0
569 + 3.936*varShat+4.97*varShat2-0.05*varShat3+7.5*varShat4));
570 // G(s) = 3 \psi(s) - 2 \phi(s)
571 funcGS = 3.0*funcPsiS - 2.0*funcPhiS;
572 } else if (varShat < 1.55) {
573 funcPhiS = 1.0-G4Exp( -6.0*varShat*(1.0+varShat*(3.0-CLHEP::pi))
574 + varShat3/(0.623+0.796*varShat+0.658*varShat2));
575 const G4double dum0 = -0.16072300849123999+3.7550300067531581*varShat
576 -1.7981383069010097 *varShat2
577 +0.67282686077812381*varShat3
578 -0.1207722909879257 *varShat4;
579 funcGS = std::tanh(dum0);
580 } else {
581 funcPhiS = 1.0-0.01190476/varShat4;
582 if (varShat < 1.9156) {
583 const G4double dum0 = -0.16072300849123999+3.7550300067531581*varShat
584 -1.7981383069010097 *varShat2
585 +0.67282686077812381*varShat3
586 -0.1207722909879257 *varShat4;
587 funcGS = std::tanh(dum0);
588 } else {
589 funcGS = 1.0-0.0230655/varShat4;
590 }
591 }
592 }
593}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
static constexpr double pi
Definition: SystemOfUnits.h:55

References G4Exp(), and CLHEP::pi.

Referenced by G4PairProductionRelModel::InitLPMFunctions().

◆ 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
#define DBL_MAX
Definition: templates.hh:62

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

◆ ComputeParametrizedXSectionPerAtom()

G4double G4PairProductionRelModel::ComputeParametrizedXSectionPerAtom ( G4double  gammaEnergy,
G4double  Z 
)
protectedinherited

Definition at line 655 of file G4PairProductionRelModel.cc.

657{
658 G4double xSection = 0.0 ;
659 // short versions
661 // zero cross section below the kinematical limit: Eg<2mc^2
662 if (Z < 0.9 || gammaE <= 2.0*kMC2) { return xSection; }
663 //
664 static const G4double gammaEnergyLimit = 1.5*CLHEP::MeV;
665 // set coefficients a, b c
666 static const G4double a0 = 8.7842e+2*CLHEP::microbarn;
667 static const G4double a1 = -1.9625e+3*CLHEP::microbarn;
668 static const G4double a2 = 1.2949e+3*CLHEP::microbarn;
669 static const G4double a3 = -2.0028e+2*CLHEP::microbarn;
670 static const G4double a4 = 1.2575e+1*CLHEP::microbarn;
671 static const G4double a5 = -2.8333e-1*CLHEP::microbarn;
672
673 static const G4double b0 = -1.0342e+1*CLHEP::microbarn;
674 static const G4double b1 = 1.7692e+1*CLHEP::microbarn;
675 static const G4double b2 = -8.2381 *CLHEP::microbarn;
676 static const G4double b3 = 1.3063 *CLHEP::microbarn;
677 static const G4double b4 = -9.0815e-2*CLHEP::microbarn;
678 static const G4double b5 = 2.3586e-3*CLHEP::microbarn;
679
680 static const G4double c0 = -4.5263e+2*CLHEP::microbarn;
681 static const G4double c1 = 1.1161e+3*CLHEP::microbarn;
682 static const G4double c2 = -8.6749e+2*CLHEP::microbarn;
683 static const G4double c3 = 2.1773e+2*CLHEP::microbarn;
684 static const G4double c4 = -2.0467e+1*CLHEP::microbarn;
685 static const G4double c5 = 6.5372e-1*CLHEP::microbarn;
686 // check low energy limit of the approximation (1.5 MeV)
687 G4double gammaEnergyOrg = gammaE;
688 if (gammaE < gammaEnergyLimit) { gammaE = gammaEnergyLimit; }
689 // compute gamma energy variables
690 const G4double x = G4Log(gammaE/kMC2);
691 const G4double x2 = x *x;
692 const G4double x3 = x2*x;
693 const G4double x4 = x3*x;
694 const G4double x5 = x4*x;
695 //
696 const G4double F1 = a0 + a1*x + a2*x2 + a3*x3 + a4*x4 + a5*x5;
697 const G4double F2 = b0 + b1*x + b2*x2 + b3*x3 + b4*x4 + b5*x5;
698 const G4double F3 = c0 + c1*x + c2*x2 + c3*x3 + c4*x4 + c5*x5;
699 // compute the approximated cross section
700 xSection = (Z + 1.)*(F1*Z + F2*Z*Z + F3);
701 // check if we are below the limit of the approximation and apply correction
702 if (gammaEnergyOrg < gammaEnergyLimit) {
703 const G4double dum = (gammaEnergyOrg-2.*kMC2)/(gammaEnergyLimit-2.*kMC2);
704 xSection *= dum*dum;
705 }
706 return xSection;
707}
const G4double a0
static const G4double kMC2
static constexpr double microbarn
Definition: SystemOfUnits.h:88
static constexpr double MeV

References a0, CLHEP::electron_mass_c2, G4Log(), kMC2, CLHEP::MeV, CLHEP::microbarn, and Z.

Referenced by G4PairProductionRelModel::ComputeCrossSectionPerAtom().

◆ ComputePhi12()

void G4PairProductionRelModel::ComputePhi12 ( const G4double  delta,
G4double phi1,
G4double phi2 
)
inlineprotectedinherited

Definition at line 202 of file G4PairProductionRelModel.hh.

205{
206 if (delta > 1.4) {
207 phi1 = 21.0190 - 4.145*G4Log(delta + 0.958);
208 phi2 = phi1;
209 } else {
210 phi1 = 20.806 - delta*(3.190 - 0.5710*delta);
211 phi2 = 20.234 - delta*(2.126 - 0.0903*delta);
212 }
213}

References G4Log().

Referenced by G4PairProductionRelModel::ComputeDXSectionPerAtom(), G4PairProductionRelModel::ComputeRelDXSectionPerAtom(), and G4PairProductionRelModel::SampleSecondaries().

◆ ComputeRelDXSectionPerAtom()

G4double G4PairProductionRelModel::ComputeRelDXSectionPerAtom ( G4double  eplusEnergy,
G4double  gammaEnergy,
G4double  Z 
)
protectedinherited

Definition at line 276 of file G4PairProductionRelModel.cc.

279{
280 G4double xSection = 0.;
281 const G4int iz = std::min(gMaxZet, G4lrint(Z));
282 const G4double eps = pEnergy/gammaEnergy;
283 const G4double epsm = 1.-eps;
284 const G4double dum = eps*epsm;
285 // evaluate LPM suppression functions
286 G4double fXiS, fGS, fPhiS;
287 ComputeLPMfunctions(fXiS, fGS, fPhiS, eps, gammaEnergy, iz);
289 // complete screening:
290 const G4double Lel = gElementData[iz]->fLradEl;
291 const G4double fc = gElementData[iz]->fCoulomb;
292 xSection = (Lel-fc)*((eps*eps+epsm*epsm)*2.*fPhiS + fGS)/3. - dum*fGS/9.;
293 } else {
294 // normal case:
295 const G4double eps0 = CLHEP::electron_mass_c2/gammaEnergy;
296 const G4double fc = gElementData[iz]->fCoulomb;
297 const G4double lnZ13 = gElementData[iz]->fLogZ13;
298 const G4double delta = gElementData[iz]->fDeltaFactor*eps0/dum;
299 G4double phi1, phi2;
300 ComputePhi12(delta, phi1, phi2);
301 xSection = (eps*eps + epsm*epsm)*(2.*fPhiS+fGS)*(0.25*phi1-lnZ13-fc)/3.
302 + 2.*dum*fGS*(0.25*phi2-lnZ13-fc)/3.;
303 }
304 // non-const. part of the DCS differential in total energy transfer not in eps
305 // ds/dEt=ds/deps deps/dEt with deps/dEt=1/Eg
306 return std::max(fXiS*xSection, 0.0)/gammaEnergy;
307}
void ComputeLPMfunctions(G4double &fXiS, G4double &fGS, G4double &fPhiS, const G4double eps, const G4double egamma, const G4int izet)

References G4PairProductionRelModel::ComputeLPMfunctions(), G4PairProductionRelModel::ComputePhi12(), CLHEP::electron_mass_c2, eps, G4PairProductionRelModel::fIsUseCompleteScreening, G4lrint(), G4PairProductionRelModel::gElementData, G4PairProductionRelModel::gMaxZet, G4INCL::Math::max(), G4INCL::Math::min(), and Z.

Referenced by G4PairProductionRelModel::ComputeXSectionPerAtom().

◆ ComputeXSectionPerAtom()

G4double G4PairProductionRelModel::ComputeXSectionPerAtom ( G4double  gammaEnergy,
G4double  Z 
)
protectedinherited

Definition at line 172 of file G4PairProductionRelModel.cc.

174{
175 G4double xSection = 0.0;
176 // check if LPM suppression needs to be used
177 const G4bool isLPM = (fIsUseLPMCorrection && gammaEnergy>gEgLPMActivation);
178 // determine the kinematical limits (taken into account the correction due to
179 // the way in which the Coulomb correction is applied i.e. avoid negative DCS)
180 const G4int iz = std::min(gMaxZet, G4lrint(Z));
181 const G4double eps0 = CLHEP::electron_mass_c2/gammaEnergy;
182 // Coulomb correction is always included in the DCS even below 50 MeV (note:
183 // that this DCS is only used to get the integrated x-section)
184 const G4double dmax = gElementData[iz]->fDeltaMaxHigh;
185 const G4double dmin = 4.*eps0*gElementData[iz]->fDeltaFactor;
186 const G4double eps1 = 0.5 - 0.5*std::sqrt(1.-dmin/dmax);
187 const G4double epsMin = std::max(eps0, eps1);
188 const G4double epsMax = 0.5; // DCS is symmetric around eps=0.5
189 // let Et be the total energy transferred to the e- or to the e+
190 // the [Et-min, Et-max] interval will be divided into i=1,2,..,n subintervals
191 // with width of dInterv = (Et-max - Et-min)/n and numerical integration will
192 // be done in each sub-inteval using the xi = (Et - Et_i-min)/dInterv variable
193 // that is in [0,1]. The 8-point GL q. is used for the integration on [0,1].
194 const G4int numSub = 2;
195 const G4double dInterv= (epsMax - epsMin)*gammaEnergy/G4double(numSub);
196 G4double minEti = epsMin*gammaEnergy; // Et-min i.e. Et_0-min
197 for (G4int i = 0; i < numSub; ++i) {
198 for (G4int ngl = 0; ngl < 8; ++ngl) {
199 const G4double Et = (minEti + gXGL[ngl]*dInterv);
200 const G4double xs = isLPM ? ComputeRelDXSectionPerAtom(Et, gammaEnergy, Z)
201 : ComputeDXSectionPerAtom(Et, gammaEnergy, Z);
202 xSection += gWGL[ngl]*xs;
203 }
204 // update minimum Et of the sub-inteval
205 minEti += dInterv;
206 }
207 // apply corrections of variable transformation and half interval integration
208 xSection = std::max(2.*xSection*dInterv, 0.);
209 return xSection;
210}
bool G4bool
Definition: G4Types.hh:86
G4double ComputeRelDXSectionPerAtom(G4double eplusEnergy, G4double gammaEnergy, G4double Z)
static const G4double gEgLPMActivation
static const G4double gXGL[8]
G4double ComputeDXSectionPerAtom(G4double eplusEnergy, G4double gammaEnergy, G4double Z)
static const G4double gWGL[8]

References G4PairProductionRelModel::ComputeDXSectionPerAtom(), G4PairProductionRelModel::ComputeRelDXSectionPerAtom(), CLHEP::electron_mass_c2, G4PairProductionRelModel::fIsUseLPMCorrection, G4lrint(), G4PairProductionRelModel::gEgLPMActivation, G4PairProductionRelModel::gElementData, G4PairProductionRelModel::gMaxZet, G4PairProductionRelModel::gWGL, G4PairProductionRelModel::gXGL, G4INCL::Math::max(), G4INCL::Math::min(), and Z.

Referenced by G4PairProductionRelModel::ComputeCrossSectionPerAtom().

◆ 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
size_t GetNumberOfElements() const
Definition: G4Material.hh:182
const G4double * GetVecNbOfAtomsPerVolume() const
Definition: G4Material.hh:202
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().

◆ 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().

◆ GetElementData()

G4ElementData * G4VEmModel::GetElementData ( )
inlineinherited

◆ GetElementSelectors()

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

◆ GetLPMFunctions()

void G4PairProductionRelModel::GetLPMFunctions ( G4double lpmGs,
G4double lpmPhis,
const G4double  sval 
)
privateinherited

Definition at line 596 of file G4PairProductionRelModel.cc.

598 {
599 if (sval < gLPMFuncs.fSLimit) {
600 G4double val = sval*gLPMFuncs.fISDelta;
601 const G4int ilow = (G4int)val;
602 val -= ilow;
603 lpmGs = (gLPMFuncs.fLPMFuncG[ilow+1]-gLPMFuncs.fLPMFuncG[ilow])*val
604 + gLPMFuncs.fLPMFuncG[ilow];
605 lpmPhis = (gLPMFuncs.fLPMFuncPhi[ilow+1]-gLPMFuncs.fLPMFuncPhi[ilow])*val
606 + gLPMFuncs.fLPMFuncPhi[ilow];
607 } else {
608 G4double ss = sval*sval;
609 ss *= ss;
610 lpmPhis = 1.0-0.01190476/ss;
611 lpmGs = 1.0-0.0230655/ss;
612 }
613}

References G4PairProductionRelModel::LPMFuncs::fISDelta, G4PairProductionRelModel::LPMFuncs::fLPMFuncG, G4PairProductionRelModel::LPMFuncs::fLPMFuncPhi, G4PairProductionRelModel::LPMFuncs::fSLimit, and G4PairProductionRelModel::gLPMFuncs.

Referenced by G4PairProductionRelModel::ComputeLPMfunctions().

◆ 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(), 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

◆ GetParticleCharge()

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

◆ GetTripletModel()

G4VEmModel * G4VEmModel::GetTripletModel ( )
inlineinherited

◆ 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(), 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 G4LivermoreGammaConversionModel::Initialise ( const G4ParticleDefinition particle,
const G4DataVector cuts 
)
overridevirtual

Implements G4VEmModel.

Definition at line 90 of file G4LivermoreGammaConversionModel.cc.

94 if (verboseLevel > 1)
95 {
96 G4cout << "Calling Initialise() of G4LivermoreGammaConversionModel."
97 << G4endl
98 << "Energy range: "
99 << LowEnergyLimit() / MeV << " MeV - "
100 << HighEnergyLimit() / GeV << " GeV isMater: " << IsMaster()
101 << G4endl;
102 }
103
104 if(fParticleChange == nullptr) {
106 }
107
108 if(IsMaster())
109 {
110 // Initialise element selector
111 InitialiseElementSelectors(particle, cuts);
112
113 // Access to elements
114 char* path = std::getenv("G4LEDATA");
115 const G4ElementTable* elemTable = G4Element::GetElementTable();
116 size_t numElems = (*elemTable).size();
117 for(size_t ie = 0; ie < numElems; ++ie)
118 {
119 const G4Element* elem = (*elemTable)[ie];
120 const G4int Z = std::min(maxZ, elem->GetZasInt());
121 if(data[Z] == nullptr)
122 {
123 ReadData(Z, path);
124 }
125 }
126 }
127}
std::vector< G4Element * > G4ElementTable
#define elem(i, j)
static constexpr double GeV
Definition: G4SIunits.hh:203
static G4ElementTable * GetElementTable()
Definition: G4Element.cc:397
void ReadData(size_t Z, const char *path=nullptr)
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
G4ParticleChangeForGamma * GetParticleChangeForGamma()
Definition: G4VEmModel.cc:123
G4double LowEnergyLimit() const
Definition: G4VEmModel.hh:662
G4double HighEnergyLimit() const
Definition: G4VEmModel.hh:655
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
Definition: G4VEmModel.cc:138

References data, elem, fParticleChange, G4cout, G4endl, G4Element::GetElementTable(), G4VEmModel::GetParticleChangeForGamma(), GeV, G4VEmModel::HighEnergyLimit(), G4PairProductionRelModel::Initialise(), G4VEmModel::InitialiseElementSelectors(), G4VEmModel::IsMaster(), G4VEmModel::LowEnergyLimit(), maxZ, MeV, G4INCL::Math::min(), ReadData(), verboseLevel, and Z.

◆ InitialiseElementData()

void G4PairProductionRelModel::InitialiseElementData ( )
privateinherited

Definition at line 499 of file G4PairProductionRelModel.cc.

500{
501 G4int size = gElementData.size();
502 if (size < gMaxZet+1) {
503 gElementData.resize(gMaxZet+1, nullptr);
504 }
505 // create for all elements that are in the detector
506 const G4ElementTable* elemTable = G4Element::GetElementTable();
507 size_t numElems = (*elemTable).size();
508 for (size_t ie = 0; ie < numElems; ++ie) {
509 const G4Element* elem = (*elemTable)[ie];
510 const G4int iz = std::min(gMaxZet, elem->GetZasInt());
511 if (!gElementData[iz]) { // create it if doesn't exist yet
512 const G4double logZ13 = elem->GetIonisation()->GetlogZ3();
513 const G4double Z13 = elem->GetIonisation()->GetZ3();
514 const G4double fc = elem->GetfCoulomb();
515 const G4double FZLow = 8.*logZ13;
516 const G4double FZHigh = 8.*(logZ13 + fc);
517 G4double Fel;
518 G4double Finel;
519 if (iz<5) { // use data from Dirac-Fock atomic model
520 Fel = gFelLowZet[iz];
521 Finel = gFinelLowZet[iz];
522 } else { // use the results of the Thomas-Fermi-Moliere model
523 Fel = G4Log(184.) - logZ13;
524 Finel = G4Log(1194.) - 2.*logZ13;
525 }
526 ElementData* elD = new ElementData();
527 elD->fLogZ13 = logZ13;
528 elD->fCoulomb = fc;
529 elD->fLradEl = Fel;
530 elD->fDeltaFactor = 136./Z13;
531 elD->fDeltaMaxLow = G4Exp((42.038 - FZLow)/8.29) - 0.958;
532 elD->fDeltaMaxHigh = G4Exp((42.038 - FZHigh)/8.29) - 0.958;
533 elD->fEtaValue = Finel/(Fel-fc);
534 elD->fLPMVarS1Cond = std::sqrt(2.)*Z13*Z13/(184.*184.);
535 elD->fLPMILVarS1Cond = 1./G4Log(elD->fLPMVarS1Cond);
536 gElementData[iz] = elD;
537 }
538 }
539}
static const G4double gFelLowZet[8]
static const G4double gFinelLowZet[8]

References elem, G4PairProductionRelModel::ElementData::fCoulomb, G4PairProductionRelModel::ElementData::fDeltaFactor, G4PairProductionRelModel::ElementData::fDeltaMaxHigh, G4PairProductionRelModel::ElementData::fDeltaMaxLow, G4PairProductionRelModel::ElementData::fEtaValue, G4PairProductionRelModel::ElementData::fLogZ13, G4PairProductionRelModel::ElementData::fLPMILVarS1Cond, G4PairProductionRelModel::ElementData::fLPMVarS1Cond, G4PairProductionRelModel::ElementData::fLradEl, G4Exp(), G4Log(), G4PairProductionRelModel::gElementData, G4Element::GetElementTable(), G4PairProductionRelModel::gFelLowZet, G4PairProductionRelModel::gFinelLowZet, G4PairProductionRelModel::gMaxZet, and G4INCL::Math::min().

Referenced by G4PairProductionRelModel::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}
static G4EmParameters * Instance()
G4int NumberOfBinsPerDecade() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
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(), 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 G4LivermoreGammaConversionModel::InitialiseForElement ( const G4ParticleDefinition ,
G4int  Z 
)
overridevirtual

◆ 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 G4PairProductionRelModel::InitialiseLocal ( const G4ParticleDefinition ,
G4VEmModel masterModel 
)
overridevirtualinherited

Reimplemented from G4VEmModel.

Definition at line 164 of file G4PairProductionRelModel.cc.

166{
169 }
170}
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
Definition: G4VEmModel.hh:852
std::vector< G4EmElementSelector * > * GetElementSelectors()
Definition: G4VEmModel.hh:844

References G4VEmModel::GetElementSelectors(), G4VEmModel::HighEnergyLimit(), G4VEmModel::LowEnergyLimit(), and G4VEmModel::SetElementSelectors().

◆ InitLPMFunctions()

void G4PairProductionRelModel::InitLPMFunctions ( )
privateinherited

◆ 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(), 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(), 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(), 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 G4PairProductionRelModel::LPMflag ( ) const
inlineinherited

◆ 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=()

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

◆ PolarAngleLimit()

G4double G4VEmModel::PolarAngleLimit ( ) const
inlineinherited

◆ ReadData()

void G4LivermoreGammaConversionModel::ReadData ( size_t  Z,
const char *  path = nullptr 
)
private

Definition at line 132 of file G4LivermoreGammaConversionModel.cc.

133{
134 if (verboseLevel > 1)
135 {
136 G4cout << "Calling ReadData() of G4LivermoreGammaConversionModel"
137 << G4endl;
138 }
139
140 if(data[Z]!= nullptr) { return; }
141
142 const char* datadir = path;
143
144 if(datadir == nullptr)
145 {
146 datadir = std::getenv("G4LEDATA");
147 if(datadir == nullptr)
148 {
149 G4Exception("G4LivermoreGammaConversionModel::ReadData()",
150 "em0006",FatalException,
151 "Environment variable G4LEDATA not defined");
152 return;
153 }
154 }
155 data[Z] = new G4PhysicsFreeVector();
156 std::ostringstream ost;
157 if(G4EmParameters::Instance()->LivermoreDataDir() == "livermore"){
158 ost << datadir << "/livermore/pair/pp-cs-" << Z <<".dat";
159 }else{
160 ost << datadir << "/epics2017/pair/pp-cs-" << Z <<".dat";
161 }
162
163 std::ifstream fin(ost.str().c_str());
164
165 if( !fin.is_open())
166 {
168 ed << "G4LivermoreGammaConversionModel data file <" << ost.str().c_str()
169 << "> is not opened!" << G4endl;
170 G4Exception("G4LivermoreGammaConversionModel::ReadData()",
171 "em0003",FatalException,
172 ed,"G4LEDATA version should be G4EMLOW6.27 or later.");
173 return;
174 }
175 else
176 {
177
178 if(verboseLevel > 1) { G4cout << "File " << ost.str()
179 << " is opened by G4LivermoreGammaConversionModel" << G4endl;}
180
181 data[Z]->Retrieve(fin, true);
182 }
183}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4bool Retrieve(std::ifstream &fIn, G4bool ascii=false)

References data, FatalException, G4cout, G4endl, G4Exception(), G4EmParameters::Instance(), G4PhysicsVector::Retrieve(), verboseLevel, and Z.

Referenced by Initialise(), and InitialiseForElement().

◆ SampleSecondaries()

void G4PairProductionRelModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  fvect,
const G4MaterialCutsCouple couple,
const G4DynamicParticle aDynamicGamma,
G4double  tmin,
G4double  maxEnergy 
)
overridevirtualinherited

Implements G4VEmModel.

Definition at line 347 of file G4PairProductionRelModel.cc.

364{
365 const G4Material* mat = couple->GetMaterial();
366 const G4double gammaEnergy = aDynamicGamma->GetKineticEnergy();
367 const G4double eps0 = CLHEP::electron_mass_c2/gammaEnergy ;
368 //
369 // check kinematical limit: gamma energy(Eg) must be at least 2 e- rest mass
370 // (but the model should be used at higher energies above 100 MeV)
371 if (eps0 > 0.5) { return; }
372 //
373 // select target atom of the material
374 const G4Element* anElement = SelectTargetAtom(couple, fTheGamma, gammaEnergy,
375 aDynamicGamma->GetLogKineticEnergy());
376 CLHEP::HepRandomEngine* rndmEngine = G4Random::getTheEngine();
377 //
378 // 'eps' is the total energy transferred to one of the e-/e+ pair in initial
379 // gamma energy units Eg. Since the corresponding DCS is symmetric on eps=0.5,
380 // the kinematical limits for eps0=mc^2/Eg <= eps <= 0.5
381 // 1. 'eps' is sampled uniformly on the [eps0, 0.5] inteval if Eg<Egsmall
382 // 2. otherwise, on the [eps_min, 0.5] interval according to the DCS (case 2.)
384 // case 1.
385 static const G4double Egsmall = 2.*CLHEP::MeV;
386 if (gammaEnergy < Egsmall) {
387 eps = eps0 + (0.5-eps0)*rndmEngine->flat();
388 } else {
389 // case 2.
390 // get the Coulomb factor for the target element (Z) and gamma energy (Eg)
391 // F(Z) = 8*ln(Z)/3 if Eg <= 50 [MeV] => no Coulomb correction
392 // F(Z) = 8*ln(Z)/3 + 8*fc(Z) if Eg > 50 [MeV] => fc(Z) is the Coulomb cor.
393 //
394 // The screening variable 'delta(eps)' = 136*Z^{-1/3}*eps0/[eps(1-eps)]
395 // Due to the Coulomb correction, the DCS can go below zero even at
396 // kinematicaly allowed eps > eps0 values. In order to exclude this eps
397 // range with negative DCS, the minimum eps value will be set to eps_min =
398 // max[eps0, epsp] with epsp is the solution of SF(delta(epsp)) - F(Z)/2 = 0
399 // with SF being the screening function (SF1=SF2 at high value of delta).
400 // The solution is epsp = 0.5 - 0.5*sqrt[ 1 - 4*136*Z^{-1/3}eps0/deltap]
401 // with deltap = Exp[(42.038-F(Z))/8.29]-0.958. So the limits are:
402 // - when eps=eps_max = 0.5 => delta_min = 136*Z^{-1/3}*eps0/4
403 // - epsp = 0.5 - 0.5*sqrt[ 1 - delta_min/deltap]
404 // - and eps_min = max[eps0, epsp]
405 const G4int iZet = std::min(gMaxZet, anElement->GetZasInt());
406 const G4double deltaFactor = gElementData[iZet]->fDeltaFactor*eps0;
407 const G4double deltaMin = 4.*deltaFactor;
408 G4double deltaMax = gElementData[iZet]->fDeltaMaxLow;
409 G4double FZ = 8.*gElementData[iZet]->fLogZ13;
410 if ( gammaEnergy > fCoulombCorrectionThreshold ) { // Eg > 50 MeV ?
411 FZ += 8.*gElementData[iZet]->fCoulomb;
412 deltaMax = gElementData[iZet]->fDeltaMaxHigh;
413 }
414 // compute the limits of eps
415 const G4double epsp = 0.5 - 0.5*std::sqrt(1. - deltaMin/deltaMax) ;
416 const G4double epsMin = std::max(eps0,epsp);
417 const G4double epsRange = 0.5 - epsMin;
418 //
419 // sample the energy rate (eps) of the created electron (or positron)
421 ScreenFunction12(deltaMin, F10, F20);
422 F10 -= FZ;
423 F20 -= FZ;
424 const G4double NormF1 = std::max(F10 * epsRange * epsRange, 0.);
425 const G4double NormF2 = std::max(1.5 * F20 , 0.);
426 const G4double NormCond = NormF1/(NormF1 + NormF2);
427 // check if LPM correction is active
428 const G4bool isLPM = (fIsUseLPMCorrection && gammaEnergy>gEgLPMActivation);
430 // we will need 3 uniform random number for each trial of sampling
431 G4double rndmv[3];
432 G4double greject = 0.;
433 do {
434 rndmEngine->flatArray(3, rndmv);
435 if (NormCond > rndmv[0]) {
436 eps = 0.5 - epsRange * fG4Calc->A13(rndmv[1]);
437 const G4double delta = deltaFactor/(eps*(1.-eps));
438 if (isLPM) {
439 G4double lpmXiS, lpmGS, lpmPhiS, phi1, phi2;
440 ComputePhi12(delta, phi1, phi2);
441 ComputeLPMfunctions(lpmXiS, lpmGS, lpmPhiS, eps, gammaEnergy, iZet);
442 greject = lpmXiS*((2.*lpmPhiS+lpmGS)*phi1-lpmGS*phi2-lpmPhiS*FZ)/F10;
443 } else {
444 greject = (ScreenFunction1(delta)-FZ)/F10;
445 }
446 } else {
447 eps = epsMin + epsRange*rndmv[1];
448 const G4double delta = deltaFactor/(eps*(1.-eps));
449 if (isLPM) {
450 G4double lpmXiS, lpmGS, lpmPhiS, phi1, phi2;
451 ComputePhi12(delta, phi1, phi2);
452 ComputeLPMfunctions(lpmXiS, lpmGS, lpmPhiS, eps, gammaEnergy, iZet);
453 greject = lpmXiS*( (lpmPhiS+0.5*lpmGS)*phi1 + 0.5*lpmGS*phi2
454 -0.5*(lpmGS+lpmPhiS)*FZ )/F20;
455 } else {
456 greject = (ScreenFunction2(delta)-FZ)/F20;
457 }
458 }
459 // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
460 } while (greject < rndmv[2]);
461 // end of eps sampling
462 }
463 //
464 // select charges randomly
465 G4double eTotEnergy, pTotEnergy;
466 if (rndmEngine->flat() > 0.5) {
467 eTotEnergy = (1.-eps)*gammaEnergy;
468 pTotEnergy = eps*gammaEnergy;
469 } else {
470 pTotEnergy = (1.-eps)*gammaEnergy;
471 eTotEnergy = eps*gammaEnergy;
472 }
473 //
474 // sample pair kinematics
475 //
476 const G4double eKinEnergy = std::max(0.,eTotEnergy - CLHEP::electron_mass_c2);
477 const G4double pKinEnergy = std::max(0.,pTotEnergy - CLHEP::electron_mass_c2);
478 //
479 G4ThreeVector eDirection, pDirection;
480 //
482 eKinEnergy, pKinEnergy, eDirection, pDirection);
483 // create G4DynamicParticle object for the particle1
484 G4DynamicParticle* aParticle1= new G4DynamicParticle(
485 fTheElectron,eDirection,eKinEnergy);
486
487 // create G4DynamicParticle object for the particle2
488 G4DynamicParticle* aParticle2= new G4DynamicParticle(
489 fThePositron,pDirection,pKinEnergy);
490 // Fill output vector
491 fvect->push_back(aParticle1);
492 fvect->push_back(aParticle2);
493 // kill incident photon
496}
#define F10
#define F20
@ fStopAndKill
virtual double flat()=0
virtual void flatArray(const int size, double *vect)=0
G4double GetLogKineticEnergy() const
G4double GetKineticEnergy() const
G4int GetZasInt() const
Definition: G4Element.hh:132
const G4Material * GetMaterial() const
G4double GetRadlen() const
Definition: G4Material.hh:216
void ScreenFunction12(const G4double delta, G4double &f1, G4double &f2)
G4double ScreenFunction1(const G4double delta)
G4ParticleDefinition * fThePositron
static const G4double gLPMconstant
G4double ScreenFunction2(const G4double delta)
G4ParticleDefinition * fTheGamma
G4ParticleChangeForGamma * fParticleChange
G4ParticleDefinition * fTheElectron
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4double A13(G4double A) const
Definition: G4Pow.cc:120
virtual void SamplePairDirections(const G4DynamicParticle *dp, G4double elecKinEnergy, G4double posiKinEnergy, G4ThreeVector &dirElectron, G4ThreeVector &dirPositron, G4int Z=0, const G4Material *mat=nullptr)
G4VEmAngularDistribution * GetAngularDistribution()
Definition: G4VEmModel.hh:621
const G4Element * SelectTargetAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double logKineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.hh:597
void ProposeTrackStatus(G4TrackStatus status)

References G4Pow::A13(), G4PairProductionRelModel::ComputeLPMfunctions(), G4PairProductionRelModel::ComputePhi12(), CLHEP::electron_mass_c2, eps, F10, F20, G4PairProductionRelModel::fCoulombCorrectionThreshold, G4PairProductionRelModel::fG4Calc, G4PairProductionRelModel::fIsUseLPMCorrection, CLHEP::HepRandomEngine::flat(), CLHEP::HepRandomEngine::flatArray(), G4PairProductionRelModel::fLPMEnergy, G4PairProductionRelModel::fParticleChange, fStopAndKill, G4PairProductionRelModel::fTheElectron, G4PairProductionRelModel::fTheGamma, G4PairProductionRelModel::fThePositron, G4PairProductionRelModel::gEgLPMActivation, G4PairProductionRelModel::gElementData, G4VEmModel::GetAngularDistribution(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetLogKineticEnergy(), G4MaterialCutsCouple::GetMaterial(), G4Material::GetRadlen(), G4Element::GetZasInt(), G4PairProductionRelModel::gLPMconstant, G4PairProductionRelModel::gMaxZet, G4INCL::Math::max(), CLHEP::MeV, G4INCL::Math::min(), G4VParticleChange::ProposeTrackStatus(), G4VEmAngularDistribution::SamplePairDirections(), G4PairProductionRelModel::ScreenFunction1(), G4PairProductionRelModel::ScreenFunction12(), G4PairProductionRelModel::ScreenFunction2(), G4VEmModel::SelectTargetAtom(), and G4ParticleChangeForGamma::SetProposedKineticEnergy().

◆ ScreenFunction1()

G4double G4PairProductionRelModel::ScreenFunction1 ( const G4double  delta)
inlineprotectedinherited

Definition at line 216 of file G4PairProductionRelModel.hh.

217{
218 return (delta > 1.4) ? 42.038 - 8.29*G4Log(delta + 0.958)
219 : 42.184 - delta*(7.444 - 1.623*delta);
220}

References G4Log().

Referenced by G4PairProductionRelModel::SampleSecondaries().

◆ ScreenFunction12()

void G4PairProductionRelModel::ScreenFunction12 ( const G4double  delta,
G4double f1,
G4double f2 
)
inlineprotectedinherited

Definition at line 230 of file G4PairProductionRelModel.hh.

232{
233 if (delta > 1.4) {
234 f1 = 42.038 - 8.29*G4Log(delta + 0.958);
235 f2 = f1;
236 } else {
237 f1 = 42.184 - delta*(7.444 - 1.623*delta);
238 f2 = 41.326 - delta*(5.848 - 0.902*delta);
239 }
240}

References G4Log().

Referenced by G4PairProductionRelModel::SampleSecondaries().

◆ ScreenFunction2()

G4double G4PairProductionRelModel::ScreenFunction2 ( const G4double  delta)
inlineprotectedinherited

Definition at line 223 of file G4PairProductionRelModel.hh.

224{
225 return (delta > 1.4) ? 42.038 - 8.29*G4Log(delta + 0.958)
226 : 41.326 - delta*(5.848 - 0.902*delta);
227}

References G4Log().

Referenced by G4PairProductionRelModel::SampleSecondaries().

◆ SecondaryThreshold()

G4double G4VEmModel::SecondaryThreshold ( ) const
inlineinherited

◆ 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
size_t basedCoupleIndex
Definition: G4VEmModel.hh:449

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(), G4WentzelVIRelModel::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().

◆ 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.

◆ 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().

◆ 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 G4PairProductionRelModel::SetLPMflag ( G4bool  val)
inlineinherited

◆ 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

◆ SetSecondaryThreshold()

void G4VEmModel::SetSecondaryThreshold ( G4double  val)
inlineinherited

◆ 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 G4PairProductionRelModel::SetupForMaterial ( const G4ParticleDefinition ,
const G4Material mat,
G4double   
)
overridevirtualinherited

◆ SetUseBaseMaterials()

void G4VEmModel::SetUseBaseMaterials ( G4bool  val)
inlineinherited

◆ StartTracking()

void G4VEmModel::StartTracking ( G4Track )
virtualinherited

◆ 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.

◆ 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

◆ currentCoupleIndex

size_t G4VEmModel::currentCoupleIndex = 0
protectedinherited

Definition at line 448 of file G4VEmModel.hh.

Referenced by G4VEmModel::SetCurrentCouple().

◆ data

G4PhysicsFreeVector * G4LivermoreGammaConversionModel::data = {nullptr}
staticprivate

◆ elmSelectors

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

◆ eMaxActive

G4double G4VEmModel::eMaxActive = DBL_MAX
privateinherited

◆ eMinActive

G4double G4VEmModel::eMinActive = 0.0
privateinherited

◆ fCoulombCorrectionThreshold

G4double G4PairProductionRelModel::fCoulombCorrectionThreshold
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

◆ 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().

◆ fG4Calc

G4Pow* G4PairProductionRelModel::fG4Calc
protectedinherited

◆ fIsUseCompleteScreening

G4bool G4PairProductionRelModel::fIsUseCompleteScreening
protectedinherited

◆ fIsUseLPMCorrection

G4bool G4PairProductionRelModel::fIsUseLPMCorrection
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

◆ fLPMEnergy

G4double G4PairProductionRelModel::fLPMEnergy
protectedinherited

◆ flucModel

G4VEmFluctuationModel* G4VEmModel::flucModel = nullptr
privateinherited

◆ fParametrizedXSectionThreshold

G4double G4PairProductionRelModel::fParametrizedXSectionThreshold
protectedinherited

◆ fParticleChange

G4ParticleChangeForGamma* G4LivermoreGammaConversionModel::fParticleChange
private

Definition at line 76 of file G4LivermoreGammaConversionModel.hh.

Referenced by Initialise().

◆ fTheElectron

G4ParticleDefinition* G4PairProductionRelModel::fTheElectron
protectedinherited

◆ fTheGamma

G4ParticleDefinition* G4PairProductionRelModel::fTheGamma
protectedinherited

◆ fThePositron

G4ParticleDefinition* G4PairProductionRelModel::fThePositron
protectedinherited

◆ fTripletModel

G4VEmModel* G4VEmModel::fTripletModel = nullptr
privateinherited

◆ gEgLPMActivation

const G4double G4PairProductionRelModel::gEgLPMActivation = 100.*CLHEP::GeV
staticprotectedinherited

◆ gElementData

std::vector< G4PairProductionRelModel::ElementData * > G4PairProductionRelModel::gElementData
staticprotectedinherited

◆ gFelLowZet

const G4double G4PairProductionRelModel::gFelLowZet
staticprotectedinherited
Initial value:
= {
0.0, 5.3104, 4.7935, 4.7402, 4.7112, 4.6694, 4.6134, 4.5520
}

Definition at line 162 of file G4PairProductionRelModel.hh.

Referenced by G4PairProductionRelModel::InitialiseElementData().

◆ gFinelLowZet

const G4double G4PairProductionRelModel::gFinelLowZet
staticprotectedinherited
Initial value:
= {
0.0, 5.9173, 5.6125, 5.5377, 5.4728, 5.4174, 5.3688, 5.3236
}

Definition at line 163 of file G4PairProductionRelModel.hh.

Referenced by G4PairProductionRelModel::InitialiseElementData().

◆ gLPMconstant

const G4double G4PairProductionRelModel::gLPMconstant
staticprotectedinherited

◆ gLPMFuncs

G4PairProductionRelModel::LPMFuncs G4PairProductionRelModel::gLPMFuncs
staticprotectedinherited

◆ gMaxZet

const G4int G4PairProductionRelModel::gMaxZet = 120
staticprotectedinherited

◆ gWGL

const G4double G4PairProductionRelModel::gWGL
staticprotectedinherited
Initial value:
= {
5.06142681e-02, 1.11190517e-01, 1.56853323e-01, 1.81341892e-01,
1.81341892e-01, 1.56853323e-01, 1.11190517e-01, 5.06142681e-02
}

Definition at line 161 of file G4PairProductionRelModel.hh.

Referenced by G4PairProductionRelModel::ComputeXSectionPerAtom().

◆ gXGL

const G4double G4PairProductionRelModel::gXGL
staticprotectedinherited
Initial value:
= {
1.98550718e-02, 1.01666761e-01, 2.37233795e-01, 4.08282679e-01,
5.91717321e-01, 7.62766205e-01, 8.98333239e-01, 9.80144928e-01
}

Definition at line 160 of file G4PairProductionRelModel.hh.

Referenced by G4PairProductionRelModel::ComputeXSectionPerAtom().

◆ gXSecFactor

const G4double G4PairProductionRelModel::gXSecFactor
staticprotectedinherited

◆ highLimit

G4double G4VEmModel::highLimit
privateinherited

◆ inveplus

G4double G4VEmModel::inveplus
protectedinherited

◆ isLocked

G4bool G4VEmModel::isLocked = false
privateinherited

◆ isMaster

G4bool G4VEmModel::isMaster = true
privateinherited

◆ localElmSelectors

G4bool G4VEmModel::localElmSelectors = true
privateinherited

Definition at line 460 of file G4VEmModel.hh.

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

◆ localTable

G4bool G4VEmModel::localTable = true
privateinherited

Definition at line 459 of file G4VEmModel.hh.

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

◆ lossFlucFlag

G4bool G4VEmModel::lossFlucFlag = true
protectedinherited

◆ lowEnergyLimit

G4double G4LivermoreGammaConversionModel::lowEnergyLimit = 2.*CLHEP::electron_mass_c2
staticprivate

Definition at line 73 of file G4LivermoreGammaConversionModel.hh.

Referenced by ComputeCrossSectionPerAtom().

◆ lowLimit

G4double G4VEmModel::lowLimit
privateinherited

◆ maxZ

G4int G4LivermoreGammaConversionModel::maxZ
private

◆ name

const G4String G4VEmModel::name
privateinherited

◆ 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

◆ 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

◆ secondaryThreshold

G4double G4VEmModel::secondaryThreshold = DBL_MAX
privateinherited

◆ 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().

◆ useAngularGenerator

G4bool G4VEmModel::useAngularGenerator = false
privateinherited

◆ useBaseMaterials

G4bool G4VEmModel::useBaseMaterials = false
privateinherited

◆ verboseLevel

G4int G4LivermoreGammaConversionModel::verboseLevel
private

◆ xsec

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

◆ xSectionTable

G4PhysicsTable* G4VEmModel::xSectionTable = nullptr
protectedinherited

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