45 "Lithium",
"Berylium",
"Boron",
"Carbon",
"Nitrogen",
"Oxygen",
"Fluorine",
46 "Neon",
"Sodium",
"Magnesium",
"Aluminum",
"Silicon",
"Phosphorous",
47 "Sulfur",
"Chlorine",
"Argon",
"Potassium",
"Calcium",
"Scandium",
48 "Titanium",
"Vanadium",
"Chromium",
"Manganese",
"Iron",
"Cobalt",
"Nickel",
49 "Copper",
"Zinc",
"Gallium",
"Germanium",
"Arsenic",
"Selenium",
"Bromine",
50 "Krypton",
"Rubidium",
"Strontium",
"Yttrium",
"Zirconium",
"Niobium",
51 "Molybdenum",
"Technetium",
"Ruthenium",
"Rhodium",
"Palladium",
"Silver",
52 "Cadmium",
"Indium",
"Tin",
"Antimony",
"Tellurium",
"Iodine",
"Xenon",
53 "Cesium",
"Barium",
"Lanthanum",
"Cerium",
"Praseodymium",
"Neodymium",
54 "Promethium",
"Samarium",
"Europium",
"Gadolinium",
"Terbium",
"Dysprosium",
55 "Holmium",
"Erbium",
"Thulium",
"Ytterbium",
"Lutetium",
"Hafnium",
56 "Tantalum",
"Tungsten",
"Rhenium",
"Osmium",
"Iridium",
"Platinium",
"Gold",
57 "Mercury",
"Thallium",
"Lead",
"Bismuth",
"Polonium",
"Astatine",
"Radon",
58 "Francium",
"Radium",
"Actinium",
"Thorium",
"Protactinium",
"Uranium",
59 "Neptunium",
"Plutonium",
"Americium",
"Curium",
"Berkelium",
"Californium",
60 "Einsteinium",
"Fermium"};
86 if(getenv(
"NeutronHPNames"))
G4cout <<
"Names::GetName entered for Z = " << Z <<
", A = " << A <<
G4endl;
91 if(Z>92.5&&!getenv(
"AllowForHeavyElements") )
94 G4cerr <<
"Please contact Geant4 Hadron Group Coordinator"<<
G4endl;
95 throw G4HadronicException(__FILE__, __LINE__,
"G4NeutronHPNames::GetName - data with Z>92 are not provided");
110 std::istringstream* check = NULL;
112 if(getenv(
"NeutronHPNames"))
G4cout <<
"entered GetName!!!"<<
G4endl;
119 if(theName!=0)
delete theName;
125 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 1 "<<*theName<<
G4endl;
128 if ( check != NULL ) {
134 check =
new std::istringstream(std::ios::in);
147 *biff = base+
"/CrossSection/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
148 if(theName!=0)
delete theName;
150 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 2 "<<*theName<<
G4endl;
157 check =
new std::istringstream(std::ios::in);
169 if(theName!=0)
delete theName;
170 *biff = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
171 if ( rest==
"/CrossSection" ) *biff = base+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
173 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 3 "<<*theName<<
G4endl;
199 std::istringstream* file = NULL;
202 if ( rest ==
"/CrossSection" )
206 fileName = base+rest+
"/"+
itoa(myZ)+
"_"+
itoa(myA)+sM+
"_"+theString[myZ-1];
207 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4a "<<*theName<<
G4endl;
214 fileName = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
itoa(myA)+sM+
"_"+theString[myZ-1];
216 file =
new std::istringstream(std::ios::in);
223 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b1 "<<*theName<<
G4endl;
229 fileName = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
233 file =
new std::istringstream(std::ios::in);
239 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b2a "<<*theName<<
G4endl;
245 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b2c "<<*theName<<
G4endl;
274 G4cout <<
"G4NeutronHPNames: Sorry, this material does not come near to any data."<<
G4endl;
275 G4cout <<
"G4NeutronHPNames: Please make sure G4NEUTRONHPDATA points to the" <<
G4endl;
276 G4cout <<
" directory, the neutron scattering data are located in." <<
G4endl;
277 G4cout <<
"G4NeutronHPNames: The material was: A="<<A<<
", Z="<<Z<<
G4endl;
279 throw G4HadronicException(__FILE__, __LINE__,
"In case the data sets are at present not available in the neutron data library, please contact Hadron Group Coordinator");
298 myZ = Z + flip_Z * delta_Z;
319 myA = A + flip_A * delta_A;
331 while( myZ == 0 || myA == 0 );
334 while((!check) || (!(*check)));
336 if(getenv(
"NeutronHPNamesLogging") || getenv(
"NeutronHPNames"))
338 G4cout <<
"Names::GetName: last theName proposal = "<<
G4endl;
343 if ( Z != result.
GetZ() || A != result.
GetA() )
345 if ( rest ==
"/CrossSection" )
348 G4String dir = getenv(
"G4NEUTRONHPDATA");
349 reac.erase ( 0 , dir.length() );
352 if ( verboseLevel > 0 ) {
353 G4cout <<
"NeutronHP: " << reac <<
" file for Z = " << Z <<
", A = " << A <<
" is not found and CrossSection set to 0." <<
G4endl;
355 G4String new_name = base+
"/"+rest+
"/"+
"0_0_Zero";
361 if ( ( reac.find(
"Inelastic") != reac.size() && ( (Z == 1 && A == 1) || (Z == 2 && A == 4) ) )
362 || ( reac.find(
"Capture") != reac.size() && ( (Z == 1 && A == 3) || (Z == 2 && A == 4) ) )
363 || ( reac.find(
"Fission") != reac.size() && ( (Z == 88 && A == 224) || (Z == 88 && A == 225) || (Z == 89 && A == 225) || (Z == 88 && A == 226) ) ) )
366 G4String new_name = base+
"/"+rest+
"/"+
"0_0_Zero";
371 if ( verboseLevel > 0 ) {
372 G4cout <<
"NeutronHP: " << reac <<
" file for Z = " << Z <<
", A = " << A <<
" is not found and NeutronHP will use " << result.
GetName() <<
G4endl;
G4bool IsThisNaturalAbundance()
void SetName(G4String aName)
static G4NeutronHPManager * GetInstance()
G4String itoa(int current)
void GetDataStream(G4String, std::istringstream &iss)
G4NeutronHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool &active)
G4GLOB_DLL std::ostream G4cout
static const G4String theString[100]
static const G4double A[nN]
void SetNaturalAbundanceFlag()
static G4double GetZtoA(G4int Z)
G4GLOB_DLL std::ostream G4cerr