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

#include <G4LENDInelasticCrossSection.hh>

Inheritance diagram for G4LENDInelasticCrossSection:
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
 
 G4LENDInelasticCrossSection ()
 
 G4LENDInelasticCrossSection (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 *)
 
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)
 
 ~G4LENDInelasticCrossSection ()
 

Protected Member Functions

void create_used_target_map ()
 
G4GIDI_targetget_target_from_map (G4int nuclear_code)
 
G4double GetUltraLowEnergyExtrapolatedXS (G4double, G4double, G4double, G4double, G4double)
 

Protected Attributes

G4String name
 
G4ParticleDefinitionproj
 
G4int verboseLevel
 

Private Member Functions

G4double getLENDCrossSection (G4GIDI_target *, G4double, G4double)
 
void recreate_used_target_map ()
 

Private Attributes

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

Detailed Description

Definition at line 45 of file G4LENDInelasticCrossSection.hh.

Constructor & Destructor Documentation

◆ G4LENDInelasticCrossSection() [1/2]

G4LENDInelasticCrossSection::G4LENDInelasticCrossSection ( )
inline

Definition at line 50 of file G4LENDInelasticCrossSection.hh.

51 {;};

◆ G4LENDInelasticCrossSection() [2/2]

G4LENDInelasticCrossSection::G4LENDInelasticCrossSection ( G4ParticleDefinition pd)
inline

Definition at line 52 of file G4LENDInelasticCrossSection.hh.

53 :G4LENDCrossSection("LENDInelasitcCrossSection")
54 {
55 proj = pd;
56 //name = "LEND Inelastic Cross Section for ";
57 //name += proj->GetParticleName();
58 //create_used_target_map();
59 };
G4LENDCrossSection(const G4String name="")
G4ParticleDefinition * proj

References G4LENDCrossSection::proj.

◆ ~G4LENDInelasticCrossSection()

G4LENDInelasticCrossSection::~G4LENDInelasticCrossSection ( )
inline

Definition at line 61 of file G4LENDInelasticCrossSection.hh.

61{;};

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 G4LENDCrossSection::BuildPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ 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(), G4LENDGammaCrossSection::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 G4LENDCrossSection::GetIsoCrossSection ( const G4DynamicParticle dp,
G4int  iZ,
G4int  iA,
const G4Isotope isotope,
const G4Element ,
const G4Material material 
)
virtualinherited

Reimplemented from G4VCrossSectionDataSet.

Reimplemented in G4LENDGammaCrossSection.

Definition at line 83 of file G4LENDCrossSection.cc.

85{
86
87 G4double xs = 0.0;
88 G4double ke = dp->GetKineticEnergy();
89 G4double temp = material->GetTemperature();
90 G4int iM = 0;
91 if ( isotope != NULL ) iM = isotope->Getm();
92
94 if ( aTarget == NULL ) {
95 G4String message;
96 message = this->GetName();
97 message += " is unexpectedly called.";
98 //G4Exception( "G4LEND::GetIsoCrossSection(,)" , "LENDCrossSection-01" , JustWarning ,
99 G4Exception( "G4LEND::GetIsoCrossSection(,)" , "LENDCrossSection-01" , FatalException ,
100 message );
101 }
102 xs = getLENDCrossSection ( aTarget , ke , temp );
103
104 return xs;
105}
G4GIDI_target * get_target_from_map(G4int nuclear_code)
string material
Definition: eplot.py:19

References FatalException, G4Exception(), G4LENDCrossSection::get_target_from_map(), G4DynamicParticle::GetKineticEnergy(), G4LENDCrossSection::getLENDCrossSection(), G4Isotope::Getm(), G4VCrossSectionDataSet::GetName(), G4LENDManager::GetNucleusEncoding(), G4LENDCrossSection::lend_manager, and eplot::material.

Referenced by G4LENDCombinedCrossSection::GetIsoCrossSection(), G4LENDGammaCrossSection::GetIsoCrossSection(), G4LENDCombinedCrossSection::SelectChannel(), and G4LENDGammaCrossSection::SelectChannel().

◆ getLENDCrossSection()

G4double G4LENDInelasticCrossSection::getLENDCrossSection ( G4GIDI_target target,
G4double  ke,
G4double  temperature 
)
privatevirtual

Reimplemented from G4LENDCrossSection.

Definition at line 30 of file G4LENDInelasticCrossSection.cc.

31{
32 if ( target == NULL ) return 0.0;
33// 090407
34// return target->getElasticCrossSection( ke/MeV , temperature )*barn;
35 //return target->getOthersCrossSectionAtE( ke/MeV , temperature )*barn;
36 G4double result = target->getOthersCrossSectionAtE( ke/MeV , temperature )*barn;
37 if ( result == 0.0 && ke/eV < 1.0e-4)
38 {
39 G4double el = 1.0e-4*eV;
40 G4double eh = 2.0e-4*eV;
41 G4double xs_el = target->getOthersCrossSectionAtE( el/MeV , temperature )*barn;
42 G4double xs_eh = target->getOthersCrossSectionAtE( eh/MeV , temperature )*barn;
43 result = GetUltraLowEnergyExtrapolatedXS( el , eh , xs_el , xs_eh , ke );
44 }
45 return result;
46}
double getOthersCrossSectionAtE(double e_in, double temperature)
G4double GetUltraLowEnergyExtrapolatedXS(G4double, G4double, G4double, G4double, G4double)

References barn, eV, G4GIDI_target::getOthersCrossSectionAtE(), G4LENDCrossSection::GetUltraLowEnergyExtrapolatedXS(), and MeV.

◆ 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 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}

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.

◆ 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}
#define G4UniformRand()
Definition: Randomize.hh:52

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

◆ 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: