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

#include <G4AtimaEnergyLossModel.hh>

Inheritance diagram for G4AtimaEnergyLossModel:
G4VEmModel

Public Member Functions

virtual G4double ChargeSquareRatio (const G4Track &)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, const G4Element *, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, G4double kineticEnergy, G4double Z, G4double A, G4double cutEnergy, G4double maxEnergy) override
 
G4double ComputeCrossSectionPerElectron (const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)
 
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)
 
G4double ComputeDEDXPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double) override
 
G4double ComputeMeanFreePath (const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
void CorrectionsAlongStep (const G4MaterialCutsCouple *, const G4DynamicParticle *, const G4double &, G4double &) override
 
G4double CrossSection (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double CrossSectionPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy) override
 
G4bool DeexcitationFlag () const
 
virtual void DefineForRegion (const G4Region *)
 
virtual void FillNumberOfSecondaries (G4int &numberOfTriplets, G4int &numberOfRecoil)
 
G4bool ForceBuildTableFlag () const
 
 G4AtimaEnergyLossModel (const G4ParticleDefinition *p=nullptr, const G4String &nam="Atima")
 
G4VEmAngularDistributionGetAngularDistribution ()
 
G4double GetChargeSquareRatio (const G4ParticleDefinition *p, const G4Material *mat, G4double kineticEnergy) override
 
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)
 
G4double GetParticleCharge (const G4ParticleDefinition *p, const G4Material *mat, G4double kineticEnergy) override
 
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 *)
 
virtual void InitialiseLocal (const G4ParticleDefinition *, G4VEmModel *masterModel)
 
G4bool IsActive (G4double kinEnergy) const
 
G4bool IsLocked () const
 
G4bool IsMaster () const
 
G4double LowEnergyActivationLimit () const
 
G4double LowEnergyLimit () const
 
G4bool LPMFlag () const
 
G4double MaxSecondaryKinEnergy (const G4DynamicParticle *dynParticle)
 
G4double MinEnergyCut (const G4ParticleDefinition *, const G4MaterialCutsCouple *couple) override
 
