Geant4 Cross Reference |
1 // ******************************************* 1 2 // * License and Disclaimer 3 // * 4 // * The Geant4 software is copyright of th 5 // * the Geant4 Collaboration. It is provided 6 // * conditions of the Geant4 Software License 7 // * LICENSE and available at http://cern.ch/ 8 // * include a list of copyright holders. 9 // * 10 // * Neither the authors of this software syst 11 // * institutes,nor the agencies providing fin 12 // * work make any representation or warran 13 // * regarding this software system or assum 14 // * use. Please see the license in the file 15 // * for the full disclaimer and the limitatio 16 // * 17 // * This code implementation is the result 18 // * technical work of the GEANT4 collaboratio 19 // * By using, copying, modifying or distri 20 // * any work based on the software) you ag 21 // * use in resulting scientific publicati 22 // * acceptance of all terms of the Geant4 Sof 23 // ******************************************* 24 // 25 // particle_hp -- source file 26 // J.P. Wellisch, Nov-1996 27 // A prototype of the low energy neutron trans 28 // 29 // 080901 Avoiding troubles which caused by G4 30 // 31 // P. Arce, June-2014 Conversion neutron_hp to 32 // 33 #include "G4ParticleHPIsoData.hh" 34 35 #include "G4Neutron.hh" 36 #include "G4ParticleHPDataUsed.hh" 37 #include "G4ParticleHPManager.hh" 38 #include "G4Alpha.hh" 39 #include "G4Deuteron.hh" 40 #include "G4He3.hh" 41 #include "G4Proton.hh" 42 #include "G4Triton.hh" 43 //#include <stdlib.h> 44 #include <fstream> 45 46 void G4ParticleHPIsoData::FillChannelData(G4Pa 47 { 48 if (theChannelData != nullptr) { 49 G4Exception("G4ParticleHPIsoData::FillChan 50 FatalException, "Inconsistency 51 } 52 theChannelData = new G4ParticleHPVector; 53 for (G4int i = 0; i < aBuffer->GetVectorLeng 54 theChannelData->SetPoint(i, aBuffer->GetPo 55 } 56 theChannelData->Hash(); 57 } 58 59 G4bool G4ParticleHPIsoData::Init(G4int A, G4in 60 const G4Strin 61 { 62 theChannelData = nullptr; 63 G4double abundance = abun / 100.; 64 G4String filename; 65 G4bool result = true; 66 G4ParticleHPDataUsed aFile = theNames.GetNam 67 filename = aFile.GetName(); 68 69 std::istringstream theChannel(filename, std: 70 auto man = G4ParticleHPManager::GetInstance( 71 man->GetDataStream(filename, theChannel); 72 73 #ifdef G4PHPDEBUG 74 if (man->GetDEBUG()) 75 G4cout << "G4ParticleHPIsoData::Init = " < 76 #endif 77 78 if (Z == 1 && (aFile.GetZ() != Z || aFile.Ge 79 if (man->GetDEBUG()) 80 G4cout << "Skipped = " << filename << " 81 // 080901 TKDB No more necessary below pro 82 } 83 if (!theChannel) { /*theChannel.close()*/ 84 return false; 85 } 86 // accommodating deficiencie of some compile 87 if (theChannel.eof()) { /*theChannel.close() 88 return false; 89 } 90 G4int dummy; 91 theChannel >> dummy >> dummy; 92 theChannelData = new G4ParticleHPVector; 93 G4int nData; 94 theChannel >> nData; 95 theChannelData->Init(theChannel, nData, CLHE 96 return result; 97 } 98 99 void G4ParticleHPIsoData::Init(G4int A, G4int 100 G4ParticleDefin 101 // fill PhysicsVector for this Isotope 102 { 103 auto man = G4ParticleHPManager::GetInstance( 104 105 G4String baseName = man->GetParticleHPPath(p 106 107 G4String dirName; 108 if (projectile == G4Neutron::Neutron()) { 109 dirName = baseName + "/Fission"; 110 if (Z > 87) // TK Modifed for ENDF VII.0 111 { 112 Init(A, Z, M, abun, dirName, "/CrossSect 113 } 114 else { 115 theChannelData = new G4ParticleHPVector; 116 } 117 theFissionData = theChannelData; 118 theChannelData = nullptr; // fast fix for 119 120 dirName = baseName + "/Capture"; 121 Init(A, Z, M, abun, dirName, "/CrossSectio 122 theCaptureData = theChannelData; 123 theChannelData = nullptr; 124 125 dirName = baseName + "/Elastic"; 126 Init(A, Z, M, abun, dirName, "/CrossSectio 127 theElasticData = theChannelData; 128 theChannelData = nullptr; 129 } 130 131 dirName = baseName + "/Inelastic"; 132 Init(A, Z, M, abun, dirName, "/CrossSection" 133 theInelasticData = theChannelData; 134 theChannelData = nullptr; 135 } 136 137 G4String G4ParticleHPIsoData::GetName(G4int A, 138 { 139 G4bool dbool; 140 return (theNames.GetName(A, Z, base, rest, d 141 } 142