55 if ( element != NULL ) {
57 std::vector< const G4Isotope*> vIsotope;
61 for ( std::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;
67 if (
get_target_from_map( lend_manager->GetNucleusEncoding( iZ , 0 , 0 ) ) != NULL )
return true;
70 if (
get_target_from_map( lend_manager->GetNucleusEncoding( iZ , iA , 0 ) ) != NULL )
return true;
72 if (
get_target_from_map( lend_manager->GetNucleusEncoding( iZ , 0 , 0 ) ) != NULL )
return true;
76 if (
get_target_from_map( lend_manager->GetNucleusEncoding( iZ , iA , 0 ) ) != NULL )
return true;
78 if (
get_target_from_map( lend_manager->GetNucleusEncoding( iZ , 0 , 0 ) ) != NULL )
return true;
91 if ( isotope != NULL ) iM = isotope->Getm();
94 if ( aTarget != NULL ) {
133 default_evaluation =
"";
148 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
149 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
165 throw G4HadronicException(__FILE__, __LINE__,
"Attempt to use LEND data for particles other than neutrons!!!");
169 G4cout <<
"(Pointwise cross-section at 300 Kelvin.)" <<
G4endl;
174 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
175 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
178 <<
"Wanted " << it->second->GetWantedEvaluation()
179 <<
", Z= " << it->second->GetWantedZ()
180 <<
", A= " << it->second->GetWantedA()
181 <<
"; Actual " << it->second->GetActualEvaluation()
182 <<
", Z= " << it->second->GetActualZ()
183 <<
", A= " << it->second->GetActualA()
184 <<
", " << it->second->GetTarget()
191 for ( ie = 0 ; ie < 130 ; ie++ )
304void G4LENDCrossSection::recreate_used_target_map()
306 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
307 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ )
311 usedTarget_map.clear();
321 lend_manager->RequestChangeOfVerboseLevel(
verboseLevel );
326 for ( std::size_t i = 0 ; i < numberOfElements ; ++i )
329 const G4Element* anElement = (*theElementTable)[i];
332 if ( numberOfIsotope > 0 )
335 for (
G4int i_iso = 0 ; i_iso < numberOfIsotope ; i_iso++ )
343 if ( allow_nat ==
true ) aTarget->
AllowNat();
344 if ( allow_any ==
true ) aTarget->
AllowAny();
345 usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iA , iIsomer ) , aTarget ) );
356 for (
G4int ii = 0 ; ii < numberOfNistIso ; ii++ )
366 if ( allow_nat ==
true ) aTarget->
AllowNat();
367 if ( allow_any ==
true ) aTarget->
AllowAny();
368 usedTarget_map.insert( std::pair< G4int , G4LENDUsedTarget* > ( lend_manager->GetNucleusEncoding( iZ , iMass , iIsomer ) , aTarget ) );
383 G4double a = ( y2 - y1 ) / ( 1/std::sqrt(x2) - 1/std::sqrt(x1) );
384 G4double b = y1 - a * 1/std::sqrt(x1);
385 G4double result = a * 1/std::sqrt(ke) + b;
391 if ( usedTarget_map.find( nuclear_code ) != usedTarget_map.end() ) {
392 target = usedTarget_map.find( nuclear_code )->second->GetTarget();
399 if ( lend_manager->GetVerboseLevel() >= 1 || force ) {
402 G4cout <<
"Requested Evaluation, Z , A -> Actual Evaluation, Z , A(0=Nat) " <<
G4endl;
403 for ( std::map< G4int , G4LENDUsedTarget* >::iterator
404 it = usedTarget_map.begin() ; it != usedTarget_map.end() ; it ++ ) {
406 <<
" " << it->second->GetWantedEvaluation()
407 <<
", " << it->second->GetWantedZ()
408 <<
", " << it->second->GetWantedA()
409 <<
" -> " << it->second->GetActualEvaluation()
410 <<
", " << it->second->GetActualZ()
411 <<
", " << it->second->GetActualA()
std::vector< G4Element * > G4ElementTable
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
static std::size_t GetNumberOfElements()
std::size_t GetNumberOfIsotopes() const
const G4Isotope * GetIsotope(G4int iso) const
static const G4ElementTable * GetElementTable()
G4LENDCrossSection(const G4String name="")
G4GIDI_target * get_target_from_map(G4int nuclear_code)
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int, G4int, const G4Isotope *, const G4Element *, const G4Material *)
G4ParticleDefinition * proj
G4double GetUltraLowEnergyExtrapolatedXS(G4double, G4double, G4double, G4double, G4double)
void create_used_target_map()
virtual G4double getLENDCrossSection(G4GIDI_target *, G4double, G4double)
void DumpPhysicsTable(const G4ParticleDefinition &)
void DumpLENDTargetInfo(G4bool force=false)
void BuildPhysicsTable(const G4ParticleDefinition &)
G4bool IsIsoApplicable(const G4DynamicParticle *, G4int, G4int, const G4Element *, const G4Material *)
static G4LENDManager * GetInstance()
G4double GetTemperature() const
G4int GetNumberOfNistIsotopes(G4int Z) const
G4double GetIsotopeAbundance(G4int Z, G4int N) const
G4int GetNistFirstIsotopeN(G4int Z) const
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
G4VCrossSectionDataSet(const G4String &nam="")
G4double GetMaxKinEnergy() const
void SetMaxKinEnergy(G4double value)
void SetMinKinEnergy(G4double value)
G4double GetMinKinEnergy() const
const G4String & GetName() const