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

#include <G4LENDGammaCrossSection.hh>

Inheritance diagram for G4LENDGammaCrossSection:
G4LENDCrossSection G4VCrossSectionDataSet

Public Member Functions

void AllowAnyCandidateTarget ()
 
void AllowNaturalAbundanceTarget ()
 
void BuildPhysicsTable (const G4ParticleDefinition &)
 
void ChangeDefaultEvaluation (G4String name_tmp)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual void CrossSectionDescription (std::ostream &) const
 
void DumpLENDTargetInfo (G4bool force=false)
 
void DumpPhysicsTable (const G4ParticleDefinition &)
 
bool ForAllAtomsAndEnergies () const
 
 G4LENDGammaCrossSection (G4ParticleDefinition *pd)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
G4double GetIsoCrossSection (const G4DynamicParticle *, G4int, G4int, const G4Isotope *, const G4Element *, const G4Material *)
 
G4double GetMaxKinEnergy () const
 
G4double GetMinKinEnergy () const
 
const G4StringGetName () const
 
virtual G4int GetVerboseLevel () const
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
G4bool IsIsoApplicable (const G4DynamicParticle *, G4int, G4int, const G4Element *, const G4Material *)
 
G4int SelectChannel (const G4DynamicParticle *, G4int, G4int, const G4Isotope *, const G4Element *, const G4Material *)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
void SetForAllAtomsAndEnergies (G4bool val)
 
void SetMaxKinEnergy (G4double value)
 
void SetMinKinEnergy (G4double value)
 
void SetName (const G4String &nam)
 
virtual void SetVerboseLevel (G4int value)
 
 ~G4LENDGammaCrossSection ()
 

Protected Member Functions

void create_used_target_map ()
 
G4GIDI_targetget_target_from_map (G4int nuclear_code)
 
virtual G4double getLENDCrossSection (G4GIDI_target *, G4double, G4double)
 
G4double GetUltraLowEnergyExtrapolatedXS (G4double, G4double, G4double, G4double, G4double)
 

Protected Attributes

G4String name
 
G4ParticleDefinitionproj
 
G4int verboseLevel
 

Private Member Functions

void recreate_used_target_map ()
 

Private Attributes

G4bool allow_any
 
G4bool allow_nat
 
G4String default_evaluation
 
G4LENDFissionCrossSectionfissionXS
 
G4LENDInelasticCrossSectioninelasticXS
 
G4bool isForAllAtomsAndEnergies
 
G4LENDManagerlend_manager
 
G4double maxKinEnergy
 
G4double minKinEnergy
 
G4CrossSectionDataSetRegistryregistry
 
std::map< G4int, G4LENDUsedTarget * > usedTarget_map
 

Detailed Description

Definition at line 49 of file G4LENDGammaCrossSection.hh.

Constructor & Destructor Documentation

◆ G4LENDGammaCrossSection()

G4LENDGammaCrossSection::G4LENDGammaCrossSection ( G4ParticleDefinition pd)

Definition at line 46 of file G4LENDGammaCrossSection.cc.

47 :G4LENDCrossSection("LENDGammaCrossSection")
48{
49 proj = pd;
52}
G4LENDCrossSection(const G4String name="")
G4ParticleDefinition * proj
G4LENDInelasticCrossSection * inelasticXS
G4LENDFissionCrossSection * fissionXS

References fissionXS, inelasticXS, and G4LENDCrossSection::proj.

◆ ~G4LENDGammaCrossSection()

G4LENDGammaCrossSection::~G4LENDGammaCrossSection ( )
inline

Definition at line 53 of file G4LENDGammaCrossSection.hh.

53{;};

Member Function Documentation

◆ AllowAnyCandidateTarget()

void G4LENDCrossSection::AllowAnyCandidateTarget ( )
inlineinherited

Definition at line 96 of file G4LENDCrossSection.hh.

96{ allow_any = true; };

References G4LENDCrossSection::allow_any.

◆ AllowNaturalAbundanceTarget()

void G4LENDCrossSection::AllowNaturalAbundanceTarget ( )
inlineinherited

◆ BuildPhysicsTable()

void G4LENDGammaCrossSection::BuildPhysicsTable ( const G4ParticleDefinition pd)
virtual

◆ ChangeDefaultEvaluation()