virtual G4double MinPrimaryEnergy (const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
 
virtual void ModelDescription (std::ostream &outFile) const
 
G4double PolarAngleLimit () const
 
void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
 
G4double SecondaryThreshold () const
 
G4int SelectIsotopeNumber (const G4Element *)
 
const G4ElementSelectRandomAtom (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
const G4ElementSelectRandomAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4int SelectRandomAtomNumber (const G4Material *)
 
const G4ElementSelectTargetAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double logKineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
void SetActivationHighEnergyLimit (G4double)
 
void SetActivationLowEnergyLimit (G4double)
 
void SetAngularDistribution (G4VEmAngularDistribution *)
 
void SetAngularGeneratorFlag (G4bool)
 
void SetCrossSectionTable (G4PhysicsTable *, G4bool isLocal)
 
void SetCurrentCouple (const G4MaterialCutsCouple *)
 
void SetDeexcitationFlag (G4bool val)
 
void SetElementSelectors (std::vector< G4EmElementSelector * > *)
 
void SetFluctuationFlag (G4bool val)
 
void SetForceBuildTable (G4bool val)
 
void SetHighEnergyLimit (G4double)
 
void SetLocked (G4bool)
 
void SetLowEnergyLimit (G4double)
 
void SetLPMFlag (G4bool val)
 
void SetMasterThread (G4bool val)
 
void SetParticleChange (G4VParticleChange *, G4VEmFluctuationModel *f=nullptr)
 
void SetPolarAngleLimit (G4double)
 
void SetSecondaryThreshold (G4double)
 
void SetTripletModel (G4VEmModel *)
 
virtual void SetupForMaterial (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
void SetUseBaseMaterials (G4bool val)
 
virtual void StartTracking (G4Track *)
 
G4bool UseAngularGeneratorFlag () const
 
G4bool UseBaseMaterials () const
 
virtual G4double Value (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
 ~G4AtimaEnergyLossModel () override
 

Protected Member Functions

const G4MaterialCutsCoupleCurrentCouple () const
 
G4double GetChargeSquareRatio () const
 
G4ParticleChangeForGammaGetParticleChangeForGamma ()
 
G4ParticleChangeForLossGetParticleChangeForLoss ()
 
G4double MaxSecondaryEnergy (const G4ParticleDefinition *, G4double kinEnergy) override
 
void SetChargeSquareRatio (G4double val)
 
void SetCurrentElement (const G4Element *)
 

Protected Attributes

size_t basedCoupleIndex = 0
 
size_t currentCoupleIndex = 0
 
G4ElementDatafElementData = nullptr
 
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
 

Private Member Functions

G4double Bethek_dedx_e (G4double ap, G4double zp, G4double ep, G4double at, G4double zt)
 
G4double dedx_n (const G4double ap, const G4double zp, const G4double ep, const G4double at, const G4double zt)
 
G4double EnergyTable_interpolate (G4double xval, const G4double *y)
 
 G4AtimaEnergyLossModel (const G4AtimaEnergyLossModel &)=delete
 
G4AtimaEnergyLossModeloperator= (const G4AtimaEnergyLossModel &right)=delete
 
void SetGenericIon (const G4ParticleDefinition *p)
 
void SetParticle (const G4ParticleDefinition *p)
 
void SetupParameters ()
 
G4double sezi_dedx_e (const G4double zp, const G4double ep, const G4double at, const G4double zt)
 
G4double sezi_p_se (const G4double energy, const G4double at, const G4double zt)
 
G4double StoppingPower (G4double ap, G4double zp, G4double ep, G4double at, G4double zt)
 

Private Attributes

G4VEmAngularDistributionanglModel = nullptr
 
G4double atomic_mass_unit
 
G4double chargeSquare = 1.0
 
G4EmCorrectionscorr
 
G4double corrFactor = 1.0
 
G4double dedx_constant
 
G4double domega2dx_constant
 
G4double electron_mass
 
std::vector< G4EmElementSelector * > * elmSelectors = nullptr
 
G4double eMaxActive = DBL_MAX
 
G4double eMinActive = 0.0
 
const G4MaterialCutsCouplefCurrentCouple = nullptr
 
const G4ElementfCurrentElement = nullptr
 
const G4IsotopefCurrentIsotope = nullptr
 
G4LossTableManagerfEmManager
 
G4double fine_structure
 
G4bool flagDeexcitation = false
 
G4bool flagForceBuildTable = false
 
G4VEmFluctuationModelflucModel = nullptr
 
G4double formfact = 0.0
 
G4ParticleChangeForLossfParticleChange
 
G4VEmModelfTripletModel = nullptr
 
G4Powg4calc
 
G4double highLimit
 
G4bool isIon = false
 
G4bool isLocked = false
 
G4bool isMaster = true
 
G4bool localElmSelectors = true
 
G4bool localTable = true
 
G4double lowLimit
 
G4double magMoment2 = 0.0
 
G4double mass = 0.0
 
G4double MLN10
 
const G4String name
 
G4NistManagernist
 
G4int nsec = 5
 
G4int nSelectors = 0
 
const G4ParticleDefinitionparticle
 
G4double polarAngleLimit
 
G4double ratio = 1.0
 
G4double secondaryThreshold = DBL_MAX
 
G4double spin = 0.0
 
const G4ParticleDefinitiontheElectron
 
G4bool theLPMflag = false
 
G4double tlimit = DBL_MAX
 
G4bool useAngularGenerator = false
 
G4bool useBaseMaterials = false
 
std::vector< G4doublexsec
 

Static Private Attributes

static const G4double afermi [92]
 
static const G4double atima_lambda_screening [92]
 
static const G4double atima_vfermi [92]
 
static const G4double c [92]
 
static const G4double del_0 [92]
 
static const G4double element_atomic_weights [110]
 
static const G4double ionisation_potentials_z [121]
 
static const G4double ls_coefficients_a [110][200]
 
static const G4double ls_coefficients_ahi [110][200]
 
static const G4double m0 [92]
 
static const G4double proton_stopping_coef [92][8]
 
static G4double stepE = 0.0
 
static G4double tableE [200] = {0.0}
 
static const G4double x0 [92]
 
static const G4double x1 [92]
 

Detailed Description

Definition at line 57 of file G4AtimaEnergyLossModel.hh.

Constructor & Destructor Documentation

◆ G4AtimaEnergyLossModel() [1/2]

G4AtimaEnergyLossModel::G4AtimaEnergyLossModel ( const G4ParticleDefinition p = nullptr,
const G4String nam = "Atima" 
)
explicit

Definition at line 74 of file G4AtimaEnergyLossModel.cc.

76 : G4VEmModel(nam),
77 particle(nullptr)
78{
80 fParticleChange = nullptr;
85 MLN10 = 2.30258509299;
86 atomic_mass_unit = 931.4940954; // MeV/c^2
87 dedx_constant = 0.3070749187; //4*pi*Na*me*c^2*r_e^2 //MeV cm^2
88 electron_mass = 0.510998928; // MeV/c^2
89 fine_structure = 1.0/137.035999139;
90 domega2dx_constant = dedx_constant*electron_mass; //4*pi*Na*me*c^2*r_e^2 //MeV^2 cm^2
91 if(tableE[0] == 0.0) {
92 G4double logmin = 0.;
93 G4double logmax = 5.;
94 stepE = (logmax-logmin)/199.;
95 for(G4int i=0; i<200; ++i){
96 tableE[i] = G4Exp(MLN10*(logmin + ((G4double)i)*stepE));
97 }
98 }
99}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
static constexpr double MeV
Definition: G4SIunits.hh:200
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4ParticleDefinition * particle
const G4ParticleDefinition * theElectron
G4ParticleChangeForLoss * fParticleChange
static G4Electron * Electron()
Definition: G4Electron.cc:93
static G4LossTableManager * Instance()
G4EmCorrections * EmCorrections()
static G4NistManager * Instance()
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
void SetLowEnergyLimit(G4double)
Definition: G4VEmModel.hh:774
G4VEmModel(const G4String &nam)
Definition: G4VEmModel.cc:66

References atomic_mass_unit, corr, dedx_constant, domega2dx_constant, G4Electron::Electron(), electron_mass, G4LossTableManager::EmCorrections(), fine_structure, fParticleChange, g4calc, G4Exp(), G4Pow::GetInstance(), G4NistManager::Instance(), G4LossTableManager::Instance(), MeV, MLN10, nist, G4VEmModel::SetLowEnergyLimit(), stepE, tableE, and theElectron.

◆ ~G4AtimaEnergyLossModel()

G4AtimaEnergyLossModel::~G4AtimaEnergyLossModel ( )
override

Definition at line 103 of file G4AtimaEnergyLossModel.cc.

104{}

◆ G4AtimaEnergyLossModel() [2/2]

G4AtimaEnergyLossModel::G4AtimaEnergyLossModel ( const G4AtimaEnergyLossModel )
privatedelete

Member Function Documentation

◆ Bethek_dedx_e()

G4double G4AtimaEnergyLossModel::Bethek_dedx_e ( G4double  ap,
G4double  zp,
G4double  ep,
G4double  at,
G4double  zt 
)
private

Definition at line 559 of file G4AtimaEnergyLossModel.cc.

559 {
560//
561// According to C. Scheidenberger et al., Phys. Rev. Lett. 73, 50 (1994).
562//
563 G4double gamma=1.0 + ep/atomic_mass_unit;
564 G4double beta2=1.0-1.0/(gamma*gamma);
565 //
566 G4double beta = std::sqrt(beta2);
567 G4double zp_eff = zp*(1.0-G4Exp(-0.95/fine_structure*beta/g4calc->A23(zp)));
568 G4int zi = std::min(std::max((G4int)zt, 1), 120);
570 G4double f1 = dedx_constant*g4calc->powA(zp_eff,2.)*zt/(beta2*at);
571
572 //
573 G4double f2 = G4Log(2.0*electron_mass*1000000*beta2/Ipot);
574 G4double eta = beta*gamma;
575
576 if(!(eta>=0.13)){ //shell corrections
577 G4double cor = (+0.422377*g4calc->powA(eta,-2.)
578 +0.0304043*g4calc->powA(eta,-4.)
579 -0.00038106*g4calc->powA(eta,-6.))*1e-6*g4calc->powA(Ipot,2.)
580 +(+3.858019*g4calc->powA(eta,-2.)
581 -0.1667989*(g4calc->powA(eta,-4.))
582 +0.00157955*(g4calc->powA(eta,-6.)))*1.0e-9*g4calc->powA(Ipot,3.);
583 f2 = f2 -cor/zt;
584 }
585
586 f2+=2*G4Log(gamma) -beta2;
587
588 //Barkas correction
589 G4double barkas=1.0;
590 G4double V2FVA[4]={0.33,0.30,0.26,0.23};
591 G4double VA[4]={1.,2.,3.,4.};
592 G4double v1 = eta/(fine_structure*std::sqrt(zt));
593 G4double v2fv;
594 if(v1 >= 4.){
595 v2fv = 0.45 / std::sqrt(v1);
596 }
597 else if(v1 > 1. && v1 < 4.){//VALUES FROM THE JACKSON MC CARTHY FUNCTION //PHYS. REV. B 6 4131
598 G4int i=1;
599 for(; i<4; i++){
600 if(VA[i] >= v1) break;
601 }
602 i = std::min(i, 3);
603 v2fv = V2FVA[i-1]+(v1-VA[i-1])*(V2FVA[i]-V2FVA[i-1])/(VA[i]-VA[i-1]);
604 }
605 else{
606 v2fv=0;
607 }
608 barkas= 1.0+2.0 * zp_eff * v2fv /(v1*v1*std::sqrt(zt));
609
610 //Fermi-density effect for relativistic velocities
611 gamma = 1./std::sqrt(1-(beta*beta));
612 G4double x = G4Log(beta * gamma) / 2.302585;
613 G4int i = std::min(std::max(zi-1,0), 91);
614 G4double del = 0.;
615
616 if (x < x0[i] ){
617 if(del_0[i] > 0.)del = del_0[i] * g4calc->powA(10.0,(2.*(x-x0[i])));
618 }
619 else {
620 del = 4.6052 * x - c[i];
621 if ( x0[i]<= x && x <= x1[i] ) del += afermi[i] * g4calc->powA((x1[i] - x),m0[i]);
622 }
623
624 //Precalculated lindhard correction
625 G4double LS = 0.;
626 G4int z = G4lrint(zp);
627 if(z>109)z=109;
628 if(ep<tableE[0])ep=tableE[0];
629
631 z = z-1;
632
635 G4double dif = v4 - v3;
636 LS = v3+(dif*da/0.05);
637
638 //Final stopping power
639 G4double result = (f2)*barkas + LS - del/2.;
640 result *=f1;
641
642 return result;
643}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
static const G4double ionisation_potentials_z[121]
static const G4double x1[92]
static const G4double ls_coefficients_ahi[110][200]
G4double EnergyTable_interpolate(G4double xval, const G4double *y)
static const G4double ls_coefficients_a[110][200]
static const G4double c[92]
static const G4double element_atomic_weights[110]
static const G4double afermi[92]
static const G4double del_0[92]
static const G4double x0[92]
static const G4double m0[92]
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
G4double A23(G4double A) const
Definition: G4Pow.hh:131
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
int G4lrint(double ad)
Definition: templates.hh:134

References G4Pow::A23(), afermi, G4InuclParticleNames::ap, atomic_mass_unit, anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, c, dedx_constant, del_0, electron_mass, element_atomic_weights, EnergyTable_interpolate(), fine_structure, g4calc, G4Exp(), G4Log(), G4lrint(), ionisation_potentials_z, ls_coefficients_a, ls_coefficients_ahi, m0, G4INCL::Math::max(), G4INCL::Math::min(), G4Pow::powA(), tableE, x0, and x1.

Referenced by StoppingPower().

◆ 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 G4AtimaEnergyLossModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition p,
G4double  kineticEnergy,
G4double  Z,
G4double  A,
G4double  cutEnergy,
G4double  maxEnergy 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 223 of file G4AtimaEnergyLossModel.cc.

229{
231 (p,kineticEnergy,cutEnergy,maxEnergy);
232 return cross;
233}
const G4int Z[17]
G4double ComputeCrossSectionPerElectron(const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)

References ComputeCrossSectionPerElectron(), and Z.

◆ ComputeCrossSectionPerElectron()

G4double G4AtimaEnergyLossModel::ComputeCrossSectionPerElectron ( const G4ParticleDefinition p,
G4double  kineticEnergy,
G4double  cutEnergy,
G4double  maxEnergy 
)

Definition at line 192 of file G4AtimaEnergyLossModel.cc.

196{
197 G4double cross = 0.0;
198 G4double tmax = MaxSecondaryEnergy(p, kineticEnergy);
199 G4double maxEnergy = std::min(tmax,maxKinEnergy);
200 if(cutEnergy < maxEnergy) {
201
202 G4double totEnergy = kineticEnergy + mass;
203 G4double energy2 = totEnergy*totEnergy;
204 G4double beta2 = kineticEnergy*(kineticEnergy + 2.0*mass)/energy2;
205
206 cross = (maxEnergy - cutEnergy)/(cutEnergy*maxEnergy)
207 - beta2*G4Log(maxEnergy/cutEnergy)/tmax;
208
209 // +term for spin=1/2 particle
210 if( 0.0 < spin ) { cross += 0.5*(maxEnergy - cutEnergy)/energy2; }
211
212 cross *= twopi_mc2_rcl2*chargeSquare/beta2;
213 }
214
215 // G4cout << "BB: e= " << kineticEnergy << " tmin= " << cutEnergy
216 // << " tmax= " << tmax << " cross= " << cross << G4endl;
217
218 return cross;
219}
G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kinEnergy) override
int twopi_mc2_rcl2
Definition: hepunit.py:293

References chargeSquare, G4Log(), mass, MaxSecondaryEnergy(), G4INCL::Math::min(), spin, and source.hepunit::twopi_mc2_rcl2.

Referenced by ComputeCrossSectionPerAtom(), and CrossSectionPerVolume().

◆ 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 G4AtimaEnergyLossModel::ComputeDEDXPerVolume ( const G4Material material,
const G4ParticleDefinition p,
G4double  kineticEnergy,
G4double   
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 252 of file G4AtimaEnergyLossModel.cc.

256{
257 //Call to ATIMA Stopping Power function
258 G4double zt = material->GetIonisation()->GetZeffective();
259 zt = std::min(zt,93.);
262 kineticEnergy/(MeV), at, zt) *material->GetDensity()/(g/cm3);
263 dedx = std::max(dedx, 0.0);
264
265 // G4cout << "E(MeV)= " << kineticEnergy/MeV << " dedx= " << dedx
266 // << " " << material->GetName() << G4endl;
267 return dedx;
268}
static constexpr double cm3
Definition: G4SIunits.hh:101
static constexpr double g
Definition: G4SIunits.hh:168
G4double StoppingPower(G4double ap, G4double zp, G4double ep, G4double at, G4double zt)
G4double GetAtomicMassAmu(const G4String &symb) const
G4double GetPDGCharge() const
string material
Definition: eplot.py:19

References cm3, g, G4lrint(), G4NistManager::GetAtomicMassAmu(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), eplot::material, G4INCL::Math::max(), MeV, G4INCL::Math::min(), nist, and StoppingPower().

Referenced by CorrectionsAlongStep().

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

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

◆ CorrectionsAlongStep()

void G4AtimaEnergyLossModel::CorrectionsAlongStep ( const G4MaterialCutsCouple couple,
const G4DynamicParticle dp,
const G4double length,
G4double eloss 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 272 of file G4AtimaEnergyLossModel.cc.

276{
277 if(isIon) {
278 const G4ParticleDefinition* p = dp->GetDefinition();
279 const G4Material* mat = couple->GetMaterial();
280 G4double cutEnergy = DBL_MAX;
282 G4double kineticEnergy = dp->GetKineticEnergy();
283 eloss = ComputeDEDXPerVolume(mat, p, kineticEnergy, cutEnergy)*length/(cm);
284 }
285
286}
static constexpr double cm
Definition: G4SIunits.hh:99
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double) override
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4Material * GetMaterial() const
virtual void SetParticleAndCharge(const G4ParticleDefinition *, G4double q2)
G4VEmFluctuationModel * GetModelOfFluctuations()
Definition: G4VEmModel.hh:614

References cm, ComputeDEDXPerVolume(), DBL_MAX, G4DynamicParticle::GetDefinition(), G4DynamicParticle::GetKineticEnergy(), G4MaterialCutsCouple::GetMaterial(), G4VEmModel::GetModelOfFluctuations(), G4ParticleDefinition::GetPDGCharge(), isIon, and G4VEmFluctuationModel::SetParticleAndCharge().

◆ CrossSection()

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

◆ CrossSectionPerVolume()

G4double G4AtimaEnergyLossModel::CrossSectionPerVolume ( const G4Material material,
const G4ParticleDefinition p,
G4double  kineticEnergy,
G4double  cutEnergy,
G4double  maxEnergy 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 237 of file G4AtimaEnergyLossModel.cc.

243{
244 G4double eDensity = material->GetElectronDensity();
246 (p,kineticEnergy,cutEnergy,maxEnergy);
247 return cross;
248}

References ComputeCrossSectionPerElectron(), and eplot::material.

◆ CurrentCouple()

const G4MaterialCutsCouple * G4VEmModel::CurrentCouple ( ) const
inlineprotectedinherited

◆ dedx_n()

G4double G4AtimaEnergyLossModel::dedx_n ( const G4double  ap,
const G4double  zp,
const G4double  ep,
const G4double  at,
const G4double  zt 
)
private

Definition at line 442 of file G4AtimaEnergyLossModel.cc.

443 {
444
445 G4double zpowers = g4calc->powA(zp,0.23)+g4calc->powA(zt,0.23);
446 G4double asum = ap + at;
447 G4double epsilon = 32.53*at*1000.*ep*ap/(zp*zt*asum*zpowers); //projectile energy is converted from MeV/u to keV
448 G4double sn=0.;
449
450 if(epsilon<=30.0){
451 sn = G4Log(1.+(1.1383*epsilon))/ (2.*(epsilon + 0.01321*g4calc->powA(epsilon,0.21226) + 0.19593*sqrt(epsilon)));
452 }
453 else{
454 sn = G4Log(epsilon)/(2.*epsilon);
455 }
456 sn = 100.*8.4621*zp*zt*ap*sn*Avogadro/1.e+23/(asum*zpowers*at);
457 return sn;
458}
G4double epsilon(G4double density, G4double temperature)
float Avogadro
Definition: hepunit.py:252

References G4InuclParticleNames::ap, source.hepunit::Avogadro, epsilon(), g4calc, G4Log(), and G4Pow::powA().

Referenced by StoppingPower().

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

◆ EnergyTable_interpolate()

G4double G4AtimaEnergyLossModel::EnergyTable_interpolate ( G4double  xval,
const G4double y 
)
private

Definition at line 647 of file G4AtimaEnergyLossModel.cc.

647 {
648 G4double r;
649 G4int num=200;
650 G4double lxval = G4Log(xval)/MLN10;
651 if(xval<tableE[0] || xval>tableE[num-1])return 0.0;
652 if(xval==tableE[num-1])return y[num-1];
653 G4int i = (G4int)(lxval/stepE);
654 i = std::min(std::max(i, 0), num-2);
655 G4double linstep = tableE[i+1] - tableE[i];
656 G4double x = 1.0 - ((xval - tableE[i])/linstep);
657 r = (x*y[i]) + ((1-x)*y[i+1]);
658 return r;
659}

References G4Log(), G4INCL::Math::max(), G4INCL::Math::min(), MLN10, stepE, and tableE.

Referenced by Bethek_dedx_e().

◆ 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(), 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(), SampleSecondaries(), G4BetheBlochModel::SampleSecondaries(), G4BetheHeitlerModel::SampleSecondaries(), G4BraggIonModel::SampleSecondaries(), G4BraggModel::SampleSecondaries(), G4ICRU73QOModel::SampleSecondaries(), G4LindhardSorensenIonModel::SampleSecondaries(), G4MollerBhabhaModel::SampleSecondaries(), G4PairProductionRelModel::SampleSecondaries(), G4PEEffectFluoModel::SampleSecondaries(), and G4IonParametrisedLossModel::SampleSecondaries().

◆ GetChargeSquareRatio() [1/2]

G4double G4AtimaEnergyLossModel::GetChargeSquareRatio ( ) const
inlineprotected

Definition at line 207 of file G4AtimaEnergyLossModel.hh.

208{
209 return chargeSquare;
210}

References chargeSquare.

◆ GetChargeSquareRatio() [2/2]

G4double G4AtimaEnergyLossModel::GetChargeSquareRatio ( const G4ParticleDefinition p,
const G4Material mat,
G4double  kineticEnergy 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 131 of file G4AtimaEnergyLossModel.cc.

134{
135 // this method is called only for ions
136 G4double q2 = corr->EffectiveChargeSquareRatio(p,mat,kineticEnergy);
137 corrFactor = q2*corr->EffectiveChargeCorrection(p,mat,kineticEnergy);
138 return corrFactor;
139}
G4double EffectiveChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double EffectiveChargeCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)

References corr, corrFactor, G4EmCorrections::EffectiveChargeCorrection(), and G4EmCorrections::EffectiveChargeSquareRatio().

◆ 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

◆ 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 G4AtimaEnergyLossModel::GetParticleCharge ( const G4ParticleDefinition p,
const G4Material mat,
G4double  kineticEnergy 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 143 of file G4AtimaEnergyLossModel.cc.

146{
147 //G4cout<<"G4AtimaEnergyLossModel::GetParticleCharge e= "<<kineticEnergy <<
148 // " q= " << corr->GetParticleCharge(p,mat,kineticEnergy) <<G4endl;
149 // this method is called only for ions, so no check if it is an ion
150 return corr->GetParticleCharge(p,mat,kineticEnergy);
151}
G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)

References corr, and G4EmCorrections::GetParticleCharge().

◆ 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 G4AtimaEnergyLossModel::Initialise ( const G4ParticleDefinition p,
const G4DataVector  
)
overridevirtual

Implements G4VEmModel.

Definition at line 108 of file G4AtimaEnergyLossModel.cc.

110{
111 SetGenericIon(p);
112 SetParticle(p);
113
114 //G4cout << "G4AtimaEnergyLossModel::Initialise for " << p->GetParticleName()
115 // << " isIon= " << isIon
116 // << G4endl;
117
118 // always false before the run
119 SetDeexcitationFlag(false);
120
121 if(nullptr == fParticleChange) {
125 }
126 }
127}
void SetParticle(const G4ParticleDefinition *p)
void SetGenericIon(const G4ParticleDefinition *p)
G4VEmAngularDistribution * GetAngularDistribution()
Definition: G4VEmModel.hh:621
void SetDeexcitationFlag(G4bool val)
Definition: G4VEmModel.hh:823
void SetAngularDistribution(G4VEmAngularDistribution *)
Definition: G4VEmModel.hh:628
G4bool UseAngularGeneratorFlag() const
Definition: G4VEmModel.hh:718
G4ParticleChangeForLoss * GetParticleChangeForLoss()
Definition: G4VEmModel.cc:108

References fParticleChange, G4VEmModel::GetAngularDistribution(), G4VEmModel::GetParticleChangeForLoss(), G4VEmModel::SetAngularDistribution(), G4VEmModel::SetDeexcitationFlag(), SetGenericIon(), SetParticle(), and G4VEmModel::UseAngularGeneratorFlag().

◆ InitialiseElementSelectors()

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

Definition at line 138 of file G4VEmModel.cc.

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

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

Referenced by G4eSingleCoulombScatteringModel::Initialise(), G4PAIModel::Initialise(), G4PAIPhotModel::Initialise(), G4JAEAElasticScatteringModel::Initialise(), G4JAEAPolarizedElasticScatteringModel::Initialise(), G4LivermoreComptonModel::Initialise(), G4LivermoreGammaConversion5DModel::Initialise(), 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 G4VEmModel::InitialiseLocal ( const G4ParticleDefinition ,
G4VEmModel masterModel 
)
virtualinherited

◆ IsActive()

G4bool G4VEmModel::IsActive ( G4double  kinEnergy) const
inlineinherited

◆ IsLocked()

G4bool G4VEmModel::IsLocked ( ) const
inlineinherited

◆ IsMaster()

G4bool G4VEmModel::IsMaster ( ) const
inlineinherited

Definition at line 746 of file G4VEmModel.hh.

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

References G4VEmModel::isMaster.

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

◆ LowEnergyActivationLimit()

G4double G4VEmModel::LowEnergyActivationLimit ( ) const
inlineinherited

◆ LowEnergyLimit()

G4double G4VEmModel::LowEnergyLimit ( ) const
inlineinherited

Definition at line 662 of file G4VEmModel.hh.

663{
664 return lowLimit;
665}

References G4VEmModel::lowLimit.

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

◆ LPMFlag()

G4bool G4VEmModel::LPMFlag ( ) const
inlineinherited

◆ MaxSecondaryEnergy()

G4double G4AtimaEnergyLossModel::MaxSecondaryEnergy ( const G4ParticleDefinition pd,
G4double  kinEnergy 
)
overrideprotectedvirtual

Reimplemented from G4VEmModel.

Definition at line 406 of file G4AtimaEnergyLossModel.cc.

408{
409 // here particle type is checked for any method
410 SetParticle(pd);
411 G4double tau = kinEnergy/mass;
412 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.) /
413 (1. + 2.0*(tau + 1.)*ratio + ratio*ratio);
414 return std::min(tmax,tlimit);
415}
float electron_mass_c2
Definition: hepunit.py:273

References source.hepunit::electron_mass_c2, mass, G4INCL::Math::min(), ratio, SetParticle(), and tlimit.

Referenced by ComputeCrossSectionPerElectron(), and SampleSecondaries().

◆ MaxSecondaryKinEnergy()

G4double G4VEmModel::MaxSecondaryKinEnergy ( const G4DynamicParticle dynParticle)
inlineinherited

◆ MinEnergyCut()

G4double G4AtimaEnergyLossModel::MinEnergyCut ( const G4ParticleDefinition ,
const G4MaterialCutsCouple couple 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 183 of file G4AtimaEnergyLossModel.cc.

185{
187}
G4double GetMeanExcitationEnergy() const
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:222

References G4Material::GetIonisation(), G4MaterialCutsCouple::GetMaterial(), and G4IonisParamMat::GetMeanExcitationEnergy().

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

G4AtimaEnergyLossModel & G4AtimaEnergyLossModel::operator= ( const G4AtimaEnergyLossModel right)
privatedelete

◆ PolarAngleLimit()

G4double G4VEmModel::PolarAngleLimit ( ) const
inlineinherited

◆ SampleSecondaries()

void G4AtimaEnergyLossModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  vdp,
const G4MaterialCutsCouple couple,
const G4DynamicParticle dp,
G4double  tmin,
G4double  maxEnergy 
)
overridevirtual

Implements G4VEmModel.

Definition at line 290 of file G4AtimaEnergyLossModel.cc.

295{
296 G4double kineticEnergy = dp->GetKineticEnergy();
297 G4double tmax = MaxSecondaryEnergy(dp->GetDefinition(),kineticEnergy);
298
299 G4double maxKinEnergy = std::min(maxEnergy,tmax);
300 if(minKinEnergy >= maxKinEnergy) { return; }
301
302 //G4cout << "G4AtimaEnergyLossModel::SampleSecondaries Emin= " << minKinEnergy
303 // << " Emax= " << maxKinEnergy << G4endl;
304
305 G4double totEnergy = kineticEnergy + mass;
306 G4double etot2 = totEnergy*totEnergy;
307 G4double beta2 = kineticEnergy*(kineticEnergy + 2.0*mass)/etot2;
308
309 G4double deltaKinEnergy, f;
310 G4double f1 = 0.0;
311 G4double fmax = 1.0;
312 if( 0.0 < spin ) { fmax += 0.5*maxKinEnergy*maxKinEnergy/etot2; }
313
314 CLHEP::HepRandomEngine* rndmEngineMod = G4Random::getTheEngine();
315 G4double rndm[2];
316
317 // sampling without nuclear size effect
318 do {
319 rndmEngineMod->flatArray(2, rndm);
320 deltaKinEnergy = minKinEnergy*maxKinEnergy
321 /(minKinEnergy*(1.0 - rndm[0]) + maxKinEnergy*rndm[0]);
322
323 f = 1.0 - beta2*deltaKinEnergy/tmax;
324 if( 0.0 < spin ) {
325 f1 = 0.5*deltaKinEnergy*deltaKinEnergy/etot2;
326 f += f1;
327 }
328
329 // Loop checking, 03-Aug-2015, Vladimir Ivanchenko
330 } while( fmax*rndm[1] > f);
331
332 // projectile formfactor - suppresion of high energy
333 // delta-electron production at high energy
334
335 G4double x = formfact*deltaKinEnergy*(deltaKinEnergy + 2*electron_mass_c2);
336 if(x > 1.e-6) {
337
338 G4double x10 = 1.0 + x;
339 G4double grej = 1.0/(x10*x10);
340 if( 0.0 < spin ) {
341 G4double x2 = 0.5*electron_mass_c2*deltaKinEnergy/(mass*mass);
342 grej *= (1.0 + magMoment2*(x2 - f1/f)/(1.0 + x2));
343 }
344 if(grej > 1.1) {
345 G4cout << "### G4AtimaEnergyLossModel WARNING: grej= " << grej
346 << " " << dp->GetDefinition()->GetParticleName()
347 << " Ekin(MeV)= " << kineticEnergy
348 << " delEkin(MeV)= " << deltaKinEnergy
349 << G4endl;
350 }
351 if(rndmEngineMod->flat() > grej) { return; }
352 }
353
354 G4ThreeVector deltaDirection;
355
357
358 const G4Material* mat = couple->GetMaterial();
360
361 deltaDirection =
362 GetAngularDistribution()->SampleDirection(dp, deltaKinEnergy, Z, mat);
363
364 } else {
365
366 G4double deltaMomentum =
367 std::sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2));
368 G4double cost = deltaKinEnergy * (totEnergy + electron_mass_c2) /
369 (deltaMomentum * dp->GetTotalMomentum());
370 if(cost > 1.0) { cost = 1.0; }
371 G4double sint = std::sqrt((1.0 - cost)*(1.0 + cost));
372
373 G4double phi = twopi*rndmEngineMod->flat();
374
375 deltaDirection.set(sint*cos(phi),sint*sin(phi), cost) ;
376 deltaDirection.rotateUz(dp->GetMomentumDirection());
377 }
378 /*
379 G4cout << "### G4AtimaEnergyLossModel "
380 << dp->GetDefinition()->GetParticleName()
381 << " Ekin(MeV)= " << kineticEnergy
382 << " delEkin(MeV)= " << deltaKinEnergy
383 << " tmin(MeV)= " << minKinEnergy
384 << " tmax(MeV)= " << maxKinEnergy
385 << " dir= " << dp->GetMomentumDirection()
386 << " dirDelta= " << deltaDirection
387 << G4endl;
388 */
389 // create G4DynamicParticle object for delta ray
390 G4DynamicParticle* delta =
391 new G4DynamicParticle(theElectron,deltaDirection,deltaKinEnergy);
392
393 vdp->push_back(delta);
394
395 // Change kinematics of primary particle
396 kineticEnergy -= deltaKinEnergy;
397 G4ThreeVector finalP = dp->GetMomentum() - delta->GetMomentum();
398 finalP = finalP.unit();
399
402}
static constexpr double twopi
Definition: G4SIunits.hh:56
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
Hep3Vector unit() const
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:33
virtual double flat()=0
virtual void flatArray(const int size, double *vect)=0
const G4ThreeVector & GetMomentumDirection() const
G4ThreeVector GetMomentum() const
G4double GetTotalMomentum() const
void SetProposedKineticEnergy(G4double proposedKinEnergy)
void SetProposedMomentumDirection(const G4ThreeVector &dir)
const G4String & GetParticleName() const
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0
G4int SelectRandomAtomNumber(const G4Material *)
Definition: G4VEmModel.cc:297

