Geant4-11
Public Member Functions | Private Member Functions | Private Attributes
G4HadronXSDataTable Class Reference

#include <G4HadronXSDataTable.hh>

Public Member Functions

void Dump ()
 
 G4HadronXSDataTable ()
 
G4double GetCrossSection (G4double e, size_t idx) const
 
const G4PhysicsVectorHasData (size_t idx) const
 
void Initialise (G4DynamicParticle *, G4CrossSectionDataStore *, G4int bins, G4double emin, G4double emax, G4bool spline)
 
const G4ElementSelectRandomAtom (G4double e, size_t idx) const
 
 ~G4HadronXSDataTable ()
 

Private Member Functions

 G4HadronXSDataTable (const G4HadronXSDataTable &)=delete
 
G4HadronXSDataTableoperator= (const G4HadronXSDataTable &right)=delete
 

Private Attributes

std::vector< G4HadElementSelector * > elmSelectors
 
size_t nMaterials
 
std::vector< G4PhysicsVector * > xsData
 

Detailed Description

Definition at line 95 of file G4HadronXSDataTable.hh.

Constructor & Destructor Documentation

◆ G4HadronXSDataTable() [1/2]

G4HadronXSDataTable::G4HadronXSDataTable ( )
explicit

Definition at line 103 of file G4HadronXSDataTable.cc.

103 : nMaterials(0)
104{}

◆ ~G4HadronXSDataTable()

G4HadronXSDataTable::~G4HadronXSDataTable ( )

Definition at line 152 of file G4HadronXSDataTable.cc.

153{
154 for(size_t i=0; i<nMaterials; ++i) {
155 delete xsData[i];
156 delete elmSelectors[i];
157 }
158}
std::vector< G4PhysicsVector * > xsData
std::vector< G4HadElementSelector * > elmSelectors

References elmSelectors, nMaterials, and xsData.

◆ G4HadronXSDataTable() [2/2]

G4HadronXSDataTable::G4HadronXSDataTable ( const G4HadronXSDataTable )
privatedelete

Member Function Documentation

◆ Dump()

void G4HadronXSDataTable::Dump ( )

Definition at line 162 of file G4HadronXSDataTable.cc.

163{}

◆ GetCrossSection()

G4double G4HadronXSDataTable::GetCrossSection ( G4double  e,
size_t  idx 
) const
inline

Definition at line 113 of file G4HadronXSDataTable.hh.

114 {
115 return xsData[idx]->Value(e);
116 };

References xsData.

◆ HasData()

const G4PhysicsVector * G4HadronXSDataTable::HasData ( size_t  idx) const
inline

Definition at line 108 of file G4HadronXSDataTable.hh.

109 {
110 return xsData[idx];
111 };

References xsData.

◆ Initialise()

void G4HadronXSDataTable::Initialise ( G4DynamicParticle dp,
G4CrossSectionDataStore xs,
G4int  bins,
G4double  emin,
G4double  emax,
G4bool  spline 
)

Definition at line 108 of file G4HadronXSDataTable.cc.

112{
114 if(nn > nMaterials) {
115 if(0 == nMaterials) {
116 xsData.reserve(nn);
117 elmSelectors.reserve(nn);
118 }
119 G4PhysicsLogVector* first = nullptr;
120 G4int sbins = std::max(10, bins/5);
122 for(size_t i=nMaterials; i<nn; ++i) {
123 const G4Material* mat = (*mtable)[i];
124 G4PhysicsVector* v = nullptr;
125 G4HadElementSelector* es = nullptr;
126 // create real vector only for complex materials
127 if(mat->GetNumberOfElements() > 1) {
128 if(nullptr == first) {
129 first = new G4PhysicsLogVector(emin, emax, bins, spline);
130 v = first;
131 } else {
132 v = new G4PhysicsVector(*first);
133 }
134 for(G4int j=0; j<=bins; ++j) {
135 G4double e = first->Energy(j);
136 dp->SetKineticEnergy(e);
137 G4double cros = xs->ComputeCrossSection(dp, mat);
138 v->PutValue(j, cros);
139 }
140 if(spline) v->FillSecondDerivatives();
141 elmSelectors[i] = new G4HadElementSelector(dp, xs, mat, sbins, emin, emax, spline);
142 }
143 xsData.push_back(v);
144 elmSelectors.push_back(es);
145 }
146 nMaterials = nn;
147 }
148}
static const G4double emax
std::vector< G4Material * > G4MaterialTable
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Material *)
void SetKineticEnergy(G4double aEnergy)
static size_t GetNumberOfMaterials()
Definition: G4Material.cc:679
size_t GetNumberOfElements() const
Definition: G4Material.hh:182
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:672
void PutValue(const std::size_t index, const G4double value)
G4double Energy(const std::size_t index) const
void FillSecondDerivatives(const G4SplineType=G4SplineType::Base, const G4double dir1=0.0, const G4double dir2=0.0)
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References anonymous_namespace{G4HyperonSampler.cc}::bins, G4CrossSectionDataStore::ComputeCrossSection(), elmSelectors, emax, G4PhysicsVector::Energy(), G4PhysicsVector::FillSecondDerivatives(), G4Material::GetMaterialTable(), G4Material::GetNumberOfElements(), G4Material::GetNumberOfMaterials(), G4INCL::Math::max(), nMaterials, G4InuclParticleNames::nn, G4PhysicsVector::PutValue(), G4DynamicParticle::SetKineticEnergy(), and xsData.

◆ operator=()

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

◆ SelectRandomAtom()

const G4Element * G4HadronXSDataTable::SelectRandomAtom ( G4double  e,
size_t  idx 
) const
inline

Definition at line 118 of file G4HadronXSDataTable.hh.

119 {
120 return elmSelectors[idx]->SelectRandomAtom(e);
121 };

References elmSelectors.

Field Documentation

◆ elmSelectors

std::vector<G4HadElementSelector*> G4HadronXSDataTable::elmSelectors
private

Definition at line 133 of file G4HadronXSDataTable.hh.

Referenced by Initialise(), SelectRandomAtom(), and ~G4HadronXSDataTable().

◆ nMaterials

size_t G4HadronXSDataTable::nMaterials
private

Definition at line 135 of file G4HadronXSDataTable.hh.

Referenced by Initialise(), and ~G4HadronXSDataTable().

◆ xsData

std::vector<G4PhysicsVector*> G4HadronXSDataTable::xsData
private

Definition at line 132 of file G4HadronXSDataTable.hh.

Referenced by GetCrossSection(), HasData(), Initialise(), and ~G4HadronXSDataTable().


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