void G4LENDCrossSection::ChangeDefaultEvaluation ( G4String  name_tmp)
inlineinherited

◆ ComputeCrossSection()

G4double G4VCrossSectionDataSet::ComputeCrossSection ( const G4DynamicParticle part,
const G4Element elm,
const G4Material mat = nullptr 
)
inherited

Definition at line 81 of file G4VCrossSectionDataSet.cc.

84{
85 G4int Z = elm->GetZasInt();
86
87 if (IsElementApplicable(part, Z, mat)) {
88 return GetElementCrossSection(part, Z, mat);
89 }
90
91 // isotope-wise cross section making sum over available
92 // isotope cross sections, which may be incomplete, so
93 // the result is corrected
94 size_t nIso = elm->GetNumberOfIsotopes();
95 G4double fact = 0.0;
96 G4double xsec = 0.0;
97
98 // user-defined isotope abundances
99 const G4IsotopeVector* isoVector = elm->GetIsotopeVector();
100 const G4double* abundVector = elm->GetRelativeAbundanceVector();
101
102 for (size_t j=0; j<nIso; ++j) {
103 const G4Isotope* iso = (*isoVector)[j];
104 G4int A = iso->GetN();
105 if(abundVector[j] > 0.0 && IsIsoApplicable(part, Z, A, elm, mat)) {
106 fact += abundVector[j];
107 xsec += abundVector[j]*GetIsoCrossSection(part, Z, A, iso, elm, mat);
108 }
109 }
110 return (fact > 0.0) ? xsec/fact : 0.0;
111}
std::vector< G4Isotope * > G4IsotopeVector
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
G4double * GetRelativeAbundanceVector() const
Definition: G4Element.hh:167
size_t GetNumberOfIsotopes() const
Definition: G4Element.hh:159
G4int GetZasInt() const
Definition: G4Element.hh:132
G4IsotopeVector * GetIsotopeVector() const
Definition: G4Element.hh:163
G4int GetN() const
Definition: G4Isotope.hh:93
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)

References A, G4VCrossSectionDataSet::GetElementCrossSection(), G4VCrossSectionDataSet::GetIsoCrossSection(), G4Element::GetIsotopeVector(), G4Isotope::GetN(), G4Element::GetNumberOfIsotopes(), G4Element::GetRelativeAbundanceVector(), G4Element::GetZasInt(), G4VCrossSectionDataSet::IsElementApplicable(), G4VCrossSectionDataSet::IsIsoApplicable(), and Z.

Referenced by G4VCrossSectionDataSet::GetCrossSection().

◆ create_used_target_map()

void G4LENDCrossSection::create_used_target_map ( )
protectedinherited

Definition at line 310 of file G4LENDCrossSection.cc.

