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