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

#include <G4LivermorePolarizedGammaConversionModel.hh>

Inheritance diagram for G4LivermorePolarizedGammaConversionModel:
G4VEmModel

Public Member Functions

virtual G4double ChargeSquareRatio (const G4Track &)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, const G4Element *, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0, G4double cut=0, G4double emax=DBL_MAX) override
 
virtual G4double ComputeCrossSectionPerShell (const G4ParticleDefinition *, G4int Z, G4int shellIdx, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeDEDX (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
virtual G4double ComputeDEDXPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
G4double ComputeMeanFreePath (const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual void CorrectionsAlongStep (const G4MaterialCutsCouple *, const G4DynamicParticle *, const G4double &length, G4double &eloss)
 
G4double CrossSection (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual G4double CrossSectionPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4bool DeexcitationFlag () const
 
virtual void DefineForRegion (const G4Region *)
 
virtual void FillNumberOfSecondaries (G4int &numberOfTriplets, G4int &numberOfRecoil)
 
G4bool ForceBuildTableFlag () const
 
 G4LivermorePolarizedGammaConversionModel (const G4LivermorePolarizedGammaConversionModel &)=delete
 
 G4LivermorePolarizedGammaConversionModel (const G4ParticleDefinition *p=nullptr, const G4String &nam="LivermorePolarizedGammaConversion")
 
G4VEmAngularDistributionGetAngularDistribution ()
 
virtual G4double GetChargeSquareRatio (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4PhysicsTableGetCrossSectionTable ()
 
const G4ElementGetCurrentElement () const
 
const G4IsotopeGetCurrentIsotope () const
 
G4ElementDataGetElementData ()
 
std::vector< G4EmElementSelector * > * GetElementSelectors ()
 
G4VEmFluctuationModelGetModelOfFluctuations ()
 
const G4StringGetName () const
 
virtual G4double GetPartialCrossSection (const G4Material *, G4int level, const G4ParticleDefinition *, G4double kineticEnergy)
 
virtual G4double GetParticleCharge (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
G4VEmModelGetTripletModel ()
 
G4double HighEnergyActivationLimit () const
 
G4double HighEnergyLimit () const
 
void Initialise (const G4ParticleDefinition *, const G4DataVector &) override
 
void InitialiseElementSelectors (const G4ParticleDefinition *, const G4DataVector &)
 
void InitialiseForElement (const G4ParticleDefinition *, G4int Z) override
 
virtual void InitialiseForMaterial (const G4ParticleDefinition *, const G4Material *)
 
void InitialiseLocal (const G4ParticleDefinition *, G4VEmModel *masterModel) override
 
G4bool IsActive (G4double kinEnergy) const
 
G4bool IsLocked () const
 
G4bool IsMaster () const
 
G4double LowEnergyActivationLimit () const
 
G4double LowEnergyLimit () const
 
G4bool LPMFlag () const
 
G4double MaxSecondaryKinEnergy (const G4DynamicParticle *dynParticle)
 
virtual G4double MinEnergyCut (const G4ParticleDefinition *, const G4MaterialCutsCouple *)
 
G4double MinPrimaryEnergy (const G4Material *, const G4ParticleDefinition *, G4double) override
 
virtual void ModelDescription (std::ostream &outFile) const
 
G4LivermorePolarizedGammaConversionModeloperator= (const G4LivermorePolarizedGammaConversionModel &right)=delete
 
G4double PolarAngleLimit () const
 
void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
 
G4double SecondaryThreshold () const
 
G4int SelectIsotopeNumber (const G4Element *)
 
const G4ElementSelectRandomAtom (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
const G4ElementSelectRandomAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4int SelectRandomAtomNumber (const G4Material *)
 
const G4ElementSelectTargetAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double logKineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
void SetActivationHighEnergyLimit (G4double)
 
void SetActivationLowEnergyLimit (G4double)
 
void SetAngularDistribution (G4VEmAngularDistribution *)
 
void SetAngularGeneratorFlag (G4bool)
 
void SetCrossSectionTable (G4PhysicsTable *, G4bool isLocal)
 
void SetCurrentCouple (const G4MaterialCutsCouple *)
 
void SetDeexcitationFlag (G4bool val)
 
void SetElementSelectors (std::vector< G4EmElementSelector * > *)
 
void SetFluctuationFlag (G4bool val)
 
void SetForceBuildTable (G4bool val)
 
void SetHighEnergyLimit (G4double)
 
void SetLocked (G4bool)
 
void SetLowEnergyLimit (G4double)
 
void SetLPMFlag (G4bool val)
 
void 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)
 
virtual ~G4LivermorePolarizedGammaConversionModel ()
 

Protected Member Functions

const G4MaterialCutsCoupleCurrentCouple () const
 
G4ParticleChangeForGammaGetParticleChangeForGamma ()
 
G4ParticleChangeForLossGetParticleChangeForLoss ()
 
virtual G4double MaxSecondaryEnergy (const G4ParticleDefinition *, G4double kineticEnergy)
 
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 Encu (G4double *, G4double *, G4double)
 
G4double Fdlor (G4double *, G4double)
 
G4double Fdtan (G4double *, G4double)
 
G4double Fintlor (G4double *, G4double)
 
G4double Finttan (G4double *, G4double)
 
G4double Finvlor (G4double *, G4double, G4double)
 
G4double Finvtan (G4double *, G4double, G4double)
 
G4double Fln (G4double, G4double, G4double)
 
G4double Flor (G4double *, G4double)
 
G4double Ftan (G4double *, G4double)
 
G4ThreeVector GetPerpendicularPolarization (const G4ThreeVector &direction0, const G4ThreeVector &polarization0) const
 
G4ThreeVector GetRandomPolarization (G4ThreeVector &direction0)
 
G4double Glor (G4double *, G4double)
 
G4double Poli (G4double, G4double, G4double, G4double)
 
void ReadData (size_t Z, const char *path=0)
 
G4double ScreenFunction1 (G4double screenVariable)
 
G4double ScreenFunction2 (G4double screenVariable)
 
G4ThreeVector SetPerpendicularVector (G4ThreeVector &a)
 
G4double SetPhi (G4double)
 
G4double SetPsi (G4double, G4double)
 
void SetTheta (G4double *, G4double *, G4double)
 
void SystemOfRefChange (G4ThreeVector &direction0, G4ThreeVector &direction1, G4ThreeVector &polarization0)
 

Private Attributes

G4VEmAngularDistributionanglModel = nullptr
 
std::vector< G4EmElementSelector * > * elmSelectors = nullptr
 
G4double eMaxActive = DBL_MAX
 
G4double eMinActive = 0.0
 
const G4MaterialCutsCouplefCurrentCouple = nullptr
 
const G4ElementfCurrentElement = nullptr
 
const G4IsotopefCurrentIsotope = nullptr
 
G4LossTableManagerfEmManager
 
G4bool flagDeexcitation = false
 
G4bool flagForceBuildTable = false
 
G4VEmFluctuationModelflucModel = nullptr
 
G4ParticleChangeForGammafParticleChange
 
G4VEmModelfTripletModel = nullptr
 
G4double highLimit
 
G4bool isInitialised
 
G4bool isLocked = false
 
G4bool isMaster = true
 
G4bool localElmSelectors = true
 
G4bool localTable = true
 
G4double lowEnergyLimit
 
G4double lowLimit
 
const G4String name
 
G4int nsec = 5
 
G4int nSelectors = 0
 
G4double Phi
 
G4double polarAngleLimit
 
G4double Psi
 
G4double secondaryThreshold = DBL_MAX
 
G4double smallEnergy
 
G4bool theLPMflag = false
 
G4bool useAngularGenerator = false
 
G4bool useBaseMaterials = false
 
G4int verboseLevel
 
std::vector< G4doublexsec
 

Static Private Attributes

static G4PhysicsFreeVectordata [100] = {nullptr}
 
static const G4int maxZ = 99
 

Detailed Description

Definition at line 38 of file G4LivermorePolarizedGammaConversionModel.hh.

Constructor & Destructor Documentation

◆ G4LivermorePolarizedGammaConversionModel() [1/2]

G4LivermorePolarizedGammaConversionModel::G4LivermorePolarizedGammaConversionModel ( const G4ParticleDefinition p = nullptr,
const G4String nam = "LivermorePolarizedGammaConversion" 
)
explicit

Definition at line 51 of file G4LivermorePolarizedGammaConversionModel.cc.

53 :G4VEmModel(nam), smallEnergy(2.*MeV), isInitialised(false)
54{
55 fParticleChange = nullptr;
57
58 Phi=0.;
59 Psi=0.;
60
61 verboseLevel= 0;
62 // Verbosity scale:
63 // 0 = nothing
64 // 1 = calculation of cross sections, file openings, samping of atoms
65 // 2 = entering in methods
66
67 if(verboseLevel > 0) {
68 G4cout << "Livermore Polarized GammaConversion is constructed "
69 << G4endl;
70 }
71
72}
static constexpr double MeV
Definition: G4SIunits.hh:200
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4VEmModel(const G4String &nam)
Definition: G4VEmModel.cc:66
float electron_mass_c2
Definition: hepunit.py:273

References source.hepunit::electron_mass_c2, fParticleChange, G4cout, G4endl, lowEnergyLimit, Phi, Psi, and verboseLevel.

◆ ~G4LivermorePolarizedGammaConversionModel()

G4LivermorePolarizedGammaConversionModel::~G4LivermorePolarizedGammaConversionModel ( )
virtual

Definition at line 76 of file G4LivermorePolarizedGammaConversionModel.cc.

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

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

◆ G4LivermorePolarizedGammaConversionModel() [2/2]

G4LivermorePolarizedGammaConversionModel::G4LivermorePolarizedGammaConversionModel ( const G4LivermorePolarizedGammaConversionModel )
delete

Member Function Documentation

◆ ChargeSquareRatio()

G4double G4VEmModel::ChargeSquareRatio ( const G4Track track)
virtualinherited

Reimplemented in G4BraggIonGasModel, and G4BetheBlochIonGasModel.

Definition at line 374 of file G4VEmModel.cc.

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

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

Referenced by G4VEnergyLossProcess::PostStepGetPhysicalInteractionLength().

◆ ComputeCrossSectionPerAtom() [1/2]

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

Definition at line 566 of file G4VEmModel.hh.

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

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

◆ ComputeCrossSectionPerAtom() [2/2]

G4double G4LivermorePolarizedGammaConversionModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition ,
G4double  kinEnergy,
G4double  Z,
G4double  A = 0,
G4double  cut = 0,
G4double  emax = DBL_MAX 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 211 of file G4LivermorePolarizedGammaConversionModel.cc.

216{
217 if (verboseLevel > 1) {
218 G4cout << "G4LivermorePolarizedGammaConversionModel::ComputeCrossSectionPerAtom()"
219 << G4endl;
220 }
221 if (GammaEnergy < lowEnergyLimit) { return 0.0; }
222
223 G4double xs = 0.0;
224
225 G4int intZ=G4int(Z);
226
227 if(intZ < 1 || intZ > maxZ) { return xs; }
228
229 G4PhysicsFreeVector* pv = data[intZ];
230
231 // if element was not initialised
232 // do initialisation safely for MT mode
233 if(!pv)
234 {
235 InitialiseForElement(0, intZ);
236 pv = data[intZ];
237 if(!pv) { return xs; }
238 }
239 // x-section is taken from the table
240 xs = pv->Value(GammaEnergy);
241
242 if(verboseLevel > 0)
243 {
244 G4int n = pv->GetVectorLength() - 1;
245 G4cout << "****** DEBUG: tcs value for Z=" << Z << " at energy (MeV)="
246 << GammaEnergy/MeV << G4endl;
247 G4cout << " cs (Geant4 internal unit)=" << xs << G4endl;
248 G4cout << " -> first cs value in EADL data file (iu) =" << (*pv)[0] << G4endl;
249 G4cout << " -> last cs value in EADL data file (iu) =" << (*pv)[n] << G4endl;
250 G4cout << "*********************************************************" << G4endl;
251 }
252
253 return xs;
254}
double G4double
Definition: G4Types.hh:83
const G4int Z[17]
void InitialiseForElement(const G4ParticleDefinition *, G4int Z) override
G4double Value(const G4double energy, std::size_t &lastidx) const
std::size_t GetVectorLength() const

References data, G4cout, G4endl, G4PhysicsVector::GetVectorLength(), InitialiseForElement(), lowEnergyLimit, maxZ, MeV, CLHEP::detail::n, G4PhysicsVector::Value(), verboseLevel, and Z.

◆ ComputeCrossSectionPerShell()

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

Definition at line 351 of file G4VEmModel.cc.

354{
355 return 0.0;
356}

Referenced by G4EmCalculator::ComputeCrossSectionPerShell().

◆ ComputeDEDX()

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

Definition at line 528 of file G4VEmModel.hh.

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

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

◆ ComputeDEDXPerVolume()

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

◆ ComputeMeanFreePath()

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

Definition at line 553 of file G4VEmModel.hh.

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

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

◆ CorrectionsAlongStep()

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

◆ CrossSection()

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

◆ CrossSectionPerVolume()

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

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

Definition at line 237 of file G4VEmModel.cc.

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

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

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

◆ CurrentCouple()

const G4MaterialCutsCouple * G4VEmModel::CurrentCouple ( ) const
inlineprotectedinherited

◆ DeexcitationFlag()

G4bool G4VEmModel::DeexcitationFlag ( ) const
inlineinherited

Definition at line 704 of file G4VEmModel.hh.

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

References G4VEmModel::flagDeexcitation.

Referenced by G4EmModelManager::DumpModelList().

◆ DefineForRegion()

void G4VEmModel::DefineForRegion ( const G4Region )
virtualinherited

Reimplemented in G4PAIModel, and G4PAIPhotModel.

Definition at line 360 of file G4VEmModel.cc.

361{}

Referenced by G4EmModelManager::AddEmModel().

◆ Encu()

G4double G4LivermorePolarizedGammaConversionModel::Encu ( G4double p_p1,
G4double p_p2,
G4double  x0 
)
private

Definition at line 765 of file G4LivermorePolarizedGammaConversionModel.cc.

767{
768 G4int i=0;
769 G4double fx = 1.;
770 G4double x = x0;
771 const G4double xmax = 3.0;
772
773 for(i=0; i<100; ++i)
774 {
775 fx = (Flor(p_p1,x)*Glor(p_p1,x) - Ftan(p_p2, x))/
776 (Fdlor(p_p1,x) - Fdtan(p_p2,x));
777 x -= fx;
778 if(x > xmax) { return xmax; }
779 if(std::fabs(fx) <= x*1.0e-6) { break; }
780 }
781
782 if(x < 0.0) { x = 0.0; }
783 return x;
784}

References Fdlor(), Fdtan(), Flor(), Ftan(), and Glor().

Referenced by SetPhi(), and SetPsi().

◆ Fdlor()

G4double G4LivermorePolarizedGammaConversionModel::Fdlor ( G4double p_p1,
G4double  x 
)
private

Definition at line 814 of file G4LivermorePolarizedGammaConversionModel.cc.

815{
816 G4double value =0.;
817 G4double A = p_p1[1];
818 G4double w = p_p1[2];
819 G4double xc = p_p1[3];
820
821 value = (-16.*A*w*(x-xc))/
822 (pi*(w*w+4.*(x-xc)*(x-xc))*(w*w+4.*(x-xc)*(x-xc)));
823 return value;
824}
static constexpr double pi
Definition: G4SIunits.hh:55
const G4double A[17]

References A, and pi.

Referenced by Encu().

◆ Fdtan()

G4double G4LivermorePolarizedGammaConversionModel::Fdtan ( G4double p_p1,
G4double  x 
)
private

Definition at line 868 of file G4LivermorePolarizedGammaConversionModel.cc.

869{
870 G4double value =0.;
871 G4double a = p_p1[0];
872 G4double b = p_p1[1];
873
874 value = -1.*a / ((x-b)*(x-b));
875 return value;
876}

Referenced by Encu().

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

◆ Fintlor()

G4double G4LivermorePolarizedGammaConversionModel::Fintlor ( G4double p_p1,
G4double  x 
)
private

Definition at line 828 of file G4LivermorePolarizedGammaConversionModel.cc.

829{
830 G4double value =0.;
831 G4double y0 = p_p1[0];
832 G4double A = p_p1[1];
833 G4double w = p_p1[2];
834 G4double xc = p_p1[3];
835
836 value = y0*x + A*atan( 2*(x-xc)/w) / pi;
837 return value;
838}

References A, and pi.

Referenced by SetPhi().

◆ Finttan()

G4double G4LivermorePolarizedGammaConversionModel::Finttan ( G4double p_p1,
G4double  x 
)
private

Definition at line 880 of file G4LivermorePolarizedGammaConversionModel.cc.

881{
882 G4double value =0.;
883 G4double a = p_p1[0];
884 G4double b = p_p1[1];
885
886 value = a*log(b-x);
887 return value;
888}

Referenced by SetPhi().

◆ Finvlor()

G4double G4LivermorePolarizedGammaConversionModel::Finvlor ( G4double p_p1,
G4double  x,
G4double  r 
)
private

Definition at line 841 of file G4LivermorePolarizedGammaConversionModel.cc.

842{
843 G4double value = 0.;
844 G4double nor = 0.;
845 G4double w = p_p1[2];
846 G4double xc = p_p1[3];
847
848 nor = atan(2.*(pi-xc)/w)/(2.*pi*w) - atan(2.*(x-xc)/w)/(2.*pi*w);
849 value = xc - (w/2.)*tan(-2.*r*nor*pi*w+atan(2*(xc-x)/w));
850
851 return value;
852}

References pi.

Referenced by SetPhi().

◆ Finvtan()

G4double G4LivermorePolarizedGammaConversionModel::Finvtan ( G4double p_p1,
G4double  cnor,
G4double  r 
)
private

Definition at line 892 of file G4LivermorePolarizedGammaConversionModel.cc.

893{
894 G4double value =0.;
895 G4double a = p_p1[0];
896 G4double b = p_p1[1];
897
898 value = b*(1-G4Exp(r*cnor/a));
899
900 return value;
901}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179

References G4Exp().

Referenced by SetPhi().

◆ Fln()

G4double G4LivermorePolarizedGammaConversionModel::Fln ( G4double  a,
G4double  b,
G4double  x 
)
private

Definition at line 748 of file G4LivermorePolarizedGammaConversionModel.cc.

750{
751 G4double value=0.;
752 if(x>0.)
753 {
754 value =(a*log(x)-b);
755 }
756 else
757 {
758 //G4cout << "ERROR in Fln! " << G4endl;
759 }
760 return value;
761}

Referenced by SetPhi(), and SetPsi().

◆ Flor()

G4double G4LivermorePolarizedGammaConversionModel::Flor ( G4double p_p1,
G4double  x 
)
private

Definition at line 788 of file G4LivermorePolarizedGammaConversionModel.cc.

789{
790 G4double value =0.;
791 G4double w = p_p1[2];
792 G4double xc = p_p1[3];
793
794 value = 1./(pi*(w*w + 4.*(x-xc)*(x-xc)));
795 return value;
796}

References pi.

Referenced by Encu(), and SetPsi().

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

◆ Ftan()

G4double G4LivermorePolarizedGammaConversionModel::Ftan ( G4double p_p1,
G4double  x 
)
private

Definition at line 856 of file G4LivermorePolarizedGammaConversionModel.cc.

857{
858 G4double value =0.;
859 G4double a = p_p1[0];
860 G4double b = p_p1[1];
861
862 value = a /(x-b);
863 return value;
864}

Referenced by Encu(), and SetPsi().

◆ GetAngularDistribution()

G4VEmAngularDistribution * G4VEmModel::GetAngularDistribution ( )
inlineinherited

Definition at line 621 of file G4VEmModel.hh.

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

References G4VEmModel::anglModel.

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

◆ GetChargeSquareRatio()

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

◆ GetCrossSectionTable()

G4PhysicsTable * G4VEmModel::GetCrossSectionTable ( )
inlineinherited

◆ GetCurrentElement()

const G4Element * G4VEmModel::GetCurrentElement ( ) const
inlineinherited

◆ GetCurrentIsotope()

const G4Isotope * G4VEmModel::GetCurrentIsotope ( ) const
inlineinherited

Definition at line 512 of file G4VEmModel.hh.

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

References G4VEmModel::fCurrentIsotope.

Referenced by G4VEmProcess::GetTargetIsotope().

◆ GetElementData()

G4ElementData * G4VEmModel::GetElementData ( )
inlineinherited

◆ GetElementSelectors()

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

◆ 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(), Initialise(), G4LivermorePolarizedRayleighModel::Initialise(), G4LivermoreRayleighModel::Initialise(), G4LowEPComptonModel::Initialise(), G4LowEPPolarizedComptonModel::Initialise(), G4MicroElecElasticModel::Initialise(), G4MicroElecElasticModel_new::Initialise(), G4MicroElecInelasticModel::Initialise(), G4MicroElecInelasticModel_new::Initialise(), G4MicroElecLOPhononModel::Initialise(), G4PenelopeAnnihilationModel::Initialise(), G4PenelopeComptonModel::Initialise(), G4PenelopeGammaConversionModel::Initialise(), G4PenelopePhotoElectricModel::Initialise(), G4PenelopeRayleighModel::Initialise(), G4PenelopeRayleighModelMI::Initialise(), G4PolarizedAnnihilationModel::Initialise(), G4BetheHeitlerModel::Initialise(), G4eCoulombScatteringModel::Initialise(), G4eDPWACoulombScatteringModel::Initialise(), G4eeToTwoGammaModel::Initialise(), G4eplusTo2GammaOKVIModel::Initialise(), G4hCoulombScatteringModel::Initialise(), G4KleinNishinaCompton::Initialise(), G4KleinNishinaModel::Initialise(), G4PairProductionRelModel::Initialise(), G4PEEffectFluoModel::Initialise(), G4XrayRayleighModel::Initialise(), G4DNABornExcitationModel1::Initialise(), G4DNABornExcitationModel2::Initialise(), G4DNABornIonisationModel1::Initialise(), G4DNABornIonisationModel2::Initialise(), G4DNACPA100ExcitationModel::Initialise(), G4DNACPA100IonisationModel::Initialise(), G4DNADiracRMatrixExcitationModel::Initialise(), G4DNAEmfietzoglouExcitationModel::Initialise(), G4DNAEmfietzoglouIonisationModel::Initialise(), G4DNAQuinnPlasmonExcitationModel::Initialise(), G4DNARelativisticIonisationModel::Initialise(), G4DNAELSEPAElasticModel::Initialise(), G4DNAModelInterface::Initialise(), and G4DNAIonElasticModel::Initialise().

◆ GetParticleChangeForLoss()

G4ParticleChangeForLoss * G4VEmModel::GetParticleChangeForLoss ( )
protectedinherited

◆ GetParticleCharge()

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

◆ GetPerpendicularPolarization()

G4ThreeVector G4LivermorePolarizedGammaConversionModel::GetPerpendicularPolarization ( const G4ThreeVector direction0,
const G4ThreeVector polarization0 
) const
private

Definition at line 946 of file G4LivermorePolarizedGammaConversionModel.cc.

948{
949 //
950 // The polarization of a photon is always perpendicular to its momentum direction.
951 // Therefore this function removes those vector component of gammaPolarization, which
952 // points in direction of gammaDirection
953 //
954 // Mathematically we search the projection of the vector a on the plane E, where n is the
955 // plains normal vector.
956 // The basic equation can be found in each geometry book (e.g. Bronstein):
957 // p = a - (a o n)/(n o n)*n
958
959 return gammaPolarization - gammaPolarization.dot(gammaDirection)/gammaDirection.dot(gammaDirection) * gammaDirection;
960}

References CLHEP::Hep3Vector::dot().

Referenced by SampleSecondaries().

◆ GetRandomPolarization()

G4ThreeVector G4LivermorePolarizedGammaConversionModel::GetRandomPolarization ( G4ThreeVector direction0)
private

Definition at line 922 of file G4LivermorePolarizedGammaConversionModel.cc.

923{
924 G4ThreeVector d0 = direction0.unit();
925 G4ThreeVector a1 = SetPerpendicularVector(d0); //different orthogonal
926 G4ThreeVector a0 = a1.unit(); // unit vector
927
928 G4double rand1 = G4UniformRand();
929
930 G4double angle = twopi*rand1; // random polar angle
931 G4ThreeVector b0 = d0.cross(a0); // cross product
932
934
935 c.setX(std::cos(angle)*(a0.x())+std::sin(angle)*b0.x());
936 c.setY(std::cos(angle)*(a0.y())+std::sin(angle)*b0.y());
937 c.setZ(std::cos(angle)*(a0.z())+std::sin(angle)*b0.z());
938
939 G4ThreeVector c0 = c.unit();
940
941 return c0;
942}
const G4double a0
static constexpr double twopi
Definition: G4SIunits.hh:56
static const G4double angle[DIMMOTT]
#define G4UniformRand()
Definition: Randomize.hh:52
double z() const
Hep3Vector unit() const
double x() const
void setY(double)
double y() const
Hep3Vector cross(const Hep3Vector &) const
void setZ(double)
void setX(double)

References a0, angle, CLHEP::Hep3Vector::cross(), G4UniformRand, SetPerpendicularVector(), CLHEP::Hep3Vector::setX(), CLHEP::Hep3Vector::setY(), CLHEP::Hep3Vector::setZ(), twopi, CLHEP::Hep3Vector::unit(), CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

Referenced by SampleSecondaries().

◆ GetTripletModel()

G4VEmModel * G4VEmModel::GetTripletModel ( )
inlineinherited

◆ Glor()

G4double G4LivermorePolarizedGammaConversionModel::Glor ( G4double p_p1,
G4double  x 
)
private

Definition at line 800 of file G4LivermorePolarizedGammaConversionModel.cc.

801{
802 G4double value =0.;
803 G4double y0 = p_p1[0];
804 G4double A = p_p1[1];
805 G4double w = p_p1[2];
806 G4double xc = p_p1[3];
807
808 value = (y0 *pi*(w*w + 4.*(x-xc)*(x-xc)) + 2.*A*w);
809 return value;
810}

References A, and pi.

Referenced by Encu(), and SetPhi().

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

Implements G4VEmModel.

Definition at line 90 of file G4LivermorePolarizedGammaConversionModel.cc.

92{
93 if (verboseLevel > 1)
94 {
95 G4cout << "Calling1 G4LivermorePolarizedGammaConversionModel::Initialise()"
96 << G4endl
97 << "Energy range: "
98 << LowEnergyLimit() / MeV << " MeV - "
99 << HighEnergyLimit() / GeV << " GeV"
100 << G4endl;
101 }
102
103 if(IsMaster())
104 {
105 // Initialise element selector
106 InitialiseElementSelectors(particle, cuts);
107
108 // Access to elements
109 char* path = std::getenv("G4LEDATA");
110
111 G4ProductionCutsTable* theCoupleTable =
113
114 G4int numOfCouples = theCoupleTable->GetTableSize();
115
116 for(G4int i=0; i<numOfCouples; ++i)
117 {
118 const G4Material* material =
119 theCoupleTable->GetMaterialCutsCouple(i)->GetMaterial();
120 const G4ElementVector* theElementVector = material->GetElementVector();
121 G4int nelm = material->GetNumberOfElements();
122
123 for (G4int j=0; j<nelm; ++j)
124 {
125 G4int Z = (G4int)(*theElementVector)[j]->GetZ();
126 if(Z < 1) { Z = 1; }
127 else if(Z > maxZ) { Z = maxZ; }
128 if(!data[Z]) { ReadData(Z, path); }
129 }
130 }
131 }
132 if(isInitialised) { return; }
134 isInitialised = true;
135}
std::vector< const G4Element * > G4ElementVector
static constexpr double GeV
Definition: G4SIunits.hh:203
const G4Material * GetMaterial() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
G4ParticleChangeForGamma * GetParticleChangeForGamma()
Definition: G4VEmModel.cc:123
G4double LowEnergyLimit() const
Definition: G4VEmModel.hh:662
G4double HighEnergyLimit() const
Definition: G4VEmModel.hh:655
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
Definition: G4VEmModel.cc:138

References data, fParticleChange, G4cout, G4endl, G4MaterialCutsCouple::GetMaterial(), G4ProductionCutsTable::GetMaterialCutsCouple(), G4VEmModel::GetParticleChangeForGamma(), G4ProductionCutsTable::GetProductionCutsTable(), G4ProductionCutsTable::GetTableSize(), GeV, G4VEmModel::HighEnergyLimit(), G4VEmModel::InitialiseElementSelectors(), isInitialised, G4VEmModel::IsMaster(), G4VEmModel::LowEnergyLimit(), eplot::material, maxZ, MeV, ReadData(), verboseLevel, and Z.

◆ 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}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
bool G4bool
Definition: G4Types.hh:86
static G4EmParameters * Instance()
G4int NumberOfBinsPerDecade() const
virtual G4double MinPrimaryEnergy(const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
Definition: G4VEmModel.cc:415
G4double lowLimit
Definition: G4VEmModel.hh:436
G4int nSelectors
Definition: G4VEmModel.hh:443
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)=0
T max(const T t1, const T t2)
brief Return the largest of the two arguments

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(), 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 G4LivermorePolarizedGammaConversionModel::InitialiseForElement ( const G4ParticleDefinition ,
G4int  Z 
)
overridevirtual

◆ InitialiseForMaterial()

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

Definition at line 209 of file G4VEmModel.cc.

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

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

Referenced by G4EmCalculator::FindEmModel().

◆ InitialiseLocal()

void G4LivermorePolarizedGammaConversionModel::InitialiseLocal ( const G4ParticleDefinition ,
G4VEmModel masterModel 
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 139 of file G4LivermorePolarizedGammaConversionModel.cc.

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

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

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

◆ LPMFlag()

G4bool G4VEmModel::LPMFlag ( ) const
inlineinherited

◆ MaxSecondaryEnergy()

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

◆ MaxSecondaryKinEnergy()

G4double G4VEmModel::MaxSecondaryKinEnergy ( const G4DynamicParticle dynParticle)
inlineinherited

◆ MinEnergyCut()

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

◆ MinPrimaryEnergy()

G4double G4LivermorePolarizedGammaConversionModel::MinPrimaryEnergy ( const G4Material ,
const G4ParticleDefinition ,
G4double   
)
overridevirtual

Reimplemented from G4VEmModel.

Definition at line 147 of file G4LivermorePolarizedGammaConversionModel.cc.

149{
150 return lowEnergyLimit;
151}

References lowEnergyLimit.

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

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

◆ PolarAngleLimit()

G4double G4VEmModel::PolarAngleLimit ( ) const
inlineinherited

◆ Poli()

G4double G4LivermorePolarizedGammaConversionModel::Poli ( G4double  a,
G4double  b,
G4double  c,
G4double  x 
)
private

Definition at line 731 of file G4LivermorePolarizedGammaConversionModel.cc.

733{
734 G4double value=0.;
735 if(x>0.)
736 {
737 value =(a + b/x + c/(x*x*x));
738 }
739 else
740 {
741 //G4cout << "ERROR in Poli! " << G4endl;
742 }
743 return value;
744}

Referenced by SetPhi(), and SetPsi().

◆ ReadData()

void G4LivermorePolarizedGammaConversionModel::ReadData ( size_t  Z,
const char *  path = 0 
)
private

Definition at line 155 of file G4LivermorePolarizedGammaConversionModel.cc.

156{
157 if (verboseLevel > 1)
158 {
159 G4cout << "Calling ReadData() of G4LivermorePolarizedGammaConversionModel"
160 << G4endl;
161 }
162
163 if(data[Z]) { return; }
164
165 const char* datadir = path;
166
167 if(!datadir)
168 {
169 datadir = std::getenv("G4LEDATA");
170 if(!datadir)
171 {
172 G4Exception("G4LivermorePolarizedGammaConversionModel::ReadData()",
173 "em0006",FatalException,
174 "Environment variable G4LEDATA not defined");
175 return;
176 }
177 }
178 //
179 data[Z] = new G4PhysicsFreeVector(0,/*spline=*/true);
180 //
181 std::ostringstream ost;
182 ost << datadir << "/livermore/pair/pp-cs-" << Z <<".dat";
183 std::ifstream fin(ost.str().c_str());
184
185 if( !fin.is_open())
186 {
188 ed << "G4LivermorePolarizedGammaConversionModel data file <" << ost.str().c_str()
189 << "> is not opened!" << G4endl;
190 G4Exception("G4LivermorePolarizedGammaConversionModel::ReadData()",
191 "em0003",FatalException,
192 ed,"G4LEDATA version should be G4EMLOW6.27 or later.");
193 return;
194 }
195 else
196 {
197
198 if(verboseLevel > 3) { G4cout << "File " << ost.str()
199 << " is opened by G4LivermorePolarizedGammaConversionModel" << G4endl;}
200
201 data[Z]->Retrieve(fin, true);
202 }
203
204 // Activation of spline interpolation
206
207}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4bool Retrieve(std::ifstream &fIn, G4bool ascii=false)
void FillSecondDerivatives(const G4SplineType=G4SplineType::Base, const G4double dir1=0.0, const G4double dir2=0.0)

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

Referenced by Initialise(), and InitialiseForElement().

◆ SampleSecondaries()

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

Implements G4VEmModel.

Definition at line 259 of file G4LivermorePolarizedGammaConversionModel.cc.

264{
265
266 // Fluorescence generated according to:
267 // J. Stepanek ,"A program to determine the radiation spectra due to a single atomic
268 // subshell ionisation by a particle or due to deexcitation or decay of radionuclides",
269 // Comp. Phys. Comm. 1206 pp 1-1-9 (1997)
270 if (verboseLevel > 3)
271 G4cout << "Calling SampleSecondaries() of G4LivermorePolarizedGammaConversionModel" << G4endl;
272
273 G4double photonEnergy = aDynamicGamma->GetKineticEnergy();
274
275 if(photonEnergy <= lowEnergyLimit)
276 {
279 return;
280 }
281
282 G4ThreeVector gammaPolarization0 = aDynamicGamma->GetPolarization();
283 G4ThreeVector gammaDirection0 = aDynamicGamma->GetMomentumDirection();
284
285 // Make sure that the polarization vector is perpendicular to the
286 // gamma direction. If not
287 if(!(gammaPolarization0.isOrthogonal(gammaDirection0, 1e-6))||(gammaPolarization0.mag()==0))
288 { // only for testing now
289 gammaPolarization0 = GetRandomPolarization(gammaDirection0);
290 }
291 else
292 {
293 if ( gammaPolarization0.howOrthogonal(gammaDirection0) != 0)
294 {
295 gammaPolarization0 = GetPerpendicularPolarization(gammaDirection0, gammaPolarization0);
296 }
297 }
298
299 // End of Protection
300
302 G4double epsilon0Local = electron_mass_c2 / photonEnergy ;
303
304 // Do it fast if photon energy < 2. MeV
305
306 if (photonEnergy < smallEnergy )
307 {
308 epsilon = epsilon0Local + (0.5 - epsilon0Local) * G4UniformRand();
309 }
310 else
311 {
312 // Select randomly one element in the current material
313 const G4ParticleDefinition* particle = aDynamicGamma->GetDefinition();
314 const G4Element* element = SelectRandomAtom(couple,particle,photonEnergy);
315
316 if (element == nullptr)
317 {
318 G4cout << "G4LivermorePolarizedGammaConversionModel::SampleSecondaries - element = 0" << G4endl;
319 return;
320 }
321
322
323 G4IonisParamElm* ionisation = element->GetIonisation();
324 if (ionisation == nullptr)
325 {
326 G4cout << "G4LivermorePolarizedGammaConversionModel::SampleSecondaries - ionisation = 0" << G4endl;
327 return;
328 }
329
330 // Extract Coulomb factor for this Element
331 G4double fZ = 8. * (ionisation->GetlogZ3());
332 if (photonEnergy > 50. * MeV) fZ += 8. * (element->GetfCoulomb());
333
334 // Limits of the screening variable
335 G4double screenFactor = 136. * epsilon0Local / (element->GetIonisation()->GetZ3()) ;
336 G4double screenMax = G4Exp ((42.24 - fZ)/8.368) - 0.952 ;
337 G4double screenMin = std::min(4.*screenFactor,screenMax) ;
338
339 // Limits of the energy sampling
340 G4double epsilon1 = 0.5 - 0.5 * sqrt(1. - screenMin / screenMax) ;
341 G4double epsilonMin = std::max(epsilon0Local,epsilon1);
342 G4double epsilonRange = 0.5 - epsilonMin ;
343
344 // Sample the energy rate of the created electron (or positron)
345 G4double screen;
346 G4double gReject ;
347
348 G4double f10 = ScreenFunction1(screenMin) - fZ;
349 G4double f20 = ScreenFunction2(screenMin) - fZ;
350 G4double normF1 = std::max(f10 * epsilonRange * epsilonRange,0.);
351 G4double normF2 = std::max(1.5 * f20,0.);
352
353 do {
354 if (normF1 / (normF1 + normF2) > G4UniformRand() )
355 {
356 epsilon = 0.5 - epsilonRange * pow(G4UniformRand(), 0.3333) ;
357 screen = screenFactor / (epsilon * (1. - epsilon));
358 gReject = (ScreenFunction1(screen) - fZ) / f10 ;
359 }
360 else
361 {
362 epsilon = epsilonMin + epsilonRange * G4UniformRand();
363 screen = screenFactor / (epsilon * (1 - epsilon));
364 gReject = (ScreenFunction2(screen) - fZ) / f20 ;
365 }
366 } while ( gReject < G4UniformRand() );
367 } // End of epsilon sampling
368
369 // Fix charges randomly
370 G4double electronTotEnergy;
371 G4double positronTotEnergy;
372
373 if (G4UniformRand() > 0.5)
374 {
375 electronTotEnergy = (1. - epsilon) * photonEnergy;
376 positronTotEnergy = epsilon * photonEnergy;
377 }
378 else
379 {
380 positronTotEnergy = (1. - epsilon) * photonEnergy;
381 electronTotEnergy = epsilon * photonEnergy;
382 }
383
384 // Scattered electron (positron) angles. ( Z - axis along the parent photon)
385 // Universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211),
386 // derived from Tsai distribution (Rev. Mod. Phys. 49, 421 (1977)
387 G4double Ene = electronTotEnergy/electron_mass_c2; // Normalized energy
388
389 G4double cosTheta = 0.;
390 G4double sinTheta = 0.;
391
392 SetTheta(&cosTheta,&sinTheta,Ene);
393 G4double phi,psi=0.;
394
395 //corrected e+ e- angular angular distribution //preliminary!
396 phi = SetPhi(photonEnergy);
397 psi = SetPsi(photonEnergy,phi);
398 Psi = psi;
399 Phi = phi;
400
401 G4double phie, phip;
402 G4double choice, choice2;
403 choice = G4UniformRand();
404 choice2 = G4UniformRand();
405
406 if (choice2 <= 0.5)
407 {
408 // do nothing
409 // phi = phi;
410 }
411 else
412 {
413 phi = -phi;
414 }
415
416 if (choice <= 0.5)
417 {
418 phie = psi; //azimuthal angle for the electron
419 phip = phie+phi; //azimuthal angle for the positron
420 }
421 else
422 {
423 // opzione 1 phie / phip equivalenti
424 phip = psi; //azimuthal angle for the positron
425 phie = phip + phi; //azimuthal angle for the electron
426 }
427
428
429 // Electron Kinematics
430 G4double dirX = sinTheta*cos(phie);
431 G4double dirY = sinTheta*sin(phie);
432 G4double dirZ = cosTheta;
433 G4ThreeVector electronDirection(dirX,dirY,dirZ);
434
435 // Kinematics of the created pair:
436 // the electron and positron are assumed to have a symetric angular
437 // distribution with respect to the Z axis along the parent photon
438
439 G4double electronKineEnergy = std::max(0.,electronTotEnergy - electron_mass_c2) ;
440
441 SystemOfRefChange(gammaDirection0,electronDirection,
442 gammaPolarization0);
443
445 electronDirection,
446 electronKineEnergy);
447
448 // The e+ is always created (even with kinetic energy = 0) for further annihilation
449 Ene = positronTotEnergy/electron_mass_c2; // Normalized energy
450
451 cosTheta = 0.;
452 sinTheta = 0.;
453
454 SetTheta(&cosTheta,&sinTheta,Ene);
455
456 // Positron Kinematics
457 dirX = sinTheta*cos(phip);
458 dirY = sinTheta*sin(phip);
459 dirZ = cosTheta;
460 G4ThreeVector positronDirection(dirX,dirY,dirZ);
461
462 G4double positronKineEnergy = std::max(0.,positronTotEnergy - electron_mass_c2) ;
463 SystemOfRefChange(gammaDirection0,positronDirection,
464 gammaPolarization0);
465
466 // Create G4DynamicParticle object for the particle2
468 positronDirection, positronKineEnergy);
469 fvect->push_back(particle1);
470 fvect->push_back(particle2);
471
472 // Kill the incident photon
475}
G4double epsilon(G4double density, G4double temperature)
@ fStopAndKill
bool isOrthogonal(const Hep3Vector &v, double epsilon=tolerance) const
Definition: SpaceVector.cc:233
double mag() const
double howOrthogonal(const Hep3Vector &v) const
Definition: SpaceVector.cc:215
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4ThreeVector & GetPolarization() const
static G4Electron * Electron()
Definition: G4Electron.cc:93
G4double GetfCoulomb() const
Definition: G4Element.hh:191
G4IonisParamElm * GetIonisation() const
Definition: G4Element.hh:199
G4double GetlogZ3() const
G4double GetZ3() const
G4ThreeVector GetPerpendicularPolarization(const G4ThreeVector &direction0, const G4ThreeVector &polarization0) const
void SystemOfRefChange(G4ThreeVector &direction0, G4ThreeVector &direction1, G4ThreeVector &polarization0)
G4ThreeVector GetRandomPolarization(G4ThreeVector &direction0)
void SetProposedKineticEnergy(G4double proposedKinEnergy)
static G4Positron * Positron()
Definition: G4Positron.cc:93
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.hh:580
void ProposeTrackStatus(G4TrackStatus status)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References G4Electron::Electron(), source.hepunit::electron_mass_c2, epsilon(), fParticleChange, fStopAndKill, G4cout, G4endl, G4Exp(), G4UniformRand, G4DynamicParticle::GetDefinition(), G4Element::GetfCoulomb(), G4Element::GetIonisation(), G4DynamicParticle::GetKineticEnergy(), G4IonisParamElm::GetlogZ3(), G4DynamicParticle::GetMomentumDirection(), GetPerpendicularPolarization(), G4DynamicParticle::GetPolarization(), GetRandomPolarization(), G4IonisParamElm::GetZ3(), CLHEP::Hep3Vector::howOrthogonal(), CLHEP::Hep3Vector::isOrthogonal(), lowEnergyLimit, CLHEP::Hep3Vector::mag(), G4INCL::Math::max(), MeV, G4INCL::Math::min(), Phi, G4Positron::Positron(), G4VParticleChange::ProposeTrackStatus(), Psi, ScreenFunction1(), ScreenFunction2(), G4VEmModel::SelectRandomAtom(), SetPhi(), G4ParticleChangeForGamma::SetProposedKineticEnergy(), SetPsi(), SetTheta(), smallEnergy, SystemOfRefChange(), and verboseLevel.

◆ ScreenFunction1()

G4double G4LivermorePolarizedGammaConversionModel::ScreenFunction1 ( G4double  screenVariable)
private

Definition at line 479 of file G4LivermorePolarizedGammaConversionModel.cc.

480{
481 // Compute the value of the screening function 3*phi1 - phi2
482 G4double value;
483 if (screenVariable > 1.)
484 value = 42.24 - 8.368 * log(screenVariable + 0.952);
485 else
486 value = 42.392 - screenVariable * (7.796 - 1.961 * screenVariable);
487
488 return value;
489}

Referenced by SampleSecondaries().

◆ ScreenFunction2()

G4double G4LivermorePolarizedGammaConversionModel::ScreenFunction2 ( G4double  screenVariable)
private

Definition at line 493 of file G4LivermorePolarizedGammaConversionModel.cc.

494{
495 // Compute the value of the screening function 1.5*phi1 - 0.5*phi2
496 G4double value;
497
498 if (screenVariable > 1.)
499 value = 42.24 - 8.368 * log(screenVariable + 0.952);
500 else
501 value = 41.405 - screenVariable * (5.828 - 0.8945 * screenVariable);
502
503 return value;
504}

Referenced by SampleSecondaries().

◆ SecondaryThreshold()

G4double G4VEmModel::SecondaryThreshold ( ) const
inlineinherited

◆ SelectIsotopeNumber()

G4int G4VEmModel::SelectIsotopeNumber ( const G4Element elm)
inherited

Definition at line 319 of file G4VEmModel.cc.

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

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

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

◆ SelectRandomAtom() [1/2]

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

Definition at line 275 of file G4VEmModel.cc.

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

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

◆ SelectRandomAtom() [2/2]

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

Definition at line 580 of file G4VEmModel.hh.

585{
586 SetCurrentCouple(couple);
588 ((*elmSelectors)[couple->GetIndex()])->SelectRandomAtom(kinEnergy) :
589 SelectRandomAtom(pBaseMaterial,part,kinEnergy,cutEnergy,maxEnergy);
590 fCurrentIsotope = nullptr;
591 return fCurrentElement;
592}

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(), SampleSecondaries(), G4LivermorePolarizedRayleighModel::SampleSecondaries(), G4LivermoreRayleighModel::SampleSecondaries(), G4LowEPComptonModel::SampleSecondaries(), G4LowEPPolarizedComptonModel::SampleSecondaries(), G4PenelopePhotoElectricModel::SampleSecondaries(), G4MuBremsstrahlungModel::SampleSecondaries(), G4MuPairProductionModel::SampleSecondaries(), G4hCoulombScatteringModel::SampleSecondaries(), G4KleinNishinaModel::SampleSecondaries(), G4PEEffectFluoModel::SampleSecondaries(), G4VEmModel::SelectRandomAtom(), and G4VEmModel::SelectTargetAtom().

◆ SelectRandomAtomNumber()

G4int G4VEmModel::SelectRandomAtomNumber ( const G4Material mat)
inherited

◆ SelectTargetAtom()

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

◆ SetActivationHighEnergyLimit()

void G4VEmModel::SetActivationHighEnergyLimit ( G4double  val)
inlineinherited

◆ SetActivationLowEnergyLimit()

void G4VEmModel::SetActivationLowEnergyLimit ( G4double  val)
inlineinherited

◆ SetAngularDistribution()

void G4VEmModel::SetAngularDistribution ( G4VEmAngularDistribution p)
inlineinherited

Definition at line 628 of file G4VEmModel.hh.

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

References G4VEmModel::anglModel.

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

◆ SetAngularGeneratorFlag()

void G4VEmModel::SetAngularGeneratorFlag ( G4bool  val)
inlineinherited

Definition at line 725 of file G4VEmModel.hh.

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

References G4VEmModel::useAngularGenerator.

Referenced by G4VEnergyLossProcess::PreparePhysicsTable().

◆ SetCrossSectionTable()

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

Definition at line 455 of file G4VEmModel.cc.

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

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

Referenced by G4VMultipleScattering::BuildPhysicsTable().

◆ SetCurrentCouple()

void G4VEmModel::SetCurrentCouple ( const G4MaterialCutsCouple ptr)
inlineinherited

Definition at line 472 of file G4VEmModel.hh.

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

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

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

◆ SetCurrentElement()

void G4VEmModel::SetCurrentElement ( const G4Element elm)
inlineprotectedinherited

◆ SetDeexcitationFlag()

void G4VEmModel::SetDeexcitationFlag ( G4bool  val)
inlineinherited

Definition at line 823 of file G4VEmModel.hh.

824{
825 flagDeexcitation = val;
826}

References G4VEmModel::flagDeexcitation.

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

◆ SetElementSelectors()

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

Definition at line 852 of file G4VEmModel.hh.

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

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

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

◆ SetFluctuationFlag()

void G4VEmModel::SetFluctuationFlag ( G4bool  val)
inlineinherited

Definition at line 732 of file G4VEmModel.hh.

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

References G4VEmModel::lossFlucFlag.

Referenced by G4EmCalculator::ComputeNuclearDEDX().

◆ SetForceBuildTable()

void G4VEmModel::SetForceBuildTable ( G4bool  val)
inlineinherited

Definition at line 830 of file G4VEmModel.hh.

831{
833}

References G4VEmModel::flagForceBuildTable.

◆ SetHighEnergyLimit()

void G4VEmModel::SetHighEnergyLimit ( G4double  val)
inlineinherited

Definition at line 767 of file G4VEmModel.hh.

768{
769 highLimit = val;
770}

References G4VEmModel::highLimit.

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

◆ SetLocked()

void G4VEmModel::SetLocked ( G4bool  val)
inlineinherited

◆ SetLowEnergyLimit()

void G4VEmModel::SetLowEnergyLimit ( G4double  val)
inlineinherited

Definition at line 774 of file G4VEmModel.hh.

775{
776 lowLimit = val;
777}

References G4VEmModel::lowLimit.

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

◆ SetLPMFlag()

void G4VEmModel::SetLPMFlag ( G4bool  val)
inlineinherited

◆ SetMasterThread()

void G4VEmModel::SetMasterThread ( G4bool  val)
inlineinherited

◆ SetParticleChange()

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

◆ SetPerpendicularVector()

G4ThreeVector G4LivermorePolarizedGammaConversionModel::SetPerpendicularVector ( G4ThreeVector a)
private

Definition at line 905 of file G4LivermorePolarizedGammaConversionModel.cc.

906{
907 G4double dx = a.x();
908 G4double dy = a.y();
909 G4double dz = a.z();
910 G4double x = dx < 0.0 ? -dx : dx;
911 G4double y = dy < 0.0 ? -dy : dy;
912 G4double z = dz < 0.0 ? -dz : dz;
913 if (x < y) {
914 return x < z ? G4ThreeVector(-dy,dx,0) : G4ThreeVector(0,-dz,dy);
915 }else{
916 return y < z ? G4ThreeVector(dz,0,-dx) : G4ThreeVector(-dy,dx,0);
917 }
918}
CLHEP::Hep3Vector G4ThreeVector

References CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

Referenced by GetRandomPolarization().

◆ SetPhi()

G4double G4LivermorePolarizedGammaConversionModel::SetPhi ( G4double  Energy)
private

Definition at line 521 of file G4LivermorePolarizedGammaConversionModel.cc.

522{
523 G4double value = 0.;
524 G4double Ene = Energy/MeV;
525
526 G4double pl[4];
527 G4double pt[2];
528 G4double xi = 0;
529 G4double xe = 0.;
530 G4double n1=0.;
531 G4double n2=0.;
532
533 if (Ene>=50.)
534 {
535 const G4double ay0=5.6, by0=18.6, aa0=2.9, ba0 = 8.16E-3;
536 const G4double aw = 0.0151, bw = 10.7, cw = -410.;
537
538 const G4double axc = 3.1455, bxc = -1.11, cxc = 310.;
539
540 pl[0] = Fln(ay0,by0,Ene);
541 pl[1] = aa0 + ba0*(Ene);
542 pl[2] = Poli(aw,bw,cw,Ene);
543 pl[3] = Poli(axc,bxc,cxc,Ene);
544
545 const G4double abf = 3.1216, bbf = 2.68;
546 pt[0] = -1.4;
547 pt[1] = abf + bbf/Ene;
548
549 xi = 3.0;
550 xe = Encu(pl,pt,xi);
551 n1 = Fintlor(pl,pi) - Fintlor(pl,xe);
552 n2 = Finttan(pt,xe) - Finttan(pt,0.);
553 }
554 else
555 {
556 const G4double ay0=0.144, by0=0.11;
557 const G4double aa0=2.7, ba0 = 2.74;
558 const G4double aw = 0.21, bw = 10.8, cw = -58.;
559 const G4double axc = 3.17, bxc = -0.87, cxc = -6.;
560
561 pl[0] = Fln(ay0, by0, Ene);
562 pl[1] = Fln(aa0, ba0, Ene);
563 pl[2] = Poli(aw,bw,cw,Ene);
564 pl[3] = Poli(axc,bxc,cxc,Ene);
565
566 n1 = Fintlor(pl,pi) - Fintlor(pl,xe);
567 }
568
569
570 G4double n=0.;
571 n = n1+n2;
572
573 G4double c1 = 0.;
574 c1 = Glor(pl, xe);
575
576 G4double r1,r2,r3;
577 G4double xco=0.;
578
579 if (Ene>=50.)
580 {
581 r1= G4UniformRand();
582 if( r1>=n2/n)
583 {
584 do
585 {
586 r2 = G4UniformRand();
587 value = Finvlor(pl,xe,r2);
588 xco = Glor(pl,value)/c1;
589 r3 = G4UniformRand();
590 } while(r3>=xco);
591 }
592 else
593 {
594 value = Finvtan(pt,n,r1);
595 }
596 }
597 else
598 {
599 do
600 {
601 r2 = G4UniformRand();
602 value = Finvlor(pl,xe,r2);
603 xco = Glor(pl,value)/c1;
604 r3 = G4UniformRand();
605 } while(r3>=xco);
606 }
607 return value;
608}
G4double Poli(G4double, G4double, G4double, G4double)

References Encu(), Fintlor(), Finttan(), Finvlor(), Finvtan(), Fln(), G4UniformRand, Glor(), MeV, CLHEP::detail::n, pi, and Poli().

Referenced by SampleSecondaries().

◆ SetPolarAngleLimit()

void G4VEmModel::SetPolarAngleLimit ( G4double  val)
inlineinherited

◆ SetPsi()

G4double G4LivermorePolarizedGammaConversionModel::SetPsi ( G4double  Energy,
G4double  PhiLocal 
)
private

Definition at line 612 of file G4LivermorePolarizedGammaConversionModel.cc.

613{
614 G4double value = 0.;
615 G4double Ene = Energy/MeV;
616
617 G4double p0l[4];
618 G4double ppml[4];
619 G4double p0t[2];
620 G4double ppmt[2];
621
622 G4double xi = 0.;
623 G4double xe0 = 0.;
624 G4double xepm = 0.;
625
626 if (Ene>=50.)
627 {
628 const G4double ay00 = 3.4, by00 = 9.8, aa00 = 1.34, ba00 = 5.3;
629 const G4double aw0 = 0.014, bw0 = 9.7, cw0 = -2.E4;
630 const G4double axc0 = 3.1423, bxc0 = -2.35, cxc0 = 0.;
631 const G4double ay0p = 1.53, by0p = 3.2, aap = 0.67, bap = 8.5E-3;
632 const G4double awp = 6.9E-3, bwp = 12.6, cwp = -3.8E4;
633 const G4double axcp = 2.8E-3,bxcp = -3.133;
634 const G4double abf0 = 3.1213, bbf0 = 2.61;
635 const G4double abfpm = 3.1231, bbfpm = 2.84;
636
637 p0l[0] = Fln(ay00, by00, Ene);
638 p0l[1] = Fln(aa00, ba00, Ene);
639 p0l[2] = Poli(aw0, bw0, cw0, Ene);
640 p0l[3] = Poli(axc0, bxc0, cxc0, Ene);
641
642 ppml[0] = Fln(ay0p, by0p, Ene);
643 ppml[1] = aap + bap*(Ene);
644 ppml[2] = Poli(awp, bwp, cwp, Ene);
645 ppml[3] = Fln(axcp,bxcp,Ene);
646
647 p0t[0] = -0.81;
648 p0t[1] = abf0 + bbf0/Ene;
649 ppmt[0] = -0.6;
650 ppmt[1] = abfpm + bbfpm/Ene;
651
652 xi = 3.0;
653 xe0 = Encu(p0l, p0t, xi);
654 xepm = Encu(ppml, ppmt, xi);
655 }
656 else
657 {
658 const G4double ay00 = 2.82, by00 = 6.35;
659 const G4double aa00 = -1.75, ba00 = 0.25;
660
661 const G4double aw0 = 0.028, bw0 = 5., cw0 = -50.;
662 const G4double axc0 = 3.14213, bxc0 = -2.3, cxc0 = 5.7;
663 const G4double ay0p = 1.56, by0p = 3.6;
664 const G4double aap = 0.86, bap = 8.3E-3;
665 const G4double awp = 0.022, bwp = 7.4, cwp = -51.;
666 const G4double xcp = 3.1486;
667
668 p0l[0] = Fln(ay00, by00, Ene);
669 p0l[1] = aa00+pow(Ene, ba00);
670 p0l[2] = Poli(aw0, bw0, cw0, Ene);
671 p0l[3] = Poli(axc0, bxc0, cxc0, Ene);
672 ppml[0] = Fln(ay0p, by0p, Ene);
673 ppml[1] = aap + bap*(Ene);
674 ppml[2] = Poli(awp, bwp, cwp, Ene);
675 ppml[3] = xcp;
676 }
677
678 G4double a,b=0.;
679
680 if (Ene>=50.)
681 {
682 if (PhiLocal>xepm)
683 {
684 b = (ppml[0]+2*ppml[1]*ppml[2]*Flor(ppml,PhiLocal));
685 }
686 else
687 {
688 b = Ftan(ppmt,PhiLocal);
689 }
690 if (PhiLocal>xe0)
691 {
692 a = (p0l[0]+2*p0l[1]*p0l[2]*Flor(p0l,PhiLocal));
693 }
694 else
695 {
696 a = Ftan(p0t,PhiLocal);
697 }
698 }
699 else
700 {
701 b = (ppml[0]+2*ppml[1]*ppml[2]*Flor(ppml,PhiLocal));
702 a = (p0l[0]+2*p0l[1]*p0l[2]*Flor(p0l,PhiLocal));
703 }
704 G4double nr =0.;
705
706 if (b>a)
707 {
708 nr = 1./b;
709 }
710 else
711 {
712 nr = 1./a;
713 }
714
715 G4double r1,r2=0.;
716 G4double r3 =-1.;
717 do
718 {
719 r1 = G4UniformRand();
720 r2 = G4UniformRand();
721 //value = r2*pi;
722 value = 2.*r2*pi;
723 r3 = nr*(a*cos(value)*cos(value) + b*sin(value)*sin(value));
724 }while(r1>r3);
725
726 return value;
727}

References Encu(), Fln(), Flor(), Ftan(), G4UniformRand, MeV, pi, and Poli().

Referenced by SampleSecondaries().

◆ SetSecondaryThreshold()

void G4VEmModel::SetSecondaryThreshold ( G4double  val)
inlineinherited

◆ SetTheta()

void G4LivermorePolarizedGammaConversionModel::SetTheta ( G4double p_cosTheta,
G4double p_sinTheta,
G4double  Energy 
)
private

Definition at line 507 of file G4LivermorePolarizedGammaConversionModel.cc.

508{
509 // to avoid computational errors since Theta could be very small
510 // Energy in Normalized Units (!)
511
512 G4double Momentum = sqrt(Energy*Energy -1);
513 G4double Rand = G4UniformRand();
514
515 *p_cosTheta = (Energy*((2*Rand)- 1) + Momentum)/((Momentum*(2*Rand-1))+Energy);
516 *p_sinTheta = (2*sqrt(Rand*(1-Rand)))/(Momentum*(2*Rand-1)+Energy);
517}

References G4UniformRand.

Referenced by SampleSecondaries().

◆ 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

◆ SetUseBaseMaterials()

void G4VEmModel::SetUseBaseMaterials ( G4bool  val)
inlineinherited

◆ StartTracking()

void G4VEmModel::StartTracking ( G4Track )
virtualinherited

◆ SystemOfRefChange()

void G4LivermorePolarizedGammaConversionModel::SystemOfRefChange ( G4ThreeVector direction0,
G4ThreeVector direction1,
G4ThreeVector polarization0 
)
private

Definition at line 964 of file G4LivermorePolarizedGammaConversionModel.cc.

967{
968 // direction0 is the original photon direction ---> z
969 // polarization0 is the original photon polarization ---> x
970 // need to specify y axis in the real reference frame ---> y
971 G4ThreeVector Axis_Z0 = direction0.unit();
972 G4ThreeVector Axis_X0 = polarization0.unit();
973 G4ThreeVector Axis_Y0 = (Axis_Z0.cross(Axis_X0)).unit(); // to be confirmed;
974
975 G4double direction_x = direction1.getX();
976 G4double direction_y = direction1.getY();
977 G4double direction_z = direction1.getZ();
978
979 direction1 = (direction_x*Axis_X0 + direction_y*Axis_Y0 + direction_z*Axis_Z0).unit();
980}
double getZ() const
double getX() const
double getY() const

References CLHEP::Hep3Vector::cross(), CLHEP::Hep3Vector::getX(), CLHEP::Hep3Vector::getY(), CLHEP::Hep3Vector::getZ(), and CLHEP::Hep3Vector::unit().

Referenced by SampleSecondaries().

◆ UseAngularGeneratorFlag()

G4bool G4VEmModel::UseAngularGeneratorFlag ( ) const
inlineinherited

◆ UseBaseMaterials()

G4bool G4VEmModel::UseBaseMaterials ( ) const
inlineinherited

Definition at line 760 of file G4VEmModel.hh.

761{
762 return useBaseMaterials;
763}

References G4VEmModel::useBaseMaterials.

◆ Value()

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

Field Documentation

◆ anglModel

G4VEmAngularDistribution* G4VEmModel::anglModel = nullptr
privateinherited

◆ basedCoupleIndex

size_t G4VEmModel::basedCoupleIndex = 0
protectedinherited

◆ currentCoupleIndex

size_t G4VEmModel::currentCoupleIndex = 0
protectedinherited

Definition at line 448 of file G4VEmModel.hh.

Referenced by G4VEmModel::SetCurrentCouple().

◆ data

G4PhysicsFreeVector * G4LivermorePolarizedGammaConversionModel::data = {nullptr}
staticprivate

◆ elmSelectors

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

◆ eMaxActive

G4double G4VEmModel::eMaxActive = DBL_MAX
privateinherited

◆ eMinActive

G4double G4VEmModel::eMinActive = 0.0
privateinherited

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

◆ 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

◆ fParticleChange

G4ParticleChangeForGamma* G4LivermorePolarizedGammaConversionModel::fParticleChange
private

◆ fTripletModel

G4VEmModel* G4VEmModel::fTripletModel = nullptr
privateinherited

◆ highLimit

G4double G4VEmModel::highLimit
privateinherited

◆ inveplus

G4double G4VEmModel::inveplus
protectedinherited

◆ isInitialised

G4bool G4LivermorePolarizedGammaConversionModel::isInitialised
private

Definition at line 120 of file G4LivermorePolarizedGammaConversionModel.hh.

Referenced by Initialise().

◆ isLocked

G4bool G4VEmModel::isLocked = false
privateinherited

◆ isMaster

G4bool G4VEmModel::isMaster = true
privateinherited

◆ localElmSelectors

G4bool G4VEmModel::localElmSelectors = true
privateinherited

Definition at line 460 of file G4VEmModel.hh.

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

◆ localTable

G4bool G4VEmModel::localTable = true
privateinherited

Definition at line 459 of file G4VEmModel.hh.

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

◆ lossFlucFlag

G4bool G4VEmModel::lossFlucFlag = true
protectedinherited

◆ lowEnergyLimit

G4double G4LivermorePolarizedGammaConversionModel::lowEnergyLimit
private

◆ lowLimit

G4double G4VEmModel::lowLimit
privateinherited

◆ maxZ

const G4int G4LivermorePolarizedGammaConversionModel::maxZ = 99
staticprivate

◆ name

const G4String G4VEmModel::name
privateinherited

◆ nsec

G4int G4VEmModel::nsec = 5
privateinherited

Definition at line 444 of file G4VEmModel.hh.

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

◆ nSelectors

G4int G4VEmModel::nSelectors = 0
privateinherited

◆ pBaseMaterial

const G4Material* G4VEmModel::pBaseMaterial = nullptr
protectedinherited

◆ pFactor

G4double G4VEmModel::pFactor = 1.0
protectedinherited

◆ Phi

G4double G4LivermorePolarizedGammaConversionModel::Phi
private

◆ 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

◆ Psi

G4double G4LivermorePolarizedGammaConversionModel::Psi
private

◆ secondaryThreshold

G4double G4VEmModel::secondaryThreshold = DBL_MAX
privateinherited

◆ smallEnergy

G4double G4LivermorePolarizedGammaConversionModel::smallEnergy
private

Definition at line 117 of file G4LivermorePolarizedGammaConversionModel.hh.

Referenced by SampleSecondaries().

◆ theDensityFactor

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

Definition at line 428 of file G4VEmModel.hh.

Referenced by G4VEmModel::G4VEmModel().

◆ theDensityIdx

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

Definition at line 429 of file G4VEmModel.hh.

Referenced by G4VEmModel::G4VEmModel().

◆ theLPMflag

G4bool G4VEmModel::theLPMflag = false
privateinherited

Definition at line 454 of file G4VEmModel.hh.

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

◆ useAngularGenerator

G4bool G4VEmModel::useAngularGenerator = false
privateinherited

◆ useBaseMaterials

G4bool G4VEmModel::useBaseMaterials = false
privateinherited

◆ verboseLevel

G4int G4LivermorePolarizedGammaConversionModel::verboseLevel
private

◆ xsec

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

◆ xSectionTable

G4PhysicsTable* G4VEmModel::xSectionTable = nullptr
protectedinherited

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