ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4DNAPTBIonisationModel Class Reference

The G4DNAPTBIonisationModel class Implements the PTB ionisation model. More...

#include <geant4/tree/geant4-10.6-release/source/processes/electromagnetic/dna/models/include/G4DNAPTBIonisationModel.hh>

+ Inheritance diagram for G4DNAPTBIonisationModel:
+ Collaboration diagram for G4DNAPTBIonisationModel:

Public Member Functions

 G4DNAPTBIonisationModel (const G4String &applyToMaterial="all", const G4ParticleDefinition *p=0, const G4String &nam="DNAPTBIonisationModel", const G4bool isAuger=true)
 G4DNAPTBIonisationModel Constructor.
 
virtual ~G4DNAPTBIonisationModel ()
 ~G4DNAPTBIonisationModel Destructor
 
virtual void Initialise (const G4ParticleDefinition *particle, const G4DataVector &=*(new G4DataVector()), G4ParticleChangeForGamma *fpChangeForGamme=nullptr)
 Initialise Method called once at the beginning of the simulation. It is used to setup the list of the materials managed by the model and the energy limits. All the materials are setup but only a part of them can be activated by the user through the constructor.
 
virtual G4double CrossSectionPerVolume (const G4Material *material, const G4String &materialName, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
 CrossSectionPerVolume Mandatory for every model the CrossSectionPerVolume method is in charge of returning the cross section value corresponding to the material, particle and energy current values.
 
virtual void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4String &materialName, const G4DynamicParticle *, G4ParticleChangeForGamma *particleChangeForGamma, G4double tmin, G4double tmax)
 SampleSecondaries If the model is selected for the ModelInterface then SampleSecondaries will be called. The method sets the characteristics of the particles implied with the physical process after the ModelInterface (energy, momentum...). This method is mandatory for every model.
 
- Public Member Functions inherited from G4VDNAModel
 G4VDNAModel (const G4String &nam, const G4String &applyToMaterial)
 G4VDNAModel Constructeur of the G4VDNAModel class.
 
virtual ~G4VDNAModel ()
 ~G4VDNAModel
 
G4bool IsMaterialDefine (const G4String &materialName)
 IsMaterialDefine Check if the given material is defined in the simulation.
 
G4bool IsMaterialExistingInModel (const G4String &materialName)
 IsMaterialExistingInModel Check if the given material is defined in the current model class.
 
G4bool IsParticleExistingInModelForMaterial (const G4String &particleName, const G4String &materialName)
 IsParticleExistingInModelForMaterial To check two things: 1- is the material existing in model ? 2- if yes, is the particle defined for that material ?
 
G4String GetName ()
 GetName.
 
G4double GetHighELimit (const G4String &material, const G4String &particle)
 GetHighEnergyLimit.
 
G4double GetLowELimit (const G4String &material, const G4String &particle)
 GetLowEnergyLimit.
 
void SetHighELimit (const G4String &material, const G4String &particle, G4double lim)
 SetHighEnergyLimit.
 
void SetLowELimit (const G4String &material, const G4String &particle, G4double lim)
 SetLowEnergyLimit.
 

Private Types

typedef std::map< G4String,
std::map< G4String, std::map
< double, std::map< double,
std::map< double, double > > > > > 
TriDimensionMap
 
typedef std::map< G4String,
std::map< G4String, std::map
< double, std::vector< double > > > > 
VecMap
 
typedef std::map< G4String,
std::map< G4String, std::map
< double, std::map< double,
std::vector< double > > > > > 
VecMapWithShell
 

Private Member Functions

G4double RandomizeEjectedElectronEnergy (G4ParticleDefinition *aParticleDefinition, G4double incomingParticleEnergy, G4int shell, const G4String &materialName)
 
double DifferentialCrossSection (G4ParticleDefinition *aParticleDefinition, G4double k, G4double energyTransfer, G4int shell, const G4String &materialName)
 
G4double RandomizeEjectedElectronEnergyFromCumulated (G4ParticleDefinition *particleDefinition, G4double k, G4int shell, const G4String &materialName)
 RandomizeEjectedElectronEnergyFromCumulated Uses the cumulated tables to find the energy of the ejected particle (electron)
 