References source.hepunit::electron_mass_c2, CLHEP::HepRandomEngine::flat(), CLHEP::HepRandomEngine::flatArray(), formfact, fParticleChange, G4cout, G4endl, G4VEmModel::GetAngularDistribution(), G4DynamicParticle::GetDefinition(), G4DynamicParticle::GetKineticEnergy(), G4MaterialCutsCouple::GetMaterial(), G4DynamicParticle::GetMomentum(), G4DynamicParticle::GetMomentumDirection(), G4ParticleDefinition::GetParticleName(), G4DynamicParticle::GetTotalMomentum(), magMoment2, mass, MaxSecondaryEnergy(), G4INCL::Math::min(), CLHEP::Hep3Vector::rotateUz(), G4VEmAngularDistribution::SampleDirection(), G4VEmModel::SelectRandomAtomNumber(), CLHEP::Hep3Vector::set(), G4ParticleChangeForLoss::SetProposedKineticEnergy(), G4ParticleChangeForLoss::SetProposedMomentumDirection(), spin, theElectron, twopi, CLHEP::Hep3Vector::unit(), G4VEmModel::UseAngularGeneratorFlag(), and Z.

◆ SecondaryThreshold()

G4double G4VEmModel::SecondaryThreshold ( ) const
inlineinherited

