64 subDir(dir), fICRU90(val) {
76 G4int atomicNumberIon,
77 G4int atomicNumberElem
90 G4int atomicNumberIon,
104 G4int atomicNumberIon,
105 G4int atomicNumberElem
118 G4int atomicNumberIon,
133 G4int atomicNumberIon,
134 G4int atomicNumberElem
142 (iter->second)->Value( kinEnergyPerNucleon) : 0.0;
149 G4int atomicNumberIon,
158 (iter->second)->Value(kinEnergyPerNucleon) : 0.0;
165 G4int atomicNumberIon,
169 if(physicsVector ==
nullptr) {
170 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for material",
172 "Pointer to vector is null-pointer.");
176 if(matIdentifier.empty()) {
177 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for material",
182 if(atomicNumberIon <= 0) {
183 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for material",
192 ed <<
"Vector with Z1 = " << atomicNumberIon <<
", mat = "
194 <<
"already exists. Remove first before replacing.";
195 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for material",
209 G4int atomicNumberIon,
210 G4int atomicNumberElem
213 if(physicsVector ==
nullptr) {
214 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for element",
"mat037",
219 if(atomicNumberIon <= 0) {
220 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for element",
"mat038",
225 if(atomicNumberElem <= 0) {
226 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for element",
"mat039",
235 ed <<
"Vector with Z1 = " << atomicNumberIon <<
", Z= "
237 <<
"already exists. Remove first before replacing.";
238 G4Exception (
"G4IonStoppingData::AddPhysicsVector() for element",
"mat040",
251 G4int atomicNumberIon,
260 G4Exception (
"G4IonStoppingData::RemovePhysicsVector() for material",
271 delete physicsVector;
279 G4int atomicNumberIon,
280 G4int atomicNumberElem
287 G4Exception (
"G4IonStoppingData::RemovePhysicsVector() for element",
298 delete physicsVector;
306 G4int atomicNumberIon,
310 if(
IsApplicable(atomicNumberIon, matname) )
return true;
312 const char* path = std::getenv(
"G4LEDATA");
314 G4Exception(
"G4IonStoppingData::BuildPhysicsVector()",
"mat521",
319 std::ostringstream
file;
321 matname ==
"G4_AIR" ||
322 matname ==
"G4_GRAPHITE")) ?
"90" :
"73";
324 file << path <<
"/" <<
subDir << ww <<
"/z"
325 << atomicNumberIon <<
"_" << matname <<
".dat";
328 std::ifstream ifilestream( fileName );
330 if ( !ifilestream.is_open() )
return false;
334 if( !physicsVector -> Retrieve(ifilestream,
true) ) {
340 physicsVector -> ScaleVector(
MeV,
MeV *
cm2 /( 0.001 *
g) );
341 physicsVector -> SetSpline(
true );
342 physicsVector -> FillSecondDerivatives();
346 delete physicsVector;
364 char* path = std::getenv(
"G4LEDATA");
366 G4Exception(
"G4IonStoppingData::BuildPhysicsVector()",
"mat522",
370 std::ostringstream
file;
372 (ZElem == 1 || ZElem == 6 ||
373 ZElem == 7 || ZElem == 8)) ?
"90" :
"73";
375 file << path <<
"/" <<
subDir << ww <<
"/z"
376 << ZIon <<
"_" << ZElem <<
".dat";
379 std::ifstream ifilestream( fileName );
381 if ( !ifilestream.is_open() )
return false;
384 if( !physicsVector -> Retrieve(ifilestream,
true) ) {
389 physicsVector -> ScaleVector(
MeV,
MeV *
cm2 /( 0.001 *
g) );
390 physicsVector -> SetSpline(
true );
391 physicsVector -> FillSecondDerivatives();
395 delete physicsVector;
411 for(;iterMat != iterMat_end; iterMat++) {
415 if(vec != 0)
delete vec;
423 for(;iterElem != iterElem_end; iterElem++) {
427 if(vec != 0)
delete vec;
446 for(;iterMat != iterMat_end; iterMat++) {
450 G4int atomicNumberIon = key.first;
451 G4String matIdentifier = key.second;
453 if(physicsVector != 0) {
468 <<
"Atomic nmb material"
471 for(;iterElem != iterElem_end; iterElem++) {
475 G4int atomicNumberIon = key.first;
476 G4int atomicNumberElem = key.second;
478 if(physicsVector != 0) {