void RandomizeEjectedElectronDirection (G4ParticleDefinition *aParticleDefinition, G4double incomingParticleEnergy, G4double outgoingParticleEnergy, G4double &cosTheta, G4double &phi)
 RandomizeEjectedElectronDirection Method to calculate the ejected electron direction.
 
void ReadDiffCSFile (const G4String &materialName, const G4String &particleName, const G4String &file, const G4double scaleFactor)
 ReadDiffCSFile Method to read the differential cross section files.
 
G4double QuadInterpolator (G4double e11, G4double e12, G4double e21, G4double e22, G4double xs11, G4double xs12, G4double xs21, G4double xs22, G4double t1, G4double t2, G4double t, G4double e)
 QuadInterpolator.
 
G4double LogLogInterpolate (G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2)
 LogLogInterpolate.
 
 G4DNAPTBIonisationModel (const G4DNAPTBIonisationModel &)
 
G4DNAPTBIonisationModeloperator= (const G4DNAPTBIonisationModel &right)
 

Private Attributes

G4DNAPTBAugerModelfDNAPTBAugerModel
 PTB Auger model instanciated in the constructor and deleted in the destructor of the class.
 
G4int verboseLevel
 verbose level
 
G4DNAPTBIonisationStructure ptbStructure
 
TriDimensionMap diffCrossSectionData
 
TriDimensionMap fEnergySecondaryData
 
std::map< G4String, std::map
< G4String, std::vector
< double > > > 
fTMapWithVec
 
VecMap fEMapWithVector
 
VecMapWithShell fProbaShellMap
 

Additional Inherited Members

- Protected Types inherited from G4VDNAModel
typedef std::map< G4String,
std::map< G4String,
G4DNACrossSectionDataSet
*, std::less< G4String > > > 
TableMapData
 
typedef std::map< G4String,
std::map< G4String, G4double > > 
RatioMapData
 
typedef std::map< G4String,
G4double >::const_iterator 
ItCompoMapData
 
- Protected Member Functions inherited from G4VDNAModel
TableMapDataGetTableData ()
 GetTableData.
 
std::vector< G4StringBuildApplyToMatVect (const G4String &materials)
 BuildApplyToMatVect Build the material name vector which is used to know the materials the user want to include in the model.
 
void ReadAndSaveCSFile (const G4String &materialName, const G4String &particleName, const G4String &file, G4double scaleFactor)
 ReadAndSaveCSFile Read and save a "simple" cross section file : use of G4DNACrossSectionDataSet->loadData()
 
G4int RandomSelectShell (G4double k, const G4String &particle, const G4String &materialName)
 RandomSelectShell Method to randomely select a shell from the data table uploaded. The size of the table (number of columns) is used to determine the total number of possible shells.
 
void AddCrossSectionData (G4String materialName, G4String particleName, G4String fileCS, G4String fileDiffCS, G4double scaleFactor)
 AddCrossSectionData Method used during the initialization of the model class to add a new material. It adds a material to the model and fills vectors with informations.
 
void AddCrossSectionData (G4String materialName, G4String particleName, G4String fileCS, G4double scaleFactor)
 AddCrossSectionData Method used during the initialization of the model class to add a new material. It adds a material to the model and fills vectors with informations. Not every model needs differential cross sections.
 
void LoadCrossSectionData (const G4String &particleName)
 LoadCrossSectionData Method to loop on all the registered materials in the model and load the corresponding data.
 
void EnableForMaterialAndParticle (const G4String &materialName, const G4String &particleName)
 EnableMaterialAndParticle.
 

Detailed Description

The G4DNAPTBIonisationModel class Implements the PTB ionisation model.

Definition at line 53 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 53 of file G4DNAPTBIonisationModel.hh

Member Typedef Documentation

typedef std::map<G4String, std::map<G4String, std::map<double, std::map<double, std::map<double, double> > > > > G4DNAPTBIonisationModel::TriDimensionMap
private

Definition at line 130 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 130 of file G4DNAPTBIonisationModel.hh

typedef std::map<G4String, std::map<G4String, std::map<double, std::vector<double> > > > G4DNAPTBIonisationModel::VecMap
private

Definition at line 134 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 134 of file G4DNAPTBIonisationModel.hh

typedef std::map<G4String, std::map<G4String, std::map<double, std::map<double, std::vector<double> > > > > G4DNAPTBIonisationModel::VecMapWithShell
private