◆ SelectIsotopeNumber()

G4int G4VEmModel::SelectIsotopeNumber ( const G4Element elm)
inherited

Definition at line 319 of file G4VEmModel.cc.

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

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

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

◆ SelectRandomAtom() [1/2]

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

Definition at line 275 of file G4VEmModel.cc.

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

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

Definition at line 297 of file G4VEmModel.cc.

298{
299 // this algorith assumes that cross section is proportional to
300 // number electrons multiplied by number of atoms
301 const size_t nn = mat->GetNumberOfElements();
302 fCurrentElement = mat->GetElement(0);
303 if(1 < nn) {
304 const G4double* at = mat->GetVecNbOfAtomsPerVolume();
306 for(size_t i=0; i<nn; ++i) {
307 tot -= at[i];
308 if(tot <= 0.0) {
309 fCurrentElement = mat->GetElement(i);
310 break;
311 }
312 }
313 }
314 return fCurrentElement->GetZasInt();
315}
G4int GetZasInt() const
Definition: G4Element.hh:132
G4double GetTotNbOfAtomsPerVolume() const
Definition: G4Material.hh:205
const G4double * GetVecNbOfAtomsPerVolume() const
Definition: G4Material.hh:202

References G4VEmModel::fCurrentElement, G4UniformRand, G4Material::GetElement(), G4Material::GetNumberOfElements(), G4Material::GetTotNbOfAtomsPerVolume(), G4Material::GetVecNbOfAtomsPerVolume(), G4Element::GetZasInt(), and G4InuclParticleNames::nn.

