44 "Lithium",
"Berylium",
"Boron",
"Carbon",
"Nitrogen",
"Oxygen",
"Fluorine",
45 "Neon",
"Sodium",
"Magnesium",
"Aluminum",
"Silicon",
"Phosphorous",
46 "Sulfur",
"Chlorine",
"Argon",
"Potassium",
"Calcium",
"Scandium",
47 "Titanium",
"Vanadium",
"Chromium",
"Manganese",
"Iron",
"Cobalt",
"Nickel",
48 "Copper",
"Zinc",
"Gallium",
"Germanium",
"Arsenic",
"Selenium",
"Bromine",
49 "Krypton",
"Rubidium",
"Strontium",
"Yttrium",
"Zirconium",
"Niobium",
50 "Molybdenum",
"Technetium",
"Ruthenium",
"Rhodium",
"Palladium",
"Silver",
51 "Cadmium",
"Indium",
"Tin",
"Antimony",
"Tellurium",
"Iodine",
"Xenon",
52 "Cesium",
"Barium",
"Lanthanum",
"Cerium",
"Praseodymium",
"Neodymium",
53 "Promethium",
"Samarium",
"Europium",
"Gadolinium",
"Terbium",
"Dysprosium",
54 "Holmium",
"Erbium",
"Thulium",
"Ytterbium",
"Lutetium",
"Hafnium",
55 "Tantalum",
"Tungsten",
"Rhenium",
"Osmium",
"Iridium",
"Platinium",
"Gold",
56 "Mercury",
"Thallium",
"Lead",
"Bismuth",
"Polonium",
"Astatine",
"Radon",
57 "Francium",
"Radium",
"Actinium",
"Thorium",
"Protactinium",
"Uranium",
58 "Neptunium",
"Plutonium",
"Americium",
"Curium",
"Berkelium",
"Californium",
59 "Einsteinium",
"Fermium"};
83 if(getenv(
"NeutronHPNames"))
G4cout <<
"Names::GetName entered for Z = " << Z <<
", A = " << A <<
G4endl;
88 if(Z>92.5&&!getenv(
"AllowForHeavyElements") )
91 G4cerr <<
"Please contact Geant4 Hadron Group Coordinator"<<
G4endl;
92 throw G4HadronicException(__FILE__, __LINE__,
"G4NeutronHPNames::GetName - data with Z>92 are not provided");
106 std::ifstream * check =
new std::ifstream(
".dummy");
108 if(getenv(
"NeutronHPNames"))
G4cout <<
"entered GetName!!!"<<
G4endl;
115 if(theName!=0)
delete theName;
121 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 1 "<<*theName<<
G4endl;
129 check =
new std::ifstream(*theName);
141 *biff = base+
"/CrossSection/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
142 if(theName!=0)
delete theName;
144 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 2 "<<*theName<<
G4endl;
150 check =
new std::ifstream(*theName);
161 if(theName!=0)
delete theName;
162 *biff = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
163 if ( rest==
"/CrossSection" ) *biff = base+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
165 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 3 "<<*theName<<
G4endl;
190 std::ifstream*
file = NULL;
193 if ( rest ==
"/CrossSection" )
197 fileName = base+rest+
"/"+
itoa(myZ)+
"_"+
itoa(myA)+sM+
"_"+theString[myZ-1];
198 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4a "<<*theName<<
G4endl;
205 fileName = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
itoa(myA)+sM+
"_"+theString[myZ-1];
206 file =
new std::ifstream(fileName);
212 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b1 "<<*theName<<
G4endl;
218 fileName = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
221 file =
new std::ifstream(fileName);
226 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b2a "<<*theName<<
G4endl;
232 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b2c "<<*theName<<
G4endl;
261 G4cout <<
"G4NeutronHPNames: Sorry, this material does not come near to any data."<<
G4endl;
262 G4cout <<
"G4NeutronHPNames: Please make sure G4NEUTRONHPDATA points to the" <<
G4endl;
263 G4cout <<
" directory, the neutron scattering data are located in." <<
G4endl;
264 G4cout <<
"G4NeutronHPNames: The material was: A="<<A<<
", Z="<<Z<<
G4endl;
266 throw G4HadronicException(__FILE__, __LINE__,
"In case the data sets are at present not available in the neutron data library, please contact Hadron Group Coordinator");
285 myZ = Z + flip_Z * delta_Z;
306 myA = A + flip_A * delta_A;
318 while( myZ == 0 || myA == 0 );
321 while((!check) || (!(*check)));
323 if(getenv(
"NeutronHPNamesLogging") || getenv(
"NeutronHPNames"))
325 G4cout <<
"Names::GetName: last theName proposal = "<<
G4endl;
330 if ( Z != result.
GetZ() || A != result.
GetA() )
332 if ( rest ==
"/CrossSection" )
336 reac.erase ( 0 , dir.length() );
339 G4cout <<
"NeutronHP: " << reac <<
" file for Z = " << Z <<
", A = " << A <<
" is not found and CrossSection set to 0." <<
G4endl;
340 G4String new_name = base+
"/"+rest+
"/"+
"0_0_Zero";
346 if ( ( reac.find(
"Inelastic") != reac.size() && ( (Z == 1 && A == 1) || (Z == 2 && A == 4) ) )
347 || ( reac.find(
"Capture") != reac.size() && ( (Z == 1 && A == 3) || (Z == 2 && A == 4) ) )
348 || ( reac.find(
"Fission") != reac.size() && ( (Z == 88 && A == 224) || (Z == 88 && A == 225) || (Z == 89 && A == 225) || (Z == 88 && A == 226) ) ) )
351 G4String new_name = base+
"/"+rest+
"/"+
"0_0_Zero";
356 G4cout <<
"NeutronHP: " << reac <<
" file for Z = " << Z <<
", A = " << A <<
" is not found and NeutronHP will use " << result.
GetName() <<
G4endl;