311{
312
314
315 size_t numberOfElements = G4Element::GetNumberOfElements();
316 static const G4ElementTable* theElementTable = G4Element::GetElementTable();
317
318 for ( size_t i = 0 ; i < numberOfElements ; ++i )
319 {
320
321 const G4Element* anElement = (*theElementTable)[i];
322 G4int numberOfIsotope = anElement->GetNumberOfIsotopes();
323
324 if ( numberOfIsotope > 0 )
325 {
326 // User Defined Abundances
327 for ( G4int i_iso = 0 ; i_iso < numberOfIsotope ; i_iso++ )
328 {
329 G4int iZ = anElement->GetIsotope( i_iso )->GetZ();
330 G4int iA = anElement->GetIsotope( i_iso )->GetN();
331 G4int iIsomer = anElement->GetIsotope( i_iso )->Getm();
332
333 //G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( G4Neutron::Neutron() , default_evaluation , iZ , iA );
334 G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( proj , default_evaluation , iZ , iA , iIsomer );
335 if ( allow_nat == true ) aTarget->AllowNat();
336 if ( allow_any == true ) aTarget->AllowAny();
337 usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iA , iIsomer ) , aTarget ) );
338 }
339 }
340 else
341 {
342 // Natural Abundances
344 G4int iZ = int ( anElement->GetZ() );
345 //G4cout << nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) ) << G4endl;
346 G4int numberOfNistIso = nistElementBuild->GetNumberOfNistIsotopes( int ( anElement->GetZ() ) );
347
348 for ( G4int ii = 0 ; ii < numberOfNistIso ; ii++ )
349 {
350 //G4cout << nistElementBuild->GetIsotopeAbundance( iZ , nistElementBuild->GetNistFirstIsotopeN( iZ ) + i ) << G4endl;
351 if ( nistElementBuild->GetIsotopeAbundance( iZ , nistElementBuild->GetNistFirstIsotopeN( iZ ) + ii ) > 0 )
352 {
353 G4int iMass = nistElementBuild->GetNistFirstIsotopeN( iZ ) + ii;
354 //G4cout << iZ << " " << nistElementBuild->GetNistFirstIsotopeN( iZ ) + i << " " << nistElementBuild->GetIsotopeAbundance ( iZ , iMass ) << G4endl;
355 G4int iIsomer = 0;
356
357 G4LENDUsedTarget* aTarget = new G4LENDUsedTarget ( proj , default_evaluation , iZ , iMass );
358 if ( allow_nat == true ) aTarget->AllowNat();
359 if ( allow_any == true ) aTarget->AllowAny();
360 usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iMass , iIsomer ) , aTarget ) );
361
362 }
363
364 }
365 }
366 }
368}
std::vector< G4Element * > G4ElementTable
static G4ElementTable * GetElementTable()
Definition: G4Element.cc:397
G4double GetZ() const
Definition: G4Element.hh:131
static size_t GetNumberOfElements()
Definition: G4Element.cc:404
const G4Isotope * GetIsotope(G4int iso) const
Definition: G4Element.hh:170
G4int GetZ() const
Definition: G4Isotope.hh:90
G4int Getm() const
Definition: G4Isotope.hh:99
std::map< G4int, G4LENDUsedTarget * > usedTarget_map
void DumpLENDTargetInfo(G4bool force=false)
G4LENDManager * lend_manager
G4bool RequestChangeOfVerboseLevel(G4int)
G4int GetNucleusEncoding(G4int iZ, G4int iA, G4int iM)
G4NistElementBuilder * GetNistElementBuilder()
G4int GetNumberOfNistIsotopes(G4int Z) const
G4double GetIsotopeAbundance(G4int Z, G4int N) const
G4int GetNistFirstIsotopeN(G4int Z) const

References G4LENDCrossSection::allow_any, G4LENDCrossSection::allow_nat, G4LENDUsedTarget::AllowAny(), G4LENDUsedTarget::AllowNat(), G4LENDCrossSection::default_evaluation, G4LENDCrossSection::DumpLENDTargetInfo(), G4Element::GetElementTable(), G4Element::GetIsotope(), G4NistElementBuilder::GetIsotopeAbundance(), G4Isotope::Getm(), G4Isotope::GetN(), G4LENDManager::GetNistElementBuilder(), G4NistElementBuilder::GetNistFirstIsotopeN(), G4LENDManager::GetNucleusEncoding(), G4Element::GetNumberOfElements(), G4Element::GetNumberOfIsotopes(), G4NistElementBuilder::GetNumberOfNistIsotopes(), G4Element::GetZ(), G4Isotope::GetZ(), G4LENDCrossSection::lend_manager, G4LENDCrossSection::proj, G4LENDManager::RequestChangeOfVerboseLevel(), G4LENDCrossSection::usedTarget_map, and G4VCrossSectionDataSet::verboseLevel.

Referenced by G4LENDCombinedCrossSection::BuildPhysicsTable(), G4LENDCrossSection::BuildPhysicsTable(), BuildPhysicsTable(), G4LENDCrossSection::DumpLENDTargetInfo(), and G4LENDCrossSection::recreate_used_target_map().

◆ CrossSectionDescription()

void G4VCrossSectionDataSet::CrossSectionDescription ( std::ostream &  outFile) const
virtualinherited

◆ DumpLENDTargetInfo()

void G4LENDCrossSection::DumpLENDTargetInfo ( G4bool  force = false)
inherited

Definition at line 389 of file G4LENDCrossSection.cc.

