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

#include <G4BetheHeitler5DModel.hh>

Inheritance diagram for G4BetheHeitler5DModel:
G4PairProductionRelModel G4VEmModel G4LivermoreGammaConversion5DModel

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., G4double cut=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
 
 G4BetheHeitler5DModel (const G4BetheHeitler5DModel &)=delete
 
 G4BetheHeitler5DModel (const G4ParticleDefinition *p=nullptr, const G4String &nam="BetheHeitler5D")
 
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 &)
 
virtual void InitialiseForElement (const G4ParticleDefinition *, G4int Z)
 
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
 
G4BetheHeitler5DModeloperator= (const G4BetheHeitler5DModel &right)=delete
 
G4double PolarAngleLimit () const
 
void SampleSecondaries (std::vector< G4DynamicParticle * > *fvect, const G4MaterialCutsCouple *couple, const G4DynamicParticle *aDynamicGamma, G4double, G4double) 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 SetLeptonPair (const G4ParticleDefinition *p1, const G4ParticleDefinition *p2)
 
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)
 
void SetVerbose (G4int val)
 
virtual void StartTracking (G4Track *)
 
G4bool UseAngularGeneratorFlag () const
 
G4bool UseBaseMaterials () const
 
virtual G4double Value (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
 ~G4BetheHeitler5DModel () override
 

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
 
G4ParticleChangeForGammafParticleChange
 
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 ()
 
G4double MaxDiffCrossSection (const G4double *par, G4double eZ, G4double e, G4double loge) const
 
void SetConversionMode (G4int to)
 

Private Attributes

G4VEmAngularDistributionanglModel = nullptr
 
std::vector< G4EmElementSelector * > * elmSelectors = nullptr
 
G4double eMaxActive = DBL_MAX
 
G4double eMinActive = 0.0
 
G4int fConversionType
 
G4int fConvMode
 
const G4MaterialCutsCouplefCurrentCouple = nullptr
 
const G4ElementfCurrentElement = nullptr
 
const G4IsotopefCurrentIsotope = nullptr
 
G4LossTableManagerfEmManager
 
G4bool flagDeexcitation = false
 
G4bool flagForceBuildTable = false
 
const G4ParticleDefinitionfLepton1
 
const G4ParticleDefinitionfLepton2
 
G4VEmFluctuationModelflucModel = nullptr
 
const G4ParticleDefinitionfTheMuMinus
 
const G4ParticleDefinitionfTheMuPlus
 
G4VEmModelfTripletModel = nullptr
 
G4int fVerbose
 
G4double highLimit
 
G4bool iraw
 
G4bool isLocked = false
 
G4bool isMaster = true
 
G4bool localElmSelectors = true
 
G4bool localTable = true
 
G4double lowLimit
 
const G4String name
 
G4int nsec = 5
 
G4int nSelectors = 0
 
G4double polarAngleLimit
 
G4double secondaryThreshold = DBL_MAX
 
G4IonTabletheIonTable
 
G4bool theLPMflag = false
 
G4bool useAngularGenerator = false
 
G4bool useBaseMaterials = false
 
std::vector< G4doublexsec
 

Detailed Description

Definition at line 64 of file G4BetheHeitler5DModel.hh.

Constructor & Destructor Documentation

◆ G4BetheHeitler5DModel() [1/2]

G4BetheHeitler5DModel::G4BetheHeitler5DModel ( const G4ParticleDefinition p = nullptr,
const G4String nam = "BetheHeitler5D" 
)
explicit

Definition at line 131 of file G4BetheHeitler5DModel.cc.

133 : G4PairProductionRelModel(pd, nam),
136 fVerbose(1),
139 iraw(false)
140{
142 //Q: Do we need this on Model
144}
const G4int kEPair
const G4ParticleDefinition * fLepton2
const G4ParticleDefinition * fLepton1
const G4ParticleDefinition * fTheMuMinus
const G4ParticleDefinition * fTheMuPlus
static G4Electron * Definition()
Definition: G4Electron.cc:48
static G4IonTable * GetIonTable()
Definition: G4IonTable.cc:170
static G4MuonMinus * Definition()
Definition: G4MuonMinus.cc:51
static G4MuonPlus * Definition()
Definition: G4MuonPlus.cc:51
G4PairProductionRelModel(const G4ParticleDefinition *p=nullptr, const G4String &nam="BetheHeitlerLPM")
G4ParticleDefinition * fTheElectron
static G4Positron * Definition()
Definition: G4Positron.cc:48
void SetLowEnergyLimit(G4double)
Definition: G4VEmModel.hh:774

References G4PairProductionRelModel::fTheElectron, G4IonTable::GetIonTable(), G4ParticleDefinition::GetPDGMass(), G4VEmModel::SetLowEnergyLimit(), and theIonTable.

◆ ~G4BetheHeitler5DModel()

G4BetheHeitler5DModel::~G4BetheHeitler5DModel ( )
override

Definition at line 148 of file G4BetheHeitler5DModel.cc.

149{}

◆ G4BetheHeitler5DModel() [2/2]

G4BetheHeitler5DModel::G4BetheHeitler5DModel ( const G4BetheHeitler5DModel )
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 G4PairProductionRelModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition ,
G4double  kinEnergy,
G4double  Z,
G4double  A = 0.,
G4double  cut = 0.,
G4double  emax = DBL_MAX 
)
overridevirtualinherited

Reimplemented from G4VEmModel.

Definition at line 310 of file G4PairProductionRelModel.cc.

312{
313 G4double crossSection = 0.0 ;
314 // check kinematical limit
315 if ( gammaEnergy <= 2.0*electron_mass_c2 ) { return crossSection; }
316 // compute the atomic cross section either by using x-section parametrization
317 // or by numerically integrationg the DCS (with or without LPM)
318 if ( gammaEnergy < fParametrizedXSectionThreshold) {
319 // using the parametrized cross sections (max up to 80 GeV)
320 crossSection = ComputeParametrizedXSectionPerAtom(gammaEnergy, Z);
321 } else {
322 // by numerical integration of the DCS:
323 // Computes the cross section with or without LPM suppression depending on
324 // settings (by default with if the gamma energy is above a given threshold)
325 // and using or not using complete sreening approximation (by default not).
326 // Only the dependent part is computed in the numerical integration of the DCS
327 // i.e. the result must be multiplied here with 4 \alpha r_0^2 Z(Z+\eta(Z))
328 crossSection = ComputeXSectionPerAtom(gammaEnergy, Z);
329 // apply the constant factors:
330 // - eta(Z) is a correction to account interaction in the field of e-
331 // - gXSecFactor = 4 \alpha r_0^2
332 const G4int iz = std::min(gMaxZet, G4lrint(Z));
333 const G4double eta = gElementData[iz]->fEtaValue;
334 crossSection *= gXSecFactor*Z*(Z+eta);
335 }
336 // final protection
337 return std::max(crossSection, 0.);
338}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
G4double ComputeParametrizedXSectionPerAtom(G4double gammaEnergy, G4double Z)
static std::vector< ElementData * > gElementData
G4double ComputeXSectionPerAtom(G4double gammaEnergy, G4double Z)
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
float electron_mass_c2
Definition: hepunit.py:273
int G4lrint(double ad)
Definition: templates.hh:134

