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

The G4DNAPTBElasticModel class This class implements the elastic model for the DNA materials and precursors. More...

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

+ Inheritance diagram for G4DNAPTBElasticModel:
+ Collaboration diagram for G4DNAPTBElasticModel:

Public Member Functions

 G4DNAPTBElasticModel (const G4String &applyToMaterial="all", const G4ParticleDefinition *p=0, const G4String &nam="DNAPTBElasticModel")
 G4DNAPTBElasticModel Constructor.
 
virtual ~G4DNAPTBElasticModel ()
 ~G4DNAPTBElasticModel Destructor
 
virtual void Initialise (const G4ParticleDefinition *particle, const G4DataVector &, G4ParticleChangeForGamma *fpChangeForGamme=nullptr)
 Initialise Mandatory method for every model class. The material/particle for which the model can be used have to be added here through the AddCrossSectionData method. Then the LoadCrossSectionData method must be called to trigger the load process. Scale factors to be applied to the cross section can be defined here.
 
virtual G4double CrossSectionPerVolume (const G4Material *material, const G4String &materialName, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax)
 CrossSectionPerVolume This method is mandatory for any model class. It finds and return the cross section value for the current material, particle and energy values. The number of molecule per volume is not used here but in the G4DNAModelInterface class.
 
virtual void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4String &materialName, const G4DynamicParticle *, G4ParticleChangeForGamma *particleChangeForGamma, G4double tmin, G4double tmax)
 SampleSecondaries Method called after CrossSectionPerVolume if the process is the one which is selected (according to the sampling on the calculated path length). Here, the characteristics of the incident and created (if any) particle(s) are set (energy, momentum ...).
 
- 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,
double > > > > 
TriDimensionMap
 
typedef std::map< G4String,
std::map< G4String, std::map
< double, std::vector< double > > > > 
VecMap
 

Private Member Functions

void ReadDiffCSFile (const G4String &materialName, const G4String &particleName, const G4String &file, const G4double)
 ReadDiffCSFile Method to read the differential cross section files. This method is not standard yet so every model must implement its own.
 
G4double Theta (G4ParticleDefinition *fParticleDefinition, G4double k, G4double integrDiff, const G4String &materialName)
 Theta To return an angular theta value from the differential file. This method uses interpolations to calculate the theta value.
 
G4double LinLinInterpolate (G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2)
 LinLinInterpolate.
 
G4double LinLogInterpolate (G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2)
 LinLogInterpolate.
 
G4double LogLogInterpolate (G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2)
 LogLogInterpolate.
 
G4double QuadInterpolator (G4double e11, G4double e12, G4double e21, G4double e22, G4double x11, G4double x12, G4double x21, G4double x22, G4double t1, G4double t2, G4double t, G4double e)
 QuadInterpolator.
 
G4double RandomizeCosTheta (G4double k, const G4String &materialName)
 RandomizeCosTheta.
 
 G4DNAPTBElasticModel (G4DNAPTBElasticModel &)
 
G4DNAPTBElasticModeloperator= (const G4DNAPTBElasticModel &right)
 

Private Attributes

G4int verboseLevel
 verbose level
 
std::map< G4String, double > killBelowEnergyTable
 map to save the different energy kill limits for the materials
 
G4double fKillBelowEnergy
 energy kill limit
 
TriDimensionMap diffCrossSectionData
 A map: [materialName][particleName]=DiffCrossSectionTable.
 
VecMap eValuesVect
 
std::map< G4String, std::map
< G4String, std::vector
< double > > > 
tValuesVec
 map with vectors containing all the incident (T) energy of the differential file
 

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 G4DNAPTBElasticModel class This class implements the elastic model for the DNA materials and precursors.

Definition at line 48 of file G4DNAPTBElasticModel.hh.

View newest version in sPHENIX GitHub at line 48 of file G4DNAPTBElasticModel.hh

Member Typedef Documentation

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

Definition at line 125 of file G4DNAPTBElasticModel.hh.

View newest version in sPHENIX GitHub at line 125 of file G4DNAPTBElasticModel.hh

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

Definition at line 128 of file G4DNAPTBElasticModel.hh.

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

Constructor & Destructor Documentation