389 {
390
391 if ( lend_manager->GetVerboseLevel() >= 1 || force ) {
392 if ( usedTarget_map.size() == 0 ) create_used_target_map();
393 G4cout << "Dumping UsedTarget of " << GetName() << " for " << proj->GetParticleName() << G4endl;
394 G4cout << "Requested Evaluation, Z , A -> Actual Evaluation, Z , A(0=Nat) " << G4endl;
395 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
396 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ ) {
397 G4cout
398 << " " << it->second->GetWantedEvaluation()
399 << ", " << it->second->GetWantedZ()
400 << ", " << it->second->GetWantedA()
401 << " -> " << it->second->GetActualEvaluation()
402 << ", " << it->second->GetActualZ()
403 << ", " << it->second->GetActualA()
404 << G4endl;
405 }
406 }
407}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4int GetVerboseLevel()
const G4String & GetParticleName() const
const G4String & GetName() const

References G4LENDCrossSection::create_used_target_map(), G4cout, G4endl, G4VCrossSectionDataSet::GetName(), G4ParticleDefinition::GetParticleName(), G4LENDManager::GetVerboseLevel(), G4LENDCrossSection::lend_manager, G4LENDCrossSection::proj, and G4LENDCrossSection::usedTarget_map.

Referenced by G4LENDCrossSection::create_used_target_map().

◆ DumpPhysicsTable()

void G4LENDCrossSection::DumpPhysicsTable ( const G4ParticleDefinition aP)
virtualinherited

Reimplemented from G4VCrossSectionDataSet.

Definition at line 153 of file G4LENDCrossSection.cc.

154{
155
156 if ( &aP != proj )
157 throw G4HadronicException(__FILE__, __LINE__, "Attempt to use LEND data for particles other than neutrons!!!");
158
159 G4cout << G4endl;
160 G4cout << "Dump Cross Sections of " << GetName() << G4endl;
161 G4cout << "(Pointwise cross-section at 300 Kelvin.)" << G4endl;
162 G4cout << G4endl;
163
164 G4cout << "Target informaiton " << G4endl;
165
166 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
167 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
168 {
169 G4cout
170 << "Wanted " << it->second->GetWantedEvaluation()
171 << ", Z= " << it->second->GetWantedZ()
172 << ", A= " << it->second->GetWantedA()
173 << "; Actual " << it->second->GetActualEvaluation()
174 << ", Z= " << it->second->GetActualZ()
175 << ", A= " << it->second->GetActualA()
176 << ", " << it->second->GetTarget()
177 << G4endl;
178
179 G4int ie = 0;
180
181 G4GIDI_target* aTarget = it->second->GetTarget();
182 G4double aT = 300;
183 for ( ie = 0 ; ie < 130 ; ie++ )
184 {
185 G4double ke = 1.0e-5 * G4Pow::GetInstance()->powA ( 10.0 , ie/10.0 ) *eV;
186
187 if ( ke < 20*MeV )
188 {
189 G4cout << " " << GetName() << ", cross section at " << ke/eV << " [eV] = " << getLENDCrossSection ( aTarget , ke , aT )/barn << " [barn] " << G4endl;
190 }
191 }
192 G4cout << G4endl;
193
194 }
195
196}
static constexpr double barn
Definition: G4SIunits.hh:85
static constexpr double eV
Definition: G4SIunits.hh:201
static constexpr double MeV
Definition: G4SIunits.hh:200
virtual G4double getLENDCrossSection(G4GIDI_target *, G4double, G4double)
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230

References barn, eV, G4cout, G4endl, G4Pow::GetInstance(), G4LENDCrossSection::getLENDCrossSection(), G4VCrossSectionDataSet::GetName(), MeV, G4Pow::powA(), G4LENDCrossSection::proj, and G4LENDCrossSection::usedTarget_map.

◆ ForAllAtomsAndEnergies()

bool G4VCrossSectionDataSet::ForAllAtomsAndEnergies ( ) const
inlineinherited

◆ get_target_from_map()

G4GIDI_target * G4LENDCrossSection::get_target_from_map ( G4int  nuclear_code)
protectedinherited

Definition at line 381 of file G4LENDCrossSection.cc.

381 {
382 G4GIDI_target* target = NULL;
383 if ( usedTarget_map.find( nuclear_code ) != usedTarget_map.end() ) {
384 target = usedTarget_map.find( nuclear_code )->second->GetTarget();
385 }
386 return target;
387}

References G4LENDCrossSection::usedTarget_map.