References G4PairProductionRelModel::ComputeParametrizedXSectionPerAtom(), G4PairProductionRelModel::ComputeXSectionPerAtom(), source.hepunit::electron_mass_c2, G4PairProductionRelModel::fParametrizedXSectionThreshold, G4lrint(), G4PairProductionRelModel::gElementData, G4PairProductionRelModel::gMaxZet, G4PairProductionRelModel::gXSecFactor, G4INCL::Math::max(), G4INCL::Math::min(), 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
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(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePhotoElectricModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecElasticModel_new::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4MicroElecLOPhononModel::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4PolarizedAnnihilationModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4eeToTwoGammaModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4PairProductionRelModel::Initialise(), G4PEEffectFluoModel::Initialise(), G4XrayRayleighModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNACPA100ExcitationModel::Initialise(), G4DNACPA100IonisationModel::Initialise(), G4DNADiracRMatrixExcitationModel::Initialise(), G4DNAEmfietzoglouExcitationModel::Initialise(), G4DNAEmfietzoglouIonisationModel::Initialise(), G4DNAQuinnPlasmonExcitationModel::Initialise(), G4DNARelativisticIonisationModel::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNAModelInterface::Initialise(), and G4DNAIonElasticModel::Initialise().

◆ GetParticleChangeForLoss()

G4ParticleChangeForLoss * G4VEmModel::GetParticleChangeForLoss ( )
protectedinherited

◆ 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(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreIonisationModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecElasticModel_new::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeBremsstrahlungModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopeIonisationModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4MuBremsstrahlungModel::Initialise(), G4MuPairProductionModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4GoudsmitSaundersonMscModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), G4WentzelVIModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNACPA100ExcitationModel::Initialise(), G4DNACPA100IonisationModel::Initialise(), G4DNADiracRMatrixExcitationModel::Initialise(), G4DNAEmfietzoglouExcitationModel::Initialise(), G4DNAEmfietzoglouIonisationModel::Initialise(), G4DNAQuinnPlasmonExcitationModel::Initialise(), G4DNARelativisticIonisationModel::Initialise(), G4EmModelManager::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNADummyModel::Initialise(), G4DNAIonElasticModel::Initialise(), G4mplIonisation::InitialiseEnergyLossProcess(), G4ionIonisation::InitialiseEnergyLossProcess(), G4MuBremsstrahlungModel::InitialiseLocal(), G4MuPairProductionModel::InitialiseLocal(), G4eBremsstrahlungRelModel::InitialiseLocal(), G4PairProductionRelModel::InitialiseLocal(), G4CoulombScattering::InitialiseProcess(), G4VEmProcess::PostStepDoIt(), G4VEmProcess::PreparePhysicsTable(), G4VEnergyLossProcess::PreparePhysicsTable(), G4VMultipleScattering::PreparePhysicsTable(), G4DNACPA100IonisationModel::SampleSecondaries(), G4DNAEmfietzoglouIonisationModel::SampleSecondaries(), G4DNASancheExcitationModel::SampleSecondaries(), G4EmConfigurator::SetExtraEmModel(), G4mplIonisationModel::SetParticle(), G4mplIonisationWithDeltaModel::SetParticle(), G4eBremsstrahlung::StreamProcessInfo(), and G4EmConfigurator::UpdateModelEnergyRange().

◆ Initialise()

void G4BetheHeitler5DModel::Initialise ( const G4ParticleDefinition part,
const G4DataVector vec 
)
overridevirtual

Implements G4VEmModel.

Definition at line 153 of file G4BetheHeitler5DModel.cc.

155{
157
159 // place to initialise model parameters
160 // Verbosity levels: ( Can redefine as needed, but some consideration )
161 // 0 = nothing
162 // > 2 print results
163 // > 3 print rejection warning from transformation (fix bug from gammaray .. )
164 // > 4 print photon direction & polarisation
165 fVerbose = theManager->Verbose();
166 fConversionType = theManager->GetConversionType();
168 // iraw :
169 // true : isolated electron or nucleus.
170 // false : inside atom -> screening form factor
171 iraw = theManager->OnIsolated();
172 // G4cout << "BH5DModel::Initialise verbose " << fVerbose
173 // << " isolated " << iraw << " ctype "<< fConversionType << G4endl;
174
175 //Q: Do we need this on Model
176 // The Leptons defined via SetLeptonPair(..) method
178
179 if (fConvMode == kEPair) {
181 if (fVerbose > 3)
182 G4cout << "BH5DModel::Initialise conversion to e+ e-" << G4endl;
183 }
184
185 if (fConvMode == kMuPair) {
187 if (fVerbose > 3)
188 G4cout << "BH5DModel::Initialise conversion to mu+ mu-" << G4endl;
189 }
190}
const G4int kMuPair
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static G4EmParameters * Instance()
G4bool OnIsolated() const
G4int GetConversionType() const
G4int Verbose() const
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override

References CLHEP::electron_mass_c2, fConversionType, fConvMode, fLepton1, G4PairProductionRelModel::fTheElectron, fTheMuMinus, fVerbose, G4cout, G4endl, G4EmParameters::GetConversionType(), G4ParticleDefinition::GetPDGEncoding(), G4PairProductionRelModel::Initialise(), G4EmParameters::Instance(), iraw, kEPair, kMuPair, G4EmParameters::OnIsolated(), G4VEmModel::SetLowEnergyLimit(), and G4EmParameters::Verbose().

Referenced by G4GammaConversionToMuons::BuildPhysicsTable(), and G4LivermoreGammaConversion5DModel::Initialise().

◆ 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}
std::vector< G4Element * > G4ElementTable
#define elem(i, j)
static G4ElementTable * GetElementTable()
Definition: G4Element.cc:397
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}
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(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4MuBremsstrahlungModel::Initialise(), G4MuPairProductionModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4eBremParametrizedModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), and G4XrayRayleighModel::Initialise().