Definition at line 136 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 136 of file G4DNAPTBIonisationModel.hh

Constructor & Destructor Documentation

G4DNAPTBIonisationModel::G4DNAPTBIonisationModel ( const G4String applyToMaterial = "all",
const G4ParticleDefinition p = 0,
const G4String nam = "DNAPTBIonisationModel",
const G4bool  isAuger = true 
)

G4DNAPTBIonisationModel Constructor.

Parameters
applyToMaterial
p
nam
isAuger

Definition at line 38 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 38 of file G4DNAPTBIonisationModel.cc

References fDNAPTBAugerModel, G4cout, G4endl, and verboseLevel.

G4DNAPTBIonisationModel::~G4DNAPTBIonisationModel ( )
virtual

~G4DNAPTBIonisationModel Destructor

Definition at line 70 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 70 of file G4DNAPTBIonisationModel.cc

References fDNAPTBAugerModel.

G4DNAPTBIonisationModel::G4DNAPTBIonisationModel ( const G4DNAPTBIonisationModel )
private

Member Function Documentation

G4double G4DNAPTBIonisationModel::CrossSectionPerVolume ( const G4Material material,
const G4String materialName,
const G4ParticleDefinition p,
G4double  ekin,
G4double  emin,
G4double  emax 
)
virtual

CrossSectionPerVolume Mandatory for every model the CrossSectionPerVolume method is in charge of returning the cross section value corresponding to the material, particle and energy current values.

Parameters
material
materialName
p
ekin
emin
emax
Returns
the cross section value

Implements G4VDNAModel.

Definition at line 250 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 250 of file G4DNAPTBIonisationModel.cc

References cm, eV, G4cout, G4endl, G4VDNAModel::GetHighELimit(), G4VDNAModel::GetLowELimit(), G4ParticleDefinition::GetParticleName(), G4VDNAModel::GetTableData(), and verboseLevel.

+ Here is the call graph for this function:

double G4DNAPTBIonisationModel::DifferentialCrossSection ( G4ParticleDefinition aParticleDefinition,
G4double  k,
G4double  energyTransfer,
G4int  shell,
const G4String materialName 
)
private

Definition at line 673 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 673 of file G4DNAPTBIonisationModel.cc

References diffCrossSectionData, G4Electron::ElectronDefinition(), fEMapWithVector, fTMapWithVec, G4ParticleDefinition::GetParticleName(), G4DNAPTBIonisationStructure::IonisationEnergy(), G4Proton::ProtonDefinition(), ptbStructure, QuadInterpolator(), t1, and t2.

Referenced by RandomizeEjectedElectronEnergy().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4DNAPTBIonisationModel::Initialise ( const G4ParticleDefinition particle,
const G4DataVector = *(new G4DataVector()),
G4ParticleChangeForGamma fpChangeForGamme = nullptr 
)
virtual

Initialise Method called once at the beginning of the simulation. It is used to setup the list of the materials managed by the model and the energy limits. All the materials are setup but only a part of them can be activated by the user through the constructor.

Implements G4VDNAModel.

Definition at line 78 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 78 of file G4DNAPTBIonisationModel.cc

References G4VDNAModel::AddCrossSectionData(), cm, e, G4Electron::ElectronDefinition(), eV, fDNAPTBAugerModel, G4cout, G4endl, G4ParticleDefinition::GetParticleName(), G4DNAPTBAugerModel::Initialise(), keV, G4VDNAModel::LoadCrossSectionData(), m, MeV, G4Proton::ProtonDefinition(), G4VDNAModel::SetHighELimit(), G4VDNAModel::SetLowELimit(), and verboseLevel.

+ Here is the call graph for this function:

G4double G4DNAPTBIonisationModel::LogLogInterpolate ( G4double  e1,
G4double  e2,
G4double  e,
G4double  xs1,
G4double  xs2 
)
private

LogLogInterpolate.

Parameters
e1
e2
e
xs1
xs2
Returns
the interpolate value

Definition at line 939 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 939 of file G4DNAPTBIonisationModel.cc

References d1, d2, and e1.

Referenced by QuadInterpolator().

+ Here is the caller graph for this function:

G4DNAPTBIonisationModel& G4DNAPTBIonisationModel::operator= ( const G4DNAPTBIonisationModel right)
private
G4double G4DNAPTBIonisationModel::QuadInterpolator ( G4double  e11,
G4double  e12,
G4double  e21,
G4double  e22,
G4double  xs11,
G4double  xs12,
G4double  xs21,
G4double  xs22,
G4double  t1,
G4double  t2,
G4double  t,
G4double  e 
)
private

QuadInterpolator.

Parameters
e11
e12
e21
e22
xs11
xs12
xs21
xs22
t1
t2
t
e
Returns
the interpolated value

Definition at line 971 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 971 of file G4DNAPTBIonisationModel.cc

References LogLogInterpolate().

Referenced by DifferentialCrossSection(), and RandomizeEjectedElectronEnergyFromCumulated().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4DNAPTBIonisationModel::RandomizeEjectedElectronDirection ( G4ParticleDefinition aParticleDefinition,
G4double  incomingParticleEnergy,
G4double  outgoingParticleEnergy,
G4double cosTheta,
G4double phi 
)
private

RandomizeEjectedElectronDirection Method to calculate the ejected electron direction.

Parameters
aParticleDefinition
incomingParticleEnergy
outgoingParticleEnergy
cosTheta
phi

Definition at line 634 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 634 of file G4DNAPTBIonisationModel.cc

References source.hepunit::electron_mass_c2, G4Electron::ElectronDefinition(), eV, G4UniformRand, k, source.hepunit::proton_mass_c2, G4Proton::ProtonDefinition(), and twopi.

Referenced by SampleSecondaries().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4DNAPTBIonisationModel::RandomizeEjectedElectronEnergy ( G4ParticleDefinition aParticleDefinition,
G4double  incomingParticleEnergy,
G4int  shell,
const G4String materialName 
)
private

Definition at line 537 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 537 of file G4DNAPTBIonisationModel.cc

References DifferentialCrossSection(), source.hepunit::electron_mass_c2, G4Electron::ElectronDefinition(), eV, G4UniformRand, G4DNAPTBIonisationStructure::IonisationEnergy(), k, source.hepunit::proton_mass_c2, G4Proton::ProtonDefinition(), ptbStructure, and Acts::Test::step().

Referenced by SampleSecondaries().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4DNAPTBIonisationModel::RandomizeEjectedElectronEnergyFromCumulated ( G4ParticleDefinition particleDefinition,
G4double  k,
G4int  shell,
const G4String materialName 
)
private

RandomizeEjectedElectronEnergyFromCumulated Uses the cumulated tables to find the energy of the ejected particle (electron)

Parameters
particleDefinition
k
shell
materialName
Returns
the ejected electron energy

Definition at line 772 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 772 of file G4DNAPTBIonisationModel.cc

References G4InuclSpecialFunctions::bindingEnergy(), eV, g4zmq::exit(), fEnergySecondaryData, fProbaShellMap, fTMapWithVec, G4cerr, G4cout, G4endl, G4UniformRand, G4ParticleDefinition::GetParticleName(), G4DNAPTBIonisationStructure::IonisationEnergy(), k1, k2, ptbStructure, and QuadInterpolator().

Referenced by SampleSecondaries().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4DNAPTBIonisationModel::ReadDiffCSFile ( const G4String materialName,
const G4String particleName,
const G4String file,
const G4double  scaleFactor 
)
privatevirtual

ReadDiffCSFile Method to read the differential cross section files.

Parameters
materialName
particleName
file
scaleFactor

Reimplemented from G4VDNAModel.

Definition at line 432 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 432 of file G4DNAPTBIonisationModel.cc

References diffCrossSectionData, E, FatalException, fEMapWithVector, fEnergySecondaryData, file, fProbaShellMap, fTMapWithVec, G4Exception(), G4DNAPTBIonisationStructure::NumberOfLevels(), ptbStructure, T, and test().

+ Here is the call graph for this function:

void G4DNAPTBIonisationModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  fvect,
const G4MaterialCutsCouple ,
const G4String materialName,
const G4DynamicParticle aDynamicParticle,
G4ParticleChangeForGamma particleChangeForGamma,
G4double  tmin,
G4double  tmax 
)
virtual

SampleSecondaries If the model is selected for the ModelInterface then SampleSecondaries will be called. The method sets the characteristics of the particles implied with the physical process after the ModelInterface (energy, momentum...). This method is mandatory for every model.

