Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 27 #include "globals.hh" 28 #include "G4ios.hh" 29 #include "G4SystemOfUnits.hh" 30 #include "G4XNNTotalLowE.hh" 31 #include "G4KineticTrack.hh" 32 #include "G4ParticleDefinition.hh" 33 #include "G4Proton.hh" 34 #include "G4Neutron.hh" 35 36 const G4int G4XNNTotalLowE::tableSize = 29; 37 38 const G4double G4XNNTotalLowE::ss[29]= 39 { 40 1877.05, 1879.58, 1882.69, 1884.8, 1886.95, 1 41 }; 42 43 const G4double G4XNNTotalLowE::ppTot[29] = 44 { 45 2000, 600, 250, 180, 138, 92, 75, 57, 46, 35 46 }; 47 48 const G4double G4XNNTotalLowE::npTot[29] = 49 { 50 4250, 1380, 770, 585, 465, 300, 232, 175, 140, 51 }; 52 53 G4XNNTotalLowE::G4XNNTotalLowE() 54 { 55 56 G4LowEXsection* pp = new G4LowEXsection(); 57 G4LowEXsection* np = new G4LowEXsection(); 58 59 G4int i; 60 for (i=0; i<tableSize; i++) 61 { 62 std::pair<double,double> it; 63 it.first=ss[i]; 64 it.second=ppTot[i]; pp->push_back(it); 65 it.second=npTot[i]; np->push_back(it); 66 } 67 theCrossSections[G4Proton::ProtonDefinition( 68 theCrossSections[G4Neutron::NeutronDefinitio 69 } 70 71 72 G4XNNTotalLowE::~G4XNNTotalLowE() 73 { 74 75 delete theCrossSections[G4Proton::ProtonDefi 76 delete theCrossSections[G4Neutron::NeutronDe 77 } 78 79 G4double G4XNNTotalLowE::CrossSection(const G4 80 { 81 G4double result = 0.; 82 G4double sqrtS = (trk1.Get4Momentum() + trk2 83 const G4ParticleDefinition * key = FindKeyPa 84 85 if (theCrossSections.find(key)!= theCrossSec 86 { 87 LowEMap::const_iterator iter; 88 for (iter = theCrossSections.begin(); iter 89 { 90 if ((*iter).first == key) 91 { 92 result = (*iter).second->CrossSection(sqrtS) 93 } 94 } 95 } 96 else 97 { 98 throw G4HadronicException(__FILE__, __LINE 99 } 100 101 return result; 102 } 103 104 G4String G4XNNTotalLowE::Name() const 105 { 106 G4String name("NNTotalLowE"); 107 return name; 108 } 109 110 111 G4bool G4XNNTotalLowE::IsValid(G4double e) con 112 { 113 G4bool result = e>0&&e<3*GeV; 114 return result; 115 } 116 117 118