Referenced by SampleSecondaries(), G4BetheBlochModel::SampleSecondaries(), G4BraggIonModel::SampleSecondaries(), G4BraggModel::SampleSecondaries(), G4ICRU73QOModel::SampleSecondaries(), G4LindhardSorensenIonModel::SampleSecondaries(), G4MollerBhabhaModel::SampleSecondaries(), and G4IonParametrisedLossModel::SampleSecondaries().

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

◆ SetChargeSquareRatio()

void G4AtimaEnergyLossModel::SetChargeSquareRatio ( G4double  val)
inlineprotected

Definition at line 214 of file G4AtimaEnergyLossModel.hh.

215{
216 chargeSquare = val;
217}

References chargeSquare.

◆ SetCrossSectionTable()

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

Definition at line 455 of file G4VEmModel.cc.

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

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

Referenced by G4VMultipleScattering::BuildPhysicsTable().

◆ SetCurrentCouple()

void G4VEmModel::SetCurrentCouple ( const G4MaterialCutsCouple ptr)
inlineinherited

Definition at line 472 of file G4VEmModel.hh.

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

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

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

◆ SetCurrentElement()

void G4VEmModel::SetCurrentElement ( const G4Element elm)
inlineprotectedinherited

◆ SetDeexcitationFlag()

void G4VEmModel::SetDeexcitationFlag ( G4bool  val)
inlineinherited

Definition at line 823 of file G4VEmModel.hh.

824{
825 flagDeexcitation = val;
826}

References G4VEmModel::flagDeexcitation.

Referenced by G4DNABornIonisationModel1::G4DNABornIonisationModel1(), G4DNABornIonisationModel2::G4DNABornIonisationModel2(), G4DNACPA100IonisationModel::G4DNACPA100IonisationModel(), G4DNAEmfietzoglouIonisationModel::G4DNAEmfietzoglouIonisationModel(), G4DNARelativisticIonisationModel::G4DNARelativisticIonisationModel(), G4DNARuddIonisationExtendedModel::G4DNARuddIonisationExtendedModel(), G4DNARuddIonisationModel::G4DNARuddIonisationModel(), G4KleinNishinaModel::G4KleinNishinaModel(), G4LEPTSIonisationModel::G4LEPTSIonisationModel(), G4LivermoreComptonModel::G4LivermoreComptonModel(), G4LivermorePhotoElectricModel::G4LivermorePhotoElectricModel(), G4LivermorePolarizedComptonModel::G4LivermorePolarizedComptonModel(), G4LowEPComptonModel::G4LowEPComptonModel(), G4LowEPPolarizedComptonModel::G4LowEPPolarizedComptonModel(), G4MicroElecInelasticModel::G4MicroElecInelasticModel(), G4MicroElecInelasticModel_new::G4MicroElecInelasticModel_new(), G4PEEffectFluoModel::G4PEEffectFluoModel(), G4PenelopeBremsstrahlungModel::G4PenelopeBremsstrahlungModel(), G4PenelopeComptonModel::G4PenelopeComptonModel(), G4PenelopeIonisationModel::G4PenelopeIonisationModel(), G4PenelopePhotoElectricModel::G4PenelopePhotoElectricModel(), 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.

◆ SetGenericIon()

void G4AtimaEnergyLossModel::SetGenericIon ( const G4ParticleDefinition p)
inlineprivate

Definition at line 200 of file G4AtimaEnergyLossModel.hh.

201{
202 if(p && p->GetParticleName() == "GenericIon") { isIon = true; }
203}

References G4ParticleDefinition::GetParticleName(), and isIon.

Referenced by Initialise().

◆ SetHighEnergyLimit()

void G4VEmModel::SetHighEnergyLimit ( G4double  val)
inlineinherited

Definition at line 767 of file G4VEmModel.hh.

768{
769 highLimit = val;
770}

References G4VEmModel::highLimit.

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

◆ SetLocked()

void G4VEmModel::SetLocked ( G4bool  val)
inlineinherited

◆ SetLowEnergyLimit()

void G4VEmModel::SetLowEnergyLimit ( G4double  val)
inlineinherited