◆ InitialiseForElement()

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

◆ InitialiseForMaterial()

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

Definition at line 209 of file G4VEmModel.cc.

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

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

Referenced by G4EmCalculator::FindEmModel().

◆ InitialiseLocal()

void 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
G4double LowEnergyLimit() const
Definition: G4VEmModel.hh:662
std::vector< G4EmElementSelector * > * GetElementSelectors()
Definition: G4VEmModel.hh:844
G4double HighEnergyLimit() const
Definition: G4VEmModel.hh:655

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(), G4LivermoreGammaConversionModel::Initialise(), G4LivermoreNuclearGammaConversionModel::Initialise(), G4LivermorePhotoElectricModel::Initialise(), G4LivermorePolarizedComptonModel::Initialise(), G4LivermorePolarizedGammaConversionModel::Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeBremsstrahlungModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopeIonisationModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4MuBremsstrahlungModel::Initialise(), G4MuPairProductionModel::Initialise(), G4BetheBlochModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4BraggIonModel::Initialise(), G4BraggModel::Initialise(), G4eBremParametrizedModel::Initialise(), G4eBremsstrahlungRelModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4eeToTwoGammaModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4GoudsmitSaundersonMscModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4LindhardSorensenIonModel::Initialise(), G4PairProductionRelModel::Initialise(), G4SeltzerBergerModel::Initialise(), G4WentzelVIModel::Initialise(), G4PenelopeBremsstrahlungModel::InitialiseLocal(), G4PenelopeGammaConversionModel::ReadDataFile(), G4PenelopePhotoElectricModel::ReadDataFile(), G4BetheHeitlerModel::~G4BetheHeitlerModel(), G4BoldyshevTripletModel::~G4BoldyshevTripletModel(), G4BraggIonModel::~G4BraggIonModel(), G4BraggModel::~G4BraggModel(), G4eBremsstrahlungRelModel::~G4eBremsstrahlungRelModel(), G4eDPWACoulombScatteringModel::~G4eDPWACoulombScatteringModel(), G4GoudsmitSaundersonMscModel::~G4GoudsmitSaundersonMscModel(), G4JAEAElasticScatteringModel::~G4JAEAElasticScatteringModel(), G4JAEAPolarizedElasticScatteringModel::~G4JAEAPolarizedElasticScatteringModel(), G4LivermoreBremsstrahlungModel::~G4LivermoreBremsstrahlungModel(), G4LivermoreComptonModel::~G4LivermoreComptonModel(), G4LivermoreGammaConversion5DModel::~G4LivermoreGammaConversion5DModel(), G4LivermoreGammaConversionModel::~G4LivermoreGammaConversionModel(), G4LivermoreNuclearGammaConversionModel::~G4LivermoreNuclearGammaConversionModel(), G4LivermorePhotoElectricModel::~G4LivermorePhotoElectricModel(), G4LivermorePolarizedComptonModel::~G4LivermorePolarizedComptonModel(), G4LivermorePolarizedGammaConversionModel::~G4LivermorePolarizedGammaConversionModel(), G4LivermorePolarizedRayleighModel::~G4LivermorePolarizedRayleighModel(), G4LivermoreRayleighModel::~G4LivermoreRayleighModel(), G4LowEPComptonModel::~G4LowEPComptonModel(), G4LowEPPolarizedComptonModel::~G4LowEPPolarizedComptonModel(), G4mplIonisationModel::~G4mplIonisationModel(), G4mplIonisationWithDeltaModel::~G4mplIonisationWithDeltaModel(), G4PAIModel::~G4PAIModel(), G4PAIPhotModel::~G4PAIPhotModel(), G4PairProductionRelModel::~G4PairProductionRelModel(), G4PenelopeBremsstrahlungModel::~G4PenelopeBremsstrahlungModel(), G4PenelopeGammaConversionModel::~G4PenelopeGammaConversionModel(), G4PenelopeIonisationModel::~G4PenelopeIonisationModel(), G4PenelopePhotoElectricModel::~G4PenelopePhotoElectricModel(), G4PenelopeRayleighModel::~G4PenelopeRayleighModel(), G4PenelopeRayleighModelMI::~G4PenelopeRayleighModelMI(), G4SeltzerBergerModel::~G4SeltzerBergerModel(), and G4WentzelVIModel::~G4WentzelVIModel().

◆ LowEnergyActivationLimit()

G4double G4VEmModel::LowEnergyActivationLimit ( ) const
inlineinherited

◆ LowEnergyLimit()

G4double G4VEmModel::LowEnergyLimit ( ) const
inlineinherited

Definition at line 662 of file G4VEmModel.hh.

663{
664 return lowLimit;
665}

References G4VEmModel::lowLimit.

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

◆ LPMflag()

G4bool G4PairProductionRelModel::LPMflag ( ) const
inlineinherited

◆ LPMFlag()

G4bool G4VEmModel::LPMFlag ( ) const
inlineinherited

◆ MaxDiffCrossSection()

G4double G4BetheHeitler5DModel::MaxDiffCrossSection ( const G4double par,
G4double  eZ,
G4double  e,
G4double  loge 
) const
private

Definition at line 262 of file G4BetheHeitler5DModel.cc.

266{
267 const G4double Q = e/par[9];
268 return par[0] * G4Exp((par[2]+loge*par[4])*loge)
269 / (par[1]+ G4Exp(par[3]*loge)+G4Exp(par[5]*loge))
270 * (1+par[7]*G4Exp(par[8]*G4Log(Z))*Q/(1+Q));
271}
static double Q[]

References G4Exp(), G4Log(), Q, and Z.

Referenced by SampleSecondaries().

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

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

◆ PolarAngleLimit()

G4double G4VEmModel::PolarAngleLimit ( ) const
inlineinherited

◆ SampleSecondaries()

void G4BetheHeitler5DModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  fvect,
const G4MaterialCutsCouple couple,
const G4DynamicParticle aDynamicGamma,
G4double  ,
G4double   
)
overridevirtual

Implements G4VEmModel.

Definition at line 276 of file G4BetheHeitler5DModel.cc.