G4DNAPTBElasticModel::G4DNAPTBElasticModel ( const G4String applyToMaterial = "all",
const G4ParticleDefinition p = 0,
const G4String nam = "DNAPTBElasticModel" 
)

G4DNAPTBElasticModel Constructor.

Parameters
applyToMaterial
p
nam

Definition at line 38 of file G4DNAPTBElasticModel.cc.

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

References eV, fKillBelowEnergy, G4cout, G4endl, and verboseLevel.

G4DNAPTBElasticModel::~G4DNAPTBElasticModel ( )
virtual

~G4DNAPTBElasticModel Destructor

Definition at line 60 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 60 of file G4DNAPTBElasticModel.cc

G4DNAPTBElasticModel::G4DNAPTBElasticModel ( G4DNAPTBElasticModel )
private

Member Function Documentation

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

CrossSectionPerVolume This method is mandatory for any model class. It finds and return the cross section value for the current material, particle and energy values. The number of molecule per volume is not used here but in the G4DNAModelInterface class.

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

Implements G4VDNAModel.

Definition at line 295 of file G4DNAPTBElasticModel.cc.

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

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

+ Here is the call graph for this function:

void G4DNAPTBElasticModel::Initialise ( const G4ParticleDefinition particle,
const G4DataVector ,
G4ParticleChangeForGamma fpChangeForGamme = nullptr 
)
virtual

Initialise Mandatory method for every model class. The material/particle for which the model can be used have to be added here through the AddCrossSectionData method. Then the LoadCrossSectionData method must be called to trigger the load process. Scale factors to be applied to the cross section can be defined here.

Implements G4VDNAModel.

Definition at line 67 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 67 of file G4DNAPTBElasticModel.cc

References G4VDNAModel::AddCrossSectionData(), cm, e, G4Electron::ElectronDefinition(), eV, G4cout, G4endl, G4ParticleDefinition::GetParticleName(), keV, G4VDNAModel::LoadCrossSectionData(), G4VDNAModel::SetHighELimit(), G4VDNAModel::SetLowELimit(), and verboseLevel.

+ Here is the call graph for this function:

G4double G4DNAPTBElasticModel::LinLinInterpolate ( G4double  e1,
G4double  e2,
G4double  e,
G4double  xs1,
G4double  xs2 
)
private

LinLinInterpolate.

Parameters
e1
e2
e
xs1
xs2
Returns

Definition at line 470 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 470 of file G4DNAPTBElasticModel.cc

References d1, d2, and e1.

Referenced by QuadInterpolator().

+ Here is the caller graph for this function:

G4double G4DNAPTBElasticModel::LinLogInterpolate ( G4double  e1,
G4double  e2,
G4double  e,
G4double  xs1,
G4double  xs2 
)
private

LinLogInterpolate.

Parameters
e1
e2
e
xs1
xs2
Returns

Definition at line 456 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 456 of file G4DNAPTBElasticModel.cc

References d1, and d2.

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

LogLogInterpolate.

Parameters
e1
e2
e
xs1
xs2
Returns

Definition at line 484 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 484 of file G4DNAPTBElasticModel.cc

References a, and b.

G4DNAPTBElasticModel& G4DNAPTBElasticModel::operator= ( const G4DNAPTBElasticModel right)
private
G4double G4DNAPTBElasticModel::QuadInterpolator ( G4double  e11,
G4double  e12,
G4double  e21,
G4double  e22,
G4double  x11,
G4double  x12,
G4double  x21,
G4double  x22,
G4double  t1,
G4double  t2,
G4double  t,
G4double  e 
)
private

QuadInterpolator.

Parameters
e11
e12
e21
e22
x11
x12
x21
x22
t1
t2
t
e
Returns

Definition at line 499 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 499 of file G4DNAPTBElasticModel.cc

References LinLinInterpolate().

+ Here is the call graph for this function:

G4double G4DNAPTBElasticModel::RandomizeCosTheta ( G4double  k,
const G4String materialName 
)
private

RandomizeCosTheta.

Parameters
k
materialName
Returns

Definition at line 529 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 529 of file G4DNAPTBElasticModel.cc

References G4Electron::ElectronDefinition(), eV, G4UniformRand, pi, Theta(), and theta().

Referenced by SampleSecondaries().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