Parameters
materialName
particleChangeForGamma
tmin
tmax

Implements G4VDNAModel.

Definition at line 295 of file G4DNAPTBIonisationModel.cc.

View newest version in sPHENIX GitHub at line 295 of file G4DNAPTBIonisationModel.cc

References G4InuclSpecialFunctions::bindingEnergy(), G4DNAPTBAugerModel::ComputeAugerEffect(), G4Electron::Electron(), source.hepunit::electron_mass_c2, G4Electron::ElectronDefinition(), eV, g4zmq::exit(), fDNAPTBAugerModel, G4cout, G4endl, G4DynamicParticle::GetDefinition(), G4VDNAModel::GetHighELimit(), G4DynamicParticle::GetKineticEnergy(), G4VDNAModel::GetLowELimit(), G4DynamicParticle::GetMomentumDirection(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), CLHEP::Hep3Vector::getX(), CLHEP::Hep3Vector::getY(), CLHEP::Hep3Vector::getZ(), G4DNAPTBIonisationStructure::IonisationEnergy(), k, phi, G4VParticleChange::ProposeLocalEnergyDeposit(), G4ParticleChangeForGamma::ProposeMomentumDirection(), ptbStructure, RandomizeEjectedElectronDirection(), RandomizeEjectedElectronEnergy(), RandomizeEjectedElectronEnergyFromCumulated(), G4VDNAModel::RandomSelectShell(), CLHEP::Hep3Vector::rotateUz(), G4ParticleChangeForGamma::SetProposedKineticEnergy(), CLHEP::Hep3Vector::unit(), verboseLevel, CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

+ Here is the call graph for this function:

Member Data Documentation

TriDimensionMap G4DNAPTBIonisationModel::diffCrossSectionData
private

Definition at line 131 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 131 of file G4DNAPTBIonisationModel.hh

Referenced by DifferentialCrossSection(), and ReadDiffCSFile().

G4DNAPTBAugerModel* G4DNAPTBIonisationModel::fDNAPTBAugerModel
private

PTB Auger model instanciated in the constructor and deleted in the destructor of the class.

Definition at line 124 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 124 of file G4DNAPTBIonisationModel.hh

Referenced by G4DNAPTBIonisationModel(), Initialise(), SampleSecondaries(), and ~G4DNAPTBIonisationModel().

VecMap G4DNAPTBIonisationModel::fEMapWithVector
private

Definition at line 135 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 135 of file G4DNAPTBIonisationModel.hh

Referenced by DifferentialCrossSection(), and ReadDiffCSFile().

TriDimensionMap G4DNAPTBIonisationModel::fEnergySecondaryData
private

Definition at line 132 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 132 of file G4DNAPTBIonisationModel.hh

Referenced by RandomizeEjectedElectronEnergyFromCumulated(), and ReadDiffCSFile().

VecMapWithShell G4DNAPTBIonisationModel::fProbaShellMap
private

Definition at line 137 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 137 of file G4DNAPTBIonisationModel.hh

Referenced by RandomizeEjectedElectronEnergyFromCumulated(), and ReadDiffCSFile().

std::map<G4String, std::map<G4String, std::vector<double> > > G4DNAPTBIonisationModel::fTMapWithVec
private

Definition at line 133 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 133 of file G4DNAPTBIonisationModel.hh

Referenced by DifferentialCrossSection(), RandomizeEjectedElectronEnergyFromCumulated(), and ReadDiffCSFile().

G4DNAPTBIonisationStructure G4DNAPTBIonisationModel::ptbStructure
private

ptbStructure class which contains the shell binding energies

Definition at line 128 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 128 of file G4DNAPTBIonisationModel.hh

Referenced by DifferentialCrossSection(), RandomizeEjectedElectronEnergy(), RandomizeEjectedElectronEnergyFromCumulated(), ReadDiffCSFile(), and SampleSecondaries().

G4int G4DNAPTBIonisationModel::verboseLevel
private

verbose level

Definition at line 126 of file G4DNAPTBIonisationModel.hh.

View newest version in sPHENIX GitHub at line 126 of file G4DNAPTBIonisationModel.hh

Referenced by CrossSectionPerVolume(), G4DNAPTBIonisationModel(), Initialise(), and SampleSecondaries().


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