280{
281 // MeV
282 static const G4double ElectronMass = CLHEP::electron_mass_c2;
283
284 const G4double LeptonMass = fLepton1->GetPDGMass();
285 const G4double LeptonMass2 = LeptonMass*LeptonMass;
286
287 static const G4double alpha0 = CLHEP::fine_structure_const;
288 // mm
289 static const G4double r0 = CLHEP::classic_electr_radius;
290 // mbarn
291 static const G4double r02 = r0*r0*1.e+25;
292 static const G4double twoPi = CLHEP::twopi;
293 static const G4double factor = alpha0 * r02 / (twoPi*twoPi);
294 // static const G4double factor1 = pow((6.0 * pi),(1.0/3.0))/(8.*alpha0*ElectronMass);
295 static const G4double factor1 = 2.66134007899/(8.*alpha0*ElectronMass);
296 //
297 G4double PairInvMassMin = 2.*LeptonMass;
298 G4double TrThreshold = 2.0 * ( (LeptonMass2)/ElectronMass + LeptonMass);
299
300 //
301 static const G4double nu[2][10] = {
302 //electron
303 { 0.0227436, 0.0582046, 3.0322675, 2.8275065, -0.0034004,
304 1.1212766, 1.8989468, 68.3492750, 0.0211186, 14.4},
305 //muon
306 {0.67810E-06, 0.86037E+05, 2.0008395, 1.6739719, -0.0057279,
307 1.4222, 0.0, 263230.0, 0.0521, 51.1338}
308 };
309 static const G4double tr[2][10] = {
310 //electron
311 { 0.0332350, 4.3942537, 2.8515925, 2.6351695, -0.0031510,
312 1.5737305, 1.8104647, 20.6434021, -0.0272586, 28.9},
313 //muon
314 {0.10382E-03, 0.14408E+17, 4.1368679, 3.2662121, -0.0163091,
315 0.0000, 0.0, 0.0, 0.0000, 1.0000}
316 };
317 //
318 static const G4double para[2][3][2] = {
319 //electron
320 { {11., -16.},{-1.17, -2.95},{-2., -0.5} },
321 //muon
322 { {17.5, 1.},{-1.17, -2.95},{2., 6.} }
323 };
324 //
325 static const G4double correctionIndex = 1.4;
326 //
327 const G4double GammaEnergy = aDynamicGamma->GetKineticEnergy();
328 // Protection, Will not be true tot cross section = 0
329 if ( GammaEnergy <= PairInvMassMin) { return; }
330
331 const G4double GammaEnergy2 = GammaEnergy*GammaEnergy;
332
334 const G4ParticleMomentum GammaDirection =
335 aDynamicGamma->GetMomentumDirection();
336 G4ThreeVector GammaPolarization = aDynamicGamma->GetPolarization();
337
338 // The protection polarization perpendicular to the direction vector,
339 // as it done in G4LivermorePolarizedGammaConversionModel,
340 // assuming Direction is unitary vector
341 // (projection to plane) p_proj = p - (p o d)/(d o d) x d
342 if ( GammaPolarization.howOrthogonal(GammaDirection) != 0) {
343 GammaPolarization -= GammaPolarization.dot(GammaDirection) * GammaDirection;
344 }
345 // End of Protection
346 //
347 const G4double GammaPolarizationMag = GammaPolarization.mag();
348
350 // target element
351 // select randomly one element constituting the material
352 const G4Element* anElement = SelectTargetAtom(couple, fTheGamma, GammaEnergy,
353 aDynamicGamma->GetLogKineticEnergy() );
354 // Atomic number
355 const G4int Z = anElement->GetZasInt();
356 const G4int A = SelectIsotopeNumber(anElement);
357 const G4double iZ13 = 1./anElement->GetIonisation()->GetZ3();
358 const G4double targetMass = G4NucleiProperties::GetNuclearMass(A, Z);
359
360 const G4double NuThreshold = 2.0 * ( (LeptonMass2)/targetMass + LeptonMass);
361 // No conversion possible below nuclear threshold
362 if ( GammaEnergy <= NuThreshold) { return; }
363
364 CLHEP::HepRandomEngine* rndmEngine = G4Random::getTheEngine();
365
366 // itriplet : true -- triplet, false -- nuclear.
367 G4bool itriplet = false;
368 if (fConversionType == 1) {
369 itriplet = false;
370 } else if (fConversionType == 2) {
371 itriplet = true;
372 if ( GammaEnergy <= TrThreshold ) return;
373 } else if ( GammaEnergy > TrThreshold ) {
374 // choose triplet or nuclear from a triplet/nuclear=1/Z
375 // total cross section ratio.
376 // approximate at low energies !
377 if(rndmEngine->flat()*(Z+1) < 1.) {
378 itriplet = true;
379 }
380 }
381
382 //
383 const G4double RecoilMass = itriplet ? ElectronMass : targetMass;
384 const G4double RecoilMass2 = RecoilMass*RecoilMass;
385 const G4double sCMS = 2.*RecoilMass*GammaEnergy + RecoilMass2;
386 const G4double sCMSPlusRM2 = sCMS + RecoilMass2;
387 const G4double sqrts = std::sqrt(sCMS);
388 const G4double isqrts2 = 1./(2.*sqrts);
389 //
390 const G4double PairInvMassMax = sqrts-RecoilMass;
391 const G4double PairInvMassRange = PairInvMassMax/PairInvMassMin;
392 const G4double lnPairInvMassRange = G4Log(PairInvMassRange);
393
394 // initial state. Defines z axis of "0" frame as along photon propagation.
395 // Since CMS(0., 0., GammaEnergy, GammaEnergy+RecoilMass) set some constants
396 const G4double betaCMS = G4LorentzVector(0.0,0.0,GammaEnergy,GammaEnergy+RecoilMass).beta();
397
398 // maximum value of pdf
399 const G4double EffectiveZ = iraw ? 0.5 : Z;
400 const G4double Threshold = itriplet ? TrThreshold : NuThreshold;
401 const G4double AvailableEnergy = GammaEnergy - Threshold;
402 const G4double LogAvailableEnergy = G4Log(AvailableEnergy);
403 //
404 const G4double MaxDiffCross = itriplet
406 EffectiveZ, AvailableEnergy, LogAvailableEnergy)
408 EffectiveZ, AvailableEnergy, LogAvailableEnergy);
409 //
410 // 50% safety marging factor
411 const G4double ymax = 1.5 * MaxDiffCross;
412 // x1 bounds
413 const G4double xu1 = (LogAvailableEnergy > para[fConvMode][2][0])
414 ? para[fConvMode][0][0] +
415 para[fConvMode][1][0]*LogAvailableEnergy
416 : para[fConvMode][0][0] +
417 para[fConvMode][2][0]*para[fConvMode][1][0];
418 const G4double xl1 = (LogAvailableEnergy > para[fConvMode][2][1])
419 ? para[fConvMode][0][1] +
420 para[fConvMode][1][1]*LogAvailableEnergy
421 : para[fConvMode][0][1] +
422 para[fConvMode][2][1]*para[fConvMode][1][1];
423 //
424 G4LorentzVector Recoil;
425 G4LorentzVector LeptonPlus;
426 G4LorentzVector LeptonMinus;
427 G4double pdf = 0.;
428
429 G4double rndmv6[6];
430 // START Sampling
431 do {
432
433 rndmEngine->flatArray(6, rndmv6);
434
436 // pdf pow(x,c) with c = 1.4
437 // integral y = pow(x,(c+1))/(c+1) @ x = 1 => y = 1 /(1+c)
438 // invCdf exp( log(y /* *( c + 1.0 )/ (c + 1.0 ) */ ) /( c + 1.0) )
440 const G4double X1 =
441 G4Exp(G4Log(rndmv6[0])/(correctionIndex + 1.0));
442
443 const G4double x0 = G4Exp(xl1 + (xu1 - xl1)*rndmv6[1]);
444 const G4double dum0 = 1./(1.+x0);
445 const G4double cosTheta = (x0-1.)*dum0;
446 const G4double sinTheta = std::sqrt(4.*x0)*dum0;
447
448 const G4double PairInvMass = PairInvMassMin*G4Exp(X1*X1*lnPairInvMassRange);
449
450 // G4double rndmv3[3];
451 // rndmEngine->flatArray(3, rndmv3);
452
453 // cos and sin theta-lepton
454 const G4double cosThetaLept = std::cos(pi*rndmv6[2]);
455 // sin(ThetaLept) is always in [0,+1] if ThetaLept is in [0,pi]
456 const G4double sinThetaLept = std::sqrt((1.-cosThetaLept)*(1.+cosThetaLept));
457 // cos and sin phi-lepton
458 const G4double cosPhiLept = std::cos(twoPi*rndmv6[3]-pi);
459 // sin(PhiLept) is in [-1,0] if PhiLept in [-pi,0) and
460 // is in [0,+1] if PhiLept in [0,+pi]
461 const G4double sinPhiLept = std::copysign(std::sqrt((1.-cosPhiLept)*(1.+cosPhiLept)),rndmv6[3]-0.5);
462 // cos and sin phi
463 const G4double cosPhi = std::cos(twoPi*rndmv6[4]-pi);
464 const G4double sinPhi = std::copysign(std::sqrt((1.-cosPhi)*(1.+cosPhi)),rndmv6[4]-0.5);
465
467 // frames:
468 // 3 : the laboratory Lorentz frame, Geant4 axes definition
469 // 0 : the laboratory Lorentz frame, axes along photon direction and polarisation
470 // 1 : the center-of-mass Lorentz frame
471 // 2 : the pair Lorentz frame
473
474 // in the center-of-mass frame
475
476 const G4double RecEnergyCMS = (sCMSPlusRM2-PairInvMass*PairInvMass)*isqrts2;
477 const G4double LeptonEnergy2 = PairInvMass*0.5;
478
479 // New way of calucaltion thePRecoil to avoid underflow
480 G4double abp = std::max((2.0*GammaEnergy*RecoilMass -
481 PairInvMass*PairInvMass + 2.0*PairInvMass*RecoilMass)*
482 (2.0*GammaEnergy*RecoilMass -
483 PairInvMass*PairInvMass - 2.0*PairInvMass*RecoilMass),0.0);
484
485 G4double thePRecoil = std::sqrt(abp) * isqrts2;
486
487 // back to the center-of-mass frame
488 Recoil.set( thePRecoil*sinTheta*cosPhi,
489 thePRecoil*sinTheta*sinPhi,
490 thePRecoil*cosTheta,
491 RecEnergyCMS);
492
493 // in the pair frame
494 const G4double thePLepton = std::sqrt( (LeptonEnergy2-LeptonMass)
495 *(LeptonEnergy2+LeptonMass));
496
497 LeptonPlus.set(thePLepton*sinThetaLept*cosPhiLept,
498 thePLepton*sinThetaLept*sinPhiLept,
499 thePLepton*cosThetaLept,
500 LeptonEnergy2);
501
502 LeptonMinus.set(-LeptonPlus.x(),
503 -LeptonPlus.y(),
504 -LeptonPlus.z(),
505 LeptonEnergy2);
506
507
508 // Normalisation of final state phase space:
509 // Section 47 of Particle Data Group, Chin. Phys. C, 40, 100001 (2016)
510 // const G4double Norme = Recoil1.vect().mag() * LeptonPlus2.vect().mag();
511 const G4double Norme = Recoil.vect().mag() * LeptonPlus.vect().mag();
512
513 // e+, e- to CMS frame from pair frame
514
515 // boost vector from Pair to CMS
516 const G4ThreeVector pair2cms =
517 G4LorentzVector( -Recoil.x(), -Recoil.y(), -Recoil.z(),
518 sqrts-RecEnergyCMS).boostVector();
519
520 LeptonPlus.boost(pair2cms);
521 LeptonMinus.boost(pair2cms);
522
523 // back to the laboratory frame (make use of the CMS(0,0,Eg,Eg+RM)) form
524
525 Recoil.boostZ(betaCMS);
526 LeptonPlus.boostZ(betaCMS);
527 LeptonMinus.boostZ(betaCMS);
528
529 // Jacobian factors
530 const G4double Jacob0 = x0*dum0*dum0;
531 const G4double Jacob1 = 2.*X1*lnPairInvMassRange*PairInvMass;
532 const G4double Jacob2 = std::abs(sinThetaLept);
533
534 const G4double EPlus = LeptonPlus.t();
535 const G4double PPlus = LeptonPlus.vect().mag();
536 const G4double sinThetaPlus = LeptonPlus.vect().perp()/PPlus;
537 const G4double cosThetaPlus = LeptonPlus.vect().cosTheta();
538
539 const G4double pPX = LeptonPlus.x();
540 const G4double pPY = LeptonPlus.y();
541 const G4double dum1 = 1./std::sqrt( pPX*pPX + pPY*pPY );
542 const G4double cosPhiPlus = pPX*dum1;
543 const G4double sinPhiPlus = pPY*dum1;
544
545 // denominators:
546 // the two cancelling leading terms for forward emission at high energy, removed
547 const G4double elMassCTP = LeptonMass*cosThetaPlus;
548 const G4double ePlusSTP = EPlus*sinThetaPlus;
549 const G4double DPlus = (elMassCTP*elMassCTP + ePlusSTP*ePlusSTP)
550 /(EPlus + PPlus*cosThetaPlus);
551
552 const G4double EMinus = LeptonMinus.t();
553 const G4double PMinus = LeptonMinus.vect().mag();
554 const G4double sinThetaMinus = LeptonMinus.vect().perp()/PMinus;
555 const G4double cosThetaMinus = LeptonMinus.vect().cosTheta();
556
557 const G4double ePX = LeptonMinus.x();
558 const G4double ePY = LeptonMinus.y();
559 const G4double dum2 = 1./std::sqrt( ePX*ePX + ePY*ePY );
560 const G4double cosPhiMinus = ePX*dum2;
561 const G4double sinPhiMinus = ePY*dum2;
562
563 const G4double elMassCTM = LeptonMass*cosThetaMinus;
564 const G4double eMinSTM = EMinus*sinThetaMinus;
565 const G4double DMinus = (elMassCTM*elMassCTM + eMinSTM*eMinSTM)
566 /(EMinus + PMinus*cosThetaMinus);
567
568 // cos(phiMinus-PhiPlus)
569 const G4double cosdPhi = cosPhiPlus*cosPhiMinus + sinPhiPlus*sinPhiMinus;
570 const G4double PRec = Recoil.vect().mag();
571 const G4double q2 = PRec*PRec;
572
573 const G4double BigPhi = -LeptonMass2 / (GammaEnergy*GammaEnergy2 * q2*q2);
574
575 G4double FormFactor = 1.;
576 if (!iraw) {
577 if (itriplet) {
578 const G4double qun = factor1*iZ13*iZ13;
579 const G4double nun = qun * PRec;
580 if (nun < 1.) {
581 FormFactor = (nun < 0.01) ? (13.8-55.4*std::sqrt(nun))*nun
582 : std::sqrt(1-(nun-1)*(nun-1));
583 } // else FormFactor = 1 by default
584 } else {
585 const G4double dum3 = 217.*PRec*iZ13;
586 const G4double AFF = 1./(1. + dum3*dum3);
587 FormFactor = (1.-AFF)*(1-AFF);
588 }
589 } // else FormFactor = 1 by default
590
591 G4double betheheitler;
592 if (GammaPolarizationMag==0.) {
593 const G4double pPlusSTP = PPlus*sinThetaPlus;
594 const G4double pMinusSTM = PMinus*sinThetaMinus;
595 const G4double pPlusSTPperDP = pPlusSTP/DPlus;
596 const G4double pMinusSTMperDM = pMinusSTM/DMinus;
597 const G4double dunpol = BigPhi*(
598 pPlusSTPperDP *pPlusSTPperDP *(4.*EMinus*EMinus-q2)
599 + pMinusSTMperDM*pMinusSTMperDM*(4.*EPlus*EPlus - q2)
600 + 2.*pPlusSTPperDP*pMinusSTMperDM*cosdPhi
601 *(4.*EPlus*EMinus + q2 - 2.*GammaEnergy2)
602 - 2.*GammaEnergy2*(pPlusSTP*pPlusSTP+pMinusSTM*pMinusSTM)/(DMinus*DPlus));
603 betheheitler = dunpol * factor;
604 } else {
605 const G4double pPlusSTP = PPlus*sinThetaPlus;
606 const G4double pMinusSTM = PMinus*sinThetaMinus;
607 const G4double pPlusSTPCPPperDP = pPlusSTP*cosPhiPlus/DPlus;
608 const G4double pMinusSTMCPMperDM = pMinusSTM*cosPhiMinus/DMinus;
609 const G4double caa = 2.*(EPlus*pMinusSTMCPMperDM+EMinus*pPlusSTPCPPperDP);
610 const G4double cbb = pMinusSTMCPMperDM-pPlusSTPCPPperDP;
611 const G4double ccc = (pPlusSTP*pPlusSTP + pMinusSTM*pMinusSTM
612 +2.*pPlusSTP*pMinusSTM*cosdPhi)/ (DMinus*DPlus);
613 const G4double dtot= 2.*BigPhi*( caa*caa - q2*cbb*cbb - GammaEnergy2*ccc);
614 betheheitler = dtot * factor;
615 }
616 //
617 const G4double cross = Norme * Jacob0 * Jacob1 * Jacob2 * betheheitler
618 * FormFactor * RecoilMass / sqrts;
619 pdf = cross * (xu1 - xl1) / G4Exp(correctionIndex*G4Log(X1)); // cond1;
620 } while ( pdf < ymax * rndmv6[5] );
621 // END of Sampling
622
623 if ( fVerbose > 2 ) {
624 G4double recul = std::sqrt(Recoil.x()*Recoil.x()+Recoil.y()*Recoil.y()
625 +Recoil.z()*Recoil.z());
626 G4cout << "BetheHeitler5DModel GammaEnergy= " << GammaEnergy
627 << " PDF= " << pdf << " ymax= " << ymax
628 << " recul= " << recul << G4endl;
629 }
630
631 // back to Geant4 system
632
633 if ( fVerbose > 4 ) {
634 G4cout << "BetheHeitler5DModel GammaDirection " << GammaDirection << G4endl;
635 G4cout << "BetheHeitler5DModel GammaPolarization " << GammaPolarization << G4endl;
636 G4cout << "BetheHeitler5DModel GammaEnergy " << GammaEnergy << G4endl;
637 G4cout << "BetheHeitler5DModel Conv "
638 << (itriplet ? "triplet" : "nucl") << G4endl;
639 }
640
641 if (GammaPolarizationMag == 0.0) {
642 // set polarization axis orthohonal to direction
643 GammaPolarization = GammaDirection.orthogonal().unit();
644 } else {
645 // GammaPolarization not a unit vector
646 GammaPolarization /= GammaPolarizationMag;
647 }
648
649 // The unit norm vector that is orthogonal to the two others
650 G4ThreeVector yGrec = GammaDirection.cross(GammaPolarization);
651
652 // rotation from gamma ref. sys. to World
653 G4RotationMatrix GtoW(GammaPolarization,yGrec,GammaDirection);
654
655 Recoil.transform(GtoW);
656 LeptonPlus.transform(GtoW);
657 LeptonMinus.transform(GtoW);
658
659 if ( fVerbose > 2 ) {
660 G4cout << "BetheHeitler5DModel Recoil " << Recoil.x() << " " << Recoil.y() << " " << Recoil.z()
661 << " " << Recoil.t() << " " << G4endl;
662 G4cout << "BetheHeitler5DModel LeptonPlus " << LeptonPlus.x() << " " << LeptonPlus.y() << " "
663 << LeptonPlus.z() << " " << LeptonPlus.t() << " " << G4endl;
664 G4cout << "BetheHeitler5DModel LeptonMinus " << LeptonMinus.x() << " " << LeptonMinus.y() << " "
665 << LeptonMinus.z() << " " << LeptonMinus.t() << " " << G4endl;
666 }
667
668 // Create secondaries
669 G4DynamicParticle* aParticle1 = new G4DynamicParticle(fLepton1,LeptonMinus);
670 G4DynamicParticle* aParticle2 = new G4DynamicParticle(fLepton2,LeptonPlus);
671
672 // create G4DynamicParticle object for the particle3 ( recoil )
673 G4ParticleDefinition* RecoilPart;
674 if (itriplet) {
675 // triplet
676 RecoilPart = fTheElectron;
677 } else{
678 RecoilPart = theIonTable->GetIon(Z, A, 0);
679 }
680 G4DynamicParticle* aParticle3 = new G4DynamicParticle(RecoilPart,Recoil);
681
682 // Fill output vector
683 fvect->push_back(aParticle1);
684 fvect->push_back(aParticle2);
685 fvect->push_back(aParticle3);
686
687 // kill incident photon
690}
CLHEP::HepLorentzVector G4LorentzVector
static constexpr double pi
Definition: G4SIunits.hh:55
@ fStopAndKill
const G4double A[17]
Hep3Vector unit() const
Hep3Vector orthogonal() const
Hep3Vector cross(const Hep3Vector &) const
double dot(const Hep3Vector &) const
double mag() const
double howOrthogonal(const Hep3Vector &v) const
Definition: SpaceVector.cc:215
double cosTheta() const
double perp() const
Hep3Vector boostVector() const
HepLorentzVector & boost(double, double, double)
HepLorentzVector & boostZ(double beta)
Hep3Vector vect() const
void set(double x, double y, double z, double t)
HepLorentzVector & transform(const HepRotation &)
virtual double flat()=0
virtual void flatArray(const int size, double *vect)=0
G4double MaxDiffCrossSection(const G4double *par, G4double eZ, G4double e, G4double loge) const
const G4ThreeVector & GetMomentumDirection() const
G4double GetLogKineticEnergy() const
G4double GetKineticEnergy() const
const G4ThreeVector & GetPolarization() const
G4IonisParamElm * GetIonisation() const
Definition: G4Element.hh:199
G4int GetZasInt() const
Definition: G4Element.hh:132
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
Definition: G4IonTable.cc:522
G4double GetZ3() const
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4ParticleDefinition * fTheGamma
G4ParticleChangeForGamma * fParticleChange
void SetProposedKineticEnergy(G4double proposedKinEnergy)
G4int SelectIsotopeNumber(const G4Element *)
Definition: G4VEmModel.cc:319
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)
static constexpr double fine_structure_const
static constexpr double twopi
Definition: SystemOfUnits.h:56
static constexpr double classic_electr_radius
const G4double twoPi

