Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4QNeutronElasticCrossSection.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29//
30// G4 Physics class: G4QNeutronElasticCrossSection for nA elastic cross sections
31// Created: M.V. Kossov, CERN/ITEP(Moscow), 10-OCT-01
32// The last update: M.V. Kossov, CERN/ITEP (Moscow) 12-Jan-10 (from G4QElCrSect)
33//
34// -------------------------------------------------------------------------------
35// Short description: Interaction cross-sections for the G4QElastic process
36// -------------------------------------------------------------------------------
37
38//#define debug
39//#define isodebug
40//#define pdebug
41//#define ppdebug
42//#define tdebug
43//#define sdebug
44
46#include "G4SystemOfUnits.hh"
47
48// Initialization of the static parameters
49const G4int G4QNeutronElasticCrossSection::nPoints=128;//#ofPt in the AMDB tabs(>anyPar)(D)
50const G4int G4QNeutronElasticCrossSection::nLast=nPoints-1;// the Last Element in table (D)
51G4double G4QNeutronElasticCrossSection::lPMin=-8.; // Min tabulated log Momentum (D)
52G4double G4QNeutronElasticCrossSection::lPMax= 8.; // Max tabulated log Momentum (D)
53G4double G4QNeutronElasticCrossSection::dlnP=(lPMax-lPMin)/nLast;// Log step in table (D)
54G4bool G4QNeutronElasticCrossSection::onlyCS=true;// Flag to calc only CS (not Si/Bi)(L)
55G4double G4QNeutronElasticCrossSection::lastSIG=0.; // Last calculated cross section (L)
56G4double G4QNeutronElasticCrossSection::lastLP=-10.;// Last log(momOfIncidentHadron) (L)
57G4double G4QNeutronElasticCrossSection::lastTM=0.; // Last t_maximum (L)
58G4double G4QNeutronElasticCrossSection::theSS=0.; // The Last sq.slope of 1st difMax (L)
59G4double G4QNeutronElasticCrossSection::theS1=0.; // The Last mantissa of 1st difMax (L)
60G4double G4QNeutronElasticCrossSection::theB1=0.; // The Last slope of 1st difr. Max (L)
61G4double G4QNeutronElasticCrossSection::theS2=0.; // The Last mantissa of 2nd difMax (L)
62G4double G4QNeutronElasticCrossSection::theB2=0.; // The Last slope of 2nd difr. Max (L)
63G4double G4QNeutronElasticCrossSection::theS3=0.; // The Last mantissa of 3d difrMax (L)
64G4double G4QNeutronElasticCrossSection::theB3=0.; // The Last slope of 3d difructMax (L)
65G4double G4QNeutronElasticCrossSection::theS4=0.; // The Last mantissa of 4th difMax (L)
66G4double G4QNeutronElasticCrossSection::theB4=0.; // The Last slope of 4th difr. Max (L)
67G4int G4QNeutronElasticCrossSection::lastTZ=0; // Last atomic number of the target
68G4int G4QNeutronElasticCrossSection::lastTN=0; // Last # of neutrons in the target
69G4double G4QNeutronElasticCrossSection::lastPIN=0.; // Last initialized max momentum
70G4double* G4QNeutronElasticCrossSection::lastCST=0; // Elastic cross-section table
71G4double* G4QNeutronElasticCrossSection::lastPAR=0; // Parameters of FunctionalCalculation
72G4double* G4QNeutronElasticCrossSection::lastSST=0; // E-dep of sq.slope of the 1st difMax
73G4double* G4QNeutronElasticCrossSection::lastS1T=0; // E-dep of mantissa of the 1st difMax
74G4double* G4QNeutronElasticCrossSection::lastB1T=0; // E-dep of theSlope of the 1st difMax
75G4double* G4QNeutronElasticCrossSection::lastS2T=0; // E-dep of mantissa of the 2nd difMax
76G4double* G4QNeutronElasticCrossSection::lastB2T=0; // E-dep of theSlope of the 2nd difMax
77G4double* G4QNeutronElasticCrossSection::lastS3T=0; // E-dep of mantissa of the 3d difrMax
78G4double* G4QNeutronElasticCrossSection::lastB3T=0; // E-dep of the slope of the 3d difMax
79G4double* G4QNeutronElasticCrossSection::lastS4T=0; // E-dep of mantissa of the 4th difMax
80G4double* G4QNeutronElasticCrossSection::lastB4T=0; // E-dep of theSlope of the 4th difMax
81G4int G4QNeutronElasticCrossSection::lastN=0; // The last N of calculated nucleus
82G4int G4QNeutronElasticCrossSection::lastZ=0; // The last Z of calculated nucleus
83G4double G4QNeutronElasticCrossSection::lastP=0.; // Last used in cross section Momentum
84G4double G4QNeutronElasticCrossSection::lastTH=0.; // Last threshold momentum
85G4double G4QNeutronElasticCrossSection::lastCS=0.; // Last value of the Cross Section
86G4int G4QNeutronElasticCrossSection::lastI=0; // The last position in the DAMDB
87
88std::vector<G4double*> G4QNeutronElasticCrossSection::PAR; // Vector of params forFunctCalc
89std::vector<G4double*> G4QNeutronElasticCrossSection::CST; // Vector of cross-section table
90std::vector<G4double*> G4QNeutronElasticCrossSection::SST; // Vector of the 1st sq. slope
91std::vector<G4double*> G4QNeutronElasticCrossSection::S1T; // Vector of the first mantissa
92std::vector<G4double*> G4QNeutronElasticCrossSection::B1T; // Vector of the first slope
93std::vector<G4double*> G4QNeutronElasticCrossSection::S2T; // Vector of the secon mantissa
94std::vector<G4double*> G4QNeutronElasticCrossSection::B2T; // Vector of the second slope
95std::vector<G4double*> G4QNeutronElasticCrossSection::S3T; // Vector of the third mantissa
96std::vector<G4double*> G4QNeutronElasticCrossSection::B3T; // Vector of the third slope
97std::vector<G4double*> G4QNeutronElasticCrossSection::S4T; // Vector of the 4th mantissa
98std::vector<G4double*> G4QNeutronElasticCrossSection::B4T; // Vector of the 4th slope
99
101{
102}
103
105{
106 std::vector<G4double*>::iterator pos;
107 for (pos=CST.begin(); pos<CST.end(); pos++)
108 { delete [] *pos; }
109 CST.clear();
110 for (pos=PAR.begin(); pos<PAR.end(); pos++)
111 { delete [] *pos; }
112 PAR.clear();
113 for (pos=SST.begin(); pos<SST.end(); pos++)
114 { delete [] *pos; }
115 SST.clear();
116 for (pos=S1T.begin(); pos<S1T.end(); pos++)
117 { delete [] *pos; }
118 S1T.clear();
119 for (pos=B1T.begin(); pos<B1T.end(); pos++)
120 { delete [] *pos; }
121 B1T.clear();
122 for (pos=S2T.begin(); pos<S2T.end(); pos++)
123 { delete [] *pos; }
124 S2T.clear();
125 for (pos=B2T.begin(); pos<B2T.end(); pos++)
126 { delete [] *pos; }
127 B2T.clear();
128 for (pos=S3T.begin(); pos<S3T.end(); pos++)
129 { delete [] *pos; }
130 S3T.clear();
131 for (pos=B3T.begin(); pos<B3T.end(); pos++)
132 { delete [] *pos; }
133 B3T.clear();
134 for (pos=S4T.begin(); pos<S4T.end(); pos++)
135 { delete [] *pos; }
136 S4T.clear();
137 for (pos=B4T.begin(); pos<B4T.end(); pos++)
138 { delete [] *pos; }
139 B4T.clear();
140}
141
142// Returns Pointer to the G4VQCrossSection class
144{
145 static G4QNeutronElasticCrossSection theCrossSection;//*StatBody of the QEl CrossSection*
146 return &theCrossSection;
147}
148
149// The main member function giving the collision cross section (P is in IU, CS is in mb)
150// Make pMom in independent units ! (Now it is MeV)
152 G4int tgZ, G4int tgN, G4int pPDG)
153{
154 static std::vector <G4int> colN; // Vector of N for calculated nuclei (isotops)
155 static std::vector <G4int> colZ; // Vector of Z for calculated nuclei (isotops)
156 static std::vector <G4double> colP; // Vector of last momenta for the reaction
157 static std::vector <G4double> colTH; // Vector of energy thresholds for the reaction
158 static std::vector <G4double> colCS; // Vector of last cross sections for the reaction
159 // ***---*** End of the mandatory Static Definitions of the Associative Memory ***---***
160 G4double pEn=pMom;
161 onlyCS=fCS;
162#ifdef debug
163 G4cout<<"G4QNElCS::GetCS:>>> f="<<fCS<<", p="<<pMom<<", Z="<<tgZ<<"("<<lastZ<<") ,N="
164 <<tgN<<"("<<lastN<<"), T="<<pEn<<"("<<lastTH<<")"<<",Sz="<<colN.size()<<G4endl;
165 //CalculateCrossSection(fCS,-27,j,pPDG,lastZ,lastN,pMom); // DUMMY TEST
166#endif
167 if(pPDG!=2112)
168 {
169 G4cout<<"G4QNeutronElCS::GetCS: *** Found pPDG="<<pPDG<<" =--=> CS=0"<<G4endl;
170 //CalculateCrossSection(fCS,-27,j,pPDG,lastZ,lastN,pMom); // DUMMY TEST
171 return 0.; // projectile PDG=0 is a mistake (?!) @@
172 }
173 G4bool in=false; // By default the isotope must be found in the AMDB
174 lastP = 0.; // New momentum history (nothing to compare with)
175 lastN = tgN; // The last N of the calculated nucleus
176 lastZ = tgZ; // The last Z of the calculated nucleus
177 lastI = colN.size(); // Size of the Associative Memory DB in the heap
178 if(lastI) for(G4int i=0; i<lastI; i++) // Loop over proj/tgZ/tgN lines of DB
179 { // The nucleus with projPDG is found in AMDB
180 if(colN[i]==tgN && colZ[i]==tgZ) // Isotope is foind in AMDB
181 {
182 lastI=i;
183 lastTH =colTH[i]; // Last THreshold (A-dependent)
184#ifdef debug
185 G4cout<<"G4QNeutElCS::GetCS:Found,P="<<pMom<<",Threshold="<<lastTH<<",i="<<i<<G4endl;
186 //CalculateCrossSection(fCS,-27,i,pPDG,lastZ,lastN,pMom); // DUMMY TEST
187#endif
188 if(pEn<=lastTH)
189 {
190#ifdef debug
191 G4cout<<"G4QNeutElCS::GetCS:Found,T="<<pEn<<"<Threshold="<<lastTH<<",CS=0"<<G4endl;
192 //CalculateCrossSection(fCS,-27,i,pPDG,lastZ,lastN,pMom); // DUMMY TEST
193#endif
194 return 0.; // Energy is below the Threshold value
195 }
196 lastP =colP [i]; // Last Momentum (A-dependent)
197 lastCS =colCS[i]; // Last CrossSect (A-dependent)
198 // if(std::fabs(lastP/pMom-1.)<tolerance) //VI (do not use tolerance)
199 if(lastP == pMom) // Do not recalculate
200 {
201#ifdef debug
202 G4cout<<"G4QNeutronElasticCS::GetCrosS:P="<<pMom<<",CS="<<lastCS*millibarn<<G4endl;
203#endif
204 CalculateCrossSection(fCS,-1,i,pPDG,lastZ,lastN,pMom); // Update param's only
205 return lastCS*millibarn; // Use theLastCS
206 }
207 in = true; // This is the case when the isotop is found in DB
208 // Momentum pMom is in IU ! @@ Units
209#ifdef debug
210 G4cout<<"G4QNElCrS::G:UpdateDB,P="<<pMom<<",f="<<fCS<<",I="<<lastI<<",i="<<i<<G4endl;
211#endif
212 lastCS=CalculateCrossSection(fCS,-1,i,pPDG,lastZ,lastN,pMom); // read & update
213#ifdef debug
214 G4cout<<"G4QNeutronElCS::GetCrosSec:*****>New (inDB) Calculated CS="<<lastCS<<G4endl;
215 //CalculateCrossSection(fCS,-27,i,pPDG,lastZ,lastN,pMom); // DUMMY TEST
216#endif
217 if(lastCS<=0. && pEn>lastTH) // Correct the threshold
218 {
219#ifdef debug
220 G4cout<<"G4QNeutronElCS::GetCS:New,T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
221#endif
222 lastTH=pEn;
223 }
224 break; // Go out of the LOOP with found lastI
225 }
226#ifdef debug
227 G4cout<<"---G4QNeutronElasticCrossSection::GetCrosSec:pPDG="<<pPDG<<",i="<<i<<",N="
228 <<colN[i]<<",Z["<<i<<"]="<<colZ[i]<<G4endl;
229 //CalculateCrossSection(fCS,-27,i,pPDG,lastZ,lastN,pMom); // DUMMY TEST
230#endif
231 }
232 if(!in) // This nucleus has not been calculated previously
233 {
234#ifdef debug
235 G4cout<<"G4QNElCrS::GetCrosSec:CalcNew P="<<pMom<<",f="<<fCS<<",lastI="<<lastI<<G4endl;
236#endif
237 //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
238 lastCS=CalculateCrossSection(fCS,0,lastI,pPDG,lastZ,lastN,pMom);//calculate&create
239 if(lastCS<=0.)
240 {
241 lastTH = ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
242#ifdef debug
243 G4cout<<"G4QNeutronElCrosSect::GetCrossSect: NewThresh="<<lastTH<<",T="<<pEn<<G4endl;
244#endif
245 if(pEn>lastTH)
246 {
247#ifdef debug
248 G4cout<<"G4QNeutElCS::GetCS: First T="<<pEn<<"(CS=0) > Threshold="<<lastTH<<G4endl;
249#endif
250 lastTH=pEn;
251 }
252 }
253#ifdef debug
254 G4cout<<"G4QNElCrS::GetCrosSec: New CS="<<lastCS<<",lZ="<<lastN<<",lN="<<lastZ<<G4endl;
255 //CalculateCrossSection(fCS,-27,lastI,pPDG,lastZ,lastN,pMom); // DUMMY TEST
256#endif
257 colN.push_back(tgN);
258 colZ.push_back(tgZ);
259 colP.push_back(pMom);
260 colTH.push_back(lastTH);
261 colCS.push_back(lastCS);
262#ifdef debug
263 G4cout<<"G4QNElCrS::GetCS:1st,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
264 //CalculateCrossSection(fCS,-27,lastI,pPDG,lastZ,lastN,pMom); // DUMMY TEST
265#endif
266 return lastCS*millibarn;
267 } // End of creation of the new set of parameters
268 else
269 {
270#ifdef debug
271 G4cout<<"G4QNeutronElasticCrossSection::GetCS: Update lastI="<<lastI<<G4endl;
272#endif
273 colP[lastI]=pMom;
274 colCS[lastI]=lastCS;
275 }
276#ifdef debug
277 G4cout<<"G4QNElCS::GetCrSec:End,P="<<pMom<<"(MeV),CS="<<lastCS*millibarn<<"(mb)"<<G4endl;
278 //CalculateCrossSection(fCS,-27,lastI,pPDG,lastZ,lastN,pMom); // DUMMY TEST
279 G4cout<<"G4QNeutronElasticCrossSection::GetCrSec:***End***, onlyCS="<<onlyCS<<G4endl;
280#endif
281 return lastCS*millibarn;
282}
283
284// Calculation of total elastic cross section (p in IU, CS in mb) @@ Units (?)
285// F=0 - create AMDB, F=-1 - read&update AMDB, F=1 - update AMDB (sinchro with higher AMDB)
287 G4int PDG, G4int tgZ, G4int tgN, G4double pIU)
288{
289 // *** Begin of Associative Memory DB for acceleration of the cross section calculations
290 static std::vector <G4double> PIN; // Vector of max initialized log(P) in the table
291 // *** End of Static Definitions (Associative Memory Data Base) ***
292 G4double pMom=pIU/GeV; // All calculations are in GeV
293 onlyCS=CS; // Flag to calculate only CS (not Si/Bi)
294#ifdef debug
295 G4cout<<"G4QNeutronElasticCrosS::CalcCS:->onlyCS="<<onlyCS<<",F="<<F<<",p="<<pIU<<G4endl;
296#endif
297 lastLP=std::log(pMom); // Make a logarithm of the momentum for calculation
298 if(F) // This isotope was found in AMDB =>RETRIEVE/UPDATE
299 {
300 if(F<0) // the AMDB must be loded
301 {
302 lastPIN = PIN[I]; // Max log(P) initialised for this table set
303 lastPAR = PAR[I]; // Pointer to the parameter set
304 lastCST = CST[I]; // Pointer to the total sross-section table
305 lastSST = SST[I]; // Pointer to the first squared slope
306 lastS1T = S1T[I]; // Pointer to the first mantissa
307 lastB1T = B1T[I]; // Pointer to the first slope
308 lastS2T = S2T[I]; // Pointer to the second mantissa
309 lastB2T = B2T[I]; // Pointer to the second slope
310 lastS3T = S3T[I]; // Pointer to the third mantissa
311 lastB3T = B3T[I]; // Pointer to the rhird slope
312 lastS4T = S4T[I]; // Pointer to the 4-th mantissa
313 lastB4T = B4T[I]; // Pointer to the 4-th slope
314#ifdef debug
315 G4cout<<"G4QNElasticCS::CalcCS: DB is updated for I="<<I<<",*,PIN4="<<PIN[4]<<G4endl;
316#endif
317 }
318#ifdef debug
319 G4cout<<"G4QNeutronElasticCrosS::CalcCS:*read*, LP="<<lastLP<<",PIN="<<lastPIN<<G4endl;
320#endif
321 if(lastLP>lastPIN && lastLP<lPMax)
322 {
323 lastPIN=GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);// Can update upper logP-Limit in tabs
324#ifdef debug
325 G4cout<<"G4QNElCrS::CalcCS:updated(I),LP="<<lastLP<<"<IN["<<I<<"]="<<lastPIN<<G4endl;
326#endif
327 PIN[I]=lastPIN; // Remember the new P-Limit of the tables
328 }
329 }
330 else // This isotope wasn't initialized => CREATE
331 {
332 lastPAR = new G4double[nPoints]; // Allocate memory for parameters of CS function
333 lastPAR[nLast]=0; // Initialization for VALGRIND
334 lastCST = new G4double[nPoints]; // Allocate memory for Tabulated CS function
335 lastSST = new G4double[nPoints]; // Allocate memory for Tabulated first sqaredSlope
336 lastS1T = new G4double[nPoints]; // Allocate memory for Tabulated first mantissa
337 lastB1T = new G4double[nPoints]; // Allocate memory for Tabulated first slope
338 lastS2T = new G4double[nPoints]; // Allocate memory for Tabulated second mantissa
339 lastB2T = new G4double[nPoints]; // Allocate memory for Tabulated second slope
340 lastS3T = new G4double[nPoints]; // Allocate memory for Tabulated third mantissa
341 lastB3T = new G4double[nPoints]; // Allocate memory for Tabulated third slope
342 lastS4T = new G4double[nPoints]; // Allocate memory for Tabulated 4-th mantissa
343 lastB4T = new G4double[nPoints]; // Allocate memory for Tabulated 4-th slope
344#ifdef debug
345 G4cout<<"G4QNeutronElasticCrosS::CalcCS:*ini*,lastLP="<<lastLP<<",min="<<lPMin<<G4endl;
346#endif
347 lastPIN = GetPTables(lastLP,lPMin,PDG,tgZ,tgN); // Returns the new P-limit for tables
348#ifdef debug
349 G4cout<<"G4QNElCS::CalcCS:i,Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<",LP"<<lastPIN<<G4endl;
350#endif
351 PIN.push_back(lastPIN); // Fill parameters of CS function to AMDB
352 PAR.push_back(lastPAR); // Fill parameters of CS function to AMDB
353 CST.push_back(lastCST); // Fill Tabulated CS function to AMDB
354 SST.push_back(lastSST); // Fill Tabulated first sq.slope to AMDB
355 S1T.push_back(lastS1T); // Fill Tabulated first mantissa to AMDB
356 B1T.push_back(lastB1T); // Fill Tabulated first slope to AMDB
357 S2T.push_back(lastS2T); // Fill Tabulated second mantissa to AMDB
358 B2T.push_back(lastB2T); // Fill Tabulated second slope to AMDB
359 S3T.push_back(lastS3T); // Fill Tabulated third mantissa to AMDB
360 B3T.push_back(lastB3T); // Fill Tabulated third slope to AMDB
361 S4T.push_back(lastS4T); // Fill Tabulated 4-th mantissa to AMDB
362 B4T.push_back(lastB4T); // Fill Tabulated 4-th slope to AMDB
363 } // End of creation/update of the new set of parameters and tables
364 // =-------= NOW Update (if necessary) and Calculate the Cross Section =---------=
365#ifdef debug
366 G4cout<<"G4QNElCrS::CalcCS:?update?,LP="<<lastLP<<",IN="<<lastPIN<<",ML="<<lPMax<<G4endl;
367#endif
368 if(lastLP>lastPIN && lastLP<lPMax)
369 {
370 lastPIN = GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);
371#ifdef debug
372 G4cout<<"G4QNeutronElCrS::CalcCS:*updated(O)*, LP="<<lastLP<<" < IN="<<lastPIN<<G4endl;
373#endif
374 }
375#ifdef debug
376 G4cout<<"G4QNEltCrS::CalcCS: lastLP="<<lastLP<<",lPM="<<lPMin<<",lPIN="<<lastPIN<<G4endl;
377#endif
378 if(!onlyCS) lastTM=GetQ2max(PDG, tgZ, tgN, pMom); // Calculate (-t)_max=Q2_max (GeV2)
379#ifdef debug
380 G4cout<<"G4QNeutElastCroSec::CalcCS:oCS="<<onlyCS<<",-t="<<lastTM<<",p="<<lastLP<<G4endl;
381#endif
382 if(lastLP>lPMin && lastLP<=lastPIN) // Linear fit is made using precalculated tables
383 {
384 if(lastLP==lastPIN)
385 {
386 G4double shift=(lastLP-lPMin)/dlnP+.000001; // Log distance from lPMin
387 G4int blast=static_cast<int>(shift); // this is a bin number of the lower edge (0)
388 if(blast<0 || blast>=nLast) G4cout<<"G4QNeutElCS::CCS:b="<<blast<<","<<nLast<<G4endl;
389 lastSIG = lastCST[blast];
390 if(!onlyCS) // Skip the differential cross-section parameters
391 {
392 theSS = lastSST[blast];
393 theS1 = lastS1T[blast];
394 theB1 = lastB1T[blast];
395 theS2 = lastS2T[blast];
396 theB2 = lastB2T[blast];
397 theS3 = lastS3T[blast];
398 theB3 = lastB3T[blast];
399 theS4 = lastS4T[blast];
400 theB4 = lastB4T[blast];
401 }
402#ifdef debug
403 G4cout<<"G4QNeutronElasticCrossSection::CalcCS:(E)S1="<<theS1<<",B1="<<theB1<<G4endl;
404#endif
405 }
406 else
407 {
408 G4double shift=(lastLP-lPMin)/dlnP; // a shift from the beginning of the table
409 G4int blast=static_cast<int>(shift); // the lower bin number
410 if(blast<0) blast=0;
411 if(blast>=nLast) blast=nLast-1; // low edge of the last bin
412 shift-=blast; // step inside the unit bin
413 G4int lastL=blast+1; // the upper bin number
414 G4double SIGL=lastCST[blast]; // the basic value of the cross-section
415 lastSIG= SIGL+shift*(lastCST[lastL]-SIGL); // calculated total elastic cross-section
416#ifdef debug
417 G4cout<<"G4QNeutronElCS::CalcCrossSection: Sig="<<lastSIG<<", P="<<pMom<<", Z="<<tgZ
418 <<", N="<<tgN<<", PDG="<<PDG<<", onlyCS="<<onlyCS<<G4endl;
419#endif
420 if(!onlyCS) // Skip the differential cross-section parameters
421 {
422 G4double SSTL=lastSST[blast]; // the low bin of the first squared slope
423 theSS=SSTL+shift*(lastSST[lastL]-SSTL); // the basic value of the first sq.slope
424 G4double S1TL=lastS1T[blast]; // the low bin of the first mantissa
425 theS1=S1TL+shift*(lastS1T[lastL]-S1TL); // the basic value of the first mantissa
426 G4double B1TL=lastB1T[blast]; // the low bin of the first slope
427#ifdef debug
428 G4cout<<"G4QNeutronElCrS::CalcCrossSection:bl="<<blast<<",ls="<<lastL<<",SL="<<S1TL
429 <<",SU="<<lastS1T[lastL]<<",BL="<<B1TL<<",BU="<<lastB1T[lastL]<<G4endl;
430#endif
431 theB1=B1TL+shift*(lastB1T[lastL]-B1TL); // the basic value of the first slope
432 G4double S2TL=lastS2T[blast]; // the low bin of the second mantissa
433 theS2=S2TL+shift*(lastS2T[lastL]-S2TL); // the basic value of the second mantissa
434 G4double B2TL=lastB2T[blast]; // the low bin of the second slope
435 theB2=B2TL+shift*(lastB2T[lastL]-B2TL); // the basic value of the second slope
436 G4double S3TL=lastS3T[blast]; // the low bin of the third mantissa
437 theS3=S3TL+shift*(lastS3T[lastL]-S3TL); // the basic value of the third mantissa
438#ifdef debug
439 G4cout<<"G4QNElCS::CCS: s3l="<<S3TL<<",sh3="<<shift<<",s3h="<<lastS3T[lastL]<<",b="
440 <<blast<<",l="<<lastL<<G4endl;
441#endif
442 G4double B3TL=lastB3T[blast]; // the low bin of the third slope
443 theB3=B3TL+shift*(lastB3T[lastL]-B3TL); // the basic value of the third slope
444 G4double S4TL=lastS4T[blast]; // the low bin of the 4-th mantissa
445 theS4=S4TL+shift*(lastS4T[lastL]-S4TL); // the basic value of the 4-th mantissa
446#ifdef debug
447 G4cout<<"G4QNElCS::CCS: s4l="<<S4TL<<",sh4="<<shift<<",s4h="<<lastS4T[lastL]<<",b="
448 <<blast<<",l="<<lastL<<G4endl;
449#endif
450 G4double B4TL=lastB4T[blast]; // the low bin of the 4-th slope
451 theB4=B4TL+shift*(lastB4T[lastL]-B4TL); // the basic value of the 4-th slope
452 }
453#ifdef debug
454 G4cout<<"G4QNeutronElasticCrossSection::CalcCS:(I)S1="<<theS1<<",B1="<<theB1<<G4endl;
455#endif
456 }
457 }
458 else lastSIG=GetTabValues(lastLP, PDG, tgZ, tgN); // Direct calculation beyond the table
459 if(lastSIG<0.) lastSIG = 0.; // @@ a Warning print can be added
460#ifdef debug
461 G4cout<<"G4QNeutronElasticCrossSection::CalculateCS: END, onlyCS="<<onlyCS<<G4endl;
462#endif
463 return lastSIG;
464}
465
466// It has parameter sets for all tZ/tN/PDG, using them the tables can be created/updated
467G4double G4QNeutronElasticCrossSection::GetPTables(G4double LP, G4double ILP, G4int PDG,
468 G4int tgZ, G4int tgN)
469{
470 // @@ At present all nA==pA ---------> Each neucleus can have not more than 51 parameters
471 static const G4double pwd=2727;
472 const G4int n_npel=24; // #of parameters for np-elastic (<nPoints=128)
473 const G4int n_ppel=32; // #of parameters for pp-elastic (<nPoints=128)
474 // -0- -1- -2- -3- -4- -5- -6- -7- -8- -9--10--11--12--13- -14-
475 G4double np_el[n_npel]={12.,.05,.0001,5.,.35,6.75,.14,19.,.6,6.75,.14,13.,.14,.6,.00013,
476 75.,.001,7.2,4.32,.012,2.5,0.0,12.,.34};
477 // -15--16--17- -18- -19--20--21--22--23-
478 // -0- -1- -2- -3- -4- -5- -6- -7- -8--9--10--11--12--13-
479 G4double pp_el[n_ppel]={2.865,18.9,.6461,3.,9.,.425,.4276,.0022,5.,74.,3.,3.4,.2,.17,
480 .001,8.,.055,3.64,5.e-5,4000.,1500.,.46,1.2e6,3.5e6,5.e-5,1.e10,
481 8.5e8,1.e10,1.1,3.4e6,6.8e6,0.};
482 // -14--15- -16- -17- -18- -19- -20- -21- -22- -23- -24- -25-
483 // -26- -27- -28- -29- -30- -31-
484 //==> n (Z=0)
485 static const G4int N0=1; // *** Not used (fake)***
486 static const G4double pZ0N1[7]={0., 0., 0., 0., 0., 0., 0.}; // Not used (fake)
487 static const std::pair<G4int, const G4double*> Z0N1(1,pZ0N1);
488 static const std::pair<G4int, const G4double*> Z0[N0]={Z0N1};
489 //==> H (Z=1) *** protons are treated separately ***
490 static const G4int N1=3;
491 static const G4double pZ1N0[7]={0., 0., 0., 0., 0., 0., 0.}; // Not used (fake)
492 static const std::pair<G4int, const G4double*> Z1N0(0,pZ1N0);
493 static const G4double pZ1N1[7]={6.E-5, 4., .055, 1.1E-8, .008, 1.2E-8, .019};
494 static const std::pair<G4int, const G4double*> Z1N1(1,pZ1N1);
495 static const G4double pZ1N2[7]={6.E-5, 2.2, .051, 1.E-8, .04, 9.E-8, .0075};
496 static const std::pair<G4int, const G4double*> Z1N2(2,pZ1N2);
497 static const std::pair<G4int, const G4double*> Z1[N1]={Z1N0, Z1N1, Z1N2};
498 //==> He(Z=2)
499 static const G4int N2=2;
500 static const G4double pZ2N1[7]={6.E-5, 3., .06, 4.E-9, .03, 7.E-8, .015};
501 static const std::pair<G4int, const G4double*> Z2N1(1,pZ2N1);
502 static const G4double pZ2N2[7]={3.E-4, .23, 1., 1.5E-9, 2.E-02, 1.E-8, .003};
503 static const std::pair<G4int, const G4double*> Z2N2(2,pZ2N2);
504 static const std::pair<G4int, const G4double*> Z2[N2]={Z2N1, Z2N2};
505 //==> Li(Z=3)
506 static const G4int N3=2;
507 static const G4double pZ3N3[7]={3.1E-7, 1.7, 1.3E-4, 1.E-8, .02, 1.1E-7, .0023};
508 static const std::pair<G4int, const G4double*> Z3N1(3,pZ3N3);
509 static const G4double pZ3N4[7]={1.3E-6, 1.8, 7.6E-4, 9.E-9, .03, 1.E-7, .0029};
510 static const std::pair<G4int, const G4double*> Z3N2(4,pZ3N4);
511 static const std::pair<G4int, const G4double*> Z3[N3]={Z3N1, Z3N2};
512 //==> Be(Z=4)
513 static const G4int N4=2;
514 static const G4double pZ4N3[7]={2.E-4, 1.4, 2.7, 0., .02, 5.E-8, 0.};
515 static const std::pair<G4int, const G4double*> Z4N3(3,pZ4N3);
516 static const G4double pZ4N5[7]={1.E-6, 5.7, .0011, 3.E-9, .007, 2.E-8, .016};
517 static const std::pair<G4int, const G4double*> Z4N5(5,pZ4N5);
518 static const std::pair<G4int, const G4double*> Z4[N4]={Z4N3,Z4N5};
519 //==> B (Z=5)
520 static const G4int N5=2;
521 static const G4double pZ5N5[7]={8.E-7, 5., 3.4E-4, 7.E-9, 1.E-02, 1.E-07, .0053};
522 static const std::pair<G4int, const G4double*> Z5N5(5,pZ5N5);
523 static const G4double pZ5N6[7]={4.8E-6, 6.6, .0035, 4.E-9, .003, 1.E-8, .012};
524 static const std::pair<G4int, const G4double*> Z5N6(6,pZ5N6);
525 static const std::pair<G4int, const G4double*> Z5[N5]={Z5N5, Z5N6};
526 //==> C (Z=6) *** Only nat (C13=C12=C_nat) ***
527 static const G4int N6=2;
528 static const G4double pZ6N6[7]={4.9E-6, 6.6, .0035, 4.E-9, .002, 6.E-9, .011};
529 static const std::pair<G4int, const G4double*> Z6N6(6,pZ6N6);
530 static const G4double pZ6N7[7]={4.9E-6, 6.6, .0035, 4.E-9, .002, 6.E-9, .011};
531 static const std::pair<G4int, const G4double*> Z6N7(7,pZ6N7);
532 static const std::pair<G4int, const G4double*> Z6[N6]={Z6N6, Z6N7};
533 //==> N (Z=7)
534 static const G4int N7=2;
535 static const G4double pZ7N7[7]={4.9E-6, 1.6, .03, .4E-9, .02, 6.E-8, .021};
536 static const std::pair<G4int, const G4double*> Z7N7(7,pZ7N7);
537 static const G4double pZ7N8[7]={2.5E-6, 5., .0021, 2.5E-9, .015, 5.E-8, .009};
538 static const std::pair<G4int, const G4double*> Z7N8(8,pZ7N8);
539 static const std::pair<G4int, const G4double*> Z7[N7]={Z7N7, Z7N8};
540 //==> O (Z=8) (O18=O17, No data)
541 static const G4int N8=3;
542 static const G4double pZ8N8[7]={2.5E-6, 5.3, .0018, 3.E-9, .01, 1.5E-8, .0075};
543 static const std::pair<G4int, const G4double*> Z8N8(8,pZ8N8);
544 static const G4double pZ8N9[7]={1.4E-6, 2.1, .0025, 1.3E-9, .02, 1.3E-7, .0072};
545 static const std::pair<G4int, const G4double*> Z8N9(9,pZ8N9);
546 static const G4double pZ8N10[7]={1.4E-6, 2.1, .0025, 1.3E-9, .02, 1.3E-7, .0072};
547 static const std::pair<G4int, const G4double*> Z8N10(10,pZ8N10);
548 static const std::pair<G4int, const G4double*> Z8[N8]={Z8N8, Z8N9, Z8N10};
549 //==> F (Z=9)
550 static const G4int N9=1;
551 static const G4double pZ9N10[7]={1.4E-6, 7.5, 6.7E-4, 4.E-9, 2.E-5, 7.E-12, .0066};
552 static const std::pair<G4int, const G4double*> Z9N10(10,pZ9N10);
553 static const std::pair<G4int, const G4double*> Z9[N9]={Z9N10};
554 //==> Ne(Z=10) *** No data *** (Ne20=Na22, Ne21=F19, Ne22=Na22)
555 static const G4int N10=3;
556 static const G4double pZ10N10[7]={1.4E-5, 7., .01, 0., 3.E-11, 7.E-24, .12};
557 static const std::pair<G4int, const G4double*> Z10N10(10,pZ10N10);
558 static const G4double pZ10N11[7]={1.4E-6, 7.5, 6.7E-4, 4.E-9, 2.E-5, 7.E-12, .0066};
559 static const std::pair<G4int, const G4double*> Z10N11(11,pZ10N11);
560 static const G4double pZ10N12[7]={1.4E-5, 7., .01, 0., 3.E-11, 7.E-24, .12};
561 static const std::pair<G4int, const G4double*> Z10N12(12,pZ10N12);
562 static const std::pair<G4int, const G4double*> Z10[N10]={Z10N10, Z10N11, Z10N12};
563 //==> Na(Z=11)
564 static const G4int N11=2;
565 static const G4double pZ11N11[7]={1.4E-5, 7., .01, 0., 3.E-11, 7.E-24, .12};
566 static const std::pair<G4int, const G4double*> Z11N11(11,pZ11N11);
567 static const G4double pZ11N12[7]={1.4E-6, 7.6, 6.E-4, 5.E-9, 7.E-9, 3.E-18, .0056};
568 static const std::pair<G4int, const G4double*> Z11N12(12,pZ11N12);
569 static const std::pair<G4int, const G4double*> Z11[N11]={Z11N11, Z11N12};
570 //==> Mg(Z=12)
571 static const G4int N12=3;
572 static const G4double pZ12N12[7]={8.E-7, 3., .001, 1.8E-9, .0015, .2E-9, .006};
573 static const std::pair<G4int, const G4double*> Z12N12(12,pZ12N12);
574 static const G4double pZ12N13[7]={8.E-7, 7., 3.E-4, 6.E-9, .006, 4.E-8, .0042};
575 static const std::pair<G4int, const G4double*> Z12N13(13,pZ12N13);
576 static const G4double pZ12N14[7]={1.2E-6, 6.8, 5.E-4, 5.E-9, .007, 2.E-8, .0044};
577 static const std::pair<G4int, const G4double*> Z12N14(14,pZ12N14);
578 static const std::pair<G4int, const G4double*> Z12[N12]={Z12N12, Z12N13, Z12N14};
579 //==> Al(Z=13)
580 static const G4int N13=1;
581 static const G4double pZ13N14[7]={3.E-7, 5., 8.4E-5, 7.E-9, .008, 2.E-8, .0022};
582 static const std::pair<G4int, const G4double*> Z13N14(14,pZ13N14);
583 static const std::pair<G4int, const G4double*> Z13[N13]={Z13N14};
584 //==> Si(Z=14)
585 static const G4int N14=3;
586 static const G4double pZ14N14[7]={1.2E-6, 6., 4.E-4, 6.E-9, .012, 8.E-8, .0029};
587 static const std::pair<G4int, const G4double*> Z14N14(14,pZ14N14);
588 static const G4double pZ14N15[7]={2.4E-6, 4., .0016, 3.E-9, .018, 6.E-8, .0037};
589 static const std::pair<G4int, const G4double*> Z14N15(15,pZ14N15);
590 static const G4double pZ14N16[7]={6.E-7, 4., 3.7E-4, 3.E-9, .018, 6.E-8, .0036};
591 static const std::pair<G4int, const G4double*> Z14N16(16,pZ14N16);
592 static const std::pair<G4int, const G4double*> Z14[N14]={Z14N14, Z14N15, Z14N16};
593 //==> P (Z=15)
594 static const G4int N15=1;
595 static const G4double pZ15N16[7]={6.E-7, 3., 8.2E-4, 1.4E-9, .03, 8.E-8, .0059};
596 static const std::pair<G4int, const G4double*> Z15N16(16,pZ15N16);
597 static const std::pair<G4int, const G4double*> Z15[N15]={Z15N16};
598 //==> S (Z=16)
599 static const G4int N16=4;
600 static const G4double pZ16N16[7]={6.E-7, 3., 1.9E-4, 5.E-9, .03, 6.E-8, .0013};
601 static const std::pair<G4int, const G4double*> Z16N16(16,pZ16N16);
602 static const G4double pZ16N17[7]={2.4E-6, 3., .0023, 2.E-9, .03, 6.5E-8, .004};
603 static const std::pair<G4int, const G4double*> Z16N17(17,pZ16N17);
604 static const G4double pZ16N18[7]={2.4E-6, 1.6, .0031, 1.4E-9, .03, 4.E-08, .0028};
605 static const std::pair<G4int, const G4double*> Z16N18(18,pZ16N18);
606 static const G4double pZ16N20[7]={2.4E-6, 3.1, .0017, 2.5E-9, .03, 5.E-08, .0029};
607 static const std::pair<G4int, const G4double*> Z16N20(20,pZ16N20);
608 static const std::pair<G4int, const G4double*> Z16[N16]={Z16N16, Z16N17, Z16N18, Z16N20};
609 //==> Cl(Z=17)
610 static const G4int N17=2;
611 static const G4double pZ17N18[7]={1.2E-7, .04, .062, 3.E-12, 3.E-02, 3.E-08, .027};
612 static const std::pair<G4int, const G4double*> Z17N18(18,pZ17N18);
613 static const G4double pZ17N20[7]={1.2E-7, 2., 6.8E-5, 2.7E-9, .03, 4.E-8, .0015};
614 static const std::pair<G4int, const G4double*> Z17N20(20,pZ17N20);
615 static const std::pair<G4int, const G4double*> Z17[N17]={Z17N18, Z17N20};
616 //==> Ar(Z=18)
617 static const G4int N18=3;
618 static const G4double pZ18N18[7]={1.2E-7, .52, .017, 1.1E-11, .03, 3.E-8, .095};
619 static const std::pair<G4int, const G4double*> Z18N18(18,pZ18N18);
620 static const G4double pZ18N20[7]={1.2E-07, .09, .012, 1.8E-11, .03, 3.E-8, .011};
621 static const std::pair<G4int, const G4double*> Z18N20(20,pZ18N20);
622 static const G4double pZ18N22[7]={1.2E-7, .65, 1.2E-4, 1.5E-9, .03, 5.E-8, 8.E-4};
623 static const std::pair<G4int, const G4double*> Z18N22(22,pZ18N22);
624 static const std::pair<G4int, const G4double*> Z18[N18]={Z18N18, Z18N20, Z18N22};
625 //==> K (Z=19)
626 static const G4int N19=3;
627 static const G4double pZ19N20[7]={1.2E-7, 1.3, 1.9E-4, .9E-9, .04, 5.5E-8, .0026};
628 static const std::pair<G4int, const G4double*> Z19N20(20,pZ19N20);
629 static const G4double pZ19N21[7]={1.6E-7, 1.2, 3.7E-4, .8E-9, .04, 6.5E-8, .0034};
630 static const std::pair<G4int, const G4double*> Z19N21(21,pZ19N21);
631 static const G4double pZ19N22[7]={6.E-8, 1.3, 1.2E-4, .9E-9, .04, 6.E-8, .0031};
632 static const std::pair<G4int, const G4double*> Z19N22(22,pZ19N22);
633 static const std::pair<G4int, const G4double*> Z19[N19]={Z19N20, Z19N21, Z19N22};
634 //==> Ca(Z=20)
635 static const G4int N20=6;
636 static const G4double pZ20N20[7]={2.4E-7, 3.4, 2.1E-4, 1.5E-9, .035, 6.E-8, .0037};
637 static const std::pair<G4int, const G4double*> Z20N20(20,pZ20N20);
638 static const G4double pZ20N22[7]={6.E-8, 2.7, 2.7E-5, 3.E-9, .035, 6.E-8, .0014};
639 static const std::pair<G4int, const G4double*> Z20N22(22,pZ20N22);
640 static const G4double pZ20N23[7]={1.5E-8, 1.8, 3.4E-5, .6E-9, .04, 6.E-8, .0049};
641 static const std::pair<G4int, const G4double*> Z20N23(23,pZ20N23);
642 static const G4double pZ20N24[7]={3.E-6, 5., .002, 2.E-9, .03, 7.E-8, .0038};
643 static const std::pair<G4int, const G4double*> Z20N24(24,pZ20N24);
644 static const G4double pZ20N26[7]={1.7E-5, 18., .0027, 1.E-8, 2.E-7, 7.E-17, .0047};
645 static const std::pair<G4int, const G4double*> Z20N26(26,pZ20N26);
646 static const G4double pZ20N28[7]={7.6E-6, .4, .07, .13E-9, .05, 4.E-8, .0042};
647 static const std::pair<G4int, const G4double*> Z20N28(28,pZ20N28);
648 static const std::pair<G4int, const G4double*> Z20[N20]={Z20N20, Z20N22, Z20N23,
649 Z20N24, Z20N26, Z20N28};
650 //==> Sc(Z=21)
651 static const G4int N21=1;
652 static const G4double pZ21N24[7]={3.6E-9, 1.5, 5.2E-5, .1E-9, .05, 1.E-7, .025};
653 static const std::pair<G4int, const G4double*> Z21N24(24,pZ21N24);
654 static const std::pair<G4int, const G4double*> Z21[N21]={Z21N24};
655 //==> Ti(Z=22)
656 static const G4int N22=5;
657 static const G4double pZ22N24[7]={2.8E-8, 1.8, 5.6E-5, .6E-9, .05, 8.E-8, .0042};
658 static const std::pair<G4int, const G4double*> Z22N24(24,pZ22N24);
659 static const G4double pZ22N25[7]={3.1E-9, 1.6, 6.E-6, .8E-9, .04, 8.E-8, .0036};
660 static const std::pair<G4int, const G4double*> Z22N25(25,pZ22N25);
661 static const G4double pZ22N26[7]={3.E-9, 4., 3.2E-6, 1.4E-9, .05, 2.E-7, .0048};
662 static const std::pair<G4int, const G4double*> Z22N26(26,pZ22N26);
663 static const G4double pZ22N27[7]={1.E-8, 2., 3.4E-6, 4.5E-9, .05, 8.E-8, 7.7E-4};
664 static const std::pair<G4int, const G4double*> Z22N27(27,pZ22N27);
665 static const G4double pZ22N28[7]={4.E-7, 4., 3.7E-4, 1.E-09, .05, 1.E-7, .0041};
666 static const std::pair<G4int, const G4double*> Z22N28(28,pZ22N28);
667 static const std::pair<G4int, const G4double*> Z22[N22]={Z22N24, Z22N25, Z22N26,
668 Z22N27, Z22N28};
669 //==> V (Z=23) *** Only nat *** (v50=v51=v_nat)
670 static const G4int N23=2;
671 static const G4double pZ23N27[7]={.3E-9, 2., 8.E-7, .55E-9, .07, 1.7E-7, .0055};
672 static const std::pair<G4int, const G4double*> Z23N27(27,pZ23N27);
673 static const G4double pZ23N28[7]={.3E-9, 2., 8.E-7, .55E-9, .07, 1.7E-7, .0055};
674 static const std::pair<G4int, const G4double*> Z23N28(28,pZ23N28);
675 static const std::pair<G4int, const G4double*> Z23[N23]={Z23N27, Z23N28};
676 //==> Cr(Z=24)
677 static const G4int N24=4;
678 static const G4double pZ24N26[7]={1.2E-9, 2.8, 1.E-6, 1.7E-9, .07, 1.7E-7, .0026};
679 static const std::pair<G4int, const G4double*> Z24N26(26,pZ24N26);
680 static const G4double pZ24N28[7]={4.4E-6, 11., .0012, 5.E-9, .04, 3.E-7, .0032};
681 static const std::pair<G4int, const G4double*> Z24N28(28,pZ24N28);
682 static const G4double pZ24N29[7]={1.8E-9, 2.4, 6.3E-6, .5E-9, .07, 2.E-7, .0085};
683 static const std::pair<G4int, const G4double*> Z24N29(29,pZ24N29);
684 static const G4double pZ24N30[7]={4.8E-8, 2.8, 4.4E-5, 1.4E-9, .07, 2.E-7, .0027};
685 static const std::pair<G4int, const G4double*> Z24N30(30,pZ24N30);
686 static const std::pair<G4int, const G4double*> Z24[N24]={Z24N26, Z24N28, Z24N29, Z24N30};
687 //==> Mn(Z=25)
688 static const G4int N25=1;
689 static const G4double pZ25N30[7]={6.5E-11, 1.4, 1.E-7, .8E-9, .07, 1.7E-7, .0022};
690 static const std::pair<G4int, const G4double*> Z25N30(30,pZ25N30);
691 static const std::pair<G4int, const G4double*> Z25[N25]={Z25N30};
692 //==> Fe(Z=26)
693 static const G4int N26=4;
694 static const G4double pZ26N28[7]={3.9E-8, 5., 1.7E-5, 3.E-9, .07, 3.E-7, .0023};
695 static const std::pair<G4int, const G4double*> Z26N28(28,pZ26N28);
696 static const G4double pZ26N30[7]={5.E-9, .4, 1.5E-4, 4.E-11, .1, 3.E-7, .012};
697 static const std::pair<G4int, const G4double*> Z26N30(30,pZ26N30);
698 static const G4double pZ26N31[7]={.5E-9, .5, 2.6E-6, .3E-9, .11, 5.E-7, .0027};
699 static const std::pair<G4int, const G4double*> Z26N31(31,pZ26N31);
700 static const G4double pZ26N32[7]={1.E-7, 3.1, 1.E-4, 1.3E-9, .11, 5.E-7, .0031};
701 static const std::pair<G4int, const G4double*> Z26N32(32,pZ26N32);
702 static const std::pair<G4int, const G4double*> Z26[N26]={Z26N28, Z26N30, Z26N31, Z26N32};
703 //==> Co(Z=27)
704 static const G4int N27=2;
705 static const G4double pZ27N31[7]={4.E-7, 3., .004, 0., .11, 4.5E-7, .07};
706 static const std::pair<G4int, const G4double*> Z27N31(31,pZ27N31);
707 static const G4double pZ27N32[7]={4.E-7, 5., 5.E-4, 1.2E-9, .13, 6.E-7, .006};
708 static const std::pair<G4int, const G4double*> Z27N32(32,pZ27N32);
709 static const std::pair<G4int, const G4double*> Z27[N27]={Z27N32, Z27N31};
710 //==> Ni(Z=28)
711 static const G4int N28=6;
712 static const G4double pZ28N30[7]={1.E-7, 2.5, .001, .14E-9, .13, 6.E-7, .025};
713 static const std::pair<G4int, const G4double*> Z28N30(30,pZ28N30);
714 static const G4double pZ28N31[7]={1.E-7, 19., 1.2E-5, 1.E-8, 4.E-12, 3.E-22, .0024};
715 static const std::pair<G4int, const G4double*> Z28N31(31,pZ28N31);
716 static const G4double pZ28N32[7]={1.E-8, 2.5, 3.9E-6, 3.5E-9, .13, 6.E-7, .001};
717 static const std::pair<G4int, const G4double*> Z28N32(32,pZ28N32);
718 static const G4double pZ28N33[7]={5.E-9, 2.6, 1.5E-5, .42E-9, .13, 7.E-7, .008};
719 static const std::pair<G4int, const G4double*> Z28N33(33,pZ28N33);
720 static const G4double pZ28N34[7]={.24E-9, 2., 1.2E-6, .25E-9, .13, 6.E-7, .0094};
721 static const std::pair<G4int, const G4double*> Z28N34(34,pZ28N34);
722 static const G4double pZ28N36[7]={1.E-8, 3., 5.5E-8, 2.8E-7, .12, 6.E-7, 1.6E-5};
723 static const std::pair<G4int, const G4double*> Z28N36(36,pZ28N36);
724 static const std::pair<G4int, const G4double*> Z28[N28]={Z28N30, Z28N31, Z28N32, Z28N33,
725 Z28N34, Z28N36};
726 //==> Cu(Z=29)
727 static const G4int N29=2;
728 static const G4double pZ29N34[7]={1.1E-7, 3.5, 1.6E-4, .9E-9, .13, 7.E-7, .005};
729 static const std::pair<G4int, const G4double*> Z29N34(34,pZ29N34);
730 static const G4double pZ29N36[7]={1.1E-7, 3.5, 4.3E-4, .3E-9, .13, 7.E-7, .013};
731 static const std::pair<G4int, const G4double*> Z29N36(36,pZ29N36);
732 static const std::pair<G4int, const G4double*> Z29[N29]={Z29N34, Z29N36};
733 //==> Zn(Z=30) *** Only nat *** (zn64=zn66=zn67=zn68=zn70=zn_nat)
734 static const G4int N30=5;
735 static const G4double pZ30N34[7]={1.1E-7, 4., 1.2E-4, 1.2E-9, .17, 7.E-7, .004};
736 static const std::pair<G4int, const G4double*> Z30N34(34,pZ30N34);
737 static const G4double pZ30N36[7]={1.1E-7, 4., 1.2E-4, 1.2E-9, .17, 7.E-7, .004};
738 static const std::pair<G4int, const G4double*> Z30N36(36,pZ30N36);
739 static const G4double pZ30N37[7]={1.1E-7, 4., 1.2E-4, 1.2E-9, .17, 7.E-7, .004};
740 static const std::pair<G4int, const G4double*> Z30N37(37,pZ30N37);
741 static const G4double pZ30N38[7]={1.1E-7, 4., 1.2E-4, 1.2E-9, .17, 7.E-7, .004};
742 static const std::pair<G4int, const G4double*> Z30N38(38,pZ30N38);
743 static const G4double pZ30N40[7]={1.1E-7, 4., 1.2E-4, 1.2E-9, .17, 7.E-7, .004};
744 static const std::pair<G4int, const G4double*> Z30N40(40,pZ30N40);
745 static const std::pair<G4int, const G4double*> Z30[N30]={Z30N34, Z30N36, Z30N37,
746 Z30N38, Z30N40};
747 //==> Ga(Z=31)
748 static const G4int N31=2;
749 static const G4double pZ31N38[7]={5.E-8, 3.7, 1.1E-4, .55E-9, .17, 8.4E-7, .0076};
750 static const std::pair<G4int, const G4double*> Z31N38(38,pZ31N38);
751 static const G4double pZ31N40[7]={1.E-8, 3.1, 1.7E-5, .7E-9, .17, 9.E-7, .0048};
752 static const std::pair<G4int, const G4double*> Z31N40(40,pZ31N40);
753 static const std::pair<G4int, const G4double*> Z31[N31]={Z31N38, Z31N40};
754 //==> Ge(Z=32)
755 static const G4int N32=5;
756 static const G4double pZ32N38[7]={5.E-5, 4., .17, .35E-9, .17, 9.E-7, .013};
757 static const std::pair<G4int, const G4double*> Z32N38(38,pZ32N38);
758 static const G4double pZ32N40[7]={5.E-7, 4.4, .001, .6E-9, .17, 9.E-7, .008};
759 static const std::pair<G4int, const G4double*> Z32N40(40,pZ32N40);
760 static const G4double pZ32N41[7]={5.E-9, 3., 8.E-6, .7E-9, .17, 1.E-6, .0043};
761 static const std::pair<G4int, const G4double*> Z32N41(41,pZ32N41);
762 static const G4double pZ32N42[7]={1.E-7, 4.2, 1.7E-4, .7E-9, .17, 1.E-6, .0065};
763 static const std::pair<G4int, const G4double*> Z32N42(42,pZ32N42);
764 static const G4double pZ32N44[7]={1.E-6, 4.6, .0018, .6E-9, .17, 1.E-6, .0073};
765 static const std::pair<G4int, const G4double*> Z32N44(44,pZ32N44);
766 static const std::pair<G4int, const G4double*> Z32[N32]={Z32N38, Z32N40, Z32N41,
767 Z32N42, Z32N44};
768 //==> As(Z=33)
769 static const G4int N33=2;
770 static const G4double pZ33N41[7]={1.E-8, 3.4, 1.5E-5, .72E-9, .17, 1.E-6, .0045};
771 static const std::pair<G4int, const G4double*> Z33N41(41,pZ33N41);
772 static const G4double pZ33N42[7]={1.E-8, 4.1, 1.3E-5, .75E-9, .2, 1.2E-6, .0048};
773 static const std::pair<G4int, const G4double*> Z33N42(42,pZ33N42);
774 static const std::pair<G4int, const G4double*> Z33[N33]={Z33N41, Z33N42};
775 //==> Se(Z=34)
776 static const G4int N34=7;
777 static const G4double pZ34N40[7]={6.E-8, 7.2, 6.E-5, 1.E-9, .32, 2.E-6, .0063};
778 static const std::pair<G4int, const G4double*> Z34N40(40,pZ34N40);
779 static const G4double pZ34N42[7]={4.E-5, 7.4, .1, .43E-9, .34, 2.1E-6, .016};
780 static const std::pair<G4int, const G4double*> Z34N42(42,pZ34N42);
781 static const G4double pZ34N43[7]={1.E-7, 6.2, 1.4E-4, .9E-9, .34, 2.1E-6, .0075};
782 static const std::pair<G4int, const G4double*> Z34N43(43,pZ34N43);
783 static const G4double pZ34N44[7]={1.E-7, 6.6, 1.3E-4, .9E-9, .34, 2.1E-6, .0075};
784 static const std::pair<G4int, const G4double*> Z34N44(44,pZ34N44);
785 static const G4double pZ34N45[7]={5.E-8, 6.6, 4.8E-5, 1.2E-9, .4, 2.6E-6, .0055};
786 static const std::pair<G4int, const G4double*> Z34N45(45,pZ34N45);
787 static const G4double pZ34N46[7]={2.E-7, 7.7, 1.3E-4, 1.7E-9, .34, 2.1E-6, .0043};
788 static const std::pair<G4int, const G4double*> Z34N46(46,pZ34N46);
789 static const G4double pZ34N48[7]={2.E-7, 8.3, 1.2E-4, 1.7E-9, .34, 2.1E-6, .0043};
790 static const std::pair<G4int, const G4double*> Z34N48(48,pZ34N48);
791 static const std::pair<G4int, const G4double*> Z34[N34]={Z34N40, Z34N42, Z34N43, Z34N44,
792 Z34N45, Z34N46, Z34N48};
793 //==> Br(Z=35)
794 static const G4int N35=2;
795 static const G4double pZ35N44[7]={5.E-8, 6., 2.8E-5, 2.E-9, .34, 2.1E-6, .0028};
796 static const std::pair<G4int, const G4double*> Z35N44(44,pZ35N44);
797 static const G4double pZ35N46[7]={4.E-8, 6.2, 3.7E-5, 1.1E-9, .34, 2.1E-6, .0049};
798 static const std::pair<G4int, const G4double*> Z35N46(46,pZ35N46);
799 static const std::pair<G4int, const G4double*> Z35[N35]={Z35N44, Z35N46};
800 //==> Kr(Z=36)
801 static const G4int N36=7;
802 static const G4double pZ36N42[7]={1.6E-7, 6.8, 2.E-4, .8E-9, .35, 2.1E-6, .0076};
803 static const std::pair<G4int, const G4double*> Z36N42(42,pZ36N42);
804 static const G4double pZ36N44[7]={1.6E-7, 7.3, 1.6E-4, 1.E-9, .35, 2.1E-6, .0062};
805 static const std::pair<G4int, const G4double*> Z36N44(44,pZ36N44);
806 static const G4double pZ36N46[7]={1.6E-7, 7.3, 3.3E-4, .7E-9, .35, 2.1E-6, .013};
807 static const std::pair<G4int, const G4double*> Z36N46(46,pZ36N46);
808 static const G4double pZ36N47[7]={1.6E-6, 7.3, .003, .6E-9, .35, 2.1E-6, .011};
809 static const std::pair<G4int, const G4double*> Z36N47(47,pZ36N47);
810 static const G4double pZ36N48[7]={1.6E-7, 7.8, 7.6E-5, 2.E-9, .35, 2.1E-6, .0031};
811 static const std::pair<G4int, const G4double*> Z36N48(48,pZ36N48);
812 static const G4double pZ36N49[7]={6.E-7, 8., 4.8E-4, 1.4E-9, .27, 2.1E-6, .0053};
813 static const std::pair<G4int, const G4double*> Z36N49(49,pZ36N49);
814 static const G4double pZ36N50[7]={4.E-7, 8.1, 2.7E-4, 1.6E-9, .35, 2.1E-6, .0045};
815 static const std::pair<G4int, const G4double*> Z36N50(50,pZ36N50);
816 static const std::pair<G4int, const G4double*> Z36[N36]={Z36N42, Z36N44, Z36N46,
817 Z36N47, Z36N48, Z36N49, Z36N50};
818 //==> Rb(Z=37)
819 static const G4int N37=3;
820 static const G4double pZ37N48[7]={1.6E-7, 7.2, 1.4E-4, 1.2E-9, .35, 2.1E-6, .0052};
821 static const std::pair<G4int, const G4double*> Z37N48(48,pZ37N48);
822 static const G4double pZ37N49[7]={8.E-8, 7.1, 4.7E-5, 1.6E-9, .27, 2.1E-6, .0034};
823 static const std::pair<G4int, const G4double*> Z37N49(49,pZ37N49);
824 static const G4double pZ37N50[7]={1.E-7, 8., 5.5E-5, 1.9E-9, .27, 1.5E-6, .0036};
825 static const std::pair<G4int, const G4double*> Z37N50(50,pZ37N50);
826 static const std::pair<G4int, const G4double*> Z37[N37]={Z37N48, Z37N49, Z37N50};
827 //==> Sr(Z=38)
828 static const G4int N38=6;
829 static const G4double pZ38N46[7]={8.E-8, 7.3, 6.E-5, 1.3E-9, .27, 2.E-6, .0045};
830 static const std::pair<G4int, const G4double*> Z38N46(46,pZ38N46);
831 static const G4double pZ38N48[7]={8.E-8, 9.7, 2.3E-5, 3.5E-9, .4, 2.7E-6, .0023};
832 static const std::pair<G4int, const G4double*> Z38N48(48,pZ38N48);
833 static const G4double pZ38N49[7]={2.6E-7, 9.5, 1.9E-4, 1.5E-9, .4, 2.7E-6, .0057};
834 static const std::pair<G4int, const G4double*> Z38N49(49,pZ38N49);
835 static const G4double pZ38N50[7]={2.6E-7, 9.5, 2.E-4, 1.4E-9, .37, 3.2E-6, .0059};
836 static const std::pair<G4int, const G4double*> Z38N50(50,pZ38N50);
837 static const G4double pZ38N51[7]={1.3E-7, 9.9, 7.5E-5, 1.7E-9, .37, 3.2E-6, .0046};
838 static const std::pair<G4int, const G4double*> Z38N51(51,pZ38N51);
839 static const G4double pZ38N52[7]={2.6E-7, 9.6, 1.6E-4, 1.8E-9, .37, 2.7E06, .0047};
840 static const std::pair<G4int, const G4double*> Z38N52(52,pZ38N52);
841 static const std::pair<G4int, const G4double*> Z38[N38]={Z38N46, Z38N48, Z38N49, Z38N50,
842 Z38N51, Z38N52};
843 //==> Y (Z=39)
844 static const G4int N39=3;
845 static const G4double pZ39N50[7]={2.6E-7, 9.9, 2.E-4, 1.1E-9, .37, 3.2E-6, .0062};
846 static const std::pair<G4int, const G4double*> Z39N50(50,pZ39N50);
847 static const G4double pZ39N51[7]={2.7E-5, 20., .013, 2.2E-9, .37, 1.9E-6, .0078};
848 static const std::pair<G4int, const G4double*> Z39N51(51,pZ39N51);
849 static const G4double pZ39N52[7]={2.E-7, 9.6, 1.2E-4, 1.7E-9, .37, 3.E-6, .0046};
850 static const std::pair<G4int, const G4double*> Z39N52(52,pZ39N52);
851 static const std::pair<G4int, const G4double*> Z39[N39]={Z39N50, Z39N51, Z39N52};
852 //==> Zr(Z=40)
853 static const G4int N40=7;
854 static const G4double pZ40N50[7]={1.E-7, 9., 6.2E-5, 1.7E-9, .3, 3.E-6, .0044};
855 static const std::pair<G4int, const G4double*> Z40N50(50,pZ40N50);
856 static const G4double pZ40N51[7]={5.E-7, 9.8, 5.E-4, 1.E-9, .25, 2.1E-6, .0079};
857 static const std::pair<G4int, const G4double*> Z40N51(51,pZ40N51);
858 static const G4double pZ40N52[7]={3.E-7, 9.6, 2.2E-4, 1.2E-9, .25, 2.2E-6, .0056};
859 static const std::pair<G4int, const G4double*> Z40N52(52,pZ40N52);
860 static const G4double pZ40N53[7]={2.E-7, 9.6, 1.2E-4, 1.6E-9, .38, 2.9E-6, .0046};
861 static const std::pair<G4int, const G4double*> Z40N53(53,pZ40N53);
862 static const G4double pZ40N54[7]={2.E-7, 9.6, 1.8E-4, 1.1E-9, .25, 2.1E-6, .0067};
863 static const std::pair<G4int, const G4double*> Z40N54(54,pZ40N54);
864 static const G4double pZ40N55[7]={1.8E-7, 9.4, 1.1E-4, 1.6E-9, .33, 2.3E-6, .0045};
865 static const std::pair<G4int, const G4double*> Z40N55(55,pZ40N55);
866 static const G4double pZ40N56[7]={1.8E-7, 9.4, 1.1E-4, 1.6E-9, .2, 1.5E-6, .0045};
867 static const std::pair<G4int, const G4double*> Z40N56(56,pZ40N56);
868 static const std::pair<G4int, const G4double*> Z40[N40]={Z40N50, Z40N51, Z40N52, Z40N53,
869 Z40N54, Z40N55, Z40N56};
870 //==> Nb(Z=41)
871 static const G4int N41=3;
872 static const G4double pZ41N52[7]={2.6E-7, 8.3, 2.E-4, 1.2E-9, .4, 4.E-6, .0051};
873 static const std::pair<G4int, const G4double*> Z41N52(52,pZ41N52);
874 static const G4double pZ41N53[7]={2.E-7, 8.3, 1.6E-4, 1.4E-9, .35, 2.5E-6, .0051};
875 static const std::pair<G4int, const G4double*> Z41N53(53,pZ41N53);
876 static const G4double pZ41N54[7]={1.5E-7, 8.6, 1.E-4, 1.5E-9, .35, 2.5E-6, .0045};
877 static const std::pair<G4int, const G4double*> Z41N54(54,pZ41N54);
878 static const std::pair<G4int, const G4double*> Z41[N41]={Z41N52, Z41N52, Z41N52};
879 //==> Mo(Z=42)
880 static const G4int N42=8;
881 static const G4double pZ42N50[7]={2.E-7, 10., 1.1E-4, 1.8E-9, .3, 2.7E-6, .0044};
882 static const std::pair<G4int, const G4double*> Z42N50(50,pZ42N50);
883 static const G4double pZ42N52[7]={2.1E-7, 10., 1.2E-4, 1.7E-9, .3, 2.8E-6, .0046};
884 static const std::pair<G4int, const G4double*> Z42N52(52,pZ42N52);
885 static const G4double pZ42N53[7]={3.E-7, 10., 1.9E-4, 1.5E-9, .29, 3.E-6, .005};
886 static const std::pair<G4int, const G4double*> Z42N53(53,pZ42N53);
887 static const G4double pZ42N54[7]={1.5E-7, 10., 7.1E-5, 2.1E-9, .29, 2.9E-6, .0037};
888 static const std::pair<G4int, const G4double*> Z42N54(54,pZ42N54);
889 static const G4double pZ42N55[7]={1.9E-7, 9., 1.4E-4, 1.3E-9, .29, 2.8E-6, .0052};
890 static const std::pair<G4int, const G4double*> Z42N55(55,pZ42N55);
891 static const G4double pZ42N56[7]={1.9E-7, 9.9, 1.1E-4, 1.8E-9, .29, 2.4E-6, .0044};
892 static const std::pair<G4int, const G4double*> Z42N56(56,pZ42N56);
893 static const G4double pZ42N57[7]={1.4E-7, 8., 1.E-4, 1.4E-9, .34, 2.5E-6, .0044};
894 static const std::pair<G4int, const G4double*> Z42N57(57,pZ42N57);
895 static const G4double pZ42N58[7]={1.8E-7, 9.5, 1.E-4, 1.7E-9, .27, 2.2E-6, .0041};
896 static const std::pair<G4int, const G4double*> Z42N58(58,pZ42N58);
897 static const std::pair<G4int, const G4double*> Z42[N42]={Z42N50, Z42N52, Z42N53, Z42N54,
898 Z42N55, Z42N56, Z42N57, Z42N58};
899 //==> Tc(Z=43)
900 static const G4int N43=1;
901 static const G4double pZ43N56[7]={1.E-7, 8., 7.2E-5, 1.4E-9, .24, 2.5E-6, .0044};
902 static const std::pair<G4int, const G4double*> Z43N56(56,pZ43N56);
903 static const std::pair<G4int, const G4double*> Z43[N43]={Z43N56};
904 //==> Ru(Z=44)
905 static const G4int N44=9;
906 static const G4double pZ44N52[7]={1.9E-7, 10., 1.E-4, 2.1E-9, .4, 4.E-6, .004};
907 static const std::pair<G4int, const G4double*> Z44N52(52,pZ44N52);
908 static const G4double pZ44N54[7]={1.5E-7, 10., 7.7E-5, 2.1E-9, .29, 2.9E-6, .004};
909 static const std::pair<G4int, const G4double*> Z44N54(54,pZ44N54);
910 static const G4double pZ44N55[7]={1.8E-7, 10., 6.6E-5, 2.6E-9, .47, 4.6E-6, .0028};
911 static const std::pair<G4int, const G4double*> Z44N55(55,pZ44N55);
912 static const G4double pZ44N56[7]={1.8E-6, 10., .0017, 1.1E-9, .47, 6.E-6, .0073};
913 static const std::pair<G4int, const G4double*> Z44N56(56,pZ44N56);
914 static const G4double pZ44N57[7]={1.8E-7, 7.8, 1.3E-4, 1.4E-9, .42, 5.E-6, .0043};
915 static const std::pair<G4int, const G4double*> Z44N57(57,pZ44N57);
916 static const G4double pZ44N58[7]={1.7E-6, 9.8, .0015, 1.2E-9, .32, 4.E-6, .0065};
917 static const std::pair<G4int, const G4double*> Z44N58(58,pZ44N58);
918 static const G4double pZ44N59[7]={3.3E-7, 8.7, 1.9E-4, 1.6E-9, .32, 3.8E-6, .0038};
919 static const std::pair<G4int, const G4double*> Z44N59(59,pZ44N59);
920 static const G4double pZ44N60[7]={3.E-7, 8.7, 1.8E-4, 1.6E-9, .3, 3.2E-6, .004};
921 static const std::pair<G4int, const G4double*> Z44N60(60,pZ44N60);
922 static const G4double pZ44N61[7]={3.E-7, 8.8, 1.4E-4, 1.9E-9, .3, 3.2E-6, .003};
923 static const std::pair<G4int, const G4double*> Z44N61(61,pZ44N61);
924 static const std::pair<G4int, const G4double*> Z44[N44]={Z44N52, Z44N54, Z44N55, Z44N56,
925 Z44N57, Z44N58, Z44N59, Z44N60,
926 Z44N61};
927 //==> Rh(Z=45)
928 static const G4int N45=2;
929 static const G4double pZ45N58[7]={8.E-8, 8.7, 4.E-5, 1.8E-9, .29, 2.9E-6, .0033};
930 static const std::pair<G4int, const G4double*> Z45N58(58,pZ45N58);
931 static const G4double pZ45N60[7]={8.E-8, 8.7, .09, 1.3E-12, .29, 2.9E-6, 7.};
932 static const std::pair<G4int, const G4double*> Z45N60(60,pZ45N60);
933 static const std::pair<G4int, const G4double*> Z45[N45]={Z45N58, Z45N60};
934 //==> Pd(Z=46)
935 static const G4int N46=7;
936 static const G4double pZ46N56[7]={2.E-7, 9.9, 1.2E-4, 1.5E-9, .35, 3.3E-6, .0045};
937 static const std::pair<G4int, const G4double*> Z46N56(56,pZ46N56);
938 static const G4double pZ46N58[7]={2.E-7, 9.9, 9.5E-5, 1.8E-9, .4, 4.E-6, .0036};
939 static const std::pair<G4int, const G4double*> Z46N58(58,pZ46N58);
940 static const G4double pZ46N59[7]={5.6E-7, 9., 4.6E-4, 1.2E-9, .5, 4.8E-6, .0056};
941 static const std::pair<G4int, const G4double*> Z46N59(59,pZ46N59);
942 static const G4double pZ46N60[7]={2.4E-7, 9.2, 1.2E-4, 1.8E-9, .47, 4.6E-6, .0035};
943 static const std::pair<G4int, const G4double*> Z46N60(60,pZ46N60);
944 static const G4double pZ46N61[7]={1.2E-7, 9.2, 4.4E-5, 2.8E-9, .5, 4.3E-6, .0025};
945 static const std::pair<G4int, const G4double*> Z46N61(61,pZ46N61);
946 static const G4double pZ46N62[7]={1.2E-7, 9.2, 3.2E-5, 3.4E-9, .48, 4.5E-6, .0018};
947 static const std::pair<G4int, const G4double*> Z46N62(62,pZ46N62);
948 static const G4double pZ46N64[7]={4.E-7, 9.1, 2.5E-4, 1.5E-9, .48, 4.7E-6, .0042};
949 static const std::pair<G4int, const G4double*> Z46N64(64,pZ46N64);
950 static const std::pair<G4int, const G4double*> Z46[N46]={Z46N56, Z46N58, Z46N59,
951 Z46N60, Z46N61, Z46N62, Z46N64};
952 //==> Ag(Z=47)
953 static const G4int N47=4;
954 static const G4double pZ47N60[7]={1.4E-6, 9.7, .0011, 1.4E-9, .55, 5.E-6, .0056};
955 static const std::pair<G4int, const G4double*> Z47N60(60,pZ47N60);
956 static const G4double pZ47N62[7]={3.E-8, 8.7, 8.5E-6, 3.5E-9, .6, 5.6E-6, .0018};
957 static const std::pair<G4int, const G4double*> Z47N62(62,pZ47N62);
958 static const G4double pZ47N63[7]={3.E-6, 9.5, .002, 1.5E-9, .58, 5.E-6, .0047};
959 static const std::pair<G4int, const G4double*> Z47N63(63,pZ47N63);
960 static const G4double pZ47N64[7]={1.5E-7, 9., 9.E-5, 1.7E-9, .58, 5.6E-6, .0039};
961 static const std::pair<G4int, const G4double*> Z47N64(64,pZ47N64);
962 static const std::pair<G4int, const G4double*> Z47[N47]={Z47N60, Z47N62, Z47N63, Z47N64};
963 //==> Cd(Z=48)
964 static const G4int N48=9;
965 static const G4double pZ48N58[7]={2.9E-7, 10., 1.3E-4, 1.9E-9, .4, 3.8E-6, .0034};
966 static const std::pair<G4int, const G4double*> Z48N58(58,pZ48N58);
967 static const G4double pZ48N60[7]={2.3E-7, 10., 8.2E-5, 2.5E-9, .5, 4.7E-6, .0026};
968 static const std::pair<G4int, const G4double*> Z48N60(60,pZ48N60);
969 static const G4double pZ48N62[7]={2.3E-7, 10., 9.9E-5, 2.5E-9, .5, 4.7E-6, .0031};
970 static const std::pair<G4int, const G4double*> Z48N62(62,pZ48N62);
971 static const G4double pZ48N63[7]={8.4E-7, 11., 4.3E-4, 1.8E-9, .5, 4.5E-6, .0042};
972 static const std::pair<G4int, const G4double*> Z48N63(63,pZ48N63);
973 static const G4double pZ48N64[7]={4.E-7, 11., 1.8E-4, 1.8E-9, .5, 4.6E-6, .0036};
974 static const std::pair<G4int, const G4double*> Z48N64(64,pZ48N64);
975 static const G4double pZ48N65[7]={1.6E-6, 12., .001, 0., .5, 4.6E-6, .013};
976 static const std::pair<G4int, const G4double*> Z48N65(65,pZ48N65);
977 static const G4double pZ48N66[7]={3.E-7, 11., 1.2E-4, 1.9E-9, .5, 4.6E-6, .0031};
978 static const std::pair<G4int, const G4double*> Z48N66(66,pZ48N66);
979 static const G4double pZ48N67[7]={3.8E-7, 11., 1.7E-4, 2.E-9, .6, 6.6E-6, .0035};
980 static const std::pair<G4int, const G4double*> Z48N67(67,pZ48N67);
981 static const G4double pZ48N68[7]={6.E-7, 11., 3.3E-4, 1.9E-9, .5, 4.6E-6, .0043};
982 static const std::pair<G4int, const G4double*> Z48N68(68,pZ48N68);
983 static const std::pair<G4int, const G4double*> Z48[N48]={Z48N58, Z48N60, Z48N62, Z48N63,
984 Z48N64, Z48N65, Z48N66, Z48N67,
985 Z48N68};
986 //==> In(Z=49)
987 static const G4int N49=2;
988 static const G4double pZ49N64[7]={2.7E-7, 12., 8.1E-5, 2.7E-9, .5, 5.E-6, .0026};
989 static const std::pair<G4int, const G4double*> Z49N64(64,pZ49N64);
990 static const G4double pZ49N66[7]={2.7E-7, 12., 5.5E-5, 4.E-9, .5, 5.E-6, .0018};
991 static const std::pair<G4int, const G4double*> Z49N66(66,pZ49N66);
992 static const std::pair<G4int, const G4double*> Z49[N49]={Z49N64, Z49N66};
993 //==> Sn(Z=50)
994 static const G4int N50=14;
995 static const G4double pZ50N62[7]={4.E-7, 11., 1.6E-4, 2.2E-9, .5, 4.5E-6, .0032};
996 static const std::pair<G4int, const G4double*> Z50N62(62,pZ50N62);
997 static const G4double pZ50N63[7]={4.1E-7, 11., 1.6E-4, 2.4E-9, .54, 6.E-6, .0031};
998 static const std::pair<G4int, const G4double*> Z50N63(63,pZ50N63);
999 static const G4double pZ50N64[7]={5.E-7, 12., 1.9E-4, 2.2E-9, .5, 4.4E-6, .0032};
1000 static const std::pair<G4int, const G4double*> Z50N64(64,pZ50N64);
1001 static const G4double pZ50N65[7]={1.E-5, 12., .0077, 1.4E-9, .5, 5.E-6, .0066};
1002 static const std::pair<G4int, const G4double*> Z50N65(65,pZ50N65);
1003 static const G4double pZ50N66[7]={5.E-7, 12., 1.8E-4, 2.4E-9, .5, 5.E-6, .0031};
1004 static const std::pair<G4int, const G4double*> Z50N66(66,pZ50N66);
1005 static const G4double pZ50N67[7]={1.E-6, 12., 4.4E-4, 1.8E-9, .5, 5.E-6, .0037};
1006 static const std::pair<G4int, const G4double*> Z50N67(67,pZ50N67);
1007 static const G4double pZ50N68[7]={5.E-7, 12., 2.E-4, 2.4E-9, .5, 5.E-6, .0033};
1008 static const std::pair<G4int, const G4double*> Z50N68(68,pZ50N68);
1009 static const G4double pZ50N69[7]={6.E-7, 12., 2.5E-4, 2.E-9, .5, 5.E-6, .0035};
1010 static const std::pair<G4int, const G4double*> Z50N69(69,pZ50N69);
1011 static const G4double pZ50N70[7]={1.E-6, 12., 4.7E-4, 2.E-9, .5, 5.E-6, .0039};
1012 static const std::pair<G4int, const G4double*> Z50N70(70,pZ50N70);
1013 static const G4double pZ50N72[7]={1.E-6, 12., 3.7E-4, 2.2E-9, .5, 5.E-6, .0031};
1014 static const std::pair<G4int, const G4double*> Z50N72(72,pZ50N72);
1015 static const G4double pZ50N73[7]={5.E-7, 12., 1.7E-4, 2.8E-9, .5, 5.E-6, .0028};
1016 static const std::pair<G4int, const G4double*> Z50N73(73,pZ50N73);
1017 static const G4double pZ50N74[7]={5.E-7, 12., 2.E-4, 2.E-9, .5, 5.E-6, .0033};
1018 static const std::pair<G4int, const G4double*> Z50N74(74,pZ50N74);
1019 static const G4double pZ50N75[7]={5.E-7, 12., 1.9E-4, 2.8E-9, .5, 5.E-6, .003};
1020 static const std::pair<G4int, const G4double*> Z50N75(75,pZ50N75);
1021 static const G4double pZ50N76[7]={5.E-7, 12., 1.7E-4, 2.8E-9, .5, 5.E-6, .0028};
1022 static const std::pair<G4int, const G4double*> Z50N76(76,pZ50N76);
1023 static const std::pair<G4int, const G4double*> Z50[N50]={Z50N62, Z50N63, Z50N64, Z50N65,
1024 Z50N66, Z50N67, Z50N68, Z50N69,
1025 Z50N70, Z50N72, Z50N73, Z50N74,
1026 Z50N75, Z50N76};
1027 //==> Sb(Z=51)
1028 static const G4int N51=5;
1029 static const G4double pZ51N70[7]={6.E-7, 12., 2.E-4, 2.8E-9, .5, 5.E-6, .0028};
1030 static const std::pair<G4int, const G4double*> Z51N70(70,pZ51N70);
1031 static const G4double pZ51N72[7]={6.E-7, 12., 1.9E-4, 3.E-9, .5, 5.E-6, .0025};
1032 static const std::pair<G4int, const G4double*> Z51N72(72,pZ51N72);
1033 static const G4double pZ51N73[7]={1.1E-6, 12., 3.5E-4, 2.9E-9, .5, 5.E-6, .0026};
1034 static const std::pair<G4int, const G4double*> Z51N73(73,pZ51N73);
1035 static const G4double pZ51N74[7]={5.5E-7, 12., 1.9E-4, 2.9E-9, .5, 5.E-6, .0027};
1036 static const std::pair<G4int, const G4double*> Z51N74(74,pZ51N74);
1037 static const G4double pZ51N75[7]={6.E-7, 12., 2.E-4, 2.9E-9, .5, 5.E-6, .0027};
1038 static const std::pair<G4int, const G4double*> Z51N75(75,pZ51N75);
1039 static const std::pair<G4int, const G4double*> Z51[N51]={Z51N70, Z51N72, Z51N73, Z51N74,
1040 Z51N75};
1041 //==> Te(Z=52)
1042 static const G4int N52=11;
1043 static const G4double pZ52N68[7]={2.7E-7, 12., 8.4E-5, 3.2E-9, 1., 8.E-6, .0026};
1044 static const std::pair<G4int, const G4double*> Z52N68(68,pZ52N68);
1045 static const G4double pZ52N70[7]={2.7E-7, 12., 3.8E-5, 6.E-9, 1., 8.E-6, .0012};
1046 static const std::pair<G4int, const G4double*> Z52N70(70,pZ52N70);
1047 static const G4double pZ52N71[7]={2.7E-8, 12., 1.8E-6, 2.E-8, 1., 8.E-6, 4.8E-4};
1048 static const std::pair<G4int, const G4double*> Z52N71(71,pZ52N71);
1049 static const G4double pZ52N72[7]={2.6E-6, 14., .0014, 2.E-9, 1., 9.E-6, .005};
1050 static const std::pair<G4int, const G4double*> Z52N72(72,pZ52N72);
1051 static const G4double pZ52N73[7]={1.E-6, 14., 2.4E-4, 3.9E-9, 1., 9.E-6, .0022};
1052 static const std::pair<G4int, const G4double*> Z52N73(73,pZ52N73);
1053 static const G4double pZ52N74[7]={8.E-7, 14., 2.3E-4, 3.6E-9, 1.4, 1.3E-5, .0028};
1054 static const std::pair<G4int, const G4double*> Z52N74(74,pZ52N74);
1055 static const G4double pZ52N75[7]={8.E-7, 14., 2.1E-4, 3.6E-9, 1.4, 1.3E-5, .0025};
1056 static const std::pair<G4int, const G4double*> Z52N75(75,pZ52N75);
1057 static const G4double pZ52N76[7]={8.E-7, 14., 2.5E-4, 3.E-9, 1.4, 1.3E-5, .003};
1058 static const std::pair<G4int, const G4double*> Z52N76(76,pZ52N76);
1059 static const G4double pZ52N77[7]={5.E-7, 15., 1.2E-4, 4.3E-9, 1.4, 1.4E-5, .0023};
1060 static const std::pair<G4int, const G4double*> Z52N77(77,pZ52N77);
1061 static const G4double pZ52N78[7]={8.E-7, 14., 2.7E-4, 2.7E-9, 1.4, 1.3E-5, .0031};
1062 static const std::pair<G4int, const G4double*> Z52N78(78,pZ52N78);
1063 static const G4double pZ52N80[7]={4.7E-7, 14., 1.8E-4, 2.2E-9, .83, 1.E-5, .0036};
1064 static const std::pair<G4int, const G4double*> Z52N80(80,pZ52N80);
1065 static const std::pair<G4int, const G4double*> Z52[N52]={Z52N68, Z52N70, Z52N71, Z52N72,
1066 Z52N73, Z52N74, Z52N75, Z52N76,
1067 Z52N77, Z52N78, Z52N80};
1068 //==> I (Z=53)
1069 static const G4int N53=5;
1070 static const G4double pZ53N74[7]={9.4E-7, 14., 2.5E-4, 3.E-9, .7, 7.3E-6, .0025};
1071 static const std::pair<G4int, const G4double*> Z53N74(74,pZ53N74);
1072 static const G4double pZ53N76[7]={2.1E-5, 14., .015, 1.1E-9, 1.1, 1.E-5, .007};
1073 static const std::pair<G4int, const G4double*> Z53N76(76,pZ53N76);
1074 static const G4double pZ53N77[7]={1.1E-6, 14., 2.4E-4, 3.3E-9, .9, 1.E-5, .0021};
1075 static const std::pair<G4int, const G4double*> Z53N77(77,pZ53N77);
1076 static const G4double pZ53N78[7]={5.5E-7, 14., 1.5E-4, 3.7E-9, 1.2, 1.2E-5, .0024};
1077 static const std::pair<G4int, const G4double*> Z53N78(78,pZ53N78);
1078 static const G4double pZ53N82[7]={3.2E-6, 14., .0017, 1.8E-9, .8, 8.E-6, .0024};
1079 static const std::pair<G4int, const G4double*> Z53N82(82,pZ53N82);
1080 static const std::pair<G4int, const G4double*> Z53[N53]={Z53N74, Z53N76, Z53N77, Z53N78,
1081 Z53N82};
1082 //==> Xe(Z=54)
1083 static const G4int N54=12;
1084 static const G4double pZ54N69[7]={3.E-6, 14., 8.E-4, 3.7E-9, .9, 1.1E-5, .15};
1085 static const std::pair<G4int, const G4double*> Z54N69(69,pZ54N69);
1086 static const G4double pZ54N70[7]={1.5E-7, 14., 1.4E-6, 9.E-8, .7, 8.E-6, 9.5E-5};
1087 static const std::pair<G4int, const G4double*> Z54N70(70,pZ54N70);
1088 static const G4double pZ54N72[7]={1.5E-6, 14., 5.6E-4, 3.E-9, 1.2, 1.1E-5, .0036};
1089 static const std::pair<G4int, const G4double*> Z54N72(72,pZ54N72);
1090 static const G4double pZ54N74[7]={1.8E-6, 14., 8.8E-4, 2.E-9, 1.3, 1.2E-5, .0047};
1091 static const std::pair<G4int, const G4double*> Z54N74(74,pZ54N74);
1092 static const G4double pZ54N75[7]={1.E-6, 14., 2.6E-4, 3.7E-9, 1.5, 1.4E-5, .0024};
1093 static const std::pair<G4int, const G4double*> Z54N75(75,pZ54N75);
1094 static const G4double pZ54N76[7]={1.8E-6, 14., 8.E-4, 2.E-9, 1.2, 1.4E-5, .0042};
1095 static const std::pair<G4int, const G4double*> Z54N76(76,pZ54N76);
1096 static const G4double pZ54N77[7]={2.3E-7, 14., 1.9E-5, 9.E-9, 1.2, 1.4E-5, 7.7E-4};
1097 static const std::pair<G4int, const G4double*> Z54N77(77,pZ54N77);
1098 static const G4double pZ54N78[7]={6.E-7, 14., 1.6E-4, 3.E-9, 1.2, 1.4E-5, .0025};
1099 static const std::pair<G4int, const G4double*> Z54N78(78,pZ54N78);
1100 static const G4double pZ54N79[7]={6.E-7, 14., 1.6E-4, 3.3E-9, 1.6, 1.5E-5, .0024};
1101 static const std::pair<G4int, const G4double*> Z54N79(79,pZ54N79);
1102 static const G4double pZ54N80[7]={6.6E-7, 14., 2.1E-4, 2.5E-9, 1.2, 1.4E-5, .003};
1103 static const std::pair<G4int, const G4double*> Z54N80(80,pZ54N80);
1104 static const G4double pZ54N81[7]={.03, 40., 2.1, 2.5E-9, 1.E-16, 6.E-36, 140.};
1105 static const std::pair<G4int, const G4double*> Z54N81(81,pZ54N81);
1106 static const G4double pZ54N82[7]={3.1E-6, 14., .0019, 1.6E-9, 1., 1.3E-5, .0054};
1107 static const std::pair<G4int, const G4double*> Z54N82(82,pZ54N82);
1108 static const std::pair<G4int, const G4double*> Z54[N54]={Z54N69, Z54N70, Z54N72, Z54N74,
1109 Z54N75, Z54N76, Z54N77, Z54N78,
1110 Z54N79, Z54N80, Z54N81, Z54N82};
1111 //==> Cs(Z=55)
1112 static const G4int N55=5;
1113 static const G4double pZ55N78[7]={1.4E-6, 14., 4.E-4, 3.E-9, 1.2, 1.4E-5, .0026};
1114 static const std::pair<G4int, const G4double*> Z55N78(78,pZ55N78);
1115 static const G4double pZ55N79[7]={.028, 14., 44., .5E-9, 1.2, 1.3E-5, .015};
1116 static const std::pair<G4int, const G4double*> Z55N79(79,pZ55N79);
1117 static const G4double pZ55N80[7]={2.E-6, 14., 9.5E-4, 2.E-9, 1.2, 1.4E-5, .0042};
1118 static const std::pair<G4int, const G4double*> Z55N80(80,pZ55N80);
1119 static const G4double pZ55N81[7]={2.5E-7, 14., 6.5E-5, 3.8E-9, 1.2, 1.4E-5, .0023};
1120 static const std::pair<G4int, const G4double*> Z55N81(81,pZ55N81);
1121 static const G4double pZ55N82[7]={2.5E-7, 14., 6.5E-5, 3.8E-9, 1.2, 1.4E-5, .0023};
1122 static const std::pair<G4int, const G4double*> Z55N82(82,pZ55N82);
1123 static const std::pair<G4int, const G4double*> Z55[N55]={Z55N78, Z55N79, Z55N80, Z55N81,
1124 Z55N82};
1125 //==> Ba(Z=56)
1126 static const G4int N56=9;
1127 static const G4double pZ56N74[7]={4.E-7, 14., 2.8E-5, 1.2E-8, 1.2, 1.5E-5, 6.6E-4};
1128 static const std::pair<G4int, const G4double*> Z56N74(74,pZ56N74);
1129 static const G4double pZ56N76[7]={4.E-6, 14., .0022, 1.4E-9, 1.3, 1.6E-5, .0053};
1130 static const std::pair<G4int, const G4double*> Z56N76(76,pZ56N76);
1131 static const G4double pZ56N77[7]={2.E-7, 14., 3.7E-5, 5.E-9, 1.1, 1.5E-5, .0016};
1132 static const std::pair<G4int, const G4double*> Z56N77(77,pZ56N77);
1133 static const G4double pZ56N78[7]={1.6E-6, 14., 6.E-4, 2.E-9, 1.3, 1.6E-5, .0033};
1134 static const std::pair<G4int, const G4double*> Z56N78(78,pZ56N78);
1135 static const G4double pZ56N79[7]={5.E-7, 17., 8.E-5, 4.5E-9, 1.3, 1.6E-5, .0018};
1136 static const std::pair<G4int, const G4double*> Z56N79(79,pZ56N79);
1137 static const G4double pZ56N80[7]={2.E-6, 20., 3.E-4, 6.E-9, 1.3, 1.8E-5, .0019};
1138 static const std::pair<G4int, const G4double*> Z56N80(80,pZ56N80);
1139 static const G4double pZ56N81[7]={5.8E-6, 20., .0018, 3.E-9, 1.3, 1.7E-5, .0041};
1140 static const std::pair<G4int, const G4double*> Z56N81(81,pZ56N81);
1141 static const G4double pZ56N82[7]={2.7E-6, 20., 5.5E-4, 4.E-9, 1.4, 2.E-5, .0027};
1142 static const std::pair<G4int, const G4double*> Z56N82(82,pZ56N82);
1143 static const G4double pZ56N84[7]={1.1E-6, 21., 1.E-4, 9.E-9, 2., 2.7E-5, .0012};
1144 static const std::pair<G4int, const G4double*> Z56N84(84,pZ56N84);
1145 static const std::pair<G4int, const G4double*> Z56[N56]={Z56N74, Z56N76, Z56N77, Z56N78,
1146 Z56N79, Z56N80, Z56N81, Z56N82,
1147 Z56N84};
1148 //==> La(Z=57)
1149 static const G4int N57=3;
1150 static const G4double pZ57N81[7]={2.7E-6, 20., .0017, 1.1E-9, 1.4, 2.E-5, .0083};
1151 static const std::pair<G4int, const G4double*> Z57N81(81,pZ57N81);
1152 static const G4double pZ57N82[7]={5.4E-6, 20., .0027, 1.5E-9, 1., 1.5E-5, .0065};
1153 static const std::pair<G4int, const G4double*> Z57N82(82,pZ57N82);
1154 static const G4double pZ57N83[7]={2.7E-6, 20., 2.6E-4, 6.E-9, 1.4, 2.E-5, .0012};
1155 static const std::pair<G4int, const G4double*> Z57N83(83,pZ57N83);
1156 static const std::pair<G4int, const G4double*> Z57[N57]={Z57N81, Z57N82, Z57N83};
1157 //==> Ce(Z=58)
1158 static const G4int N58=8;
1159 static const G4double pZ58N78[7]={1.8E-6, 20., 3.7E-4, 4.E-9, 1.4, 2.E-5, .0028};
1160 static const std::pair<G4int, const G4double*> Z58N78(78,pZ58N78);
1161 static const G4double pZ58N80[7]={1.8E-6, 18., 2.6E-4, 6.E-9, 1.3, 2.1E-5, .0017};
1162 static const std::pair<G4int, const G4double*> Z58N80(80,pZ58N80);
1163 static const G4double pZ58N81[7]={.0018, 18., 2.9, .6E-9, 1.3, 2.E-5, .02};
1164 static const std::pair<G4int, const G4double*> Z58N81(81,pZ58N81);
1165 static const G4double pZ58N82[7]={1.8E-6, 18., 3.7E-4, 5.E-9, 1.3, 2.E-5, .0024};
1166 static const std::pair<G4int, const G4double*> Z58N82(82,pZ58N82);
1167 static const G4double pZ58N83[7]={7.2E-6, 20., .0025, 2.3E-9, 1.1, 1.7E-5, .0045};
1168 static const std::pair<G4int, const G4double*> Z58N83(83,pZ58N83);
1169 static const G4double pZ58N84[7]={1.2E-6, 18., 2.E-4, 6.E-9, 1.5, 1.9E-5, .0018};
1170 static const std::pair<G4int, const G4double*> Z58N84(84,pZ58N84);
1171 static const G4double pZ58N85[7]={1.2E-6, 16., 6.E-4, 1.7E-9, 1.4, 2.E-5, .0053};
1172 static const std::pair<G4int, const G4double*> Z58N85(85,pZ58N85);
1173 static const G4double pZ58N86[7]={6.E-7, 18., 1.E-4, 6.E-9, 1.5, 1.9E-5, .0018};
1174 static const std::pair<G4int, const G4double*> Z58N86(86,pZ58N86);
1175 static const std::pair<G4int, const G4double*> Z58[N58]={Z58N78, Z58N80, Z58N81, Z58N82,
1176 Z58N83, Z58N84, Z58N85, Z58N86};
1177 //==> Pr(Z=59)
1178 static const G4int N59=3;
1179 static const G4double pZ59N82[7]={9.5E-7, 16., 1.6E-4, 4.E-9, 1.4, 2.E-5, .0017};
1180 static const std::pair<G4int, const G4double*> Z59N82(82,pZ59N82);
1181 static const G4double pZ59N83[7]={9.5E-7, 16., 1.9E-4, 4.E-9, 1.4, 1.9E-5, .0021};
1182 static const std::pair<G4int, const G4double*> Z59N83(83,pZ59N83);
1183 static const G4double pZ59N84[7]={9.5E-6, 16., .019, .4E-9, 2., 2.4E-5, .021};
1184 static const std::pair<G4int, const G4double*> Z59N84(84,pZ59N84);
1185 static const std::pair<G4int, const G4double*> Z59[N59]={Z59N82, Z59N83, Z59N84};
1186 //==> Nd(Z=60)
1187 static const G4int N60=8;
1188 static const G4double pZ60N82[7]={9.6E-6, 21., .0036, 2.3E-9, 1.4, 2.E-5, .0052};
1189 static const std::pair<G4int, const G4double*> Z60N82(82,pZ60N82);
1190 static const G4double pZ60N83[7]={9.6E-4, 20., 4., .25E-9, 1.4, 2.E-5, .052};
1191 static const std::pair<G4int, const G4double*> Z60N83(83,pZ60N83);
1192 static const G4double pZ60N84[7]={4.8E-7, 21., 3.3E-5, 1.E-08, 1.3, 2.2E-5, 9.E-4};
1193 static const std::pair<G4int, const G4double*> Z60N84(84,pZ60N84);
1194 static const G4double pZ60N85[7]={.0048, 20., 4.5, .9E-9, 1.3, 2.E-5, .012};
1195 static const std::pair<G4int, const G4double*> Z60N85(85,pZ60N85);
1196 static const G4double pZ60N86[7]={1.2E-6, 16., 7.7E-4, 1.5E-9, 1.3, 1.8E-5, .0066};
1197 static const std::pair<G4int, const G4double*> Z60N86(86,pZ60N86);
1198 static const G4double pZ60N87[7]={.0012, 15., 8.4, .1E-9, 1.3, 1.5E-5, .071};
1199 static const std::pair<G4int, const G4double*> Z60N87(87,pZ60N87);
1200 static const G4double pZ60N88[7]={1.5E-7, 16., 4.1E-5, 2.5E-9, 1.3, 1.6E-5, .0027};
1201 static const std::pair<G4int, const G4double*> Z60N88(88,pZ60N88);
1202 static const G4double pZ60N90[7]={1.5E-7, 16., 4.3E-5, 2.5E-9, 1.3, 1.6E-5, .0029};
1203 static const std::pair<G4int, const G4double*> Z60N90(90,pZ60N90);
1204 static const std::pair<G4int, const G4double*> Z60[N60]={Z60N82, Z60N83, Z60N84, Z60N85,
1205 Z60N86, Z60N87, Z60N88, Z60N90};
1206 //==> Pm(Z=61)
1207 static const G4int N61=3;
1208 static const G4double pZ61N86[7]={6.E-7, 16., 8.E-4, .6E-9, 3., 2.8E-5, .014};
1209 static const std::pair<G4int, const G4double*> Z61N86(86,pZ61N86);
1210 static const G4double pZ61N87[7]={6.2E-8, 16., 1.2E-5, 4.E-9, 2.2, 2.5E-5, .0019};
1211 static const std::pair<G4int, const G4double*> Z61N87(87,pZ61N87);
1212 static const G4double pZ61N88[7]={3.2E-8, 16., 6.4E-6, 4.E-9, 2.2, 2.5E-5, .002};
1213 static const std::pair<G4int, const G4double*> Z61N88(88,pZ61N88);
1214 static const std::pair<G4int, const G4double*> Z61[N61]={Z61N86, Z61N87, Z61N88};
1215 //==> Sm(Z=62)
1216 static const G4int N62=9;
1217 static const G4double pZ62N82[7]={1.2E-7, 16., 2.1E-5, 5.E-9, 1.4, 2.E-5, .0017};
1218 static const std::pair<G4int, const G4double*> Z62N82(82,pZ62N82);
1219 static const G4double pZ62N85[7]={1.2E-7, 16., 5.3E-5, 1.5E-9, 1.3, 1.7E-5, .0045};
1220 static const std::pair<G4int, const G4double*> Z62N85(85,pZ62N85);
1221 static const G4double pZ62N86[7]={6.E-8, 16., 1.7E-5, 3.E-9, 1.3, 1.7E-5, .0028};
1222 static const std::pair<G4int, const G4double*> Z62N86(86,pZ62N86);
1223 static const G4double pZ62N87[7]={6.E-8, 15., 5.2E-4, .11E-9, 1.3, 1.5E-5, .074};
1224 static const std::pair<G4int, const G4double*> Z62N87(87,pZ62N87);
1225 static const G4double pZ62N88[7]={6.E-7, 16., 8.6E-4, .7E-9, 1.3, 1.7E-5, .015};
1226 static const std::pair<G4int, const G4double*> Z62N88(88,pZ62N88);
1227 static const G4double pZ62N89[7]={6.E-7, 16., 5.E-4, 0., 1.3, 1.6E-5, .053};
1228 static const std::pair<G4int, const G4double*> Z62N89(89,pZ62N89);
1229 static const G4double pZ62N90[7]={6.E-8, 15., 1.3E-5, 4.5E-9, 1.3, 1.7E-5, .0019};
1230 static const std::pair<G4int, const G4double*> Z62N90(90,pZ62N90);
1231 static const G4double pZ62N91[7]={6.E-8, 15., 1.5E-5, 2.E-9, 1.3, 1.6E-5, .0024};
1232 static const std::pair<G4int, const G4double*> Z62N91(91,pZ62N91);
1233 static const G4double pZ62N92[7]={1.2E-7, 15., 8.6E-5, 1.2E-9, 1.3, 1.6E-5, .007};
1234 static const std::pair<G4int, const G4double*> Z62N92(92,pZ62N92);
1235 static const std::pair<G4int, const G4double*> Z62[N62]={Z62N82, Z62N85, Z62N86, Z62N87,
1236 Z62N88, Z62N89, Z62N90, Z62N91,
1237 Z62N92};
1238 //==> Eu(Z=63)
1239 static const G4int N63=7;
1240 static const G4double pZ63N88[7]={6.E-8, 15., 2.8E-5, 2.E-9, 1.3, 1.5E-5, .0046};
1241 static const std::pair<G4int, const G4double*> Z63N88(88,pZ63N88);
1242 static const G4double pZ63N89[7]={6.E-7, 15., .0011, .5E-9, 2.4, 2.4E-5, .017};
1243 static const std::pair<G4int, const G4double*> Z63N89(89,pZ63N89);
1244 static const G4double pZ63N90[7]={3.E-7, 15., 1.8E-4, 1.1E-9, 1., 1.2E-5, .0054};
1245 static const std::pair<G4int, const G4double*> Z63N90(90,pZ63N90);
1246 static const G4double pZ63N91[7]={4.1E-7, 15., 1.4E-4, 1.9E-9, 1., 1.4E-5, .0032};
1247 static const std::pair<G4int, const G4double*> Z63N91(91,pZ63N91);
1248 static const G4double pZ63N92[7]={5.E-8, 15., 2.4E-5, 2.8E-9, 1., 1.3E-5, .0037};
1249 static const std::pair<G4int, const G4double*> Z63N92(92,pZ63N92);
1250 static const G4double pZ63N93[7]={4.1E-8, 17., 1.6E-5, 2.E-9, 3.3, 3.4E-5, .004};
1251 static const std::pair<G4int, const G4double*> Z63N93(93,pZ63N93);
1252 static const G4double pZ63N94[7]={4.2E-8, 17., 1.6E-5, 2.E-9, 1.2, 1.6E-5, .004};
1253 static const std::pair<G4int, const G4double*> Z63N94(94,pZ63N94);
1254 static const std::pair<G4int, const G4double*> Z63[N63]={Z63N88, Z63N89, Z63N90, Z63N91,
1255 Z63N92, Z63N93, Z63N94};
1256 //==> Gd(Z=64)
1257 static const G4int N64=8;
1258 static const G4double pZ64N88[7]={4.2E-8, 14., 2.E-4, 0., 1.2, 1.3E-5, .19};
1259 static const std::pair<G4int, const G4double*> Z64N88(88,pZ64N88);
1260 static const G4double pZ64N89[7]={2.E-6, 14., .0016, 1.4E-9, 1.6, 1.6E-5, .0057};
1261 static const std::pair<G4int, const G4double*> Z64N89(89,pZ64N89);
1262 static const G4double pZ64N90[7]={1.7E-7, 12., 8.4E-5, 2.E-9, 1.8, 2.2E-5, .0035};
1263 static const std::pair<G4int, const G4double*> Z64N90(90,pZ64N90);
1264 static const G4double pZ64N91[7]={1.7E-7, 13., 5.E-4, .3E-9, 1.7, 1.9E-5, .026};
1265 static const std::pair<G4int, const G4double*> Z64N91(91,pZ64N91);
1266 static const G4double pZ64N92[7]={1.7E-7, 13., 7.E-5, 2.5E-9, 1.8, 2.2E-5, .003};
1267 static const std::pair<G4int, const G4double*> Z64N92(92,pZ64N92);
1268 static const G4double pZ64N93[7]={1.7E-6, 12., .002, 0., 1.7, 1.8E-5, .47};
1269 static const std::pair<G4int, const G4double*> Z64N93(93,pZ64N93);
1270 static const G4double pZ64N94[7]={3.4E-7, 13., 1.5E-4, 2.E-9, 1.8, 2.3E-5, .0034};
1271 static const std::pair<G4int, const G4double*> Z64N94(94,pZ64N94);
1272 static const G4double pZ64N96[7]={2.6E-6, 13., .0019, 1.2E-9, 1., 1.2E-5, .0056};
1273 static const std::pair<G4int, const G4double*> Z64N96(96,pZ64N96);
1274 static const std::pair<G4int, const G4double*> Z64[N64]={Z64N88, Z64N89, Z64N90, Z64N91,
1275 Z64N92, Z64N93, Z64N94, Z64N96};
1276 //==> Tb(Z=65)
1277 static const G4int N65=2;
1278 static const G4double pZ65N94[7]={9.E-7, 16., 3.9E-4, 1.7E-9, 2., 2.2E-5, .0042};
1279 static const std::pair<G4int, const G4double*> Z65N94(94,pZ65N94);
1280 static const G4double pZ65N95[7]={4.5E-7, 16., 1.1E-4, 3.E-9, 1.7, 2.2E-5, .0024};
1281 static const std::pair<G4int, const G4double*> Z65N95(95,pZ65N95);
1282 static const std::pair<G4int, const G4double*> Z65[N65]={Z65N94, Z65N94};
1283 //==> Dy(Z=66)
1284 static const G4int N66=7;
1285 static const G4double pZ66N90[7]={1.2E-7, 13., 4.E-5, 3.E-9, 1.2, 1.4E-5, .0025};
1286 static const std::pair<G4int, const G4double*> Z66N90(90,pZ66N90);
1287 static const G4double pZ66N92[7]={1.2E-7, 13., 6.7E-5, 2.E-9, 1., 1.1E-5, .004};
1288 static const std::pair<G4int, const G4double*> Z66N92(92,pZ66N92);
1289 static const G4double pZ66N94[7]={1.2E-7, 13., 5.3E-5, 1.6E-9, 1., 1.1E-5, .0034};
1290 static const std::pair<G4int, const G4double*> Z66N94(94,pZ66N94);
1291 static const G4double pZ66N95[7]={1.2E-6, 13., .0017, .7E-9, 1.3, 1.3E-5, .011};
1292 static const std::pair<G4int, const G4double*> Z66N95(95,pZ66N95);
1293 static const G4double pZ66N96[7]={1.2E-7, 13., 8.E-6, 1.5E-7, 1., 1.1E-5, 1.E-4};
1294 static const std::pair<G4int, const G4double*> Z66N96(96,pZ66N96);
1295 static const G4double pZ66N97[7]={1.5E-7, 13., 4.E-5, 4.E-9, 1.3, 1.3E-5, .002};
1296 static const std::pair<G4int, const G4double*> Z66N97(97,pZ66N97);
1297 static const G4double pZ66N98[7]={3.E-7, 13., .001, 4.E-9, 1.3, 1.3E-5, .23};
1298 static const std::pair<G4int, const G4double*> Z66N98(98,pZ66N98);
1299 static const std::pair<G4int, const G4double*> Z66[N66]={Z66N90, Z66N92, Z66N94, Z66N95,
1300 Z66N96, Z66N97, Z66N98};
1301 //==> Ho(Z=67)
1302 static const G4int N67=2;
1303 static const G4double pZ67N98[7]={3.E-7, 13., 2.2E-4, 1.5E-9, 1., 1.E-5, .0054};
1304 static const std::pair<G4int, const G4double*> Z67N98(98,pZ67N98);
1305 static const G4double pZ67N99[7]={7.5E-8, 13., 2.6E-5, 4.5E-9, 1.5, 1.5E-5, .0021};
1306 static const std::pair<G4int, const G4double*> Z67N99(99,pZ67N99);
1307 static const std::pair<G4int, const G4double*> Z67[N67]={Z67N98, Z67N99};
1308 //==> Er(Z=68)
1309 static const G4int N68=6;
1310 static const G4double pZ68N94[7]={1.2E-7, 13., 7.8E-5, 1.6E-9, .9, 9.E-6, .005};
1311 static const std::pair<G4int, const G4double*> Z68N94(94,pZ68N94);
1312 static const G4double pZ68N96[7]={1.2E-7, 13., 8.5E-5, 1.2E-9, .9, 8.E-6, .0055};
1313 static const std::pair<G4int, const G4double*> Z68N96(96,pZ68N96);
1314 static const G4double pZ68N98[7]={1.E-6, 13., .0011, .8E-9, .9, 8.E-6, .0087};
1315 static const std::pair<G4int, const G4double*> Z68N98(98,pZ68N98);
1316 static const G4double pZ68N99[7]={1.2E-7, 13., 2.5E-5, 4.5E-9, .9, 9.E-6, .0015};
1317 static const std::pair<G4int, const G4double*> Z68N99(99,pZ68N99);
1318 static const G4double pZ68N100[7]={2.E-6, 13., .0015, 1.1E-9, .9, 8.E-6, .0058};
1319 static const std::pair<G4int, const G4double*> Z68N100(100,pZ68N100);
1320 static const G4double pZ68N102[7]={2.E-6, 13., .0018, 1.E-9, .9, 8.E-6, .007};
1321 static const std::pair<G4int, const G4double*> Z68N102(102,pZ68N102);
1322 static const std::pair<G4int, const G4double*> Z68[N68]={Z68N94, Z68N96, Z68N98,
1323 Z68N99, Z68N100, Z68N102};
1324 //==> Tm(Z=69) *** No data *** (Tm169=Er167)
1325 static const G4int N69=1;
1326 static const G4double pZ69N100[7]={1.2E-7, 13., 2.5E-5, 4.5E-9, .9, 9.E-6, .0015};
1327 static const std::pair<G4int, const G4double*> Z69N100(100,pZ69N100);
1328 static const std::pair<G4int, const G4double*> Z69[N69]={Z69N100};
1329 //==> Yb(Z=70) *** No data *** (Yb168=Er166, Yb170=Er168, Yb171=Er167, Yb172=Er170,
1330 // Yb173=Hf177, Yb174=Hf176, Yb176=Hf178)
1331 static const G4int N70=7;
1332 static const G4double pZ70N98[7]={1.E-6, 13., .0011, .8E-9, .9, 8.E-6, .0087};
1333 static const std::pair<G4int, const G4double*> Z70N98(98,pZ70N98);
1334 static const G4double pZ70N100[7]={2.E-6, 13., .0015, 1.1E-9, .9, 8.E-6, .0058};
1335 static const std::pair<G4int, const G4double*> Z70N100(100,pZ70N100);
1336 static const G4double pZ70N101[7]={1.2E-7, 13., 2.5E-5, 4.5E-9, .9, 9.E-6, .0015};
1337 static const std::pair<G4int, const G4double*> Z70N101(101,pZ70N101);
1338 static const G4double pZ70N102[7]={2.E-6, 13., .0018, 1.E-9, .9, 8.E-6, .007};
1339 static const std::pair<G4int, const G4double*> Z70N102(102,pZ70N102);
1340 static const G4double pZ70N103[7]={5.E-7, 18., .01, 1.7E-6, 1.2, 1.4E-5, 1.4E-5};
1341 static const std::pair<G4int, const G4double*> Z70N103(103,pZ70N103);
1342 static const G4double pZ70N104[7]={5.E-7, 18., 1.9E-4, 2.5E-9, 1.2, 1.4E-5, .004};
1343 static const std::pair<G4int, const G4double*> Z70N104(104,pZ70N104);
1344 static const G4double pZ70N106[7]={5.E-7, 18., 1.3E-4, 2.E-9, 1.2, 1.4E-5, .0027};
1345 static const std::pair<G4int, const G4double*> Z70N106(106,pZ70N106);
1346 static const std::pair<G4int, const G4double*> Z70[N70]={Z70N98, Z70N100, Z70N101,
1347 Z70N102, Z70N103, Z70N104,
1348 Z70N106};
1349 //==> Lu(Z=71)
1350 static const G4int N71=2;
1351 static const G4double pZ71N104[7]={5.E-7, 18., 1.8E-4, 2.E-9, .9, 9.E-6, .0036};
1352 static const std::pair<G4int, const G4double*> Z71N104(104,pZ71N104);
1353 static const G4double pZ71N105[7]={2.5E-7, 18., 9.E-5, 1.E-8, .9, 9.E-6, .0016};
1354 static const std::pair<G4int, const G4double*> Z71N105(105,pZ71N105);
1355 static const std::pair<G4int, const G4double*> Z71[N71]={Z71N104, Z71N105};
1356 //==> Hf(Z=72)
1357 static const G4int N72=6;
1358 static const G4double pZ72N102[7]={1.E-6, 18., 8.8E-4, .8E-9, 1., 1.1E-5, .0092};
1359 static const std::pair<G4int, const G4double*> Z72N102(102,pZ72N102);
1360 static const G4double pZ72N104[7]={5.E-7, 18., 1.9E-4, 2.5E-9, 1.2, 1.4E-5, .004};
1361 static const std::pair<G4int, const G4double*> Z72N104(104,pZ72N104);
1362 static const G4double pZ72N105[7]={5.E-7, 18., .01, 1.7E-6, 1.2, 1.4E-5, 1.4E-5};
1363 static const std::pair<G4int, const G4double*> Z72N105(105,pZ72N105);
1364 static const G4double pZ72N106[7]={5.E-7, 18., 1.3E-4, 2.E-9, 1.2, 1.4E-5, .0027};
1365 static const std::pair<G4int, const G4double*> Z72N106(106,pZ72N106);
1366 static const G4double pZ72N107[7]={2.5E-7, 18., 1.E-4, 2.E-9, 1.2, 1.5E-5, .0041};
1367 static const std::pair<G4int, const G4double*> Z72N107(107,pZ72N107);
1368 static const G4double pZ72N108[7]={1.E-6, 18., .0012, .6E-9, 1.2, 1.5E-5, .012};
1369 static const std::pair<G4int, const G4double*> Z72N108(108,pZ72N108);
1370 static const std::pair<G4int, const G4double*> Z72[N72]={Z72N102, Z72N104, Z72N105,
1371 Z72N106, Z72N107, Z72N108};
1372 //==> Ta(Z=73)
1373 static const G4int N73=2;
1374 static const G4double pZ73N108[7]={5.E-7, 18., 1.7E-4, 2.E-9, 1.2, 1.4E-5, .0035};
1375 static const std::pair<G4int, const G4double*> Z73N108(108,pZ73N108);
1376 static const G4double pZ73N109[7]={1.E-6, 14., .002, .3E-9, 1.3, 1.5E-5, .016};
1377 static const std::pair<G4int, const G4double*> Z73N109(109,pZ73N109);
1378 static const std::pair<G4int, const G4double*> Z73[N73]={Z73N108, Z73N108};
1379 //==> W (Z=74) *** W180 only bad TENDL-2008 *** (W180=Hf178)
1380 static const G4int N74=5;
1381 static const G4double pZ74N106[7]={5.E-7, 18., 1.3E-4, 2.E-9, 1.2, 1.4E-5, .0027};
1382 static const std::pair<G4int, const G4double*> Z74N106(106,pZ74N106);
1383 static const G4double pZ74N108[7]={4.E-6, 14., .0034, .9E-9, 1.3, 1.4E-5, .0067};
1384 static const std::pair<G4int, const G4double*> Z74N108(108,pZ74N108);
1385 static const G4double pZ74N109[7]={1.2E-7, 14., 3.E-5, 3.E-9, 1.3, 1.4E-5, .0019};
1386 static const std::pair<G4int, const G4double*> Z74N109(109,pZ74N109);
1387 static const G4double pZ74N110[7]={1.2E-7, 14., 3.6E-5, 2.E-9, 1.3, 1.3E-5, .0024};
1388 static const std::pair<G4int, const G4double*> Z74N110(110,pZ74N110);
1389 static const G4double pZ74N112[7]={1.2E-7, 14., 3.E-5, 1.3E-7, 1.3, 1.3E-5, 1.4E-4};
1390 static const std::pair<G4int, const G4double*> Z74N112(112,pZ74N112);
1391 static const std::pair<G4int, const G4double*> Z74[N74]={Z74N106, Z74N108, Z74N109,
1392 Z74N110, Z74N112};
1393 //==> Re(Z=75)
1394 static const G4int N75=2;
1395 static const G4double pZ75N110[7]={1.2E-7, 14., 8.E-5, 1.2E-9, 1.3, 1.5E-5, .005};
1396 static const std::pair<G4int, const G4double*> Z75N110(110,pZ75N110);
1397 static const G4double pZ75N112[7]={1.2E-7, 14., 8.8E-5, 1.1E-9, 1.3, 1.5E-5, .0055};
1398 static const std::pair<G4int, const G4double*> Z75N112(112,pZ75N112);
1399 static const std::pair<G4int, const G4double*> Z75[N75]={Z75N110, Z75N112};
1400 //==> Os(Z=76) *** No data *** (Os184=W182, Os186=W184, Os187=Re187, Os188=W186,
1401 // Os189=Re187, Os190=Os192=W186)
1402 static const G4int N76=7;
1403 static const G4double pZ76N108[7]={4.E-6, 14., .0034, .9E-9, 1.3, 1.4E-5, .0067};
1404 static const std::pair<G4int, const G4double*> Z76N108(108,pZ76N108);
1405 static const G4double pZ76N110[7]={1.2E-7, 14., 3.6E-5, 2.E-9, 1.3, 1.3E-5, .0024};
1406 static const std::pair<G4int, const G4double*> Z76N110(110,pZ76N110);
1407 static const G4double pZ76N111[7]={1.2E-7, 14., 8.8E-5, 1.1E-9, 1.3, 1.5E-5, .0055};
1408 static const std::pair<G4int, const G4double*> Z76N111(111,pZ76N111);
1409 static const G4double pZ76N112[7]={1.2E-7, 14., 3.E-5, 1.3E-7, 1.3, 1.3E-5, 1.4E-4};
1410 static const std::pair<G4int, const G4double*> Z76N112(112,pZ76N112);
1411 static const G4double pZ76N113[7]={1.2E-7, 14., 8.8E-5, 1.1E-9, 1.3, 1.5E-5, .0055};
1412 static const std::pair<G4int, const G4double*> Z76N113(113,pZ76N113);
1413 static const G4double pZ76N114[7]={1.2E-7, 14., 3.E-5, 1.3E-7, 1.3, 1.3E-5, 1.4E-4};
1414 static const std::pair<G4int, const G4double*> Z76N114(114,pZ76N114);
1415 static const G4double pZ76N116[7]={1.2E-7, 14., 3.E-5, 1.3E-7, 1.3, 1.3E-5, 1.4E-4};
1416 static const std::pair<G4int, const G4double*> Z76N116(116,pZ76N116);
1417 static const std::pair<G4int, const G4double*> Z76[N76]={Z76N108, Z76N110, Z76N111,
1418 Z76N112, Z76N113, Z76N114,
1419 Z76N116};
1420 //==> Ir(Z=77)
1421 static const G4int N77=2;
1422 static const G4double pZ77N114[7]={4.8E-7, 14., 5.2E-4, .7E-9, 1.5, 1.7E-5, .0082};
1423 static const std::pair<G4int, const G4double*> Z77N114(114,pZ77N114);
1424 static const G4double pZ77N116[7]={4.8E-7, 14., 4.5E-4, .8E-9, 1.8, 2.3E-5, .0073};
1425 static const std::pair<G4int, const G4double*> Z77N116(116,pZ77N116);
1426 static const std::pair<G4int, const G4double*> Z77[N77]={Z77N114, Z77N116};
1427 //==> Pt(Z=78) *** No data *** (Pt190=Pt192=Pt194=Hg196, Pt195=Hg199, Pt196=Hg198,
1428 // Pt198=Hg200)
1429 static const G4int N78=6;
1430 static const G4double pZ78N112[7]={6.E-8, 19., 3.3E-4, .1E-9, 1.6, 1.8E-5, .06};
1431 static const std::pair<G4int, const G4double*> Z78N112(112,pZ78N112);
1432 static const G4double pZ78N114[7]={6.E-8, 19., 3.3E-4, .1E-9, 1.6, 1.8E-5, .06};
1433 static const std::pair<G4int, const G4double*> Z78N114(114,pZ78N114);
1434 static const G4double pZ78N116[7]={6.E-8, 19., 3.3E-4, .1E-9, 1.6, 1.8E-5, .06};
1435 static const std::pair<G4int, const G4double*> Z78N116(116,pZ78N116);
1436 static const G4double pZ78N117[7]={9.6E-7, 20., .001, .2E-9, 1.6, 2.E-5, .037};
1437 static const std::pair<G4int, const G4double*> Z78N117(117,pZ78N117);
1438 static const G4double pZ78N118[7]={2.4E-7, 20., 1.6E-4, 1.3E-9, 1.6, 1.8E-5, .007};
1439 static const std::pair<G4int, const G4double*> Z78N118(118,pZ78N118);
1440 static const G4double pZ78N120[7]={2.E-6, 19., .0015, .9E-9, 1.6, 1.8E-5, .0078};
1441 static const std::pair<G4int, const G4double*> Z78N120(120,pZ78N120);
1442 static const std::pair<G4int, const G4double*> Z78[N78]={Z78N112, Z78N114, Z78N116,
1443 Z78N117, Z78N118, Z78N120};
1444 //==> Au(Z=79)
1445 static const G4int N79=1;
1446 static const G4double pZ79N118[7]={2.4E-7, 19., 1.E-4, 1.4E-9, 1.3, 1.7E-5, .0042};
1447 static const std::pair<G4int, const G4double*> Z79N118(118,pZ79N118);
1448 static const std::pair<G4int, const G4double*> Z79[N79]={Z79N118};
1449 //==> Hg(Z=80)
1450 static const G4int N80=7;
1451 static const G4double pZ80N116[7]={6.E-8, 19., 3.3E-4, .1E-9, 1.6, 1.8E-5, .06};
1452 static const std::pair<G4int, const G4double*> Z80N116(116,pZ80N116);
1453 static const G4double pZ80N118[7]={2.4E-7, 20., 1.6E-4, 1.3E-9, 1.6, 1.8E-5, .007};
1454 static const std::pair<G4int, const G4double*> Z80N118(118,pZ80N118);
1455 static const G4double pZ80N119[7]={9.6E-7, 20., .001, .2E-9, 1.6, 2.E-5, .037};
1456 static const std::pair<G4int, const G4double*> Z80N119(119,pZ80N119);
1457 static const G4double pZ80N120[7]={2.E-6, 19., .0015, .9E-9, 1.6, 1.8E-5, .0078};
1458 static const std::pair<G4int, const G4double*> Z80N120(120,pZ80N120);
1459 static const G4double pZ80N121[7]={1.E-6, 20., 7.E-4, 1.E-9, 1.6, 1.8E-5, .0076};
1460 static const std::pair<G4int, const G4double*> Z80N121(121,pZ80N121);
1461 static const G4double pZ80N122[7]={2.E-6, 18., .0016, .8E-9, 1.6, 1.8E-5, .0078};
1462 static const std::pair<G4int, const G4double*> Z80N122(122,pZ80N122);
1463 static const G4double pZ80N124[7]={2.0E-6, 18., .0032, .4E-9, 1.6, 1.8E-5, .016};
1464 static const std::pair<G4int, const G4double*> Z80N124(124,pZ80N124);
1465 static const std::pair<G4int, const G4double*> Z80[N80]={Z80N116, Z80N118, Z80N119,
1466 Z80N120, Z80N121, Z80N122,
1467 Z80N124};
1468 //==> Tl(Z=81) *** No data *** (Tl203=Au196, Tl198=Bi209)
1469 static const G4int N81=2;
1470 static const G4double pZ81N122[7]={2.4E-7, 19., 1.E-4, 1.4E-9, 1.3, 1.7E-5, .0042};
1471 static const std::pair<G4int, const G4double*> Z81N122(122,pZ81N122);
1472 static const G4double pZ81N124[7]={};
1473 static const std::pair<G4int, const G4double*> Z81N124(124,pZ81N124);
1474 static const std::pair<G4int, const G4double*> Z81[N81]={Z81N122, Z81N124};
1475 //==> Pb(Z=82)
1476 static const G4int N82=4;
1477 static const G4double pZ82N122[7]={4.E-6, 20., .0022, 1.E-9, 1.6, 1.8E-5, .0058};
1478 static const std::pair<G4int, const G4double*> Z82N122(122,pZ82N122);
1479 static const G4double pZ82N124[7]={4.E-6, 20., .0022, 1.E-9, 1.6, 1.8E-5, .0058};
1480 static const std::pair<G4int, const G4double*> Z82N124(124,pZ82N124);
1481 static const G4double pZ82N125[7]={2.E-6, 20., .0011, 1.2E-9, 1.6, 1.8E-5, .0056};
1482 static const std::pair<G4int, const G4double*> Z82N125(125,pZ82N125);
1483 static const G4double pZ82N126[7]={4.E-6, 20., .0023, 1.2E-9, 1.6, 1.8E-5, .0058};
1484 static const std::pair<G4int, const G4double*> Z82N126(126,pZ82N126);
1485 static const std::pair<G4int, const G4double*> Z82[N82]={Z82N122, Z82N124, Z82N125,
1486 Z82N126};
1487 //==> Bi(Z=83)
1488 static const G4int N83=1;
1489 static const G4double pZ83N126[7]={8.E-7, 23., 3.3E-4, 1.8E-9, 1.6, 1.8E-5, .005};
1490 static const std::pair<G4int, const G4double*> Z83N126(126,pZ83N126);
1491 static const std::pair<G4int, const G4double*> Z83[N83]={Z83N126};
1492 //==> Po(Z=84) *** No data *** (Po209=Pb207)
1493 static const G4int N84=1;
1494 static const G4double pZ84N125[7]={2.E-6, 20., .0011, 1.2E-9, 1.6, 1.8E-5, .0056};
1495 static const std::pair<G4int, const G4double*> Z84N125(125,pZ84N125);
1496 static const std::pair<G4int, const G4double*> Z84[N84]={Z84N125};
1497 //==> At(Z=85) *** No data *** (At210=Pb207)
1498 static const G4int N85=1;
1499 static const G4double pZ85N125[7]={2.E-6, 20., .0011, 1.2E-9, 1.6, 1.8E-5, .0056};
1500 static const std::pair<G4int, const G4double*> Z85N125(125,pZ85N125);
1501 static const std::pair<G4int, const G4double*> Z85[N85]={Z85N125};
1502 //==> Rn(Z=86) *** No data *** (Rn222=Ra224)
1503 static const G4int N86=1;
1504 static const G4double pZ86N136[7]={1.E-7, 23., 5.5E-5, 1.2E-9, 1.6, 1.8E-5, .0062};
1505 static const std::pair<G4int, const G4double*> Z86N136(136,pZ86N136);
1506 static const std::pair<G4int, const G4double*> Z86[N86]={Z86N136};
1507 //==> Fr(Z=87) *** No data *** (Fr223=Ac225)
1508 static const G4int N87=1;
1509 static const G4double pZ87N136[7]={2.E-7, 23., 1.1E-4, 1.2E-9, 1.6, 1.8E-5, .0062};
1510 static const std::pair<G4int, const G4double*> Z87N136(136,pZ87N136);
1511 static const std::pair<G4int, const G4double*> Z87[N87]={Z87N136};
1512 //==> Ra(Z=88)
1513 static const G4int N88=4;
1514 static const G4double pZ88N135[7]={1.E-7, 23., 5.5E-5, 1.2E-9, 1.6, 1.8E-5, .0062};
1515 static const std::pair<G4int, const G4double*> Z88N135(135,pZ88N135);
1516 static const G4double pZ88N136[7]={1.E-7, 23., 5.5E-5, 1.2E-9, 1.6, 1.8E-5, .0062};
1517 static const std::pair<G4int, const G4double*> Z88N136(136,pZ88N136);
1518 static const G4double pZ88N137[7]={1.E-7, 23., 5.5E-5, 1.2E-9, 1.6, 1.8E-5, .0062};
1519 static const std::pair<G4int, const G4double*> Z88N137(137,pZ88N137);
1520 static const G4double pZ88N138[7]={4.E-7, 23., 1.7E-4, 1.5E-9, 1.6, 1.8E-5, .005};
1521 static const std::pair<G4int, const G4double*> Z88N138(138,pZ88N138);
1522 static const std::pair<G4int, const G4double*> Z88[N88]={Z88N135, Z88N136, Z88N137,
1523 Z88N138};
1524 //==> Ac(Z=89)
1525 static const G4int N89=3;
1526 static const G4double pZ89N136[7]={2.E-7, 23., 1.1E-4, 1.2E-9, 1.6, 1.8E-5, .0062};
1527 static const std::pair<G4int, const G4double*> Z89N136(136,pZ89N136);
1528 static const G4double pZ89N137[7]={4.E-7, 23., 2.2E-4, 1.2E-9, 1.6, 1.8E-5, .0062};
1529 static const std::pair<G4int, const G4double*> Z89N137(137,pZ89N137);
1530 static const G4double pZ89N138[7]={1.E-7, 23., 5.5E-5, 1.2E-9, 1.6, 1.8E-5, .0062};
1531 static const std::pair<G4int, const G4double*> Z89N138(138,pZ89N138);
1532 static const std::pair<G4int, const G4double*> Z89[N89]={Z89N136, Z89N137, Z89N138};
1533 //==> Th(Z=90)
1534 static const G4int N90=7;
1535 static const G4double pZ90N137[7]={4.E-7, 23., 2.2E-4, 1.2E-9, 1.6, 1.8E-5, .0062};
1536 static const std::pair<G4int, const G4double*> Z90N137(137,pZ90N137);
1537 static const G4double pZ90N138[7]={1.E-6, 23., .0016, .4E-9, 3., 3.E-5, .019};
1538 static const std::pair<G4int, const G4double*> Z90N138(138,pZ90N138);
1539 static const G4double pZ90N139[7]={2.5E-7, 23., 1.1E-4, 1.4E-9, 2.4, 2.7E-5, .0049};
1540 static const std::pair<G4int, const G4double*> Z90N139(139,pZ90N139);
1541 static const G4double pZ90N140[7]={1.2E-7, 23., 3.E-5, 2.E-9, 3., 3.E-5, .003};
1542 static const std::pair<G4int, const G4double*> Z90N140(140,pZ90N140);
1543 static const G4double pZ90N142[7]={4.E-6, 23., .0023, 1.1E-9, 1.8, 2.3E-5, .0064};
1544 static const std::pair<G4int, const G4double*> Z90N142(142,pZ90N142);
1545 static const G4double pZ90N143[7]={9.4E-7, 23., 5.4E-4, 1.1E-9, 3., 3.E-5, .0066};
1546 static const std::pair<G4int, const G4double*> Z90N143(143,pZ90N143);
1547 static const G4double pZ90N144[7]={2.5E-7, 23., 1.4E-4, 1.1E-9, 3., 3.E-5, .0066};
1548 static const std::pair<G4int, const G4double*> Z90N144(144,pZ90N144);
1549 static const std::pair<G4int, const G4double*> Z90[N90]={Z90N137, Z90N138, Z90N139,
1550 Z90N140, Z90N142, Z90N143,
1551 Z90N144};
1552 //==> Pa(Z=91)
1553 static const G4int N91=3;
1554 static const G4double pZ91N140[7]={1.E-5, 23., .0052, 1.6E-9, 1.8, 2.3E-5, .0057};
1555 static const std::pair<G4int, const G4double*> Z91N140(140,pZ91N140);
1556 static const G4double pZ91N141[7]={8.E-6, 23., .006, 0., 3.5, 3.5E-5, .021};
1557 static const std::pair<G4int, const G4double*> Z91N141(141,pZ91N141);
1558 static const G4double pZ91N142[7]={8.E-6, 23., .0042, 1.E-9, 2., 2.5E-5, .006};
1559 static const std::pair<G4int, const G4double*> Z91N142(142,pZ91N142);
1560 static const std::pair<G4int, const G4double*> Z91[N91]={Z91N140, Z91N141, Z91N142};
1561 //==> U (Z=92)
1562 static const G4int N92=10;
1563 static const G4double pZ92N140[7]={1.4E-6, 20., 8.E-4, 1.5E-9, 2.5, 2.8E-5, .0055};
1564 static const std::pair<G4int, const G4double*> Z92N140(140,pZ92N140);
1565 static const G4double pZ92N141[7]={5.6E-6, 20., .0033, 1.E-9, 2.5, 2.8E-5, .006};
1566 static const std::pair<G4int, const G4double*> Z92N141(141,pZ92N141);
1567 static const G4double pZ92N142[7]={5.6E-6, 20., .0034, 0., 2.5, 2.8E-5, .0072};
1568 static const std::pair<G4int, const G4double*> Z92N142(142,pZ92N142);
1569 static const G4double pZ92N143[7]={5.6E-6, 20., .0032, 0., 2., 2.3E-5, .006};
1570 static const std::pair<G4int, const G4double*> Z92N143(143,pZ92N143);
1571 static const G4double pZ92N144[7]={3.6E-7, 20., 1.6E-4, 1.3E-9, 2.2, 2.7E-5, .0043};
1572 static const std::pair<G4int, const G4double*> Z92N144(144,pZ92N144);
1573 static const G4double pZ92N145[7]={3.6E-6, 20., .003, 0., 2.2, 2.7E-5, .045};
1574 static const std::pair<G4int, const G4double*> Z92N145(145,pZ92N145);
1575 static const G4double pZ92N146[7]={3.6E-7, 20., 1.6E-4, 1.3E-9, 2.2, 2.7E-5, .0043};
1576 static const std::pair<G4int, const G4double*> Z92N146(146,pZ92N146);
1577 static const G4double pZ92N147[7]={3.6E-6, 20., .0014, 1.3E-9, 2.2, 2.7E-5, 12.};
1578 static const std::pair<G4int, const G4double*> Z92N147(147,pZ92N147);
1579 static const G4double pZ92N148[7]={3.4E-7, 20., 1.3E-4, 1.3E-9, 2.2, 2.8E-5, .0036};
1580 static const std::pair<G4int, const G4double*> Z92N148(148,pZ92N148);
1581 static const G4double pZ92N149[7]={3.3E-7, 20., 1.5E-4, 1.2E-9, 3., 3.4E-5, .0044};
1582 static const std::pair<G4int, const G4double*> Z92N149(149,pZ92N149);
1583 static const std::pair<G4int, const G4double*> Z92[N92]={Z92N140, Z92N141, Z92N142,
1584 Z92N143, Z92N144, Z92N145,
1585 Z92N146, Z92N147, Z92N148,
1586 Z92N146};
1587 //==> Np(Z=93)
1588 static const G4int N93=5;
1589 static const G4double pZ93N142[7]={3.4E-6, 20., .002, 1.3E-9, 3., 3.3E-5, .0056};
1590 static const std::pair<G4int, const G4double*> Z93N142(142,pZ93N142);
1591 static const G4double pZ93N143[7]={3.4E-6, 20., .002, 1.6E-9, 3.5, 3.6E-5, .005};
1592 static const std::pair<G4int, const G4double*> Z93N143(143,pZ93N143);
1593 static const G4double pZ93N144[7]={6.8E-6, 18., .0052, .8E-9, 2.4, 3.E-5, .0072};
1594 static const std::pair<G4int, const G4double*> Z93N144(144,pZ93N144);
1595 static const G4double pZ93N145[7]={3.4E-6, 20., .002, 1.E-9, 3.5, 3.6E-5, .006};
1596 static const std::pair<G4int, const G4double*> Z93N145(145,pZ93N145);
1597 static const G4double pZ93N146[7]={3.4E-6, 20., .002, 1.5E-9, 3.5, 3.6E-5, .0053};
1598 static const std::pair<G4int, const G4double*> Z93N146(146,pZ93N146);
1599 static const std::pair<G4int, const G4double*> Z93[N93]={Z93N142, Z93N143, Z93N144,
1600 Z93N145, Z93N146};
1601 //==> Pu(Z=94)
1602 static const G4int N94=10;
1603 static const G4double pZ94N142[7]={6.8E-7, 16., 4.5E-4, 1.7E-9, 2.6, 3.E-5, .0047};
1604 static const std::pair<G4int, const G4double*> Z94N142(142,pZ94N142);
1605 static const G4double pZ94N143[7]={6.8E-6, 18., .0044, .9E-9, 3.3, 3.5E-5, .0058};
1606 static const std::pair<G4int, const G4double*> Z94N143(143,pZ94N143);
1607 static const G4double pZ94N144[7]={6.8E-7, 16., 6.E-4, 0., 2.7, 2.6E-5, .0082};
1608 static const std::pair<G4int, const G4double*> Z94N144(144,pZ94N144);
1609 static const G4double pZ94N145[7]={2.6E-6, 16., .0017, 1.8E-9, 1.8, 2.E-5, .004};
1610 static const std::pair<G4int, const G4double*> Z94N145(145,pZ94N145);
1611 static const G4double pZ94N146[7]={2.5E-7, 20., 9.E-5, 3.6E-8, 3.4, 3.8E-5, 5.4E-4};
1612 static const std::pair<G4int, const G4double*> Z94N146(146,pZ94N146);
1613 static const G4double pZ94N147[7]={1.4E-5, 16., .01, .8E-9, 2.7, 2.6E-5, .0055};
1614 static const std::pair<G4int, const G4double*> Z94N147(147,pZ94N147);
1615 static const G4double pZ94N148[7]={3.4E-7, 20., 1.3E-4, 1.2E-9, 3.2, 3.E-5, .0036};
1616 static const std::pair<G4int, const G4double*> Z94N148(148,pZ94N148);
1617 static const G4double pZ94N149[7]={5.2E-6, 20., .0035, .4E-9, 2.3, 3.E-5, .0095};
1618 static const std::pair<G4int, const G4double*> Z94N149(149,pZ94N149);
1619 static const G4double pZ94N150[7]={3.3E-7, 20., 1.6E-4, 1.2E-9, 3., 3.E-5, .0046};
1620 static const std::pair<G4int, const G4double*> Z94N150(150,pZ94N150);
1621 static const G4double pZ94N152[7]={2.5E-6, 16., .0018, 1.2E-9, 3., 3.1E-5, .0052};
1622 static const std::pair<G4int, const G4double*> Z94N152(152,pZ94N152);
1623 static const std::pair<G4int, const G4double*> Z94[N94]={Z94N142, Z94N143, Z94N144,
1624 Z94N145, Z94N146, Z94N147,
1625 Z94N148, Z94N149, Z94N150,
1626 Z94N152};
1627 //==> Am(Z=95)
1628 static const G4int N95=4;
1629 static const G4double pZ95N156[7]={2.5E-6, 18., .0016, .9E-9, 2., 2.3E-5, .0058};
1630 static const std::pair<G4int, const G4double*> Z95N156(156,pZ95N156);
1631 static const G4double pZ95N157[7]={5.E-6, 18., .003, 2.7E-9, 2., 2.3E-5, .0039};
1632 static const std::pair<G4int, const G4double*> Z95N157(157,pZ95N157);
1633 static const G4double pZ95N158[7]={5.E-6, 19., .0033, 2.6E-9, 2., 2.3E-5, .0044};
1634 static const std::pair<G4int, const G4double*> Z95N158(158,pZ95N158);
1635 static const G4double pZ95N159[7]={5.E-5, 20., .029, 1.1E-9, 2., 2.3E-5, .0057};
1636 static const std::pair<G4int, const G4double*> Z95N159(159,pZ95N159);
1637 static const std::pair<G4int, const G4double*> Z95[N95]={Z95N156, Z95N157, Z95N158,
1638 Z95N159};
1639 //==> Cm(Z=96)
1640 static const G4int N96=10;
1641 static const G4double pZ96N145[7]={5.E-5, 22., .027, 1.1E-9, 2.2, 2.2E-5, .006};
1642 static const std::pair<G4int, const G4double*> Z96N145(145,pZ96N145);
1643 static const G4double pZ96N146[7]={5.E-5, 24., .027, 2.E-9, 2.2, 2.2E-5, .0055};
1644 static const std::pair<G4int, const G4double*> Z96N146(146,pZ96N146);
1645 static const G4double pZ96N147[7]={5.E-5, 22., .025, 2.5E-9, 2.2, 2.4E-5, .0044};
1646 static const std::pair<G4int, const G4double*> Z96N147(147,pZ96N147);
1647 static const G4double pZ96N148[7]={5.E-5, 23., .028, 1.9E-9, 2.2, 3.E-5, .0055};
1648 static const std::pair<G4int, const G4double*> Z96N148(148,pZ96N148);
1649 static const G4double pZ96N149[7]={5.E-5, 23., .025, 1.6E-9, 3., 3.5E-5, .0054};
1650 static const std::pair<G4int, const G4double*> Z96N149(149,pZ96N149);
1651 static const G4double pZ96N150[7]={5.E-5, 24., .026, 2.E-9, 3., 3.6E-5, .0045};
1652 static const std::pair<G4int, const G4double*> Z96N150(150,pZ96N150);
1653 static const G4double pZ96N151[7]={5.E-5, 24., .022, 2.4E-9, 3., 3.6E-5, .0039};
1654 static const std::pair<G4int, const G4double*> Z96N151(151,pZ96N151);
1655 static const G4double pZ96N152[7]={6.5E-7, 25., 2.E-4, 3.4E-9, 3., 3.6E-5, .003};
1656 static const std::pair<G4int, const G4double*> Z96N152(152,pZ96N152);
1657 static const G4double pZ96N153[7]={1.6E-6, 21., 7.E-4, 1.4E-9, 3., 3.6E-5, .0045};
1658 static const std::pair<G4int, const G4double*> Z96N153(153,pZ96N153);
1659 static const G4double pZ96N154[7]={1.3E-5, 16., .016, 0., 3., 3.6E-5, .017};
1660 static const std::pair<G4int, const G4double*> Z96N154(154,pZ96N154);
1661 static const std::pair<G4int, const G4double*> Z96[N96]={Z96N145, Z96N146, Z96N147,
1662 Z96N148, Z96N149, Z96N150,
1663 Z96N151, Z96N152, Z96N153,
1664 Z96N154};
1665 //==> Bk(Z=97)
1666 static const G4int N97=2;
1667 static const G4double pZ97N152[7]={6.5E-7, 22., 3.5E-4, 2.7E-9, 3., 4.E-5, .004};
1668 static const std::pair<G4int, const G4double*> Z97N152(152,pZ97N152);
1669 static const G4double pZ97N153[7]={6.5E-6, 22., .0036, 1.E-9, 2.7, 4.E-5, .006};
1670 static const std::pair<G4int, const G4double*> Z97N153(153,pZ97N153);
1671 static const std::pair<G4int, const G4double*> Z97[N97]={Z97N152, Z97N153};
1672 //==> Cf(Z=98)
1673 static const G4int N98=6;
1674 static const G4double pZ98N151[7]={6.5E-6, 22., .0035, .9E-9, 3., 4.E-5, .0068};
1675 static const std::pair<G4int, const G4double*> Z98N151(151,pZ98N151);
1676 static const G4double pZ98N152[7]={1.3E-6, 22., 7.E-4, 2.E-9, 2.7, 4.E-5, .0045};
1677 static const std::pair<G4int, const G4double*> Z98N152(152,pZ98N152);
1678 static const G4double pZ98N153[7]={2.6E-6, 22., .0014, 2.1E-9, 2.7, 4.E-5, .0044};
1679 static const std::pair<G4int, const G4double*> Z98N153(153,pZ98N153);
1680 static const G4double pZ98N154[7]={2.6E-6, 22., .0014, 1.3E-9, 2.7, 4.E-5, .0054};
1681 static const std::pair<G4int, const G4double*> Z98N154(154,pZ98N154);
1682 static const G4double pZ98N155[7]={2.6E-5, 22., .03, 0., 2.7, 4.E-5, .03};
1683 static const std::pair<G4int, const G4double*> Z98N155(155,pZ98N155);
1684 static const G4double pZ98N156[7]={5.2E-7, 22., 2.6E-4, 1.3E-9, 2.7, 4.E-5, .005};
1685 static const std::pair<G4int, const G4double*> Z98N156(156,pZ98N156);
1686 static const std::pair<G4int, const G4double*> Z98[N98]={Z98N151, Z98N152, Z98N153,
1687 Z98N154, Z98N155, Z98N156};
1688
1689 static const G4int NZ=99; // #of Elements covered by CHIPS elastic
1690 static const std::pair<G4int, const G4double*>* Pars[NZ]={Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,
1691 Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18,Z19,Z20,Z21,Z22,Z23,Z24,Z25,Z26,Z27,Z28,Z29,Z30,
1692 Z31,Z32,Z33,Z34,Z35,Z36,Z37,Z38,Z39,Z40,Z41,Z42,Z43,Z44,Z45,Z46,Z47,Z48,Z49,Z50,Z51,
1693 Z52,Z53,Z54,Z55,Z56,Z57,Z58,Z59,Z60,Z61,Z62,Z63,Z64,Z65,Z66,Z67,Z68,Z69,Z70,Z71,Z72,
1694 Z73,Z74,Z75,Z76,Z77,Z78,Z79,Z80,Z81,Z82,Z83,Z84,Z85,Z86,Z87,Z88,Z89,Z90,Z91,Z92,Z93,
1695 Z94,Z95,Z96,Z97,Z98};
1696 static const G4int NIso[NZ]={N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15,N16,
1697 N17,N18,N19,N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,N31,N32,N33,N34,N35,N36,N37,
1698 N38,N39,N40,N41,N42,N43,N44,N45,N46,N47,N48,N49,N50,N51,N52,N53,N54,N55,N56,N57,N58,
1699 N59,N60,N61,N62,N63,N64,N65,N66,N67,N68,N69,N70,N71,N72,N73,N74,N75,N76,N77,N78,N79,
1700 N80,N81,N82,N83,N84,N85,N86,N87,N88,N89,N90,N91,N92,N93,N94,N95,N96,N97,N98};
1701 if(PDG==2112)
1702 {
1703 // --- Total np elastic cross section cs & s1/b1 (t), s2/b2 (u) --- NotTuned for highE
1704 //p2=p*p;p3=p2*p;sp=sqrt(p);p2s=p2*sp;lp=log(p);dl1=lp-(5.=par(3));p4=p2*p2; p=|3-mom|
1705 //CS=12./(p2s+.05*p+.0001/sqrt(sp))+.35/p+(6.75+.14*dl1*dl1+19./p)/(1.+.6/p4);
1706 // par(0) par(1) par(2) par(4) par(5) par(6) par(7) par(8)
1707 //s1=(6.75+.14*dl2*dl2+13./p)/(1.+.14/p4)+.6/(p4+.00013), s2=(75.+.001/p4/p)/p3
1708 // par(9) par(10) par(11) par(12) par(13) par(14) par(15) par(16)
1709 //b1=(7.2+4.32/(p4*p4+.012*p3))/(1.+2.5/p4), ss=0., b2=12./(p*sp+.34)
1710 //par(17) par(18) par(19) par(20) par(21) par(22) par(23)
1711 //
1712 if(lastPAR[nLast]!=pwd) // A unique flag to avoid the repeatable definition
1713 {
1714 if ( tgZ == 1 && tgN == 0 )
1715 {
1716 for (G4int ip=0; ip<n_npel; ip++) lastPAR[ip]=np_el[ip]; // np
1717 }
1718 else if ( tgZ == 0 && tgN == 1 )
1719 {
1720 for (G4int ip=0; ip<n_ppel; ip++) lastPAR[ip]=pp_el[ip]; // nn
1721 }
1722 else
1723 {
1724 G4double a=tgZ+tgN;
1725 G4double ala=std::log(a); // for powers of a
1726 G4double sa=std::sqrt(a);
1727 G4double ssa=std::sqrt(sa);
1728 G4double asa=a*sa;
1729 G4double a2=a*a;
1730 G4double a3=a2*a;
1731 G4double a4=a3*a;
1732 G4double a5=a4*a;
1733 G4double a6=a4*a2;
1734 G4double a7=a6*a;
1735 G4double a8=a7*a;
1736 G4double a9=a8*a;
1737 G4double a10=a5*a5;
1738 G4double a12=a6*a6;
1739 G4double a14=a7*a7;
1740 G4double a16=a8*a8;
1741 G4double a17=a16*a;
1742 G4double a32=a16*a16;
1743 // Reaction cross-section parameters (na_el.f)
1744 lastPAR[ 0]=5./(1.+22./asa); // p1
1745 lastPAR[ 1]=4.8*std::exp(ala*1.14)/(1.+3.6/a3); // p2
1746 lastPAR[ 2]=1./(1.+.004*a4)+2.E-6*a3/(1.+1.3E-6*a3); // p3
1747 lastPAR[ 3]=.07*asa/(1.+.009*a2); // o4
1748 lastPAR[ 5]=1.7*a; // p5
1749 lastPAR[ 6]=5.5E-6*std::exp(ala*1.3); // p6
1750 lastPAR[13]=0.; // reserved
1751 lastPAR[14]=0.; // reserved
1752 G4int nn=NIso[tgZ];
1753#ifdef pdebug
1754 G4cout<<"G4QNElCrS::CalcCS: Z="<<tgZ<<", nIs="<<nn<<G4endl;
1755#endif
1756 G4bool nfound=true;
1757 if(nn) for (G4int in=0; in<nn; in++)
1758 {
1759 std::pair<G4int, const G4double*> curIs=Pars[tgZ][in];
1760 G4int cn=curIs.first;
1761#ifdef pdebug
1762 G4cout<<"G4QNElCrS::CalcCS: N="<<tgN<<", cn="<<cn<<G4endl;
1763#endif
1764 if(cn == tgN)
1765 {
1766 const G4double* curT=curIs.second;
1767 lastPAR[ 4]=curT[0]; // p4
1768 lastPAR[ 7]=curT[1]; // p7
1769 lastPAR[ 8]=curT[2]; // p8
1770 lastPAR[ 9]=curT[3]; // p9
1771 lastPAR[10]=curT[4]; // p10
1772 lastPAR[11]=curT[5]; // p11
1773 lastPAR[12]=curT[6]; // p12
1774#ifdef pdebug
1775 G4cout<<"G4QNElCrS::CalcCS: Parameters are filled, p12="<<lastPAR[12]<<G4endl;
1776#endif
1777 nfound = false;
1778 break;
1779 }
1780 }
1781 if(nfound)
1782 {
1783 G4cout<<"-Warning-G4QNeutronElasticCrossSection::CalcCS: Z="<<tgZ<<", N="<<tgN
1784 <<" isotope is not implemented in CHIPS"<<G4endl; // Put default values:
1785 lastPAR[ 4]=5.2E-7; // p4
1786 lastPAR[ 7]=22.; // p7
1787 lastPAR[ 8]=.00026; // p8
1788 lastPAR[ 9]=1.3E-9; // p9
1789 lastPAR[10]=2.7; // p10
1790 lastPAR[11]=4.E-5; // p11
1791 lastPAR[12]=.005; // p12
1792 }
1793 // @@ the differential cross-section is parameterized separately for A>6 & A<7
1794 if(a<6.5)
1795 {
1796 G4double a28=a16*a12;
1797 // The main pre-exponent (pel_sg)
1798 lastPAR[15]=4000*a; // p1
1799 lastPAR[16]=1.2e7*a8+380*a17; // p2
1800 lastPAR[17]=.7/(1.+4.e-12*a16); // p3
1801 lastPAR[18]=2.5/a8/(a4+1.e-16*a32); // p4
1802 lastPAR[19]=.28*a; // p5
1803 lastPAR[20]=1.2*a2+2.3; // p6
1804 lastPAR[21]=3.8/a; // p7
1805 // The main slope (pel_sl)
1806 lastPAR[22]=.01/(1.+.0024*a5); // p1
1807 lastPAR[23]=.2*a; // p2
1808 lastPAR[24]=9.e-7/(1.+.035*a5); // p3
1809 lastPAR[25]=(42.+2.7e-11*a16)/(1.+.14*a); // p4
1810 // The main quadratic (pel_sh)
1811 lastPAR[26]=2.25*a3; // p1
1812 lastPAR[27]=18.; // p2
1813 lastPAR[28]=.0024*a8/(1.+2.6e-4*a7); // p3
1814 lastPAR[29]=3.5e-36*a32*a8/(1.+5.e-15*a32/a); // p4
1815 lastPAR[30]=1.e5/(a8+2.5e12/a16); // p1
1816 lastPAR[31]=8.e7/(a12+1.e-27*a28*a28); // p2
1817 lastPAR[32]=.0006*a3; // p3
1818 // The 1st max slope (pel_qs)
1819 lastPAR[33]=10.+4.e-8*a12*a; // p1
1820 lastPAR[34]=.114; // p2
1821 lastPAR[35]=.003; // p3
1822 lastPAR[36]=2.e-23; // p4
1823 // The effective pre-exponent (pel_ss)
1824 lastPAR[37]=1./(1.+.0001*a8); // p1
1825 lastPAR[38]=1.5e-4/(1.+5.e-6*a12); // p2
1826 lastPAR[39]=.03; // p3
1827 // The effective slope (pel_sb)
1828 lastPAR[40]=a/2; // p1
1829 lastPAR[41]=2.e-7*a4; // p2
1830 lastPAR[42]=4.; // p3
1831 lastPAR[43]=64./a3; // p4
1832 // The gloria pre-exponent (pel_us)
1833 lastPAR[44]=1.e8*std::exp(.32*asa); // p1
1834 lastPAR[45]=20.*std::exp(.45*asa); // p2
1835 lastPAR[46]=7.e3+2.4e6/a5; // p3
1836 lastPAR[47]=2.5e5*std::exp(.085*a3); // p4
1837 lastPAR[48]=2.5*a; // p5
1838 // The gloria slope (pel_ub)
1839 lastPAR[49]=920.+.03*a8*a3; // p1
1840 lastPAR[50]=93.+.0023*a12; // p2
1841#ifdef debug
1842 G4cout<<"G4QNElCrS::CalcCS:la "<<lastPAR[44]<<", "<<lastPAR[45]<<", "<<lastPAR[46]
1843 <<", "<<lastPAR[48]<<", "<<lastPAR[49]<<", "<<lastPAR[50]<<G4endl;
1844#endif
1845 }
1846 else
1847 {
1848 G4double p1a10=2.2e-28*a10;
1849 G4double r4a16=6.e14/a16;
1850 G4double s4a16=r4a16*r4a16;
1851 // a24
1852 // a36
1853 // The main pre-exponent (peh_sg)
1854 lastPAR[15]=4.5*std::pow(a,1.15); // p1
1855 lastPAR[16]=.06*std::pow(a,.6); // p2
1856 lastPAR[17]=.6*a/(1.+2.e15/a16); // p3
1857 lastPAR[18]=.17/(a+9.e5/a3+1.5e33/a32); // p4
1858 lastPAR[19]=(.001+7.e-11*a5)/(1.+4.4e-11*a5); // p5
1859 lastPAR[20]=(p1a10*p1a10+2.e-29)/(1.+2.e-22*a12); // p6
1860 // The main slope (peh_sl)
1861 lastPAR[21]=400./a12+2.e-22*a9; // p1
1862 lastPAR[22]=1.e-32*a12/(1.+5.e22/a14); // p2
1863 lastPAR[23]=1000./a2+9.5*sa*ssa; // p3
1864 lastPAR[24]=4.e-6*a*asa+1.e11/a16; // p4
1865 lastPAR[25]=(120./a+.002*a2)/(1.+2.e14/a16); // p5
1866 lastPAR[26]=9.+100./a; // p6
1867 // The main quadratic (peh_sh)
1868 lastPAR[27]=.002*a3+3.e7/a6; // p1
1869 lastPAR[28]=7.e-15*a4*asa; // p2
1870 lastPAR[29]=9000./a4; // p3
1871 // The 1st max pre-exponent (peh_qq)
1872 lastPAR[30]=.0011*asa/(1.+3.e34/a32/a4); // p1
1873 lastPAR[31]=1.e-5*a2+2.e14/a16; // p2
1874 lastPAR[32]=1.2e-11*a2/(1.+1.5e19/a12); // p3
1875 lastPAR[33]=.016*asa/(1.+5.e16/a16); // p4
1876 // The 1st max slope (peh_qs)
1877 lastPAR[34]=.002*a4/(1.+7.e7/std::pow(a-6.83,14)); // p1
1878 lastPAR[35]=2.e6/a6+7.2/std::pow(a,.11); // p2
1879 lastPAR[36]=11.*a3/(1.+7.e23/a16/a8); // p3
1880 lastPAR[37]=100./asa; // p4
1881 // The 2nd max pre-exponent (peh_ss)
1882 lastPAR[38]=(.1+4.4e-5*a2)/(1.+5.e5/a4); // p1
1883 lastPAR[39]=3.5e-4*a2/(1.+1.e8/a8); // p2
1884 lastPAR[40]=1.3+3.e5/a4; // p3
1885 lastPAR[41]=500./(a2+50.)+3; // p4
1886 lastPAR[42]=1.e-9/a+s4a16*s4a16; // p5
1887 // The 2nd max slope (peh_sb)
1888 lastPAR[43]=.4*asa+3.e-9*a6; // p1
1889 lastPAR[44]=.0005*a5; // p2
1890 lastPAR[45]=.002*a5; // p3
1891 lastPAR[46]=10.; // p4
1892 // The effective pre-exponent (peh_us)
1893 lastPAR[47]=.05+.005*a; // p1
1894 lastPAR[48]=7.e-8/sa; // p2
1895 lastPAR[49]=.8*sa; // p3
1896 lastPAR[50]=.02*sa; // p4
1897 lastPAR[51]=1.e8/a3; // p5
1898 lastPAR[52]=3.e32/(a32+1.e32); // p6
1899 // The effective slope (peh_ub)
1900 lastPAR[53]=24.; // p1
1901 lastPAR[54]=20./sa; // p2
1902 lastPAR[55]=7.e3*a/(sa+1.); // p3
1903 lastPAR[56]=900.*sa/(1.+500./a3); // p4
1904#ifdef debug
1905 G4cout<<"G4QNElCrS::CalcCS:ha "<<lastPAR[47]<<", "<<lastPAR[48]<<", "<<lastPAR[49]
1906 <<", "<<lastPAR[50]<<", "<<lastPAR[51]<<", "<<lastPAR[52]<<G4endl;
1907#endif
1908 }
1909 // Parameter for lowEnergyNeutrons
1910 lastPAR[57]=1.e15+2.e27/a4/(1.+2.e-18*a16);
1911 }
1912 lastPAR[nLast]=pwd;
1913 // and initialize the zero element of the table
1914 G4double lp=lPMin; // ln(momentum)
1915 G4bool memCS=onlyCS; // ??
1916 onlyCS=false;
1917 lastCST[0]=GetTabValues(lp, PDG, tgZ, tgN); // Calculate AMDB tables
1918 onlyCS=memCS;
1919 lastSST[0]=theSS;
1920 lastS1T[0]=theS1;
1921 lastB1T[0]=theB1;
1922 lastS2T[0]=theS2;
1923 lastB2T[0]=theB2;
1924 lastS3T[0]=theS3;
1925 lastB3T[0]=theB3;
1926 lastS4T[0]=theS4;
1927 lastB4T[0]=theB4;
1928#ifdef debug
1929 G4cout<<"G4QNeutronElasticCrossSection::GetPTables: ip=0(init), lp="<<lp<<", S1="
1930 <<theS1<<",B1="<<theB1<<",S2="<<theS2<<",B2="<<theB3<<",S3="<<theS3
1931 <<",B3="<<theB3<<",S4="<<theS4<<",B4="<<theB4<<G4endl;
1932#endif
1933 }
1934 if(LP>ILP)
1935 {
1936 G4int ini = static_cast<int>((ILP-lPMin+.000001)/dlnP)+1; // already inited till this
1937 if(ini<0) ini=0;
1938 if(ini<nPoints)
1939 {
1940 G4int fin = static_cast<int>((LP-lPMin)/dlnP)+1; // final bin of initialization
1941 if(fin>=nPoints) fin=nLast; // Limit of the tabular initialization
1942 if(fin>=ini)
1943 {
1944 G4double lp=0.;
1945 for(G4int ip=ini; ip<=fin; ip++) // Calculate tabular CS,S1,B1,S2,B2,S3,B3
1946 {
1947 lp=lPMin+ip*dlnP; // ln(momentum)
1948 G4bool memCS=onlyCS;
1949 onlyCS=false;
1950 lastCST[ip]=GetTabValues(lp, PDG, tgZ, tgN); // Calculate AMDB tables (ret CS)
1951 onlyCS=memCS;
1952 lastSST[ip]=theSS;
1953 lastS1T[ip]=theS1;
1954 lastB1T[ip]=theB1;
1955 lastS2T[ip]=theS2;
1956 lastB2T[ip]=theB2;
1957 lastS3T[ip]=theS3;
1958 lastB3T[ip]=theB3;
1959 lastS4T[ip]=theS4;
1960 lastB4T[ip]=theB4;
1961#ifdef debug
1962 G4cout<<"G4QNeutronElasticCrossSection::GetPTables: ip="<<ip<<", lp="<<lp
1963 <<", S1="<<theS1<<", B1="<<theB1<<", S2="<<theS2<<", B2="<<theB2<<", S3="
1964 <<theS3<<", B3="<<theB3<<", S4="<<theS4<<", B4="<<theB4<<G4endl;
1965#endif
1966 }
1967 return lp;
1968 }
1969 else G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetPTables: PDG="<<PDG
1970 <<", Z="<<tgZ<<", N="<<tgN<<", i="<<ini<<" > fin="<<fin<<", LP="<<LP
1971 <<" > ILP="<<ILP<<" nothing is done!"<<G4endl;
1972 }
1973 else G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetPTables: PDG="<<PDG<<", Z="
1974 <<tgZ<<", N="<<tgN<<", i="<<ini<<">= max="<<nPoints<<", LP="<<LP
1975 <<" > ILP="<<ILP<<", lPMax="<<lPMax<<" nothing is done!"<<G4endl;
1976 }
1977#ifdef debug
1978 else G4cout<<"*Warning*G4QNeutronElasticCrossSect::GetPTables: PDG="<<PDG<<", Z="<<tgZ
1979 <<", N="<<tgN<<", LP="<<LP<<" <= ILP="<<ILP<<" nothing is done!"<<G4endl;
1980#endif
1981 }
1982 else
1983 {
1984 // G4cout<<"*Error*G4QNeutronElasticCrossSection::GetPTables: PDG="<<PDG<<", Z="<<tgZ
1985 // <<", N="<<tgN<<", while it is defined only for PDG=2112(n)"<<G4endl;
1986 // throw G4QException("G4QNeutronElasticCrossSection::GetPTables:only nA're implemented");
1988 ed << "PDG = " << PDG << ", Z = " << tgZ <<", N = " << tgN
1989 << ", while it is defined only for PDG=2112 (n)" << G4endl;
1990 G4Exception("G4QNeutronElasticCrossSection::GetPTables()", "HAD_CHPS_0000",
1991 FatalException, ed);
1992 }
1993 return ILP;
1994}
1995
1996// Returns Q2=-t in independent units (MeV^2) (all internal calculations are in GeV)
1998{
1999 static const G4double GeVSQ=gigaelectronvolt*gigaelectronvolt;
2000 static const G4double third=1./3.;
2001 static const G4double fifth=1./5.;
2002 static const G4double sevth=1./7.;
2003#ifdef tdebug
2004 G4cout<<"G4QNeutElCrS::GetExcT:F="<<onlyCS<<",Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<G4endl;
2005#endif
2006 if(PDG!=2112) G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:PDG="<<PDG<<G4endl;
2007 if(onlyCS) G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExchangeT:onCS=1"<<G4endl;
2008 if(lastLP<-4.3) return lastTM*GeVSQ*G4UniformRand();// S-wave for p<14 MeV/c (kinE<.1MeV)
2009 G4double q2=0.;
2010 if(tgZ==1 && tgN==0) // ===> n+p=n+p
2011 {
2012#ifdef tdebug
2013 G4cout<<"G4QNeutronElasticCrS::GetExchangeT: TM="<<lastTM<<",S1="<<theS1<<",B1="<<theB1
2014 <<",S2="<<theS2<<",B2="<<theB2<<",GeV2="<<GeVSQ<<G4endl;
2015#endif
2016 G4double E1=lastTM*theB1;
2017 G4double R1=(1.-std::exp(-E1));
2018#ifdef tdebug
2019 G4double ts1=-std::log(1.-R1)/theB1;
2020 G4double ds1=std::fabs(ts1-lastTM)/lastTM;
2021 if(ds1>.0001)
2022 G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:1n "<<ts1<<"#"<<lastTM<<",d="
2023 <<ds1<<",R1="<<R1<<",E1="<<E1<<G4endl;
2024#endif
2025 G4double E2=lastTM*theB2;
2026 G4double R2=(1.-std::exp(-E2));
2027#ifdef tdebug
2028 G4double ts2=-std::log(1.-R2)/theB2;
2029 G4double ds2=std::fabs(ts2-lastTM)/lastTM;
2030 if(ds2>.0001)
2031 G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:2n "<<ts2<<"#"<<lastTM<<",d="
2032 <<ds2<<",R2="<<R2<<",E2="<<E2<<G4endl;
2033#endif
2034 //G4double E3=lastTM*theB3;
2035 //G4double R3=(1.-std::exp(-E3));
2036#ifdef tdebug
2037 //G4double ts3=-std::log(1.-R3)/theB3;
2038 //G4double ds3=std::fabs(ts3-lastTM)/lastTM;
2039 //if(ds3>.01)G4cout<<"Warn*G4QNElCS::GetExT:3n="<<ts3<<"#"<<lastTM<<",d="<<ds3<<G4endl;
2040#endif
2041 G4double I1=R1*theS1;
2042 G4double I2=R2*theS2/theB2;
2043 //G4double I3=R3*theS3/theB3;
2044 G4double I12=I1+I2;
2045 //G4double rand=(I12+I3)*G4UniformRand();
2046 G4double rand=I12*G4UniformRand();
2047 if (rand<I1 )
2048 {
2049 G4double ran=R1*G4UniformRand();
2050 if(ran>1.) ran=1.;
2051 q2=-std::log(1.-ran)/theB1; // t-chan
2052 }
2053 else
2054 {
2055 G4double ran=R2*G4UniformRand();
2056 if(ran>1.) ran=1.;
2057 q2=lastTM+std::log(1.-ran)/theB2; // u-chan (ChEx)
2058 }
2059 }
2060 else
2061 {
2062 G4double a=tgZ+tgN;
2063#ifdef tdebug
2064 G4cout<<"G4QNeutronElCroSec::GetExT:a="<<a<<",t="<<lastTM<<",S1="<<theS1<<",B1="<<theB1
2065 <<",SS="<<theSS<<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3
2066 <<",S4="<<theS4<<",B4="<<theB4<<G4endl;
2067#endif
2068 G4double E1=lastTM*(theB1+lastTM*theSS);
2069 G4double R1=(1.-std::exp(-E1));
2070 G4double tss=theSS+theSS; // for future solution of quadratic equation (imediate check)
2071#ifdef tdebug
2072 G4double ts1=-std::log(1.-R1)/theB1;
2073 if(std::fabs(tss)>1.e-7) ts1=(std::sqrt(theB1*(theB1+(tss+tss)*ts1))-theB1)/tss;
2074 G4double ds1=(ts1-lastTM)/lastTM;
2075 if(ds1>.0001)
2076 G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:1a "<<ts1<<"#"<<lastTM<<",d="
2077 <<ds1<<",R1="<<R1<<",E1="<<E1<<G4endl;
2078#endif
2079 G4double tm2=lastTM*lastTM;
2080 G4double E2=lastTM*tm2*theB2; // power 3 for lowA, 5 for HighA (1st)
2081 if(a>6.5)E2*=tm2; // for heavy nuclei
2082 G4double R2=(1.-std::exp(-E2));
2083#ifdef tdebug
2084 G4double ts2=-std::log(1.-R2)/theB2;
2085 if(a<6.5)ts2=std::pow(ts2,third);
2086 else ts2=std::pow(ts2,fifth);
2087 G4double ds2=std::fabs(ts2-lastTM)/lastTM;
2088 if(ds2>.0001)
2089 G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:2a "<<ts2<<"#"<<lastTM<<",d="
2090 <<ds2<<",R2="<<R2<<",E2="<<E2<<G4endl;
2091#endif
2092 G4double E3=lastTM*theB3;
2093 if(a>6.5)E3*=tm2*tm2*tm2; // power 1 for lowA, 7 (2nd) for HighA
2094 G4double R3=(1.-std::exp(-E3));
2095#ifdef tdebug
2096 G4double ts3=-std::log(1.-R3)/theB3;
2097 if(a>6.5)ts3=std::pow(ts3,sevth);
2098 G4double ds3=std::fabs(ts3-lastTM)/lastTM;
2099 if(ds3>.0001)
2100 G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:3a "<<ts3<<"#"<<lastTM<<",d="
2101 <<ds3<<",R3="<<R3<<",E3="<<E3<<G4endl;
2102#endif
2103 G4double E4=lastTM*theB4;
2104 G4double R4=(1.-std::exp(-E4));
2105#ifdef tdebug
2106 G4double ts4=-std::log(1.-R4)/theB4;
2107 G4double ds4=std::fabs(ts4-lastTM)/lastTM;
2108 if(ds4>.0001)
2109 G4cout<<"*Warning*G4QNeutronElasticCrissSection::GetExT:4a "<<ts4<<"#"<<lastTM<<",d="
2110 <<ds4<<",R4="<<R4<<",E4="<<E4<<G4endl;
2111#endif
2112 G4double I1=R1*theS1;
2113 G4double I2=R2*theS2;
2114 G4double I3=R3*theS3;
2115 G4double I4=R4*theS4;
2116 G4double I12=I1+I2;
2117 G4double I13=I12+I3;
2118 G4double rand=(I13+I4)*G4UniformRand();
2119#ifdef tdebug
2120 G4cout<<"G4QNElCS::GtExT:1="<<I1<<",2="<<I2<<",3="<<I3<<",4="<<I4<<",r="<<rand<<G4endl;
2121#endif
2122 if(rand<I1)
2123 {
2124 G4double ran=R1*G4UniformRand();
2125 if(ran>1.) ran=1.;
2126 q2=-std::log(1.-ran)/theB1;
2127 if(std::fabs(tss)>1.e-7) q2=(std::sqrt(theB1*(theB1+(tss+tss)*q2))-theB1)/tss;
2128#ifdef tdebug
2129 G4cout<<"G4QNElCS::GetET:Q2="<<q2<<",ss="<<tss/2<<",b1="<<theB1<<",t1="<<ts1<<G4endl;
2130#endif
2131 }
2132 else if(rand<I12)
2133 {
2134 G4double ran=R2*G4UniformRand();
2135 if(ran>1.) ran=1.;
2136 q2=-std::log(1.-ran)/theB2;
2137 if(q2<0.) q2=0.;
2138 if(a<6.5) q2=std::pow(q2,third);
2139 else q2=std::pow(q2,fifth);
2140#ifdef tdebug
2141 G4cout<<"G4QNElCS::GetExT: Q2="<<q2<<",r2="<<R2<<", b2="<<theB2<<",t2="<<ts2<<G4endl;
2142#endif
2143 }
2144 else if(rand<I13)
2145 {
2146 G4double ran=R3*G4UniformRand();
2147 if(ran>1.) ran=1.;
2148 q2=-std::log(1.-ran)/theB3;
2149 if(q2<0.) q2=0.;
2150 if(a>6.5) q2=std::pow(q2,sevth);
2151#ifdef tdebug
2152 G4cout<<"G4QNElCS::GetExT:Q2="<<q2<<", r3="<<R2<<", b3="<<theB2<<",t3="<<ts2<<G4endl;
2153#endif
2154 }
2155 else
2156 {
2157 G4double ran=R4*G4UniformRand();
2158 if(ran>1.) ran=1.;
2159 q2=-std::log(1.-ran)/theB4;
2160 if(a<6.5) q2=lastTM-q2; // u reduced for lightA (starts from 0)
2161#ifdef tdebug
2162 G4cout<<"G4QNElCS::GetET:Q2="<<q2<<",m="<<lastTM<<",b4="<<theB3<<",t4="<<ts3<<G4endl;
2163#endif
2164 }
2165 }
2166 if(q2<0.) q2=0.;
2167 if(!(q2>=-1.||q2<=1.)) G4cout<<"*NAN*G4QNeutronElCroSect::GetExchangeT: -t="<<q2<<G4endl;
2168 if(q2>lastTM)
2169 {
2170#ifdef tdebug
2171 G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetExT:-t="<<q2<<" >"<<lastTM<<G4endl;
2172#endif
2173 q2=lastTM;
2174 }
2175 return q2*GeVSQ;
2176}
2177
2178// Returns B in independent units (MeV^-2) (all internal calculations are in GeV) see ExT
2180{
2181 static const G4double GeVSQ=gigaelectronvolt*gigaelectronvolt;
2182#ifdef tdebug
2183 G4cout<<"G4QNeutrElCS::GetSlope:"<<onlyCS<<", Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<G4endl;
2184#endif
2185 if(onlyCS) G4cout<<"Warning*G4QNeutronElasticCrossSection::GetSlope:onlyCS=true"<<G4endl;
2186 if(lastLP<-4.3) return 0.; // S-wave for p<14 MeV/c (kinE<.1MeV)
2187 if(PDG!=2112)
2188 {
2189 // G4cout<<"*Error*G4QNeutronElasticCrossSection::GetSlope: PDG="<<PDG<<", Z="<<tgZ
2190 // <<", N="<<tgN<<", while it is defined only for PDG=2112"<<G4endl;
2191 // throw G4QException("G4QNeutronElasticCrossSection::GetSlope: only nA are implemented");
2193 ed << "PDG = " << PDG << ", Z = " << tgZ << ", N = " << tgN
2194 <<", while it is defined only for PDG=2112 (n) " << G4endl;
2195 G4Exception("G4QNeutronElasticCrossSection::GetSlope()", "HAD_CHPS_0000",
2196 FatalException, ed);
2197 }
2198 if(theB1<0.) theB1=0.;
2199 if(!(theB1>=-1.||theB1<=1.))G4cout<<"*NAN*G4QNeutElasticCrosS::Getslope:"<<theB1<<G4endl;
2200 return theB1/GeVSQ;
2201}
2202
2203// Returns half max(Q2=-t) in independent units (MeV^2)
2205{
2206 static const G4double HGeVSQ=gigaelectronvolt*gigaelectronvolt/2.;
2207 return lastTM*HGeVSQ;
2208}
2209
2210// lastLP is used, so calculating tables, one need to remember and then recover lastLP
2211G4double G4QNeutronElasticCrossSection::GetTabValues(G4double lp, G4int PDG, G4int tgZ,
2212 G4int tgN)
2213{
2214 if(PDG!=2112) G4cout<<"*Warning*G4QNeutronElasticCrossSection::GetTaV:PDG="<<PDG<<G4endl;
2215 if(tgZ<0 || tgZ>92)
2216 {
2217 G4cout<<"*Warning*G4QNElasticCrS::GetTabValue: (1-92) No isotopes for Z="<<tgZ<<G4endl;
2218 return 0.;
2219 }
2220 G4int iZ=tgZ-1; // Z index
2221 if(iZ<0)
2222 {
2223 iZ=0; // conversion of the neutron target to the proton target
2224 tgZ=1;
2225 tgN=0;
2226 }
2227 //if(nN[iZ][0] < 0)
2228 //{
2229#ifdef isodebug
2230 // G4cout<<"*Warning*G4QNeutronElasticCS::GetTabValue: No isotopes for Z="<<tgZ<<G4endl;
2231#endif
2232 // return 0.;
2233 //}
2234#ifdef debug
2235 G4cout<<"G4QNElasticCS::GetTabVal:lp="<<lp<<",Z="<<tgZ<<",N="<<tgN<<",PDG="<<PDG<<G4endl;
2236#endif
2237 G4double p=std::exp(lp); // momentum
2238 G4double sp=std::sqrt(p); // sqrt(p)
2239 G4double p2=p*p;
2240 G4double p3=p2*p;
2241 G4double p4=p3*p;
2242 if ( tgZ == 1 && tgN == 0 ) // np
2243 {
2244 G4double ssp=std::sqrt(sp); // sqrt(sqrt(p))=p^.25
2245 G4double p2s=p2*sp;
2246 G4double dl1=lp-lastPAR[3];
2247 theSS=lastPAR[27];
2248 theS1=(lastPAR[9]+lastPAR[10]*dl1*dl1+lastPAR[11]/p)/(1.+lastPAR[12]/p4)
2249 +lastPAR[13]/(p4+lastPAR[14]);
2250 theB1=(lastPAR[17]+lastPAR[18]/(p4*p4+lastPAR[19]*p3))/(1.+lastPAR[20]/p4);
2251 theS2=(lastPAR[15]+lastPAR[16]/p4/p)/p3;
2252 theB2=lastPAR[22]/(p*sp+lastPAR[23]);
2253 theS3=0.;
2254 theB3=0.;
2255 theS4=0.;
2256 theB4=0.;
2257#ifdef tdebug
2258 G4cout<<"G4QNeutronElasticCroS::GetTableValues:(np) TM="<<lastTM<<",S1="<<theS1<<",B1="
2259 <<theB1<<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS1<<",B3="<<theB1<<G4endl;
2260#endif
2261 // Returns the total elastic pp cross-section (to avoid spoiling lastSIG)
2262 return lastPAR[0]/(p2s+lastPAR[1]*p+lastPAR[2]/ssp)+lastPAR[4]/p
2263 +(lastPAR[5]+lastPAR[6]*dl1*dl1+lastPAR[7]/p)/(1.+lastPAR[8]/p4);
2264
2265 }
2266 else
2267 {
2268 G4double p5=p4*p;
2269 G4double p6=p5*p;
2270 G4double p8=p6*p2;
2271 G4double p10=p8*p2;
2272 G4double p12=p10*p2;
2273 G4double p16=p8*p8;
2274 G4double dl=lp-5.;
2275 G4double a=tgZ+tgN;
2276 G4double pah=std::pow(p,a/2);
2277 G4double pa=pah*pah;
2278 G4double pa2=pa*pa;
2279 if(a<6.5)
2280 {
2281 theS1=lastPAR[15]/(1.+lastPAR[16]*p4*pa)+lastPAR[17]/(p4+lastPAR[18]*p4/pa2)+
2282 (lastPAR[19]*dl*dl+lastPAR[20])/(1.+lastPAR[21]/p2);
2283 theB1=(lastPAR[22]+lastPAR[23]*p2)/(p4+lastPAR[24]/pah)+lastPAR[25];
2284 theSS=lastPAR[26]/(1.+lastPAR[27]/p2)+lastPAR[28]/(p6/pa+lastPAR[29]/p16);
2285 theS2=lastPAR[30]/(pa/p2+lastPAR[31]/p4)+lastPAR[32];
2286 theB2=lastPAR[33]*std::pow(p,lastPAR[34])+lastPAR[35]/(p8+lastPAR[36]/p16);
2287 theS3=lastPAR[37]/(pa*p+lastPAR[38]/pa)+lastPAR[39];
2288 theB3=lastPAR[40]/(p3+lastPAR[41]/p6)+lastPAR[42]/(1.+lastPAR[43]/p2);
2289 theS4=p2*(pah*lastPAR[44]*std::exp(-pah*lastPAR[45])+
2290 lastPAR[46]/(1.+lastPAR[47]*std::pow(p,lastPAR[48])));
2291 theB4=lastPAR[49]*pa/p2/(1.+pa*lastPAR[50]);
2292#ifdef tdebug
2293 G4cout<<"G4QNElCS::GetTabV: lA, p="<<p<<",S1="<<theS1<<",B1="<<theB1<<",SS="<<theSS
2294 <<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3<<",S4="<<theS4
2295 <<",B4="<<theB4<<G4endl;
2296#endif
2297 }
2298 else
2299 {
2300 theS1=lastPAR[15]/(1.+lastPAR[16]/p4)+lastPAR[17]/(p4+lastPAR[18]/p2)+
2301 lastPAR[19]/(p5+lastPAR[20]/p16);
2302 theB1=(lastPAR[21]/p8+lastPAR[25])/(p+lastPAR[22]/std::pow(p,lastPAR[26]))+
2303 lastPAR[23]/(1.+lastPAR[24]/p4);
2304 theSS=lastPAR[27]/(p4/std::pow(p,lastPAR[29])+lastPAR[28]/p4);
2305 theS2=lastPAR[30]/p4/(std::pow(p,lastPAR[31])+lastPAR[32]/p12)+lastPAR[33];
2306 theB2=lastPAR[34]/std::pow(p,lastPAR[35])+lastPAR[36]/std::pow(p,lastPAR[37]);
2307 theS3=lastPAR[38]/std::pow(p,lastPAR[41])/(1.+lastPAR[42]/p12)+
2308 lastPAR[39]/(1.+lastPAR[40]/p6);
2309 theB3=lastPAR[43]/p8+lastPAR[44]/p2+lastPAR[45]/(1.+lastPAR[46]/p8);
2310 theS4=(lastPAR[47]/p4+lastPAR[52]/p)/(1.+lastPAR[48]/p10)+
2311 (lastPAR[49]+lastPAR[50]*dl*dl)/(1.+lastPAR[51]/p12);
2312 theB4=lastPAR[53]/(1.+lastPAR[54]/p)+lastPAR[55]*p4/(1.+lastPAR[56]*p5);
2313#ifdef tdebug
2314 G4cout<<"G4QNElCS::GetTabV: hA, p="<<p<<",S1="<<theS1<<",B1="<<theB1<<",SS="<<theSS
2315 <<",S2="<<theS2<<",B2="<<theB2<<",S3="<<theS3<<",B3="<<theB3<<",S4="<<theS4
2316 <<",B4="<<theB4<<G4endl;
2317#endif
2318 }
2319 // Returns the total elastic (n/p)A cross-section (to avoid spoiling lastSIG)
2320#ifdef tdebug
2321 G4cout<<"G4QNeutronElCS::GetTabV: PDG="<<PDG<<",P="<<p<<",N="<<tgN<<",Z="<<tgZ<<G4endl;
2322#endif
2323#ifdef pdebug
2324 G4cout<<"G4QNElCS::GetTV: p="<<p<<",P12="<<lastPAR[12]<<",N="<<tgN<<",Z="<<tgZ<<G4endl;
2325#endif
2326 // p1(p6) p2(p7) p3(p4) o4(p8) (p9)p5
2327 return (lastPAR[0]*dl*dl+lastPAR[1])/(1.+lastPAR[2]/p+lastPAR[3]/p4)+lastPAR[5]/
2328 (p3+lastPAR[6]/p3)+lastPAR[7]/(p2+lastPAR[4]/(p2+lastPAR[8])+lastPAR[9]/p)+
2329 lastPAR[10]/(p5+lastPAR[11]/p2)+lastPAR[12]/p;
2330 // p10 p11 p12
2331 }
2332 return 0.;
2333} // End of GetTableValues
2334
2335// Returns max -t=Q2 (GeV^2) for the momentum pP(GeV) and the target nucleus (tgN,tgZ)
2336G4double G4QNeutronElasticCrossSection::GetQ2max(G4int PDG, G4int tgZ, G4int tgN,
2337 G4double pP)
2338{
2339 static const G4double mNeut= G4QPDGCode(2112).GetMass()*.001; // MeV to GeV
2340 static const G4double mProt= G4QPDGCode(2212).GetMass()*.001; // MeV to GeV
2341 //static const G4double mLamb= G4QPDGCode(3122).GetMass()*.001; // MeV to GeV
2342 //static const G4double mHe3 = G4QPDGCode(2112).GetNuclMass(2,1,0)*.001; // MeV to GeV
2343 //static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0)*.001; // MeV to GeV
2344 //static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0)*.001; // MeV to GeV
2345 //static const G4double mProt2= mProt*mProt;
2346 static const G4double mNeut2= mNeut*mNeut;
2347 //static const G4double mDeut2= mDeut*mDeut;
2348 G4double pP2=pP*pP; // squared momentum of the projectile
2349 if(tgZ==0 && tgN==1)
2350 {
2351 G4double tMid=std::sqrt(pP2+mNeut2)*mNeut-mNeut2; // CMS 90deg value of -t=Q2 (GeV^2)
2352 return tMid+tMid;
2353 }
2354 else if(tgZ || tgN) // ---> nA
2355 {
2356 G4double mt=mProt; // Target mass in GeV
2357 if(tgN||tgZ>1) mt=G4QPDGCode(90000000+tgZ*1000+tgN).GetMass()*.001; // Target mass GeV
2358 G4double dmt=mt+mt;
2359 G4double s_value=dmt*std::sqrt(pP2+mNeut2)+mNeut2+mt*mt; // Mondelstam s (in GeV^2)
2360 return dmt*dmt*pP2/s_value;
2361 }
2362 else
2363 {
2364 // G4cout<<"*Error*G4QNeutronElasticCrossSection::GetQ2max:PDG="<<PDG<<", Z="<<tgZ<<", N="
2365 // <<tgN<<", while it is defined only for n projectiles & Z_target>0"<<G4endl;
2366 // throw G4QException("G4QNeutronElasticCrossSection::GetQ2max: only nA implemented");
2368 ed << "PDG = " << PDG << ", Z = " << tgZ << ", N =" << tgN
2369 <<", while it is defined only for n projectiles & Z_target>0" << G4endl;
2370 G4Exception("G4QNeutronElasticCrossSection::GetQ2max()", "HAD_CHPS_0000",
2371 FatalException, ed);
2372 return 0;
2373 }
2374}
@ FatalException
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
#define G4UniformRand()
Definition: Randomize.hh:53
G4double GetSlope(G4int tZ, G4int tN, G4int pPDG)
G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N, G4double pP)
virtual G4double GetCrossSection(G4bool fCS, G4double pMom, G4int tgZ, G4int tgN, G4int pPDG=2112)
G4double GetExchangeT(G4int tZ, G4int tN, G4int pPDG)
G4double GetMass()
Definition: G4QPDGCode.cc:693
virtual G4double ThresholdEnergy(G4int Z, G4int N, G4int PDG=0)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76