Definition at line 774 of file G4VEmModel.hh.

775{
776 lowLimit = val;
777}

References G4VEmModel::lowLimit.

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

◆ SetLPMFlag()

void G4VEmModel::SetLPMFlag ( G4bool  val)
inlineinherited

◆ SetMasterThread()

void G4VEmModel::SetMasterThread ( G4bool  val)
inlineinherited

◆ SetParticle()

void G4AtimaEnergyLossModel::SetParticle ( const G4ParticleDefinition p)
inlineprivate

Definition at line 188 of file G4AtimaEnergyLossModel.hh.

189{
190 if(particle != p) {
191 particle = p;
192 if(p->GetBaryonNumber() > 3 || p->GetPDGCharge() > CLHEP::eplus)
193 { isIon = true; }
195 }
196}
static constexpr double eplus

References CLHEP::eplus, G4ParticleDefinition::GetBaryonNumber(), G4ParticleDefinition::GetPDGCharge(), isIon, particle, and SetupParameters().

Referenced by Initialise(), and MaxSecondaryEnergy().

◆ 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 G4VEmModel::SetupForMaterial ( const G4ParticleDefinition ,
const G4Material ,
G4double  kineticEnergy 
)
virtualinherited

◆ SetupParameters()

void G4AtimaEnergyLossModel::SetupParameters ( )
private

Definition at line 155 of file G4AtimaEnergyLossModel.cc.