Referenced by G4LENDCrossSection::GetIsoCrossSection(), and G4LENDCrossSection::IsIsoApplicable().

◆ GetCrossSection()

G4double G4VCrossSectionDataSet::GetCrossSection ( const G4DynamicParticle dp,
const G4Element elm,
const G4Material mat = nullptr 
)
inlineinherited

Definition at line 187 of file G4VCrossSectionDataSet.hh.

190{
191 return ComputeCrossSection(dp, elm, mat);
192}
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)

References G4VCrossSectionDataSet::ComputeCrossSection().

◆ GetElementCrossSection()

G4double G4VCrossSectionDataSet::GetElementCrossSection ( const G4DynamicParticle dynPart,
G4int  Z,
const G4Material mat = nullptr 
)
virtualinherited

Reimplemented in G4EMDissociationCrossSection, G4IonsShenCrossSection, G4NeutrinoElectronCcXsc, G4NeutrinoElectronNcXsc, G4NeutrinoElectronTotXsc, G4NeutronElectronElXsc, G4PhotoNuclearCrossSection, G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS, G4ElectroNuclearCrossSection, G4BGGNucleonElasticXS, G4BGGPionElasticXS, G4BGGPionInelasticXS, G4BGGNucleonInelasticXS, G4CrossSectionElastic, G4CrossSectionInelastic, G4GammaNuclearXS, G4ParticleInelasticXS, G4ZeroXS, G4NucleonNuclearCrossSection, G4MuNeutrinoNucleusTotXsc, and G4KokoulinMuonNuclearXS.

Definition at line 114 of file G4VCrossSectionDataSet.cc.

117{
119 ed << "GetElementCrossSection is not implemented in <" << name << ">\n"
120 << "Particle: " << dynPart->GetDefinition()->GetParticleName()
121 << " Ekin(MeV)= " << dynPart->GetKineticEnergy()/MeV;
122 if(mat) { ed << " material: " << mat->GetName(); }
123 ed << " target Z= " << Z << G4endl;
124 G4Exception("G4VCrossSectionDataSet::GetElementCrossSection", "had001",
125 FatalException, ed);
126 return 0.0;
127}
@ 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
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4String & GetName() const
Definition: G4Material.hh:173

References FatalException, G4endl, G4Exception(), G4DynamicParticle::GetDefinition(), G4DynamicParticle::GetKineticEnergy(), G4Material::GetName(), G4ParticleDefinition::GetParticleName(), MeV, G4VCrossSectionDataSet::name, and Z.

Referenced by G4QMDReaction::ApplyYourself(), G4VCrossSectionDataSet::ComputeCrossSection(), G4GammaNuclearXS::GetElementCrossSection(), G4GammaNuclearXS::GetIsoCrossSection(), and G4GammaNuclearXS::Initialise().

◆ GetIsoCrossSection()

G4double G4LENDGammaCrossSection::GetIsoCrossSection ( const G4DynamicParticle dp,
G4int  iZ,
G4int  iA,
const G4Isotope isotope,
const G4Element ,
const G4Material material 
)
virtual

Reimplemented from G4LENDCrossSection.

Definition at line 62 of file G4LENDGammaCrossSection.cc.

67{
68 G4double XS = 0.0;
69 XS += inelasticXS->GetIsoCrossSection(dp, iZ, iA, isotope, NULL, material);
70 XS += fissionXS->GetIsoCrossSection(dp, iZ, iA, isotope, NULL, material);
71 //G4cout << "G4LENDGammaCrossSection::GetIsoCrossSection "
72 // << XS/CLHEP::barn << " [barn]" << G4endl;
73 return XS;
74}
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int, G4int, const G4Isotope *, const G4Element *, const G4Material *)
string material
Definition: eplot.py:19

References fissionXS, G4LENDCrossSection::GetIsoCrossSection(), inelasticXS, and eplot::material.

◆ getLENDCrossSection()

virtual G4double G4LENDCrossSection::getLENDCrossSection ( G4GIDI_target ,
G4double  ,
G4double   
)
inlineprotectedvirtualinherited

◆ GetMaxKinEnergy()

G4double G4VCrossSectionDataSet::GetMaxKinEnergy ( ) const
inlineinherited

◆ GetMinKinEnergy()

