48 if(!getenv(
"G4NEUTRONHPDATA"))
49 throw G4HadronicException(__FILE__, __LINE__,
"Please setenv G4NEUTRONHPDATA to point to the neutron cross-section files.");
50 dirName = getenv(
"G4NEUTRONHPDATA");
52 dirName = dirName + tString;
56 unavailable_elements.clear();
57 for (
G4int i=0; i<numEle; i++)
65 theInelastic[i].
Register(&theNFS,
"F01");
66 theInelastic[i].
Register(&theNXFS,
"F02");
67 theInelastic[i].
Register(&the2NDFS,
"F03");
68 theInelastic[i].
Register(&the2NFS,
"F04");
69 theInelastic[i].
Register(&the3NFS,
"F05");
70 theInelastic[i].
Register(&theNAFS,
"F06");
71 theInelastic[i].
Register(&theN3AFS,
"F07");
72 theInelastic[i].
Register(&the2NAFS,
"F08");
73 theInelastic[i].
Register(&the3NAFS,
"F09");
74 theInelastic[i].
Register(&theNPFS,
"F10");
75 theInelastic[i].
Register(&theN2AFS,
"F11");
76 theInelastic[i].
Register(&the2N2AFS,
"F12");
77 theInelastic[i].
Register(&theNDFS,
"F13");
78 theInelastic[i].
Register(&theNTFS,
"F14");
79 theInelastic[i].
Register(&theNHe3FS,
"F15");
80 theInelastic[i].
Register(&theND2AFS,
"F16");
81 theInelastic[i].
Register(&theNT2AFS,
"F17");
82 theInelastic[i].
Register(&the4NFS,
"F18");
83 theInelastic[i].
Register(&the2NPFS,
"F19");
84 theInelastic[i].
Register(&the3NPFS,
"F20");
85 theInelastic[i].
Register(&theN2PFS,
"F21");
86 theInelastic[i].
Register(&theNPAFS,
"F22");
87 theInelastic[i].
Register(&thePFS,
"F23");
88 theInelastic[i].
Register(&theDFS,
"F24");
89 theInelastic[i].
Register(&theTFS,
"F25");
90 theInelastic[i].
Register(&theHe3FS,
"F26");
91 theInelastic[i].
Register(&theAFS,
"F27");
92 theInelastic[i].
Register(&the2AFS,
"F28");
93 theInelastic[i].
Register(&the3AFS,
"F29");
94 theInelastic[i].
Register(&the2PFS,
"F30");
95 theInelastic[i].
Register(&thePAFS,
"F31");
96 theInelastic[i].
Register(&theD2AFS,
"F32");
97 theInelastic[i].
Register(&theT2AFS,
"F33");
98 theInelastic[i].
Register(&thePDFS,
"F34");
99 theInelastic[i].
Register(&thePTFS,
"F35");
100 theInelastic[i].
Register(&theDAFS,
"F36");
109 while( !theInelastic[i].HasDataInAnyFinalState());
114 if ( unavailable_elements.size() > 0 )
116 std::set< G4String>::iterator it;
117 G4cout <<
"HP Inelastic data are not available for thess elements "<<
G4endl;
118 for ( it = unavailable_elements.begin() ; it != unavailable_elements.end() ; it++ )
120 G4cout <<
"Low Energy Parameterization Models will be used."<<
G4endl;
123 createXSectionDataSet();
128 delete [] theInelastic;
151 rWeight = NumAtomsPerVolume[i];
157 xSec[i] = theInelastic[index].
GetXsec(x);
169 if(random<=running/sum)
break;
182 if ( unavailable_elements.find( name ) == unavailable_elements.end() )
190void G4NeutronHPorLEInelastic::createXSectionDataSet()
197 return std::pair<G4double, G4double>(10*perCent,
DBL_MAX);
G4DLLIMPORT std::ostream G4cout
static size_t GetNumberOfElements()
static const G4ElementTable * GetElementTable()
const G4Material * GetMaterial() const
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
G4double GetTemperature() const
const G4Element * GetElement(G4int iel) const
size_t GetNumberOfElements() const
const G4double * GetVecNbOfAtomsPerVolume() const
G4double GetXsec(G4double anEnergy)
void RestartRegistration()
void Register(G4NeutronHPFinalState *theFS, const G4String &aName)
G4HadFinalState * ApplyYourself(const G4Element *theElement, const G4HadProjectile &aTrack)
G4double GetThermalEnergy(const G4HadProjectile &aP, const G4Element *anE, G4double aT)
G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &aTargetNucleus)
G4bool IsThisElementOK(G4String)
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
G4NeutronHPorLEInelastic()
~G4NeutronHPorLEInelastic()