156{
160 chargeSquare = q*q;
163 static const G4double aMag = 1./(0.5*eplus*hbar_Planck*c_squared);
165 magMoment2 = magmom*magmom - 1.0;
166 formfact = 0.0;
167 tlimit = DBL_MAX;
168 if(particle->GetLeptonNumber() == 0) {
169 G4int iz = G4lrint(q);
170 if(iz <= 1) {
171 formfact = (spin == 0.0 && mass < GeV) ? 1.181e-6 : 1.548e-6;
172 } else {
173 G4double x = nist->GetA27(iz);
174 formfact = 3.969e-6*x*x;
175 }
176 tlimit = std::sqrt(0.414/formfact +
178 }
179}
static constexpr double eplus
Definition: G4SIunits.hh:184
static constexpr double GeV
Definition: G4SIunits.hh:203
G4double GetA27(G4int Z) const
G4double GetPDGMagneticMoment() const
float hbar_Planck
Definition: hepunit.py:263
float c_squared
Definition: hepunit.py:257

References source.hepunit::c_squared, chargeSquare, corrFactor, DBL_MAX, source.hepunit::electron_mass_c2, eplus, formfact, G4lrint(), G4NistManager::GetA27(), G4ParticleDefinition::GetLeptonNumber(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMagneticMoment(), G4ParticleDefinition::GetPDGMass(), G4ParticleDefinition::GetPDGSpin(), GeV, source.hepunit::hbar_Planck, magMoment2, mass, nist, particle, ratio, spin, and tlimit.

Referenced by SetParticle().

◆ SetUseBaseMaterials()

void G4VEmModel::SetUseBaseMaterials ( G4bool  val)
inlineinherited

◆ sezi_dedx_e()

G4double G4AtimaEnergyLossModel::sezi_dedx_e ( const G4double  zp,
const G4double  ep,
const G4double  at,
const G4double  zt 
)
private

Definition at line 462 of file G4AtimaEnergyLossModel.cc.

462 {
463 G4double e = ep*1000.; // e in keV/u
464 G4double se = 0.;
465
466 // heavy ion Z > 2
467 G4double h1,h4;
468 G4double a,q,b;
469 G4double l1,l0,l;
470 G4double YRmin = 0.130; // YRmin = VR / ZP**0.67 <= 0.13 OR VR <= 1.0
471 G4double VRmin = 1.0;
472 G4double vfermi = atima_vfermi[(G4int)zt-1];
473 G4double yr=0;
474 G4double zeta = 0;
475
476 G4double v = std::sqrt(e/25.0)/vfermi;
477 G4double v2= v*v;
478
479 G4double vr = (v >= 1)? v*vfermi*(1.+ 1./(5.*v2)) : 3.0*vfermi/4.0*(1.0+v2*(2.0/3.0-v2/15.0));
480
481 h1= 1./g4calc->powA(zp,0.6667);
482 yr = std::max(YRmin,vr*h1);
483 yr = std::max(yr, VRmin*h1);
484
485 //-- CALCULATE ZEFF
486 a = -0.803*g4calc->powA(yr,0.3) + 1.3167*g4calc->powA(yr,0.6) + 0.38157*yr + 0.008983*yr*yr;
487 q = std::min(1.0, std::max(0.0 , (1.0 - G4Exp(-std::min(a, 50.0))))); //-- Q = IONIZATION LEVEL OF THE ION AT RELATIVE VELOCITY YR
488
489 //-- IONIZATION LEVEL TO EFFECTIVE CHARGE
490 h1 = 1./g4calc->powA(zp,0.3333);
491
492 b = (std::min(0.43, std::max(0.32,0.12 + 0.025*zp)))*h1;
493 l0 = (0.8 - q * std::min(1.2,0.6 +zp/30.0))*h1;
494 if(q < 0.2){
495 l1 = 0;
496 }
497 else{
498 if (q < std::max(0.0,0.9-0.025*zp)){
499 l1 = b*(q-0.2)/std::abs(std::max(0.0,0.9-0.025*zp)-0.2000001);
500 }
501 else{
502 if(q < std::max(0.0,1.0 - 0.025*std::min(16.,zp))) l1 = b;
503 else l1 = b*(1.0 - q)/(0.025*std::min(16.,zp));
504 }
505 }
506 // calculate screening
507 l = std::max(l1,l0*atima_lambda_screening[(G4int)zp-1]);
508 h1 =4.0*l*vfermi/1.919;
509 zeta = q + (1./(2.*(vfermi*vfermi)))*(1. - q)* G4Log(1. + h1*h1);
510
511 // ZP**3 EFFECT AS IN REF. 779?
512 a = 7.6 - std::max(0.0, G4Log(e));
513 zeta = zeta*(1. + (1./(zp*zp))*(0.18 + .0015*zt)*G4Exp(-a*a));
514
515 h1= 1./g4calc->powA(zp,0.6667);
516 if (yr <= ( std::max(YRmin, VRmin*h1))){
517 VRmin=std::max(VRmin, YRmin/h1);
518 //--C ..CALCULATE VELOCITY STOPPING FOR YR < YRmin
519 G4double vmin =.5*(VRmin + std::sqrt(std::max(0.0,VRmin*VRmin - 0.8*vfermi*vfermi)));
520 G4double eee = 25.0*vmin*vmin;
521 G4double eval = 1.0;
522 if((zt == 6) || (((zt == 14) || (zt == 32)) && (zp <= 19))) eval = 0.35;
523 else eval = 0.5;
524
525 h1 = zeta *zp;
526 h4 = g4calc->powA(e / eee,eval);
527 se = sezi_p_se(eee*0.001,at,zt) * h1*h1*h4;
528 return se;
529 }
530 else {
531 se = sezi_p_se(ep,at,zt)*g4calc->powA(zeta*zp,2.0);
532 return se;
533 }
534
535 return se;
536}
static const G4double atima_lambda_screening[92]
static const G4double atima_vfermi[92]
G4double sezi_p_se(const G4double energy, const G4double at, const G4double zt)

References atima_lambda_screening, atima_vfermi, g4calc, G4Exp(), G4Log(), G4INCL::Math::max(), G4INCL::Math::min(), G4Pow::powA(), and sezi_p_se().

Referenced by StoppingPower().

◆ sezi_p_se()

G4double G4AtimaEnergyLossModel::sezi_p_se ( const G4double  energy,
const G4double  at,
const G4double  zt 
)
private

Definition at line 540 of file G4AtimaEnergyLossModel.cc.

540 {
541 G4double sp = 0.;
542 G4double e = 1000*energy; //e in keV/u
543 G4int i = zt - 1;
544
545 if(e<=25)e=25;
548 sp = sl*sh/(sl+sh);
549 e=1000*energy;
550 if(e<=25){
551 sp *=(zt>6)?g4calc->powA(e/25.,0.45):g4calc->powA(e/25.,0.25);
552 }
553 return 100.*sp*Avogadro/1.e+23/at;
554}
static const G4double proton_stopping_coef[92][8]
G4double energy(const ThreeVector &p, const G4double m)

References source.hepunit::Avogadro, G4INCL::KinematicsUtils::energy(), g4calc, G4Log(), G4Pow::powA(), proton_stopping_coef, and G4InuclParticleNames::sp.

Referenced by sezi_dedx_e().

◆ StartTracking()

void G4VEmModel::StartTracking ( G4Track )
virtualinherited

◆ StoppingPower()

G4double G4AtimaEnergyLossModel::StoppingPower ( G4double  ap,
G4double  zp,
G4double  ep,
G4double  at,
G4double  zt 
)
private

Definition at line 419 of file G4AtimaEnergyLossModel.cc.

420 {
421 //
422 if(ep==0)return 0.0;
424 ep=ep/ap;
425 G4double se = 0.0;
426 // ep in MeV
427 if(ep<=10.){
428 se = sezi_dedx_e(zp, ep, at, zt);
429 }
430 else if(ep>10. && ep<30.){
431 G4double factor = 0.05 * ( ep - 10.0 );
432 se = (1.0-factor)*sezi_dedx_e(zp, ep, at, zt) + factor*Bethek_dedx_e(ap, zp, ep, at, zt);
433 }
434 else {
435 se = Bethek_dedx_e(ap, zp, ep, at, zt);
436 }
437 return se + dedx_n(ap, zp, ep, at, zt);
438}
G4double sezi_dedx_e(const G4double zp, const G4double ep, const G4double at, const G4double zt)
G4double Bethek_dedx_e(G4double ap, G4double zp, G4double ep, G4double at, G4double zt)
G4double dedx_n(const G4double ap, const G4double zp, const G4double ep, const G4double at, const G4double zt)

References G4InuclParticleNames::ap, atomic_mass_unit, Bethek_dedx_e(), dedx_n(), and sezi_dedx_e().

Referenced by ComputeDEDXPerVolume().

◆ 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

◆ afermi

const G4double G4AtimaEnergyLossModel::afermi
staticprivate
Initial value:
= {
0.14092, 0.13443, 0.95136, 0.80392, 0.56224, 0.26142, 0.15349, 0.11778, 0.11083, .08064,
0.07772, 0.08163, 0.08024, 0.14921, 0.23610, 0.33992, 0.19849, 0.19714, 0.19827, .15643,
0.15754, 0.15662, 0.15436, 0.15419, 0.14973, 0.14680, 0.14474, 0.16496, 0.14339, .14714,
0.09440, 0.07188, 0.06633, 0.06568, 0.06335, 0.07446, 0.07261, 0.07165, 0.07138, .07177,
0.13883, 0.10525, 0.16572, 0.19342, 0.19205, 0.24178, 0.24585, 0.24609, 0.23879, .18689,
0.16652, 0.13815, 0.23766, 0.23314, 0.18233, 0.18268, 0.18591, 0.18885, 0.23265, .23530,
0.24280, 0.24698, 0.24448, 0.25109, 0.24453, 0.24665, 0.24638, 0.24823, 0.24889, .25295,
0.24033, 0.22918, 0.17798, 0.15509, 0.15184, 0.12751, 0.12690, 0.11128, 0.09756, .11014,
0.09455, 0.09359, 0.09410, 0.09282, 0.09000, 0.20798, 0.08000, 0.08804, 0.08567, 0.08655,
0.14770, 0.19677 }

Definition at line 179 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ anglModel

G4VEmAngularDistribution* G4VEmModel::anglModel = nullptr
privateinherited

◆ atima_lambda_screening

const G4double G4AtimaEnergyLossModel::atima_lambda_screening
staticprivate

Definition at line 176 of file G4AtimaEnergyLossModel.hh.

Referenced by sezi_dedx_e().

◆ atima_vfermi

const G4double G4AtimaEnergyLossModel::atima_vfermi
staticprivate

Definition at line 175 of file G4AtimaEnergyLossModel.hh.

Referenced by sezi_dedx_e().

◆ atomic_mass_unit

G4double G4AtimaEnergyLossModel::atomic_mass_unit
private

Definition at line 159 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e(), G4AtimaEnergyLossModel(), and StoppingPower().

◆ basedCoupleIndex

size_t G4VEmModel::basedCoupleIndex = 0
protectedinherited

◆ c

const G4double G4AtimaEnergyLossModel::c
staticprivate
Initial value:
= {
9.5835, 11.1393, 3.1221, 2.7847, 2.8477, 2.8680, 10.5400, 10.7004, 10.9653, 11.9041,
5.0526, 4.5297, 4.2395, 4.4351, 4.5214, 4.6659, 11.1421, 11.9480, 5.6423, 5.0396,
4.6949, 4.4450, 4.2659, 4.1781, 4.2702, 4.2911, 4.2601, 4.3115, 4.4190, 4.6906,
4.9353, 5.1411, 5.0510, 5.3210, 11.7307,12.5115,6.4776, 5.9867, 5.4801 , 5.1774,
5.0141, 4.8793, 4.7769, 4.7694, 4.8008, 4.9358, 5.0630, 5.2727, 5.5211, 5.5340,
5.6241, 5.7131, 5.9488, 12.7281, 6.9135, 6.3153, 5.7850, 5.7837, 5.8096, 5.8290,
5.8224, 5.8597, 6.2278, 5.8738, 5.9045, 5.9183, 5.9587, 5.9521, 5.9677, 6.3325,
5.9785, 5.7139, 5.5262, 5.4059, 5.3445, 5.3083, 5.3418, 5.4732, 5.5747, 5.9605,
6.1365, 6.2018, 6.3505, 6.4003, 6.4, 13.2839, 7., 7.0452, 6.3742, 6.2473,
6.0327, 5.8694 }

Definition at line 180 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ chargeSquare

G4double G4AtimaEnergyLossModel::chargeSquare = 1.0
private

◆ corr

G4EmCorrections* G4AtimaEnergyLossModel::corr
private

◆ corrFactor

G4double G4AtimaEnergyLossModel::corrFactor = 1.0
private

Definition at line 157 of file G4AtimaEnergyLossModel.hh.

Referenced by GetChargeSquareRatio(), and SetupParameters().

◆ currentCoupleIndex

size_t G4VEmModel::currentCoupleIndex = 0
protectedinherited

Definition at line 448 of file G4VEmModel.hh.

Referenced by G4VEmModel::SetCurrentCouple().

◆ dedx_constant

G4double G4AtimaEnergyLossModel::dedx_constant
private

Definition at line 160 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e(), and G4AtimaEnergyLossModel().

◆ del_0

const G4double G4AtimaEnergyLossModel::del_0
staticprivate
Initial value:
= {
0.0, 0.00, 0.14, 0.14, 0.14, 0.12, 0.00, 0.00, 0.00, 0.00,
0.08, 0.08, 0.12, 0.14, 0.14, 0.14, 0.00, 0.00, 0.10, 0.14,
0.10, 0.12, 0.14, 0.14, 0.14, 0.12, 0.12, 0.10, 0.08, 0.08,
0.14, 0.14, 0.08, 0.10, 0.00, 0.00, 0.14, 0.14, 0.14, 0.14,
0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14,
0.14, 0.14, 0.00, 0.00, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14,
0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14, 0.14,
0.14, 0.14, 0.14, 0.14, 0.08, 0.10, 0.10, 0.12, 0.14, 0.14,
0.14, 0.14, 0.14, 0.14, 0.00, 0.00, 0.00, 0.14, 0.14, 0.14,
0.14, 0.14 }

Definition at line 182 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ domega2dx_constant

G4double G4AtimaEnergyLossModel::domega2dx_constant
private

Definition at line 163 of file G4AtimaEnergyLossModel.hh.

Referenced by G4AtimaEnergyLossModel().

◆ electron_mass

G4double G4AtimaEnergyLossModel::electron_mass
private

Definition at line 161 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e(), and G4AtimaEnergyLossModel().

◆ element_atomic_weights

const G4double G4AtimaEnergyLossModel::element_atomic_weights
staticprivate

Definition at line 169 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ elmSelectors

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

◆ eMaxActive

G4double G4VEmModel::eMaxActive = DBL_MAX
privateinherited

◆ eMinActive

G4double G4VEmModel::eMinActive = 0.0
privateinherited

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

◆ fine_structure

G4double G4AtimaEnergyLossModel::fine_structure
private

Definition at line 162 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e(), and G4AtimaEnergyLossModel().

◆ flagDeexcitation

G4bool G4VEmModel::flagDeexcitation = false
privateinherited

Definition at line 455 of file G4VEmModel.hh.

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

◆ flagForceBuildTable

G4bool G4VEmModel::flagForceBuildTable = false
privateinherited

◆ flucModel

G4VEmFluctuationModel* G4VEmModel::flucModel = nullptr
privateinherited

◆ formfact

G4double G4AtimaEnergyLossModel::formfact = 0.0
private

Definition at line 156 of file G4AtimaEnergyLossModel.hh.

Referenced by SampleSecondaries(), and SetupParameters().

◆ fParticleChange

G4ParticleChangeForLoss* G4AtimaEnergyLossModel::fParticleChange
private

◆ fTripletModel

G4VEmModel* G4VEmModel::fTripletModel = nullptr
privateinherited

◆ g4calc

G4Pow* G4AtimaEnergyLossModel::g4calc
private

◆ highLimit

G4double G4VEmModel::highLimit
privateinherited

◆ inveplus

G4double G4VEmModel::inveplus
protectedinherited

◆ ionisation_potentials_z

const G4double G4AtimaEnergyLossModel::ionisation_potentials_z
staticprivate

Definition at line 173 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ isIon

G4bool G4AtimaEnergyLossModel::isIon = false
private

Definition at line 165 of file G4AtimaEnergyLossModel.hh.

Referenced by CorrectionsAlongStep(), SetGenericIon(), and SetParticle().

◆ 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

◆ ls_coefficients_a

const G4double G4AtimaEnergyLossModel::ls_coefficients_a
staticprivate

Definition at line 170 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ ls_coefficients_ahi

const G4double G4AtimaEnergyLossModel::ls_coefficients_ahi
staticprivate

Definition at line 171 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ m0

const G4double G4AtimaEnergyLossModel::m0
staticprivate
Initial value:
= {
5.7273, 5.8347, 2.4993, 2.4339, 2.4512, 2.8697, 3.2125, 3.2913, 3.2962, 3.5771,
3.6452, 3.6166, 3.6345, 3.2546, 2.9158, 2.6456, 2.9702, 2.9618, 2.9233, 3.0745,
3.0517, 3.0302, 3.0163, 2.9896, 2.9796, 2.9632, 2.9502, 2.8430, 2.9044, 2.8652,
3.1314, 3.3306, 3.4176, 3.4317, 3.4670, 3.4051, 3.4177, 3.4435, 3.4585, 3.4533,
3.0930, 3.2549, 2.9738, 2.8707, 2.8633, 2.7239, 2.6899, 2.6772, 2.7144, 2.8576,
2.9319, 3.0354, 2.7276, 2.7414, 2.8866, 2.8906, 2.8828, 2.8592, 2.7331, 2.7050,
2.6674, 2.6403, 2.6245, 2.5977, 2.6056, 2.5849, 2.5726, 2.5573, 2.5469, 2.5141,
2.5643, 2.6155, 2.7623, 2.8447, 2.8627, 2.9608, 2.9658, 3.0417, 3.1101, 3.0519,
3.1450, 3.1608, 3.1671, 3.1830, 1.1111, 2.7409, 1.1111, 3.2454, 3.2683, 3.2610,
2.9845, 2.8171 }

Definition at line 181 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ magMoment2

G4double G4AtimaEnergyLossModel::magMoment2 = 0.0
private

Definition at line 153 of file G4AtimaEnergyLossModel.hh.

Referenced by SampleSecondaries(), and SetupParameters().

◆ mass

G4double G4AtimaEnergyLossModel::mass = 0.0
private

◆ MLN10

G4double G4AtimaEnergyLossModel::MLN10
private

Definition at line 158 of file G4AtimaEnergyLossModel.hh.

Referenced by EnergyTable_interpolate(), and G4AtimaEnergyLossModel().

◆ name

const G4String G4VEmModel::name
privateinherited

◆ nist

G4NistManager* G4AtimaEnergyLossModel::nist
private

◆ nsec

G4int G4VEmModel::nsec = 5
privateinherited

Definition at line 444 of file G4VEmModel.hh.

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

◆ nSelectors

G4int G4VEmModel::nSelectors = 0
privateinherited

◆ particle

const G4ParticleDefinition* G4AtimaEnergyLossModel::particle
private

◆ 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

◆ proton_stopping_coef

const G4double G4AtimaEnergyLossModel::proton_stopping_coef
staticprivate

Definition at line 172 of file G4AtimaEnergyLossModel.hh.

Referenced by sezi_p_se().

◆ ratio

G4double G4AtimaEnergyLossModel::ratio = 1.0
private

Definition at line 155 of file G4AtimaEnergyLossModel.hh.

Referenced by MaxSecondaryEnergy(), and SetupParameters().

◆ secondaryThreshold

G4double G4VEmModel::secondaryThreshold = DBL_MAX
privateinherited

◆ spin

G4double G4AtimaEnergyLossModel::spin = 0.0
private

◆ stepE

G4double G4AtimaEnergyLossModel::stepE = 0.0
staticprivate

Definition at line 167 of file G4AtimaEnergyLossModel.hh.

Referenced by EnergyTable_interpolate(), and G4AtimaEnergyLossModel().

◆ tableE

G4double G4AtimaEnergyLossModel::tableE = {0.0}
staticprivate

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

◆ theElectron

const G4ParticleDefinition* G4AtimaEnergyLossModel::theElectron
private

Definition at line 144 of file G4AtimaEnergyLossModel.hh.

Referenced by G4AtimaEnergyLossModel(), and SampleSecondaries().

◆ theLPMflag

G4bool G4VEmModel::theLPMflag = false
privateinherited

Definition at line 454 of file G4VEmModel.hh.

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

◆ tlimit

G4double G4AtimaEnergyLossModel::tlimit = DBL_MAX
private

Definition at line 151 of file G4AtimaEnergyLossModel.hh.

Referenced by MaxSecondaryEnergy(), and SetupParameters().

◆ useAngularGenerator

G4bool G4VEmModel::useAngularGenerator = false
privateinherited

◆ useBaseMaterials

G4bool G4VEmModel::useBaseMaterials = false
privateinherited

◆ x0

const G4double G4AtimaEnergyLossModel::x0
staticprivate
Initial value:
= {
1.8639, 2.2017, 0.1304, 0.0592, 0.0305, -.0178, 1.7378, 1.7541, 1.8433, 2.0735,
0.2880, 0.1499, 0.1708, 0.2014, 0.1696, 0.1580, 1.5555, 1.7635, 0.3851, 0.3228,
0.1640, 0.0957, 0.0691, 0.0340, 0.0447, -.0012, -.0187, -.0566, -.0254, 0.0049,
0.2267, 0.3376, 0.1767, 0.2258, 1.5262, 1.7158, 0.5737, 0.4585, 0.3608, 0.2957,
0.1785, 0.2267, 0.0949, 0.0599, 0.0576, 0.0563, 0.0657, 0.1281, 0.2406, 0.2879,
0.3189, 0.3296, 0.0549, 1.5630, 0.5473, 0.4190, 0.3161, 0.2713, 0.2333, 0.1984,
0.1627, 0.1520, 0.1888, 0.1058, 0.0947, 0.0822, 0.0761, 0.0648, 0.0812, 0.1199,
0.1560, 0.1965, 0.2117, 0.2167, 0.0559, 0.0891, 0.0819, 0.1484, 0.2021, 0.2756,
0.3491, 0.3776, 0.4152, 0.4267, 0.4300, 1.5368, 0.6000, 0.5991, 0.4559, 0.4202,
0.3144, 0.2260 }

Definition at line 177 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ x1

const G4double G4AtimaEnergyLossModel::x1
staticprivate
Initial value:
= {
3.2718, 3.6122, 1.6397, 1.6922, 1.9688, 2.3415, 4.1323, 4.3213, 4.4096, 4.6421,
3.1962, 3.0668, 3.0127, 2.8715, 2.7815, 2.7159, 4.2994, 4.4855, 3.1724, 3.1191,
3.0593, 3.0386, 3.0322, 3.0451, 3.1074, 3.1531, 3.1790, 3.1851, 3.2792, 3.3668,
3.5434, 3.6096, 3.5702, 3.6264, 4.9899, 5.0748, 3.7995, 3.6778, 3.5542, 3.4890,
3.2201, 3.2784, 3.1253, 3.0834, 3.1069, 3.0555, 3.1074, 3.1667, 3.2032, 3.2959,
3.3489, 3.4418, 3.2596, 4.7371, 3.5914, 3.4547, 3.3293, 3.3432, 3.2773, 3.3063,
3.3199, 3.3460, 3.4633, 3.3932, 3.4224, 3.4474, 3.4782, 3.4922, 3.5085, 3.6246,
3.5218, 3.4337, 3.4805, 3.4960, 3.4845, 3.5414, 3.5480, 3.6212, 3.6979, 3.7275,
3.8044, 3.8073, 3.8248, 3.8293, 4.0000, 4.9889, 4.0000, 3.9428, 3.7966, 3.7681,
3.5079, 3.3721 }

Definition at line 178 of file G4AtimaEnergyLossModel.hh.

Referenced by Bethek_dedx_e().

◆ xsec

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

◆ xSectionTable

G4PhysicsTable* G4VEmModel::xSectionTable = nullptr
protectedinherited

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