G4double G4VCrossSectionDataSet::GetMinKinEnergy ( ) const
inlineinherited

◆ GetName()

const G4String & G4VCrossSectionDataSet::GetName ( ) const
inlineinherited

◆ GetUltraLowEnergyExtrapolatedXS()

G4double G4LENDCrossSection::GetUltraLowEnergyExtrapolatedXS ( G4double  x1,
G4double  x2,
G4double  y1,
G4double  y2,
G4double  ke 
)
protectedinherited

Definition at line 371 of file G4LENDCrossSection.cc.

372{
373 //XS propotinal to 1/v at low energy -> 1/root(E)
374 //XS = a * 1/root(E) + b
375 G4double a = ( y2 - y1 ) / ( 1/std::sqrt(x2) - 1/std::sqrt(x1) );
376 G4double b = y1 - a * 1/std::sqrt(x1);
377 G4double result = a * 1/std::sqrt(ke) + b;
378 return result;
379}

Referenced by G4LENDCaptureCrossSection::getLENDCrossSection(), G4LENDElasticCrossSection::getLENDCrossSection(), G4LENDFissionCrossSection::getLENDCrossSection(), and G4LENDInelasticCrossSection::getLENDCrossSection().

◆ GetVerboseLevel()

G4int G4VCrossSectionDataSet::GetVerboseLevel ( ) const
inlinevirtualinherited

◆ IsElementApplicable()

G4bool G4VCrossSectionDataSet::IsElementApplicable ( const G4DynamicParticle ,
G4int  Z,
const G4Material mat = nullptr 
)
virtualinherited

◆ IsIsoApplicable()

G4bool G4LENDCrossSection::IsIsoApplicable ( const G4DynamicParticle dp,
G4int  iZ,
G4int  iA,
const G4Element element,
const G4Material  
)
virtualinherited

Reimplemented from G4VCrossSectionDataSet.

Definition at line 46 of file G4LENDCrossSection.cc.

48{
49 G4double eKin = dp->GetKineticEnergy();
50 if ( dp->GetDefinition() != proj ) return false;
51 if ( eKin > GetMaxKinEnergy() || eKin < GetMinKinEnergy() ) return false;
52
53 //G4cout << "G4LENDCrossSection::GetIsoIsIsoApplicable this->GetName() = " << this->GetName() << ", iZ = " << iZ << ", iA = " << iA << ", allow_nat = " << allow_nat << G4endl;
54 //Check existence of target data
55 if ( element != NULL ) {
56 if ( element->GetNumberOfIsotopes() != 0 ) {
57 std::vector< const G4Isotope*> vIsotope;
58 for ( size_t i = 0 ; i != element->GetNumberOfIsotopes() ; i++ ) {
59 if ( element->GetIsotope( i )->GetN() == iA ) vIsotope.push_back( element->GetIsotope( i ) );
60 }
61 for ( size_t i = 0 ; i != vIsotope.size() ; i++ ) {
62 G4int iM = vIsotope[i]->Getm();
63 if ( get_target_from_map( lend_manager->GetNucleusEncoding( iZ , iA , iM ) ) != NULL ) return true;
64 }
65 //No isomer has data
66 //Check natural aboundance data for the element
67 if ( get_target_from_map( lend_manager->GetNucleusEncoding( iZ , 0 , 0 ) ) != NULL ) return true;
68 } else {
69 //Check for iZ and iA under assuming iM = 0
70 if ( get_target_from_map( lend_manager->GetNucleusEncoding( iZ , iA , 0 ) ) != NULL ) return true;
71 //Check natural aboundance data for the element
72 if ( get_target_from_map( lend_manager->GetNucleusEncoding( iZ , 0 , 0 ) ) != NULL ) return true;
73 }
74 } else {
75 //Check for iZ and iA under assuming iM = 0
76 if ( get_target_from_map( lend_manager->GetNucleusEncoding( iZ , iA , 0 ) ) != NULL ) return true;
77 //Check natural aboundance data for iZ
78 if ( get_target_from_map( lend_manager->GetNucleusEncoding( iZ , 0 , 0 ) ) != NULL ) return true;
79 }
80 return false;
81}
G4GIDI_target * get_target_from_map(G4int nuclear_code)