References A, CLHEP::HepLorentzVector::beta(), CLHEP::HepLorentzVector::boost(), CLHEP::HepLorentzVector::boostVector(), CLHEP::HepLorentzVector::boostZ(), CLHEP::classic_electr_radius, CLHEP::Hep3Vector::cosTheta(), CLHEP::Hep3Vector::cross(), CLHEP::Hep3Vector::dot(), CLHEP::electron_mass_c2, fConversionType, fConvMode, CLHEP::fine_structure_const, CLHEP::HepRandomEngine::flat(), CLHEP::HepRandomEngine::flatArray(), fLepton1, fLepton2, G4PairProductionRelModel::fParticleChange, fStopAndKill, G4PairProductionRelModel::fTheElectron, G4PairProductionRelModel::fTheGamma, fVerbose, G4cout, G4endl, G4Exp(), G4Log(), G4IonTable::GetIon(), G4Element::GetIonisation(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetLogKineticEnergy(), G4DynamicParticle::GetMomentumDirection(), G4NucleiProperties::GetNuclearMass(), G4ParticleDefinition::GetPDGMass(), G4DynamicParticle::GetPolarization(), G4IonisParamElm::GetZ3(), G4Element::GetZasInt(), CLHEP::Hep3Vector::howOrthogonal(), iraw, CLHEP::Hep3Vector::mag(), G4INCL::Math::max(), MaxDiffCrossSection(), CLHEP::Hep3Vector::orthogonal(), CLHEP::Hep3Vector::perp(), pi, G4VParticleChange::ProposeTrackStatus(), G4VEmModel::SelectIsotopeNumber(), G4VEmModel::SelectTargetAtom(), CLHEP::HepLorentzVector::set(), G4ParticleChangeForGamma::SetProposedKineticEnergy(), CLHEP::HepLorentzVector::t(), theIonTable, CLHEP::HepLorentzVector::transform(), CLHEP::twopi, G4INCL::Math::twoPi, CLHEP::Hep3Vector::unit(), CLHEP::HepLorentzVector::vect(), CLHEP::HepLorentzVector::x(), CLHEP::HepLorentzVector::y(), CLHEP::HepLorentzVector::z(), and Z.

Referenced by G4GammaConversionToMuons::PostStepDoIt().

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

◆ SetConversionMode()

void G4BetheHeitler5DModel::SetConversionMode ( G4int  to)
inlineprivate

Definition at line 96 of file G4BetheHeitler5DModel.hh.

96{ fConvMode = to; }

References fConvMode.

Referenced by SetLeptonPair().

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

◆ SetLeptonPair()

void G4BetheHeitler5DModel::SetLeptonPair ( const G4ParticleDefinition p1,
const G4ParticleDefinition p2 
)

Definition at line 194 of file G4BetheHeitler5DModel.cc.

196{
197 // Lepton1 - nagative charged particle
198 if ( p1->GetPDGEncoding() < 0 ){
199 if ( p1->GetPDGEncoding() ==
202 fLepton1 = p2;
203 fLepton2 = p1;
204 // if (fVerbose)
205 G4cout << "G4BetheHeitler5DModel::SetLeptonPair conversion to e+ e-"
206 << G4endl;
207 } else if ( p1->GetPDGEncoding() ==
210 fLepton1 = p2;
211 fLepton2 = p1;
212 // if (fVerbose)
213 G4cout << "G4BetheHeitler5DModel::SetLeptonPair conversion to mu+ mu-"
214 << G4endl;
215 } else {
216 // Exception
218 ed << "Model not applicable to particle(s) "
219 << p1->GetParticleName() << ", "
220 << p2->GetParticleName();
221 G4Exception("G4BetheHeitler5DModel::SetLeptonPair","em0002",
222 FatalException, ed);
223 }
224 } else {
225 if ( p1->GetPDGEncoding() ==
228 fLepton1 = p1;
229 fLepton2 = p2;
230 // if (fVerbose)
231 G4cout << "G4BetheHeitler5DModel::SetLeptonPair conversion to e+ e-"
232 << G4endl;
233 } else if ( p1->GetPDGEncoding() ==
236 fLepton1 = p1;
237 fLepton2 = p2;
238 // if (fVerbose)
239 G4cout << "G4BetheHeitler5DModel::SetLeptonPair conversion to mu+ mu-"
240 << G4endl;
241 } else {
242 // Exception
244 ed << "Model not applicable to particle(s) "
245 << p1->GetParticleName() << ", "
246 << p2->GetParticleName();
247 G4Exception("G4BetheHeitler5DModel::SetLeptonPair","em0002",
248 FatalException, ed);
249 }
250 }
252 G4Exception("G4BetheHeitler5DModel::SetLeptonPair","em0007",
253 FatalErrorInArgument, "pair must be particle, antiparticle ");
254 G4cerr << "BH5DModel::SetLeptonPair BAD paricle/anti particle pair"
255 << fLepton1->GetParticleName() << ", "
257 }
258}
@ FatalException
@ FatalErrorInArgument
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4GLOB_DLL std::ostream G4cerr
const G4String & GetParticleName() const

References G4Electron::Definition(), G4MuonMinus::Definition(), G4MuonPlus::Definition(), G4Positron::Definition(), FatalErrorInArgument, FatalException, fLepton1, fLepton2, G4cerr, G4cout, G4endl, G4Exception(), G4ParticleDefinition::GetAntiPDGEncoding(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGEncoding(), kEPair, kMuPair, and SetConversionMode().

Referenced by G4GammaConversionToMuons::BuildPhysicsTable().

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

Reimplemented from G4VEmModel.

Definition at line 340 of file G4PairProductionRelModel.cc.

342{
344}
G4double GetRadlen() const
Definition: G4Material.hh:216
static const G4double gLPMconstant

References G4PairProductionRelModel::fLPMEnergy, G4Material::GetRadlen(), and G4PairProductionRelModel::gLPMconstant.

◆ SetUseBaseMaterials()

void G4VEmModel::SetUseBaseMaterials ( G4bool  val)
inlineinherited

◆ SetVerbose()

void G4BetheHeitler5DModel::SetVerbose ( G4int  val)
inline

Definition at line 81 of file G4BetheHeitler5DModel.hh.

81{ fVerbose = val; }

References fVerbose.

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

◆ elmSelectors

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

◆ eMaxActive

G4double G4VEmModel::eMaxActive = DBL_MAX
privateinherited

◆ eMinActive

G4double G4VEmModel::eMinActive = 0.0
privateinherited

◆ fConversionType

G4int G4BetheHeitler5DModel::fConversionType
private

Definition at line 107 of file G4BetheHeitler5DModel.hh.

Referenced by Initialise(), and SampleSecondaries().

◆ fConvMode

G4int G4BetheHeitler5DModel::fConvMode
private

Definition at line 108 of file G4BetheHeitler5DModel.hh.

Referenced by Initialise(), SampleSecondaries(), and SetConversionMode().

◆ 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

◆ fLepton1

const G4ParticleDefinition* G4BetheHeitler5DModel::fLepton1
private

Definition at line 100 of file G4BetheHeitler5DModel.hh.

Referenced by Initialise(), SampleSecondaries(), and SetLeptonPair().

◆ fLepton2

const G4ParticleDefinition* G4BetheHeitler5DModel::fLepton2
private

Definition at line 101 of file G4BetheHeitler5DModel.hh.

Referenced by SampleSecondaries(), and SetLeptonPair().

◆ fLPMEnergy

G4double G4PairProductionRelModel::fLPMEnergy
protectedinherited

◆ flucModel

G4VEmFluctuationModel* G4VEmModel::flucModel = nullptr
privateinherited

◆ fParametrizedXSectionThreshold

G4double G4PairProductionRelModel::fParametrizedXSectionThreshold
protectedinherited

◆ fParticleChange

G4ParticleChangeForGamma* G4PairProductionRelModel::fParticleChange
protectedinherited

◆ fTheElectron

G4ParticleDefinition* G4PairProductionRelModel::fTheElectron
protectedinherited

◆ fTheGamma

G4ParticleDefinition* G4PairProductionRelModel::fTheGamma
protectedinherited

◆ fTheMuMinus

const G4ParticleDefinition* G4BetheHeitler5DModel::fTheMuMinus
private

Definition at line 104 of file G4BetheHeitler5DModel.hh.

Referenced by Initialise().

◆ fTheMuPlus

const G4ParticleDefinition* G4BetheHeitler5DModel::fTheMuPlus
private

Definition at line 103 of file G4BetheHeitler5DModel.hh.

◆ fThePositron

G4ParticleDefinition* G4PairProductionRelModel::fThePositron
protectedinherited

◆ fTripletModel

G4VEmModel* G4VEmModel::fTripletModel = nullptr
privateinherited

◆ fVerbose

G4int G4BetheHeitler5DModel::fVerbose
private

Definition at line 106 of file G4BetheHeitler5DModel.hh.

Referenced by Initialise(), SampleSecondaries(), and SetVerbose().

◆ 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

◆ iraw

G4bool G4BetheHeitler5DModel::iraw
private

Definition at line 109 of file G4BetheHeitler5DModel.hh.

Referenced by Initialise(), and SampleSecondaries().

◆ 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

◆ lowLimit

G4double G4VEmModel::lowLimit
privateinherited

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

◆ theIonTable

G4IonTable* G4BetheHeitler5DModel::theIonTable
private

Definition at line 98 of file G4BetheHeitler5DModel.hh.

Referenced by G4BetheHeitler5DModel(), and SampleSecondaries().

◆ 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

◆ xsec

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

◆ xSectionTable

G4PhysicsTable* G4VEmModel::xSectionTable = nullptr
protectedinherited

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