47 "Lithium",
"Berylium",
"Boron",
"Carbon",
"Nitrogen",
"Oxygen",
"Fluorine",
48 "Neon",
"Sodium",
"Magnesium",
"Aluminum",
"Silicon",
"Phosphorous",
49 "Sulfur",
"Chlorine",
"Argon",
"Potassium",
"Calcium",
"Scandium",
50 "Titanium",
"Vanadium",
"Chromium",
"Manganese",
"Iron",
"Cobalt",
"Nickel",
51 "Copper",
"Zinc",
"Gallium",
"Germanium",
"Arsenic",
"Selenium",
"Bromine",
52 "Krypton",
"Rubidium",
"Strontium",
"Yttrium",
"Zirconium",
"Niobium",
53 "Molybdenum",
"Technetium",
"Ruthenium",
"Rhodium",
"Palladium",
"Silver",
54 "Cadmium",
"Indium",
"Tin",
"Antimony",
"Tellurium",
"Iodine",
"Xenon",
55 "Cesium",
"Barium",
"Lanthanum",
"Cerium",
"Praseodymium",
"Neodymium",
56 "Promethium",
"Samarium",
"Europium",
"Gadolinium",
"Terbium",
"Dysprosium",
57 "Holmium",
"Erbium",
"Thulium",
"Ytterbium",
"Lutetium",
"Hafnium",
58 "Tantalum",
"Tungsten",
"Rhenium",
"Osmium",
"Iridium",
"Platinium",
"Gold",
59 "Mercury",
"Thallium",
"Lead",
"Bismuth",
"Polonium",
"Astatine",
"Radon",
60 "Francium",
"Radium",
"Actinium",
"Thorium",
"Protactinium",
"Uranium",
61 "Neptunium",
"Plutonium",
"Americium",
"Curium",
"Berkelium",
"Californium",
62 "Einsteinium",
"Fermium"};
88 if(getenv(
"NeutronHPNames"))
G4cout <<
"Names::GetName entered for Z = " << Z <<
", A = " << A <<
G4endl;
93 if(Z>92.5&&!getenv(
"AllowForHeavyElements") )
96 G4cerr <<
"Please contact Geant4 Hadron Group Coordinator"<<
G4endl;
97 throw G4HadronicException(__FILE__, __LINE__,
"G4ParticleHPNames::GetName - data with Z>92 are not provided");
112 std::istringstream* check = NULL;
114 if(getenv(
"NeutronHPNames"))
G4cout <<
"entered GetName!!!"<<
G4endl;
121 if(theName!=0)
delete theName;
127 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 1 "<<*theName<<
G4endl;
130 if ( check != NULL ) {
136 check =
new std::istringstream(std::ios::in);
149 *biff = base+
"/CrossSection/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
150 if(theName!=0)
delete theName;
152 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 2 "<<*theName<<
G4endl;
159 check =
new std::istringstream(std::ios::in);
171 if(theName!=0)
delete theName;
172 *biff = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
173 if ( rest==
"/CrossSection" ) *biff = base+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
175 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 3 "<<*theName<<
G4endl;
201 std::istringstream* file = NULL;
204 if ( rest ==
"/CrossSection" )
208 fileName = base+rest+
"/"+
itoa(myZ)+
"_"+
itoa(myA)+sM+
"_"+theString[myZ-1];
209 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4a "<<*theName<<
G4endl;
216 fileName = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
itoa(myA)+sM+
"_"+theString[myZ-1];
218 file =
new std::istringstream(std::ios::in);
225 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b1 "<<*theName<<
G4endl;
231 fileName = base+
"/"+rest+
"/"+
itoa(myZ)+
"_"+
"nat"+
"_"+theString[myZ-1];
235 file =
new std::istringstream(std::ios::in);
241 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b2a "<<*theName<<
G4endl;
247 if(getenv(
"NeutronHPNames"))
G4cout <<
"HPWD 4b2c "<<*theName<<
G4endl;
276 G4cout <<
"G4ParticleHPNames: Sorry, this material does not come near to any data."<<
G4endl;
277 G4cout <<
"G4ParticleHPNames: Please make sure G4NEUTRONHPDATA points to the" <<
G4endl;
278 G4cout <<
" directory, the neutron scattering data are located in." <<
G4endl;
279 G4cout <<
"G4ParticleHPNames: The material was: A="<<A<<
", Z="<<Z<<
G4endl;
281 throw G4HadronicException(__FILE__, __LINE__,
"In case the data sets are at present not available in the neutron data library, please contact Hadron Group Coordinator");
300 myZ = Z + flip_Z * delta_Z;
321 myA = A + flip_A * delta_A;
333 while( myZ == 0 || myA == 0 );
336 while((!check) || (!(*check)));
338 if(getenv(
"NeutronHPNamesLogging") || getenv(
"NeutronHPNames"))
340 G4cout <<
"Names::GetName: last theName proposal = "<<
G4endl;
345 if ( Z != result.
GetZ() || A != result.
GetA() )
347 if ( rest ==
"/CrossSection" )
350 G4String dir = getenv(
"G4NEUTRONHPDATA");
351 reac.erase ( 0 , dir.length() );
354 if ( verboseLevel > 0 ) {
355 G4cout <<
"NeutronHP: " << reac <<
" file for Z = " << Z <<
", A = " << A <<
" is not found and CrossSection set to 0." <<
G4endl;
357 G4String new_name = base+
"/"+rest+
"/"+
"0_0_Zero";
364 if ( ( reac.find(
"Inelastic") != reac.size() && ( (Z == 1 && A == 1) || (Z == 1 && A == 2) || (Z == 1 && A == 3) || (Z == 2 && A == 3) || (Z == 2 && A == 4) ) )
365 || ( reac.find(
"Capture") != reac.size() && ( (Z == 1 && A == 3) || (Z == 2 && A == 4) ) )
366 || ( reac.find(
"Fission") != reac.size() && ( (Z == 88 && A == 224) || (Z == 88 && A == 225) || (Z == 89 && A == 225) || (Z == 88 && A == 226) ) ) )
369 G4String new_name = base+
"/"+rest+
"/"+
"0_0_Zero";
374 if ( verboseLevel > 0 ) {
375 G4cout <<
"NeutronHP: " << reac <<
" file for Z = " << Z <<
", A = " << A <<
" is not found and NeutronHP will use " << result.
GetName() <<
G4endl;
static G4ParticleHPManager * GetInstance()
void SetNaturalAbundanceFlag()
static const G4String theString[100]
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
G4bool GetSkipMissingIsotopes()
void GetDataStream2(G4String, std::istringstream &iss)
void SetName(G4String aName)
static G4double GetZtoA(G4int Z)
G4String itoa(int current)
G4ParticleHPDataUsed GetName(G4int A, G4int Z, G4String base, G4String rest, G4bool &active)
G4bool IsThisNaturalAbundance()
G4GLOB_DLL std::ostream G4cerr