References G4LENDCrossSection::get_target_from_map(), G4DynamicParticle::GetDefinition(), G4Element::GetIsotope(), G4DynamicParticle::GetKineticEnergy(), G4VCrossSectionDataSet::GetMaxKinEnergy(), G4VCrossSectionDataSet::GetMinKinEnergy(), G4Isotope::GetN(), G4LENDManager::GetNucleusEncoding(), G4Element::GetNumberOfIsotopes(), G4LENDCrossSection::lend_manager, and G4LENDCrossSection::proj.

◆ recreate_used_target_map()

void G4LENDCrossSection::recreate_used_target_map ( )
privateinherited

Definition at line 296 of file G4LENDCrossSection.cc.

297{
298 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
299 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
300 {
301 delete it->second;
302 }
303 usedTarget_map.clear();
304
306}

References G4LENDCrossSection::create_used_target_map(), and G4LENDCrossSection::usedTarget_map.

◆ SelectChannel()

G4int G4LENDGammaCrossSection::SelectChannel ( const G4DynamicParticle dp,
G4int  iZ,
G4int  iA,
const G4Isotope isotope,
const G4Element ,
const G4Material material 
)

Definition at line 76 of file G4LENDGammaCrossSection.cc.

81{
82 G4int ichannel = -1;
83 G4double XSs[2];
84 XSs[0] = inelasticXS->GetIsoCrossSection(dp, iZ, iA, isotope, nullptr, material);
85 XSs[1] = XSs[0] + fissionXS->GetIsoCrossSection(dp, iZ, iA, isotope, nullptr, material);
86
87 G4double total = XSs[1];
88
89 G4double random = G4UniformRand();
90 for (G4int i = 0; i < 2; i++) {
91 if (random*total <= XSs[i]) {
92 ichannel = i;
93 break;
94 }
95 }
96
97 return ichannel;
98}
#define G4UniformRand()
Definition: Randomize.hh:52
G4double total(Particle const *const p1, Particle const *const p2)

References fissionXS, G4UniformRand, G4LENDCrossSection::GetIsoCrossSection(), inelasticXS, eplot::material, and G4INCL::CrossSections::total().

Referenced by G4LENDGammaModel::ApplyYourself().

◆ SelectIsotope()

const G4Isotope * G4VCrossSectionDataSet::SelectIsotope ( const G4Element anElement,
G4double  kinEnergy,
G4double  logE 
)
virtualinherited

Reimplemented in G4GammaNuclearXS, G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS, and G4ParticleInelasticXS.

Definition at line 149 of file G4VCrossSectionDataSet.cc.

151{
152 size_t nIso = anElement->GetNumberOfIsotopes();
153 const G4Isotope* iso = anElement->GetIsotope(0);
154
155 // more than 1 isotope
156 if(1 < nIso) {
157 const G4double* abundVector = anElement->GetRelativeAbundanceVector();
158 G4double sum = 0.0;
160 for (size_t j=0; j<nIso; ++j) {
161 sum += abundVector[j];
162 if(q <= sum) {
163 iso = anElement->GetIsotope(j);
164 break;
165 }
166 }
167 }
168 return iso;
169}

References G4UniformRand, G4Element::GetIsotope(), G4Element::GetNumberOfIsotopes(), and G4Element::GetRelativeAbundanceVector().

◆ SetForAllAtomsAndEnergies()

void G4VCrossSectionDataSet::SetForAllAtomsAndEnergies ( G4bool  val)
inlineinherited

◆ SetMaxKinEnergy()

void G4VCrossSectionDataSet::SetMaxKinEnergy ( G4double  value)
inlineinherited

◆ SetMinKinEnergy()

void G4VCrossSectionDataSet::SetMinKinEnergy ( G4double  value)
inlineinherited

◆ SetName()

void G4VCrossSectionDataSet::SetName ( const G4String nam)
inlineinherited

Definition at line 240 of file G4VCrossSectionDataSet.hh.

241{
242 name = nam;
243}

References G4VCrossSectionDataSet::name.

Referenced by G4ParticleHPInelasticData::G4ParticleHPInelasticData().

◆ SetVerboseLevel()

void G4VCrossSectionDataSet::SetVerboseLevel ( G4int  value)
inlinevirtualinherited

Field Documentation

◆ allow_any

