Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 // Calculation of the total, elastic and inela 27 // Calculation of the total, elastic and inelastic cross-sections 28 // based on Barashenkov parametrisations of pi 28 // based on Barashenkov parametrisations of pion data 29 // 29 // 30 // 16.08.06 V.Ivanchenko - first implementatio 30 // 16.08.06 V.Ivanchenko - first implementation on base of 31 // J.P Wellisch class 31 // J.P Wellisch class G4PiNuclearCrossSection 32 // 22.01.07 V.Ivanchenko - add cross section i 32 // 22.01.07 V.Ivanchenko - add cross section interfaces with Z and A 33 // 05.03.07 V.Ivanchenko - fix weight for inte 33 // 05.03.07 V.Ivanchenko - fix weight for interpolation 34 // 13.03.07 V.Ivanchenko - cleanup at low ener 34 // 13.03.07 V.Ivanchenko - cleanup at low energies 35 // 11.09.09 V.Ivanchenko - fixed bug in interp 35 // 11.09.09 V.Ivanchenko - fixed bug in interpolation 36 // 36 // 37 37 38 #include "G4UPiNuclearCrossSection.hh" 38 #include "G4UPiNuclearCrossSection.hh" 39 #include "G4SystemOfUnits.hh" 39 #include "G4SystemOfUnits.hh" 40 #include "G4PhysicsFreeVector.hh" 40 #include "G4PhysicsFreeVector.hh" 41 #include "G4PionMinus.hh" 41 #include "G4PionMinus.hh" 42 #include "G4PionPlus.hh" 42 #include "G4PionPlus.hh" 43 #include "G4PhysicsTable.hh" 43 #include "G4PhysicsTable.hh" 44 #include "G4NistManager.hh" 44 #include "G4NistManager.hh" 45 #include "G4HadronXSDataTable.hh" << 46 45 47 G4int G4UPiNuclearCrossSection::theZ[NZ] = 46 G4int G4UPiNuclearCrossSection::theZ[NZ] = 48 {2,4,6,7,8,11,13,20,26,29,42,48,50,74,82,92}; 47 {2,4,6,7,8,11,13,20,26,29,42,48,50,74,82,92}; 49 G4int G4UPiNuclearCrossSection::idxZ[93] = {0} 48 G4int G4UPiNuclearCrossSection::idxZ[93] = {0}; 50 G4double G4UPiNuclearCrossSection::theA[NZ] 49 G4double G4UPiNuclearCrossSection::theA[NZ] = {0.0}; 51 G4double G4UPiNuclearCrossSection::APower[93] 50 G4double G4UPiNuclearCrossSection::APower[93] = {0.0}; 52 51 53 G4PhysicsTable* G4UPiNuclearCrossSection::piPl 52 G4PhysicsTable* G4UPiNuclearCrossSection::piPlusElastic = nullptr; 54 G4PhysicsTable* G4UPiNuclearCrossSection::piPl 53 G4PhysicsTable* G4UPiNuclearCrossSection::piPlusInelastic = nullptr; 55 G4PhysicsTable* G4UPiNuclearCrossSection::piMi 54 G4PhysicsTable* G4UPiNuclearCrossSection::piMinusElastic = nullptr; 56 G4PhysicsTable* G4UPiNuclearCrossSection::piMi 55 G4PhysicsTable* G4UPiNuclearCrossSection::piMinusInelastic = nullptr; 57 56 >> 57 #ifdef G4MULTITHREADED >> 58 G4Mutex G4UPiNuclearCrossSection::pionUXSMutex = G4MUTEX_INITIALIZER; >> 59 #endif >> 60 58 G4UPiNuclearCrossSection::G4UPiNuclearCrossSec 61 G4UPiNuclearCrossSection::G4UPiNuclearCrossSection() 59 : G4VCrossSectionDataSet("G4UPiNuclearCrossSe 62 : G4VCrossSectionDataSet("G4UPiNuclearCrossSection") 60 { 63 { 61 piPlus = G4PionPlus::PionPlus(); << 64 isMaster = false; >> 65 spline = false; >> 66 >> 67 piPlus = G4PionPlus::PionPlus(); 62 piMinus = G4PionMinus::PionMinus(); 68 piMinus = G4PionMinus::PionMinus(); 63 elow = 20.0*CLHEP::MeV; << 64 69 65 if (idxZ[0] == 0) { LoadData(); } << 70 aPower = 0.75; >> 71 elow = 20.0*CLHEP::MeV; >> 72 } >> 73 >> 74 G4UPiNuclearCrossSection::~G4UPiNuclearCrossSection() >> 75 { >> 76 if(isMaster) { >> 77 if(piPlusElastic) { >> 78 piPlusElastic->clearAndDestroy(); >> 79 delete piPlusElastic; >> 80 piPlusElastic = nullptr; >> 81 } >> 82 if(piPlusInelastic) { >> 83 piPlusInelastic->clearAndDestroy(); >> 84 delete piPlusInelastic; >> 85 piPlusInelastic = nullptr; >> 86 } >> 87 if(piMinusElastic) { >> 88 piMinusElastic->clearAndDestroy(); >> 89 delete piMinusElastic; >> 90 piMinusElastic = nullptr; >> 91 } >> 92 if(piMinusInelastic) { >> 93 piMinusInelastic->clearAndDestroy(); >> 94 delete piMinusInelastic; >> 95 piMinusInelastic = nullptr; >> 96 } >> 97 } 66 } 98 } 67 99 68 G4bool 100 G4bool 69 G4UPiNuclearCrossSection::IsElementApplicable( 101 G4UPiNuclearCrossSection::IsElementApplicable(const G4DynamicParticle*, 70 G4int Z, const G4Material*) 102 G4int Z, const G4Material*) 71 { 103 { 72 return (1 < Z); 104 return (1 < Z); 73 } 105 } 74 106 75 G4double G4UPiNuclearCrossSection::Interpolate 107 G4double G4UPiNuclearCrossSection::Interpolate( 76 G4int Z, G4int A, G4double e, const G 108 G4int Z, G4int A, G4double e, const G4PhysicsTable* table) const 77 { 109 { 78 G4double res = 0.0; 110 G4double res = 0.0; 79 G4double ekin = std::max(e, elow); 111 G4double ekin = std::max(e, elow); 80 G4int iz = std::min(Z, 92); 112 G4int iz = std::min(Z, 92); 81 G4int idx = idxZ[iz]; 113 G4int idx = idxZ[iz]; 82 std::size_t jdx = (std::size_t)(std::max(eki << 114 size_t jdx = (size_t)(std::max(ekin - elow, 0.0)*0.06); 83 //G4cout << "Interpolate: Z= " << iz << " A= 115 //G4cout << "Interpolate: Z= " << iz << " A= " << A << " idx= " << idx 84 // << " jdx= " << jdx << " Ekin= " << ekin < 116 // << " jdx= " << jdx << " Ekin= " << ekin << G4endl; 85 if(idx < 0 || 2 == iz) { 117 if(idx < 0 || 2 == iz) { 86 res = ((*table)[std::abs(idx)])->Value(eki 118 res = ((*table)[std::abs(idx)])->Value(ekin, jdx); 87 //G4cout << "1: jdx= " << jdx << G4endl; 119 //G4cout << "1: jdx= " << jdx << G4endl; 88 } else { 120 } else { 89 G4int iz2 = theZ[idx]; 121 G4int iz2 = theZ[idx]; 90 G4double x2 = (((*table)[idx])->Value(ekin 122 G4double x2 = (((*table)[idx])->Value(ekin, jdx))*APower[iz]/APower[iz2]; 91 //G4cout << "2: jdx= " << jdx << G4endl; 123 //G4cout << "2: jdx= " << jdx << G4endl; 92 G4int iz1 = theZ[idx-1]; 124 G4int iz1 = theZ[idx-1]; 93 G4double x1 = (((*table)[idx-1])->Value(ek 125 G4double x1 = (((*table)[idx-1])->Value(ekin, jdx))*APower[iz]/APower[iz1]; 94 G4double w1 = ((G4double)A - theA[idx-1])/ 126 G4double w1 = ((G4double)A - theA[idx-1])/(theA[idx] - theA[idx-1]); 95 res = w1*x2 + (1.0 - w1)*x1; 127 res = w1*x2 + (1.0 - w1)*x1; 96 } 128 } 97 //G4cout << " res(nb)= " << res/CLHEP::barn 129 //G4cout << " res(nb)= " << res/CLHEP::barn << G4endl; 98 return res; 130 return res; 99 } 131 } 100 132 101 void G4UPiNuclearCrossSection::AddDataSet(cons 133 void G4UPiNuclearCrossSection::AddDataSet(const G4String& p, 102 const G4double* tot, 134 const G4double* tot, 103 const G4double* in, 135 const G4double* in, 104 const G4double* e, 136 const G4double* e, 105 G4int n) 137 G4int n) 106 { 138 { 107 G4PhysicsFreeVector* pvin = new G4PhysicsFre 139 G4PhysicsFreeVector* pvin = new G4PhysicsFreeVector(n,e[0]*GeV,e[n-1]*GeV,spline); 108 G4PhysicsFreeVector* pvel = new G4PhysicsFre 140 G4PhysicsFreeVector* pvel = new G4PhysicsFreeVector(n,e[0]*GeV,e[n-1]*GeV,spline); 109 for (G4int i=0; i<n; ++i) { << 141 for(G4int i=0; i<n; ++i) { 110 pvin->PutValues(i, e[i]*CLHEP::GeV, in[i]* << 142 pvin->PutValues(i,e[i]*GeV,in[i]*millibarn); 111 pvel->PutValues(i, e[i]*CLHEP::GeV, std::m << 143 pvel->PutValues(i,e[i]*GeV,std::max(0.0,(tot[i]-in[i])*millibarn)); 112 } 144 } 113 if (spline) { << 145 if(spline) { 114 pvin->FillSecondDerivatives(); 146 pvin->FillSecondDerivatives(); 115 pvel->FillSecondDerivatives(); 147 pvel->FillSecondDerivatives(); 116 } 148 } 117 if (p == "pi+") { << 149 if(p == "pi+") { 118 piPlusInelastic->push_back(pvin); 150 piPlusInelastic->push_back(pvin); 119 piPlusElastic->push_back(pvel); 151 piPlusElastic->push_back(pvel); 120 } else { 152 } else { 121 piMinusInelastic->push_back(pvin); 153 piMinusInelastic->push_back(pvin); 122 piMinusElastic->push_back(pvel); 154 piMinusElastic->push_back(pvel); 123 } 155 } 124 } 156 } 125 157 126 void G4UPiNuclearCrossSection::DumpPhysicsTabl 158 void G4UPiNuclearCrossSection::DumpPhysicsTable(const G4ParticleDefinition& p) 127 { 159 { 128 if(&p == piPlus) { 160 if(&p == piPlus) { 129 G4cout << "### G4UPiNuclearCrossSection El 161 G4cout << "### G4UPiNuclearCrossSection Elastic data for pi+" << G4endl; 130 G4cout << *piPlusElastic << G4endl; 162 G4cout << *piPlusElastic << G4endl; 131 G4cout << "### G4UPiNuclearCrossSection In 163 G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi+" << G4endl; 132 G4cout << *piPlusInelastic << G4endl; 164 G4cout << *piPlusInelastic << G4endl; 133 } else if(&p == piMinus) { 165 } else if(&p == piMinus) { 134 G4cout << "### G4UPiNuclearCrossSection El 166 G4cout << "### G4UPiNuclearCrossSection Elastic data for pi-" << G4endl; 135 G4cout << *piMinusElastic << G4endl; 167 G4cout << *piMinusElastic << G4endl; 136 G4cout << "### G4UPiNuclearCrossSection In 168 G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi-" << G4endl; 137 G4cout << *piMinusInelastic << G4endl; 169 G4cout << *piMinusInelastic << G4endl; 138 } 170 } 139 } 171 } 140 172 141 void G4UPiNuclearCrossSection::BuildPhysicsTab 173 void G4UPiNuclearCrossSection::BuildPhysicsTable(const G4ParticleDefinition& p) 142 { 174 { >> 175 //G4cout << "G4UPiNuclearCrossSection::BuildPhysicsTable for " >> 176 // << p.GetParticleName() << " " << piPlusElastic << G4endl; >> 177 if(piPlusElastic) { return; } >> 178 143 if(&p != piPlus && &p != piMinus) { 179 if(&p != piPlus && &p != piMinus) { 144 G4ExceptionDescription ed; 180 G4ExceptionDescription ed; 145 ed << "This cross section is applicable on 181 ed << "This cross section is applicable only to pions and not to " 146 << p.GetParticleName() << G4endl; 182 << p.GetParticleName() << G4endl; 147 G4Exception("G4UPiNuclearCrossSection::Bui 183 G4Exception("G4UPiNuclearCrossSection::BuildPhysicsTable", "had001", 148 FatalException, ed); 184 FatalException, ed); >> 185 return; 149 } 186 } 150 } << 151 187 152 void G4UPiNuclearCrossSection::LoadData() << 188 if(!piPlusElastic) { 153 { << 189 #ifdef G4MULTITHREADED 154 idxZ[0] = 1; << 190 G4MUTEXLOCK(&pionUXSMutex); 155 idxZ[1] = idxZ[2] = 0; << 191 if(!piPlusElastic) { >> 192 #endif >> 193 isMaster = true; >> 194 #ifdef G4MULTITHREADED >> 195 } >> 196 G4MUTEXUNLOCK(&pionUXSMutex); >> 197 #endif >> 198 } >> 199 if(!isMaster) { return; } >> 200 156 G4NistManager* nist = G4NistManager::Instanc 201 G4NistManager* nist = G4NistManager::Instance(); 157 G4Pow* g4pow = G4Pow::GetInstance(); 202 G4Pow* g4pow = G4Pow::GetInstance(); 158 for(G4int i=0; i<NZ; ++i) { 203 for(G4int i=0; i<NZ; ++i) { 159 theA[i] = nist->GetAtomicMassAmu(theZ[i]); 204 theA[i] = nist->GetAtomicMassAmu(theZ[i]); 160 } 205 } 161 for(G4int i=1; i<93; ++i) { 206 for(G4int i=1; i<93; ++i) { 162 APower[i] = g4pow->powA(nist->GetAtomicMas << 207 APower[i] = g4pow->powA(nist->GetAtomicMassAmu(i),aPower); 163 } 208 } 164 G4int idx = 1; 209 G4int idx = 1; 165 for(G4int i=3; i<93; ++i) { 210 for(G4int i=3; i<93; ++i) { 166 if(theZ[idx] == i) { 211 if(theZ[idx] == i) { 167 idxZ[i] = -idx; 212 idxZ[i] = -idx; 168 ++idx; 213 ++idx; 169 } else { 214 } else { 170 idxZ[i] = idx; 215 idxZ[i] = idx; 171 } 216 } 172 } 217 } 173 218 174 piPlusElastic = new G4PhysicsTable(); 219 piPlusElastic = new G4PhysicsTable(); 175 piPlusInelastic = new G4PhysicsTable(); 220 piPlusInelastic = new G4PhysicsTable(); 176 piMinusElastic = new G4PhysicsTable(); 221 piMinusElastic = new G4PhysicsTable(); 177 piMinusInelastic = new G4PhysicsTable(); 222 piMinusInelastic = new G4PhysicsTable(); 178 auto ptr = G4HadronXSDataTable::Instance(); << 179 ptr->AddTable(piPlusElastic); << 180 ptr->AddTable(piPlusInelastic); << 181 ptr->AddTable(piMinusElastic); << 182 ptr->AddTable(piMinusInelastic); << 183 223 >> 224 LoadData(); >> 225 //G4cout << "### Initialisation done " << G4endl; >> 226 } >> 227 >> 228 void G4UPiNuclearCrossSection::LoadData() >> 229 { 184 static const G4double e1[38] = { 230 static const G4double e1[38] = { 185 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.13, 0 231 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16, 186 0.17, 0.18, 0.19, 0.2, 0.22,0.24, 0.26, 0 232 0.17, 0.18, 0.19, 0.2, 0.22,0.24, 0.26, 0.28, 0.3, 0.35, 187 0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0 233 0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 188 3, 5, 10, 20, 50, 100, 500, 10 234 3, 5, 10, 20, 50, 100, 500, 1000}; 189 static const G4double e2[39] = { 235 static const G4double e2[39] = { 190 0.02, 0.04, 0.06, 0.08, 0.1, 0.11, 0.12, 236 0.02, 0.04, 0.06, 0.08, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 191 0.16, 0.17, 0.18, 0.2, 0.22, 0.24, 0.26, 237 0.16, 0.17, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.35, 192 0.4, 0.45, 0.5, 0.55, 0.575,0.6, 0.7, 238 0.4, 0.45, 0.5, 0.55, 0.575,0.6, 0.7, 0.8, 0.9, 1, 193 2, 3, 5, 10, 20, 50, 100, 239 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 194 static const G4double e3[31] = { 240 static const G4double e3[31] = { 195 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 241 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 196 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 242 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8, 197 0.9, 1, 2, 3, 5, 10, 20, 243 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 198 static const G4double e4[32] = { 244 static const G4double e4[32] = { 199 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 245 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2, 200 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0 246 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 201 0.8, 0.9, 1, 2, 3, 5, 10, 247 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 202 static const G4double e5[34] = { 248 static const G4double e5[34] = { 203 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 249 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14, 204 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 250 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 205 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 251 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 206 static const G4double e6[35] = { 252 static const G4double e6[35] = { 207 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 253 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14, 208 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 254 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 209 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 255 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000}; 210 256 211 static const G4double he_t[38] = { 257 static const G4double he_t[38] = { 212 40, 70, 108, 152, 208, 276, 300, 320, 258 40, 70, 108, 152, 208, 276, 300, 320, 329, 333, 213 332, 328, 322, 310, 288, 260, 240, 216, 259 332, 328, 322, 310, 288, 260, 240, 216, 196, 144, 214 125, 112, 108.5, 109, 110.5, 117, 123, 128.5 260 125, 112, 108.5, 109, 110.5, 117, 123, 128.5, 135, 110, 215 96, 87, 85, 83.5, 83.5, 83.5, 83.5, 83.5 261 96, 87, 85, 83.5, 83.5, 83.5, 83.5, 83.5}; 216 static const G4double he_in[38] = { 262 static const G4double he_in[38] = { 217 18, 38, 62, 98, 136, 176, 190, 200, 263 18, 38, 62, 98, 136, 176, 190, 200, 209, 212, 218 212, 208, 204, 196, 176, 164, 150, 134, 264 212, 208, 204, 196, 176, 164, 150, 134, 124, 97.5, 219 90, 85,82.5, 83.5, 86.5, 93, 97.5,100, 265 90, 85,82.5, 83.5, 86.5, 93, 97.5,100, 102, 83, 220 77, 75, 74, 72.5, 72.5, 72.5, 72.5, 72.5 266 77, 75, 74, 72.5, 72.5, 72.5, 72.5, 72.5}; 221 static const G4double be_m_t[38] = { 267 static const G4double be_m_t[38] = { 222 150, 210, 294, 396, 520, 600, 623, 635, 268 150, 210, 294, 396, 520, 600, 623, 635, 642, 640, 223 630, 615, 600, 576, 540, 504, 470, 435, 269 630, 615, 600, 576, 540, 504, 470, 435, 400, 340, 224 294, 258, 236, 230, 233, 244, 257, 270, 270 294, 258, 236, 230, 233, 244, 257, 270, 276, 250, 225 230, 215, 205, 194, 188, 186, 186, 186}; 271 230, 215, 205, 194, 188, 186, 186, 186}; 226 static const G4double be_m_in[38] = { 272 static const G4double be_m_in[38] = { 227 90, 126, 177, 240, 320, 380, 400, 410, 273 90, 126, 177, 240, 320, 380, 400, 410, 414, 410, 228 400, 387, 371, 360, 333, 312, 285, 260, 274 400, 387, 371, 360, 333, 312, 285, 260, 237, 216, 229 198, 187, 182, 180, 182, 187, 193, 203, 275 198, 187, 182, 180, 182, 187, 193, 203, 207, 179, 230 172, 165, 159, 155, 144, 144, 144, 144}; 276 172, 165, 159, 155, 144, 144, 144, 144}; 231 static const G4double be_p_t[38] = { 277 static const G4double be_p_t[38] = { 232 96, 150, 222, 320, 430, 514, 545, 565, 278 96, 150, 222, 320, 430, 514, 545, 565, 574, 574, 233 564, 552, 535, 522, 490, 462, 432, 398, 279 564, 552, 535, 522, 490, 462, 432, 398, 367, 314, 234 276, 248, 232, 230, 233, 244, 257, 270, 280 276, 248, 232, 230, 233, 244, 257, 270, 276, 250, 235 230, 215, 205, 194, 188, 186, 186, 186}; 281 230, 215, 205, 194, 188, 186, 186, 186}; 236 static const G4double be_p_in[38] = { 282 static const G4double be_p_in[38] = { 237 60, 95, 142, 194, 262, 319, 345, 361, 283 60, 95, 142, 194, 262, 319, 345, 361, 364, 364, 238 354, 350, 330, 319, 298, 280, 258, 237, 284 354, 350, 330, 319, 298, 280, 258, 237, 216, 200, 239 189, 183, 182, 180, 182, 187, 193, 203, 285 189, 183, 182, 180, 182, 187, 193, 203, 207, 179, 240 172, 165, 159, 155, 144, 144, 144, 144}; 286 172, 165, 159, 155, 144, 144, 144, 144}; 241 287 242 static const G4double c_m_t[39] = { 288 static const G4double c_m_t[39] = { 243 204, 260, 366, 517, 630, 673, 694, 704, 289 204, 260, 366, 517, 630, 673, 694, 704, 710, 711, 244 706, 694, 676, 648, 616, 584, 548, 518, 290 706, 694, 676, 648, 616, 584, 548, 518, 489, 426, 245 376, 342, 323, 310, 312, 313, 319, 333, 291 376, 342, 323, 310, 312, 313, 319, 333, 342, 348, 246 310, 290, 268, 250, 245, 237, 234, 234, 292 310, 290, 268, 250, 245, 237, 234, 234, 234}; 247 static const G4double c_m_in[39] = { 293 static const G4double c_m_in[39] = { 248 128, 160, 224, 315, 388, 416, 430, 438, 294 128, 160, 224, 315, 388, 416, 430, 438, 444, 445, 249 440, 432, 416, 400, 380, 354, 320, 304, 295 440, 432, 416, 400, 380, 354, 320, 304, 288, 264, 250 246, 240, 233, 232, 233, 234, 238, 246, 296 246, 240, 233, 232, 233, 234, 238, 246, 252, 256, 251 220, 210, 198, 187, 183, 176, 174, 174, 297 220, 210, 198, 187, 183, 176, 174, 174, 174}; 252 static const G4double c_p_t[39] = { 298 static const G4double c_p_t[39] = { 253 140, 192, 294, 428, 594, 642, 662, 687, 299 140, 192, 294, 428, 594, 642, 662, 687, 685, 688, 254 684, 672, 656, 630, 598, 567, 533, 504, 300 684, 672, 656, 630, 598, 567, 533, 504, 474, 416, 255 369, 336, 319, 310, 312, 313, 319, 333, 301 369, 336, 319, 310, 312, 313, 319, 333, 342, 348, 256 310, 290, 268, 250, 245, 237, 234, 234, 302 310, 290, 268, 250, 245, 237, 234, 234, 234}; 257 static const G4double c_p_in[39] = { 303 static const G4double c_p_in[39] = { 258 94, 132, 184, 260, 370, 398, 408, 420, 304 94, 132, 184, 260, 370, 398, 408, 420, 426, 428, 259 424, 416, 400, 386, 366, 340, 308, 294, 305 424, 416, 400, 386, 366, 340, 308, 294, 280, 257, 260 241, 236, 231, 232, 233, 234, 238, 246, 306 241, 236, 231, 232, 233, 234, 238, 246, 252, 256, 261 220, 210, 198, 187, 183, 176, 174, 174, 307 220, 210, 198, 187, 183, 176, 174, 174, 174}; 262 static const G4double n_m_t[39] = { 308 static const G4double n_m_t[39] = { 263 246, 308, 424, 590, 729, 776, 800, 821, 309 246, 308, 424, 590, 729, 776, 800, 821, 822, 817, 264 800, 778, 768, 728, 690, 654, 615, 584, 310 800, 778, 768, 728, 690, 654, 615, 584, 556, 480, 265 430, 393, 373, 367, 368, 370, 375, 388, 311 430, 393, 373, 367, 368, 370, 375, 388, 390, 397, 266 364, 337, 310, 291, 275, 268, 268, 268, 312 364, 337, 310, 291, 275, 268, 268, 268, 268}; 267 static const G4double n_m_in[39] = { 313 static const G4double n_m_in[39] = { 268 155, 188, 256, 360, 456, 492, 512, 526, 314 155, 188, 256, 360, 456, 492, 512, 526, 526, 520, 269 504, 491, 475, 450, 425, 396, 376, 360, 315 504, 491, 475, 450, 425, 396, 376, 360, 340, 300, 270 282, 270, 265, 265, 266, 268, 273, 280, 316 282, 270, 265, 265, 266, 268, 273, 280, 288, 288, 271 256, 237, 226, 218, 208, 202, 202, 202, 317 256, 237, 226, 218, 208, 202, 202, 202, 202}; 272 static const G4double n_p_t[39] = { 318 static const G4double n_p_t[39] = { 273 150, 212, 328, 500, 680, 735, 762, 781, 319 150, 212, 328, 500, 680, 735, 762, 781, 782, 779, 274 770, 748, 740, 706, 672, 633, 600, 569, 320 770, 748, 740, 706, 672, 633, 600, 569, 541, 467, 275 419, 385, 368, 364, 366, 368, 375, 388, 321 419, 385, 368, 364, 366, 368, 375, 388, 390, 397, 276 364, 337, 310, 291, 275, 268, 268, 268, 322 364, 337, 310, 291, 275, 268, 268, 268, 268}; 277 static const G4double n_p_in[39] = { 323 static const G4double n_p_in[39] = { 278 90, 140, 208, 300, 426, 467, 490, 504, 324 90, 140, 208, 300, 426, 467, 490, 504, 504, 500, 279 484, 474, 460, 437, 413, 381, 365, 350, 325 484, 474, 460, 437, 413, 381, 365, 350, 330, 292, 280 276, 267, 263, 264, 265, 267, 273, 280, 326 276, 267, 263, 264, 265, 267, 273, 280, 288, 288, 281 256, 237, 226, 218, 208, 202, 202, 202, 327 256, 237, 226, 218, 208, 202, 202, 202, 202}; 282 328 283 static const G4double o_m_t[31] = { 329 static const G4double o_m_t[31] = { 284 280, 360, 500, 685, 812, 861, 870, 865, 330 280, 360, 500, 685, 812, 861, 870, 865, 835, 800, 285 755, 700, 600, 537, 493, 468, 441, 436, 331 755, 700, 600, 537, 493, 468, 441, 436, 443, 449, 286 460, 463, 432, 385, 350, 325, 312, 307, 332 460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303}; 287 static const G4double o_m_in[31] = { 333 static const G4double o_m_in[31] = { 288 190, 207, 300, 420, 500, 540, 550, 542, 334 190, 207, 300, 420, 500, 540, 550, 542, 520, 490, 289 460, 423, 360, 339, 321, 314, 312, 314, 335 460, 423, 360, 339, 321, 314, 312, 314, 319, 324, 290 328, 330, 300, 275, 250, 240, 229, 225, 336 328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222}; 291 static const G4double o_p_t[31] = { 337 static const G4double o_p_t[31] = { 292 170, 240, 390, 570, 740, 818, 830, 822, 338 170, 240, 390, 570, 740, 818, 830, 822, 800, 765, 293 725, 675, 585, 525, 483, 458, 444, 447, 339 725, 675, 585, 525, 483, 458, 444, 447, 453, 449, 294 460, 463, 432, 385, 350, 325, 312, 307, 340 460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303}; 295 static const G4double o_p_in[31] = { 341 static const G4double o_p_in[31] = { 296 100, 145, 240, 340, 470, 518, 530, 522, 342 100, 145, 240, 340, 470, 518, 530, 522, 505, 477, 297 448, 412, 350, 330, 316, 310, 308, 311, 343 448, 412, 350, 330, 316, 310, 308, 311, 317, 324, 298 328, 330, 300, 275, 250, 240, 229, 225, 344 328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222}; 299 static const G4double na_m_t[31] = { 345 static const G4double na_m_t[31] = { 300 450, 545, 705, 910, 1020, 1075, 1087, 1080 346 450, 545, 705, 910, 1020, 1075, 1087, 1080, 1042, 987, 301 943, 885, 790, 700, 650, 610, 585, 575 347 943, 885, 790, 700, 650, 610, 585, 575, 585, 595, 302 600, 610, 556, 524, 494, 458, 445, 429 348 600, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427}; 303 static const G4double na_m_in[31] = { 349 static const G4double na_m_in[31] = { 304 275, 315, 413, 545, 620, 660, 670, 662 350 275, 315, 413, 545, 620, 660, 670, 662, 630, 593, 305 570, 520, 465, 420, 410, 395, 390, 400 351 570, 520, 465, 420, 410, 395, 390, 400, 410, 418, 306 420, 422, 372, 348, 330, 320, 310, 294 352 420, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292}; 307 static const G4double na_p_t[31] = { 353 static const G4double na_p_t[31] = { 308 210, 320, 530, 795, 960, 1035, 1050, 1040 354 210, 320, 530, 795, 960, 1035, 1050, 1040, 1007, 957, 309 918, 865, 773, 685, 636, 598, 575, 565 355 918, 865, 773, 685, 636, 598, 575, 565, 578, 590, 310 598, 610, 556, 524, 494, 458, 445, 429 356 598, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427}; 311 static const G4double na_p_in[31] = { 357 static const G4double na_p_in[31] = { 312 115, 210, 340, 495, 585, 630, 645, 637 358 115, 210, 340, 495, 585, 630, 645, 637, 605, 572, 313 550, 505, 455, 410, 401, 388, 383, 393 359 550, 505, 455, 410, 401, 388, 383, 393, 405, 414, 314 418, 422, 372, 348, 330, 320, 310, 294 360 418, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292}; 315 static const G4double al_m_t[31] = { 361 static const G4double al_m_t[31] = { 316 532, 637, 832, 1057, 1207, 1230, 1210, 1174 362 532, 637, 832, 1057, 1207, 1230, 1210, 1174, 1133, 1095, 317 1038, 970, 890, 807, 750, 710, 675, 665 363 1038, 970, 890, 807, 750, 710, 675, 665, 670, 673, 318 678, 682, 618, 574, 546, 520, 507, 495 364 678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488}; 319 static const G4double al_m_in[31] = { 365 static const G4double al_m_in[31] = { 320 300, 360, 495, 665, 750, 765, 750, 730 366 300, 360, 495, 665, 750, 765, 750, 730, 700, 660, 321 615, 570, 520, 490, 470, 450, 448, 450 367 615, 570, 520, 490, 470, 450, 448, 450, 450, 452, 322 456, 460, 408, 392, 376, 356, 347, 338 368 456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332}; 323 static const G4double al_p_t[31] = { 369 static const G4double al_p_t[31] = { 324 225, 350, 616, 945, 1122, 1175, 1157, 1128 370 225, 350, 616, 945, 1122, 1175, 1157, 1128, 1088, 1045, 325 988, 935, 870, 787, 730, 690, 660, 652 371 988, 935, 870, 787, 730, 690, 660, 652, 660, 668, 326 678, 682, 618, 574, 546, 520, 507, 495 372 678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488}; 327 static const G4double al_p_in[31] = { 373 static const G4double al_p_in[31] = { 328 120, 238, 390, 610, 712, 735, 720, 703 374 120, 238, 390, 610, 712, 735, 720, 703, 655, 635, 329 590, 550, 505, 475, 455, 438, 440, 445 375 590, 550, 505, 475, 455, 438, 440, 445, 445, 450, 330 456, 460, 408, 392, 376, 356, 347, 338 376 456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332}; 331 377 332 static const G4double ca_m_t[31] = { 378 static const G4double ca_m_t[31] = { 333 800, 980, 1240, 1460, 1570, 1600, 1580, 1535 379 800, 980, 1240, 1460, 1570, 1600, 1580, 1535, 1475, 1425, 334 1375,1295, 1200, 1083, 1000, 948, 915, 895 380 1375,1295, 1200, 1083, 1000, 948, 915, 895, 900, 908, 335 915, 922, 856, 795, 740, 705, 682, 660 381 915, 922, 856, 795, 740, 705, 682, 660, 660, 660, 660}; 336 static const G4double ca_m_in[31] = { 382 static const G4double ca_m_in[31] = { 337 470, 550, 620, 860, 955, 960, 920, 860 383 470, 550, 620, 860, 955, 960, 920, 860, 820, 780, 338 740, 665, 637, 615, 600, 590, 580, 580 384 740, 665, 637, 615, 600, 590, 580, 580, 600, 608, 339 610, 615, 550, 525, 510, 488, 470, 450 385 610, 615, 550, 525, 510, 488, 470, 450, 450, 450, 450}; 340 static const G4double ca_p_t[31] = { 386 static const G4double ca_p_t[31] = { 341 275, 445, 790, 1195, 1440, 1485, 1475, 1435 387 275, 445, 790, 1195, 1440, 1485, 1475, 1435, 1385, 1335, 342 1295,1245,1160, 1050, 970, 923, 895, 877 388 1295,1245,1160, 1050, 970, 923, 895, 877, 887, 897, 343 904, 913, 855, 795, 740, 705, 682, 660 389 904, 913, 855, 795, 740, 705, 682, 660, 660, 660, 660}; 344 static const G4double ca_p_in[31] = { 390 static const G4double ca_p_in[31] = { 345 160, 315, 500, 745, 870, 905, 900, 860 391 160, 315, 500, 745, 870, 905, 900, 860, 810, 770, 346 740, 710, 640, 617, 595, 585, 575, 575 392 740, 710, 640, 617, 595, 585, 575, 575, 590, 600, 347 602, 608, 550, 525, 510, 488, 470, 450 393 602, 608, 550, 525, 510, 488, 470, 450, 450, 450, 450}; 348 // ca data may have typo 394 // ca data may have typo 349 395 350 static const G4double fe_m_t[32] = { 396 static const G4double fe_m_t[32] = { 351 1175, 1363, 1670, 1950, 2050, 2040, 1975, 188 397 1175, 1363, 1670, 1950, 2050, 2040, 1975, 1886, 1834, 1773, 352 1720, 1635, 1474, 1380, 1269, 1225, 1182, 116 398 1720, 1635, 1474, 1380, 1269, 1225, 1182, 1162, 1159, 1162, 353 1178, 1190, 1197, 1102, 1135, 975, 945, 92 399 1178, 1190, 1197, 1102, 1135, 975, 945, 925, 905, 905, 354 905, 905}; 400 905, 905}; 355 static const G4double fe_m_in[32] = { 401 static const G4double fe_m_in[32] = { 356 625, 725, 910, 1180, 1275, 1250, 1200, 115 402 625, 725, 910, 1180, 1275, 1250, 1200, 1150, 1100, 1040, 357 995, 925, 825, 810, 780, 760, 745, 74 403 995, 925, 825, 810, 780, 760, 745, 740, 740, 740, 358 750, 760, 765, 690, 660, 635, 615, 60 404 750, 760, 765, 690, 660, 635, 615, 600, 585, 585, 359 585, 585}; 405 585, 585}; 360 static const G4double fe_p_t[32] = { 406 static const G4double fe_p_t[32] = { 361 330, 575, 1010, 1500, 1837, 1875, 1820, 175 407 330, 575, 1010, 1500, 1837, 1875, 1820, 1751, 1691, 1636, 362 1690, 1450, 1396, 1305, 1219, 1190, 1148, 113 408 1690, 1450, 1396, 1305, 1219, 1190, 1148, 1138, 1134, 1144, 363 1163, 1175, 1183, 1198, 1135, 975, 945, 92 409 1163, 1175, 1183, 1198, 1135, 975, 945, 925, 905, 905, 364 905, 905}; 410 905, 905}; 365 static const G4double fe_p_in[32] = { 411 static const G4double fe_p_in[32] = { 366 210, 410, 707, 1010, 1125, 1150, 1100, 107 412 210, 410, 707, 1010, 1125, 1150, 1100, 1070, 1010, 960, 367 920, 776, 780, 760, 750, 740, 720, 72 413 920, 776, 780, 760, 750, 740, 720, 725, 725, 730, 368 740, 750, 755, 690, 660, 635, 615, 60 414 740, 750, 755, 690, 660, 635, 615, 600, 585, 585, 369 585, 585}; 415 585, 585}; 370 static const G4double cu_m_t[32] = { 416 static const G4double cu_m_t[32] = { 371 1400, 1600, 1875, 2088, 2200, 2220, 2175, 212 417 1400, 1600, 1875, 2088, 2200, 2220, 2175, 2125, 2075, 2012, 372 1950, 1855, 1670, 1530, 1430, 1370, 1315, 131 418 1950, 1855, 1670, 1530, 1430, 1370, 1315, 1315, 1315, 1330, 373 1345, 1360, 1365, 1250, 1185, 1128, 1070, 103 419 1345, 1360, 1365, 1250, 1185, 1128, 1070, 1035, 1010, 1010, 374 1010, 1010}; 420 1010, 1010}; 375 static const G4double cu_m_in[32] = { 421 static const G4double cu_m_in[32] = { 376 725, 840, 1020, 1200, 1295, 1300, 1267, 124 422 725, 840, 1020, 1200, 1295, 1300, 1267, 1240, 1213, 1175, 377 1125, 1042, 950, 900, 860, 840, 830, 83 423 1125, 1042, 950, 900, 860, 840, 830, 832, 835, 840, 378 850, 860, 865, 785, 735, 705, 680, 65 424 850, 860, 865, 785, 735, 705, 680, 650, 630, 630, 379 630, 630}; 425 630, 630}; 380 static const G4double cu_p_t[32] = { 426 static const G4double cu_p_t[32] = { 381 355, 605, 1120, 1630, 1940, 2010, 2010, 198 427 355, 605, 1120, 1630, 1940, 2010, 2010, 1980, 1925, 1895, 382 1830, 1730, 1585, 1490, 1400, 1340, 1290, 129 428 1830, 1730, 1585, 1490, 1400, 1340, 1290, 1290, 1290, 1310, 383 1330, 1345, 1350, 1240, 1185, 1128, 1070, 103 429 1330, 1345, 1350, 1240, 1185, 1128, 1070, 1035, 1010, 1010, 384 1010, 1010}; 430 1010, 1010}; 385 static const G4double cu_p_in[32] = { 431 static const G4double cu_p_in[32] = { 386 230, 425, 780, 1025, 1155, 1190, 1190, 11 432 230, 425, 780, 1025, 1155, 1190, 1190, 1180, 1125, 1100, 387 1050, 1000, 900, 870, 835, 815, 810, 8 433 1050, 1000, 900, 870, 835, 815, 810, 812, 815, 825, 388 840, 850, 855, 780, 735, 705, 680, 6 434 840, 850, 855, 780, 735, 705, 680, 650, 630, 630, 389 630, 630}; 435 630, 630}; 390 436 391 static const G4double mo_m_t[34] = { 437 static const G4double mo_m_t[34] = { 392 2430, 2610, 2710, 2790, 2880, 2940, 2965, 29 438 2430, 2610, 2710, 2790, 2880, 2940, 2965, 2970, 2970, 2920, 393 2840, 2720, 2570, 2500, 2365, 2200, 2050, 19 439 2840, 2720, 2570, 2500, 2365, 2200, 2050, 1926, 1825, 1768, 394 1749, 1750, 1778, 1789, 1808, 1690, 1645, 15 440 1749, 1750, 1778, 1789, 1808, 1690, 1645, 1530, 1492, 1450, 395 1425, 1425, 1425, 1425}; 441 1425, 1425, 1425, 1425}; 396 static const G4double mo_m_in[34] = { 442 static const G4double mo_m_in[34] = { 397 925, 1125, 1250, 1375, 1500, 1600, 1680, 17 443 925, 1125, 1250, 1375, 1500, 1600, 1680, 1750, 1770, 1730, 398 1660, 1580, 1500, 1450, 1330, 1250, 1190, 11 444 1660, 1580, 1500, 1450, 1330, 1250, 1190, 1140, 1100, 1075, 399 1075, 1070, 1088, 1095, 1110, 1035, 1005, 9 445 1075, 1070, 1088, 1095, 1110, 1035, 1005, 940, 917, 880, 400 860, 860, 860, 860}; 446 860, 860, 860, 860}; 401 static const G4double mo_p_t[34] = { 447 static const G4double mo_p_t[34] = { 402 410, 730, 1110, 1530, 1920, 2200, 2385, 25 448 410, 730, 1110, 1530, 1920, 2200, 2385, 2520, 2600, 2630, 403 2575, 2470, 2320, 2285, 2185, 2053, 1945, 18 449 2575, 2470, 2320, 2285, 2185, 2053, 1945, 1852, 1776, 1719, 404 1710, 1716, 1746, 1759, 1778, 1675, 1645, 15 450 1710, 1716, 1746, 1759, 1778, 1675, 1645, 1530, 1492, 1450, 405 1425, 1425, 1425, 1425}; 451 1425, 1425, 1425, 1425}; 406 static const G4double mo_p_in[34] = { 452 static const G4double mo_p_in[34] = { 407 270, 540, 825, 975, 1140, 1285, 1400, 14 453 270, 540, 825, 975, 1140, 1285, 1400, 1480, 1555, 1580, 408 1525, 1470, 1360, 1340, 1255, 1160, 1120, 10 454 1525, 1470, 1360, 1340, 1255, 1160, 1120, 1085, 1060, 1045, 409 1045, 1045, 1065, 1075, 1090, 1025, 1005, 9 455 1045, 1045, 1065, 1075, 1090, 1025, 1005, 940, 917, 880, 410 860, 860, 860, 860}; 456 860, 860, 860, 860}; 411 static const G4double cd_m_t[34] = { 457 static const G4double cd_m_t[34] = { 412 3060, 3125, 3170, 3220, 3255, 3280, 3290, 32 458 3060, 3125, 3170, 3220, 3255, 3280, 3290, 3260, 3270, 3200, 413 3120, 3080, 3090, 2920, 2810, 2640, 2362, 22 459 3120, 3080, 3090, 2920, 2810, 2640, 2362, 2230, 2115, 2050, 414 2020, 2025, 2040, 2070, 2100, 1900, 1795, 17 460 2020, 2025, 2040, 2070, 2100, 1900, 1795, 1740, 1675, 1645, 415 1625, 1620, 1620, 1620}; 461 1625, 1620, 1620, 1620}; 416 static const G4double cd_m_in[34]= { 462 static const G4double cd_m_in[34]= { 417 1025, 1275, 1440, 1625, 1740, 1800, 1880, 19 463 1025, 1275, 1440, 1625, 1740, 1800, 1880, 1920, 1980, 1920, 418 1850, 1810, 1720, 1650, 1560, 1450, 1330, 12 464 1850, 1810, 1720, 1650, 1560, 1450, 1330, 1290, 1245, 1210, 419 1200, 1200, 1205, 1205, 1230, 1130, 1085, 10 465 1200, 1200, 1205, 1205, 1230, 1130, 1085, 1060, 1000, 985, 420 975, 970, 970, 970}; 466 975, 970, 970, 970}; 421 static const G4double cd_p_t[34] = { 467 static const G4double cd_p_t[34] = { 422 455, 780, 1170, 1700, 2120, 2400, 2600, 27 468 455, 780, 1170, 1700, 2120, 2400, 2600, 2720, 2820, 2840, 423 2800, 2760, 2720, 2640, 2560, 2450, 2252, 21 469 2800, 2760, 2720, 2640, 2560, 2450, 2252, 2130, 2035, 1985, 424 1970, 1975, 2005, 2035, 2070, 1880, 1795, 17 470 1970, 1975, 2005, 2035, 2070, 1880, 1795, 1740, 1675, 1645, 425 1625, 1620, 1620, 1620}; 471 1625, 1620, 1620, 1620}; 426 static const G4double cd_p_in[34] = { 472 static const G4double cd_p_in[34] = { 427 310, 580, 880, 1060, 1270, 1400, 1530, 16 473 310, 580, 880, 1060, 1270, 1400, 1530, 1610, 1660, 1680, 428 1640, 1600, 1560, 1500, 1430, 1330, 1280, 12 474 1640, 1600, 1560, 1500, 1430, 1330, 1280, 1230, 1200, 1180, 429 1170, 1175, 1180, 1180, 1210, 1120, 1085, 10 475 1170, 1175, 1180, 1180, 1210, 1120, 1085, 1060, 1000, 985, 430 975, 970, 970, 970}; 476 975, 970, 970, 970}; 431 477 432 static const G4double sn_m_t[35] = { 478 static const G4double sn_m_t[35] = { 433 3000, 3180, 3250, 3300, 3300, 3410, 3470, 34 479 3000, 3180, 3250, 3300, 3300, 3410, 3470, 3450, 3410, 3350, 434 3280, 3200, 3120, 3050, 2900, 2630, 2500, 23 480 3280, 3200, 3120, 3050, 2900, 2630, 2500, 2325, 2190, 2100, 435 2060, 2055, 2055, 2055, 2067, 2085, 2000, 19 481 2060, 2055, 2055, 2055, 2067, 2085, 2000, 1900, 1835, 1770, 436 1720, 1700, 1695, 1695, 1695}; 482 1720, 1700, 1695, 1695, 1695}; 437 static const G4double sn_m_in[35] = { 483 static const G4double sn_m_in[35] = { 438 1050, 1350, 1520, 1650, 1800, 1980, 2070, 21 484 1050, 1350, 1520, 1650, 1800, 1980, 2070, 2120, 2090, 2050, 439 1980, 1920, 1830, 1770, 1670, 1500, 1435, 13 485 1980, 1920, 1830, 1770, 1670, 1500, 1435, 1350, 1300, 1230, 440 1220, 1235, 1235, 1235, 1237, 1240, 1160, 11 486 1220, 1235, 1235, 1235, 1237, 1240, 1160, 1120, 1090, 1065, 441 1040, 1020, 1015, 1015, 1015}; 487 1040, 1020, 1015, 1015, 1015}; 442 static const G4double sn_p_t[35] = { 488 static const G4double sn_p_t[35] = { 443 465, 800, 1200, 1760, 2170, 2480, 2730, 28 489 465, 800, 1200, 1760, 2170, 2480, 2730, 2885, 2970, 2980, 444 2970, 2890, 2840, 2790, 2620, 2450, 2335, 22 490 2970, 2890, 2840, 2790, 2620, 2450, 2335, 2205, 2080, 2020, 445 2010, 1990, 1990, 2015, 2030, 2045, 1980, 18 491 2010, 1990, 1990, 2015, 2030, 2045, 1980, 1890, 1835, 1770, 446 1720, 1700, 1695, 1695, 1695}; 492 1720, 1700, 1695, 1695, 1695}; 447 static const G4double sn_p_in[35] = { 493 static const G4double sn_p_in[35] = { 448 315, 590, 880, 1220, 1460, 1580, 1700, 17 494 315, 590, 880, 1220, 1460, 1580, 1700, 1770, 1810, 1810, 449 1800, 1730, 1680, 1630, 1530, 1400, 1335, 12 495 1800, 1730, 1680, 1630, 1530, 1400, 1335, 1270, 1210, 1180, 450 1190, 1190, 1190, 1205, 1210, 1210, 1150, 11 496 1190, 1190, 1190, 1205, 1210, 1210, 1150, 1115, 1090, 1065, 451 1040, 1020, 1015, 1015, 1015}; 497 1040, 1020, 1015, 1015, 1015}; 452 static const G4double w_m_t[35] = { 498 static const G4double w_m_t[35] = { 453 5200, 5115, 5025, 4975, 4900, 4850, 4780, 47 499 5200, 5115, 5025, 4975, 4900, 4850, 4780, 4725, 4600, 4490, 454 4355, 4255, 4125, 4040, 3830, 3580, 3330, 31 500 4355, 4255, 4125, 4040, 3830, 3580, 3330, 3110, 2955, 2860, 455 2852, 2845, 2885, 2900, 2915, 2940, 2800, 26 501 2852, 2845, 2885, 2900, 2915, 2940, 2800, 2660, 2570, 2490, 456 2460, 2425, 2420, 2420, 2420}; 502 2460, 2425, 2420, 2420, 2420}; 457 static const G4double w_m_in[35] = { 503 static const G4double w_m_in[35] = { 458 1450, 1850, 2100, 2350, 2550, 2700, 2825, 29 504 1450, 1850, 2100, 2350, 2550, 2700, 2825, 2900, 2850, 2750, 459 2630, 2525, 2400, 2300, 2200, 2070, 1880, 17 505 2630, 2525, 2400, 2300, 2200, 2070, 1880, 1770, 1715, 1680, 460 1680, 1680, 1685, 1690, 1700, 1720, 1635, 15 506 1680, 1680, 1685, 1690, 1700, 1720, 1635, 1560, 1530, 1460, 461 1440, 1410, 1410, 1410, 1410}; 507 1440, 1410, 1410, 1410, 1410}; 462 static const G4double w_p_t[35] = { 508 static const G4double w_p_t[35] = { 463 480, 900, 1500, 2350, 3020, 3420, 3650, 37 509 480, 900, 1500, 2350, 3020, 3420, 3650, 3775, 3875, 3830, 464 3750, 3700, 3630, 3550, 3550, 3290, 3070, 28 510 3750, 3700, 3630, 3550, 3550, 3290, 3070, 2890, 2840, 2730, 465 2725, 2720, 2770, 2805, 2828, 2865, 2770, 26 511 2725, 2720, 2770, 2805, 2828, 2865, 2770, 2640, 2570, 2490, 466 2460, 2425, 2420, 2420, 2420}; 512 2460, 2425, 2420, 2420, 2420}; 467 static const G4double w_p_in[35] = { 513 static const G4double w_p_in[35] = { 468 325, 680, 990, 1500, 1850, 2150, 2250, 23 514 325, 680, 990, 1500, 1850, 2150, 2250, 2300, 2350, 2330, 469 2280, 2230, 2200, 2120, 2130, 1900, 1780, 16 515 2280, 2230, 2200, 2120, 2130, 1900, 1780, 1670, 1635, 1600, 470 1602, 1605, 1610, 1615, 1630, 1660, 1620, 15 516 1602, 1605, 1610, 1615, 1630, 1660, 1620, 1550, 1530, 1460, 471 1440, 1410, 1410, 1410, 1410}; 517 1440, 1410, 1410, 1410, 1410}; 472 518 473 static const G4double pb_m_t[35] = { 519 static const G4double pb_m_t[35] = { 474 5890, 5700, 5610, 5580, 5550, 5480, 5400, 53 520 5890, 5700, 5610, 5580, 5550, 5480, 5400, 5300, 5100, 4930, 475 4750, 4600, 4400, 4280, 4170, 3915, 3650, 34 521 4750, 4600, 4400, 4280, 4170, 3915, 3650, 3470, 3260, 3150, 476 3120, 3070, 3085, 3100, 3120, 3160, 3070, 29 522 3120, 3070, 3085, 3100, 3120, 3160, 3070, 2930, 2820, 2750, 477 2710, 2655, 2640, 2640, 2640}; 523 2710, 2655, 2640, 2640, 2640}; 478 static const G4double pb_m_in[35] = { 524 static const G4double pb_m_in[35] = { 479 1575, 2025, 2300, 2575, 2850, 3000, 3115, 31 525 1575, 2025, 2300, 2575, 2850, 3000, 3115, 3180, 3080, 2940, 480 2800, 2670, 2550, 2450, 2370, 2220, 2110, 20 526 2800, 2670, 2550, 2450, 2370, 2220, 2110, 2000, 1920, 1880, 481 1850, 1800, 1805, 1810, 1820, 1840, 1800, 17 527 1850, 1800, 1805, 1810, 1820, 1840, 1800, 1720, 1640, 1620, 482 1570, 1530, 1530, 1530, 1530}; 528 1570, 1530, 1530, 1530, 1530}; 483 static const G4double pb_p_t[35] = { 529 static const G4double pb_p_t[35] = { 484 515, 940, 1500, 2400, 3270, 3750, 4050, 41 530 515, 940, 1500, 2400, 3270, 3750, 4050, 4140, 4260, 4200, 485 4080, 3990, 3990, 3810, 3730, 3520, 3370, 31 531 4080, 3990, 3990, 3810, 3730, 3520, 3370, 3186, 3110, 3010, 486 2990, 2985, 3005, 3020, 3040, 3080, 3020, 29 532 2990, 2985, 3005, 3020, 3040, 3080, 3020, 2905, 2790, 2750, 487 2710, 2655, 2640, 2640, 2640}; 533 2710, 2655, 2640, 2640, 2640}; 488 static const G4double pb_p_in[35] = { 534 static const G4double pb_p_in[35] = { 489 348, 707, 1040, 1650, 2100, 2400, 2580, 26 535 348, 707, 1040, 1650, 2100, 2400, 2580, 2640, 2650, 2520, 490 2410, 2300, 2250, 2190, 2130, 2000, 1930, 18 536 2410, 2300, 2250, 2190, 2130, 2000, 1930, 1870, 1830, 1790, 491 1770, 1765, 1775, 1780, 1790, 1800, 1775, 17 537 1770, 1765, 1775, 1780, 1790, 1800, 1775, 1710, 1620, 1620, 492 1570, 1530, 1530, 1530, 1530}; 538 1570, 1530, 1530, 1530, 1530}; 493 static const G4double u_m_t[35] = { 539 static const G4double u_m_t[35] = { 494 7080, 6830, 6650, 6530, 6400, 6280, 6100, 58 540 7080, 6830, 6650, 6530, 6400, 6280, 6100, 5840, 5660, 5520, 495 5330, 5160, 4990, 4810, 4630, 4323, 4130, 38 541 5330, 5160, 4990, 4810, 4630, 4323, 4130, 3870, 3700, 3550, 496 3490, 3465, 3467, 3475, 3495, 3515, 3440, 33 542 3490, 3465, 3467, 3475, 3495, 3515, 3440, 3360, 3150, 3040, 497 2985, 2955, 2940, 2940, 2940}; 543 2985, 2955, 2940, 2940, 2940}; 498 static const G4double u_m_in[35] = { 544 static const G4double u_m_in[35] = { 499 1740, 2220, 2500, 2820, 3080, 3300, 3420, 35 545 1740, 2220, 2500, 2820, 3080, 3300, 3420, 3500, 3420, 3330, 500 3200, 3060, 2940, 2850, 2710, 2470, 2380, 22 546 3200, 3060, 2940, 2850, 2710, 2470, 2380, 2250, 2160, 2080, 501 2040, 2045, 2047, 2050, 2055, 2060, 2010, 19 547 2040, 2045, 2047, 2050, 2055, 2060, 2010, 1980, 1830, 1780, 502 1735, 1710, 1700, 1700, 1700}; 548 1735, 1710, 1700, 1700, 1700}; 503 static const G4double u_p_t[35] = { 549 static const G4double u_p_t[35] = { 504 485, 960, 1580, 2700, 3550, 4050, 4320, 44 550 485, 960, 1580, 2700, 3550, 4050, 4320, 4420, 4620, 4660, 505 4580, 4470, 4350, 4295, 4187, 3938, 3755, 35 551 4580, 4470, 4350, 4295, 4187, 3938, 3755, 3573, 3450, 3342, 506 3310, 3295, 3310, 3330, 3375, 3405, 3350, 33 552 3310, 3295, 3310, 3330, 3375, 3405, 3350, 3338, 3135, 3040, 507 2985, 2955, 2940, 2940, 2940}; 553 2985, 2955, 2940, 2940, 2940}; 508 static const G4double u_p_in[35] = { 554 static const G4double u_p_in[35] = { 509 334, 720, 1020, 1560, 2100, 2300, 2550, 27 555 334, 720, 1020, 1560, 2100, 2300, 2550, 2700, 2880, 2880, 510 2760, 2660, 2550, 2510, 2430, 2270, 2130, 20 556 2760, 2660, 2550, 2510, 2430, 2270, 2130, 2060, 2000, 1970, 511 1950, 1950, 1960, 1960, 1970, 1980, 1950, 19 557 1950, 1950, 1960, 1960, 1970, 1980, 1950, 1978, 1830, 1780, 512 1735, 1710, 1700, 1700, 1700}; 558 1735, 1710, 1700, 1700, 1700}; 513 559 514 AddDataSet("pi-",he_t, he_in, e1, 38); 560 AddDataSet("pi-",he_t, he_in, e1, 38); 515 AddDataSet("pi+",he_t, he_in, e1, 38); 561 AddDataSet("pi+",he_t, he_in, e1, 38); 516 AddDataSet("pi-",be_m_t, be_m_in, e1, 38); 562 AddDataSet("pi-",be_m_t, be_m_in, e1, 38); 517 AddDataSet("pi+",be_p_t, be_p_in, e1, 38); 563 AddDataSet("pi+",be_p_t, be_p_in, e1, 38); 518 AddDataSet("pi-",c_m_t, c_m_in, e2, 39); 564 AddDataSet("pi-",c_m_t, c_m_in, e2, 39); 519 AddDataSet("pi+",c_p_t, c_p_in, e2, 39); 565 AddDataSet("pi+",c_p_t, c_p_in, e2, 39); 520 AddDataSet("pi-",n_m_t, n_m_in, e2, 39); 566 AddDataSet("pi-",n_m_t, n_m_in, e2, 39); 521 AddDataSet("pi+",n_p_t, n_p_in, e2, 39); 567 AddDataSet("pi+",n_p_t, n_p_in, e2, 39); 522 AddDataSet("pi-",o_m_t, o_m_in, e3, 31); 568 AddDataSet("pi-",o_m_t, o_m_in, e3, 31); 523 AddDataSet("pi+",o_p_t, o_p_in, e3, 31); 569 AddDataSet("pi+",o_p_t, o_p_in, e3, 31); 524 AddDataSet("pi-",na_m_t, na_m_in, e3, 31); 570 AddDataSet("pi-",na_m_t, na_m_in, e3, 31); 525 AddDataSet("pi+",na_p_t, na_p_in, e3, 31); 571 AddDataSet("pi+",na_p_t, na_p_in, e3, 31); 526 AddDataSet("pi-",al_m_t, al_m_in, e3, 31); 572 AddDataSet("pi-",al_m_t, al_m_in, e3, 31); 527 AddDataSet("pi+",al_p_t, al_p_in, e3, 31); 573 AddDataSet("pi+",al_p_t, al_p_in, e3, 31); 528 AddDataSet("pi-",ca_m_t, ca_m_in, e3, 31); 574 AddDataSet("pi-",ca_m_t, ca_m_in, e3, 31); 529 AddDataSet("pi+",ca_p_t, ca_p_in, e3, 31); 575 AddDataSet("pi+",ca_p_t, ca_p_in, e3, 31); 530 AddDataSet("pi-",fe_m_t, fe_m_in, e4, 32); 576 AddDataSet("pi-",fe_m_t, fe_m_in, e4, 32); 531 AddDataSet("pi+",fe_p_t, fe_p_in, e4, 32); 577 AddDataSet("pi+",fe_p_t, fe_p_in, e4, 32); 532 AddDataSet("pi-",cu_m_t, cu_m_in, e4, 32); 578 AddDataSet("pi-",cu_m_t, cu_m_in, e4, 32); 533 AddDataSet("pi+",cu_p_t, cu_p_in, e4, 32); 579 AddDataSet("pi+",cu_p_t, cu_p_in, e4, 32); 534 AddDataSet("pi-",mo_m_t, mo_m_in, e5, 34); 580 AddDataSet("pi-",mo_m_t, mo_m_in, e5, 34); 535 AddDataSet("pi+",mo_p_t, mo_p_in, e5, 34); 581 AddDataSet("pi+",mo_p_t, mo_p_in, e5, 34); 536 AddDataSet("pi-",cd_m_t, cd_m_in, e5, 34); 582 AddDataSet("pi-",cd_m_t, cd_m_in, e5, 34); 537 AddDataSet("pi+",cd_p_t, cd_p_in, e5, 34); 583 AddDataSet("pi+",cd_p_t, cd_p_in, e5, 34); 538 AddDataSet("pi-",sn_m_t, sn_m_in, e6, 35); 584 AddDataSet("pi-",sn_m_t, sn_m_in, e6, 35); 539 AddDataSet("pi+",sn_p_t, sn_p_in, e6, 35); 585 AddDataSet("pi+",sn_p_t, sn_p_in, e6, 35); 540 AddDataSet("pi-",w_m_t, w_m_in, e6, 35); 586 AddDataSet("pi-",w_m_t, w_m_in, e6, 35); 541 AddDataSet("pi+",w_p_t, w_p_in, e6, 35); 587 AddDataSet("pi+",w_p_t, w_p_in, e6, 35); 542 AddDataSet("pi-",pb_m_t, pb_m_in, e6, 35); 588 AddDataSet("pi-",pb_m_t, pb_m_in, e6, 35); 543 AddDataSet("pi+",pb_p_t, pb_p_in, e6, 35); 589 AddDataSet("pi+",pb_p_t, pb_p_in, e6, 35); 544 AddDataSet("pi-",u_m_t, u_m_in, e6, 35); 590 AddDataSet("pi-",u_m_t, u_m_in, e6, 35); 545 AddDataSet("pi+",u_p_t, u_p_in, e6, 35); 591 AddDataSet("pi+",u_p_t, u_p_in, e6, 35); 546 } 592 } 547 593 548 void G4UPiNuclearCrossSection::CrossSectionDes 594 void G4UPiNuclearCrossSection::CrossSectionDescription(std::ostream& outFile) const 549 { 595 { 550 outFile << "G4UPiNuclearCrossSection calcula 596 outFile << "G4UPiNuclearCrossSection calculates the total, elastic and\n" 551 << "inelastic cross sections for pio 597 << "inelastic cross sections for pion scattering from nuclei\n" 552 << "heavier than hydrogen. It is ba 598 << "heavier than hydrogen. It is based on the Barashenkov\n" 553 << "parameterization and is valid fo 599 << "parameterization and is valid for all incident energies.\n"; 554 } 600 } 555 601 556 602