ReadDiffCSFile Method to read the differential cross section files. This method is not standard yet so every model must implement its own.

Parameters
materialName
particleName
file

Reimplemented from G4VDNAModel.

Definition at line 197 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 197 of file G4DNAPTBElasticModel.cc

References diffCrossSectionData, eValuesVect, FatalException, file, G4Exception(), test(), and tValuesVec.

+ Here is the call graph for this function:

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

SampleSecondaries Method called after CrossSectionPerVolume if the process is the one which is selected (according to the sampling on the calculated path length). Here, the characteristics of the incident and created (if any) particle(s) are set (energy, momentum ...).

Parameters
materialName
particleChangeForGamma
tmin
tmax

Implements G4VDNAModel.

Definition at line 346 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 346 of file G4DNAPTBElasticModel.cc

References CLHEP::Hep3Vector::cross(), fKillBelowEnergy, fStopAndKill, G4cout, G4endl, G4UniformRand, G4VDNAModel::GetHighELimit(), G4DynamicParticle::GetKineticEnergy(), G4VDNAModel::GetLowELimit(), G4DynamicParticle::GetMomentumDirection(), G4DynamicParticle::GetParticleDefinition(), G4ParticleDefinition::GetParticleName(), CLHEP::Hep3Vector::orthogonal(), phi, pi, G4VParticleChange::ProposeLocalEnergyDeposit(), G4ParticleChangeForGamma::ProposeMomentumDirection(), G4VParticleChange::ProposeTrackStatus(), RandomizeCosTheta(), G4ParticleChangeForGamma::SetProposedKineticEnergy(), CLHEP::Hep3Vector::unit(), and verboseLevel.

+ Here is the call graph for this function:

G4double G4DNAPTBElasticModel::Theta ( G4ParticleDefinition fParticleDefinition,
G4double  k,
G4double  integrDiff,
const G4String materialName 
)
private

Theta To return an angular theta value from the differential file. This method uses interpolations to calculate the theta value.

Parameters
fParticleDefinition
k
integrDiff
materialName
Returns
a theta value

Definition at line 403 of file G4DNAPTBElasticModel.cc.

View newest version in sPHENIX GitHub at line 403 of file G4DNAPTBElasticModel.cc

References G4Electron::ElectronDefinition(), G4ParticleDefinition::GetParticleName(), t1, t2, and theta().

Referenced by RandomizeCosTheta().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

TriDimensionMap G4DNAPTBElasticModel::diffCrossSectionData
private

A map: [materialName][particleName]=DiffCrossSectionTable.

Definition at line 126 of file G4DNAPTBElasticModel.hh.

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

Referenced by ReadDiffCSFile().

VecMap G4DNAPTBElasticModel::eValuesVect
private

map with vectors containing all the output energy (E) of the differential file

Definition at line 129 of file G4DNAPTBElasticModel.hh.

View newest version in sPHENIX GitHub at line 129 of file G4DNAPTBElasticModel.hh

Referenced by ReadDiffCSFile().

G4double G4DNAPTBElasticModel::fKillBelowEnergy
private

energy kill limit

Definition at line 123 of file G4DNAPTBElasticModel.hh.

View newest version in sPHENIX GitHub at line 123 of file G4DNAPTBElasticModel.hh

Referenced by CrossSectionPerVolume(), G4DNAPTBElasticModel(), and SampleSecondaries().

std::map<G4String, double > G4DNAPTBElasticModel::killBelowEnergyTable
private

map to save the different energy kill limits for the materials

Definition at line 122 of file G4DNAPTBElasticModel.hh.

View newest version in sPHENIX GitHub at line 122 of file G4DNAPTBElasticModel.hh

std::map<G4String, std::map<G4String, std::vector<double> > > G4DNAPTBElasticModel::tValuesVec
private

map with vectors containing all the incident (T) energy of the differential file

Definition at line 130 of file G4DNAPTBElasticModel.hh.

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

Referenced by ReadDiffCSFile().

G4int G4DNAPTBElasticModel::verboseLevel
private

verbose level

Definition at line 121 of file G4DNAPTBElasticModel.hh.

View newest version in sPHENIX GitHub at line 121 of file G4DNAPTBElasticModel.hh

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


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