G4bool G4LENDCrossSection::allow_any
privateinherited

◆ allow_nat

G4bool G4LENDCrossSection::allow_nat
privateinherited

◆ default_evaluation

G4String G4LENDCrossSection::default_evaluation
privateinherited

◆ fissionXS

G4LENDFissionCrossSection* G4LENDGammaCrossSection::fissionXS
private

◆ inelasticXS

G4LENDInelasticCrossSection* G4LENDGammaCrossSection::inelasticXS
private

◆ isForAllAtomsAndEnergies

G4bool G4VCrossSectionDataSet::isForAllAtomsAndEnergies
privateinherited

◆ lend_manager

G4LENDManager* G4LENDCrossSection::lend_manager
privateinherited

◆ maxKinEnergy

G4double G4VCrossSectionDataSet::maxKinEnergy
privateinherited

◆ minKinEnergy

G4double G4VCrossSectionDataSet::minKinEnergy
privateinherited

◆ name

G4String G4VCrossSectionDataSet::name
protectedinherited

◆ proj

G4ParticleDefinition* G4LENDCrossSection::proj
protectedinherited

◆ registry

G4CrossSectionDataSetRegistry* G4VCrossSectionDataSet::registry
privateinherited

◆ usedTarget_map

std::map< G4int , G4LENDUsedTarget* > G4LENDCrossSection::usedTarget_map
privateinherited

◆ verboseLevel

G4int G4VCrossSectionDataSet::verboseLevel
protectedinherited

Definition at line 168 of file G4VCrossSectionDataSet.hh.

Referenced by G4BGGNucleonElasticXS::BuildPhysicsTable(), G4BGGPionElasticXS::BuildPhysicsTable(), G4BGGPionInelasticXS::BuildPhysicsTable(), G4GammaNuclearXS::BuildPhysicsTable(), G4NeutronCaptureXS::BuildPhysicsTable(), G4NeutronElasticXS::BuildPhysicsTable(), G4NeutronInelasticXS::BuildPhysicsTable(), G4ParticleInelasticXS::BuildPhysicsTable(), G4BGGNucleonInelasticXS::BuildPhysicsTable(), G4LENDCrossSection::create_used_target_map(), G4BGGNucleonElasticXS::G4BGGNucleonElasticXS(), G4BGGNucleonInelasticXS::G4BGGNucleonInelasticXS(), G4BGGPionElasticXS::G4BGGPionElasticXS(), G4BGGPionInelasticXS::G4BGGPionInelasticXS(), G4GammaNuclearXS::G4GammaNuclearXS(), G4NeutronCaptureXS::G4NeutronCaptureXS(), G4NeutronElasticXS::G4NeutronElasticXS(), G4NeutronInelasticXS::G4NeutronInelasticXS(), G4ParticleInelasticXS::G4ParticleInelasticXS(), G4NeutronCaptureXS::GetElementCrossSection(), G4NeutronElasticXS::GetElementCrossSection(), G4NeutronInelasticXS::GetElementCrossSection(), G4BGGNucleonElasticXS::GetElementCrossSection(), G4BGGPionElasticXS::GetElementCrossSection(), G4BGGPionInelasticXS::GetElementCrossSection(), G4BGGNucleonInelasticXS::GetElementCrossSection(), G4GammaNuclearXS::GetElementCrossSection(), G4ParticleInelasticXS::GetElementCrossSection(), G4BGGNucleonElasticXS::GetIsoCrossSection(), G4BGGPionElasticXS::GetIsoCrossSection(), G4BGGPionInelasticXS::GetIsoCrossSection(), G4GammaNuclearXS::GetIsoCrossSection(), G4BGGNucleonInelasticXS::GetIsoCrossSection(), G4VCrossSectionDataSet::GetVerboseLevel(), G4NeutronElasticXS::Initialise(), G4ParticleInelasticXS::IsoCrossSection(), G4NeutronCaptureXS::IsoCrossSection(), G4NeutronInelasticXS::IsoCrossSection(), G4GammaNuclearXS::RetrieveVector(), G4NeutronCaptureXS::RetrieveVector(), G4NeutronInelasticXS::RetrieveVector(), G4ParticleInelasticXS::RetrieveVector(), and G4VCrossSectionDataSet::SetVerboseLevel().


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