ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ChipsNeutronInelasticXS.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ChipsNeutronInelasticXS.cc
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 // The lust update: M.V. Kossov, CERN/ITEP(Moscow) 17-May-09
28 //
29 //
30 // G4 Physics class: G4ChipsNeutronInelasticXS for gamma+A cross sections
31 // Created: M.V. Kossov, CERN/ITEP(Moscow), 17-May-2009
32 // The last update: M.V. Kossov, CERN/ITEP (Moscow) 21-May-04
33 //
34 // ****************************************************************************************
35 // Short description: Cross-sections extracted (by W.Pokorski) from the CHIPS package for
36 // neutron-nuclear interactions. Original author: M. Kossov
37 // -------------------------------------------------------------------------------------
38 //
39 
41 #include "G4SystemOfUnits.hh"
42 #include "G4DynamicParticle.hh"
43 #include "G4ParticleDefinition.hh"
44 #include "G4Neutron.hh"
45 #include "G4Log.hh"
46 #include "G4Exp.hh"
47 
48 
49 // factory
50 #include "G4CrossSectionFactory.hh"
51 //
53 
54 // Initialization of the
55 
57 {
58  lastLEN=0; // Pointer to the lastArray of LowEn CS
59  lastHEN=0; // Pointer to the lastArray of HighEnCS
60  lastN=0; // The last N of calculated nucleus
61  lastZ=0; // The last Z of calculated nucleus
62  lastP=0.; // Last used in cross section Momentum
63  lastTH=0.; // Last threshold momentum
64  lastCS=0.; // Last value of the Cross Section
65  lastI=0; // The last position in the DAMDB
66  HEthresh=0.;// HE threshold for the CS calculation
67  LEN = new std::vector<G4double*>;
68  HEN = new std::vector<G4double*>;
69 }
70 
72 {
73  G4int lens=LEN->size();
74  for(G4int i=0; i<lens; ++i) delete[] (*LEN)[i];
75  delete LEN;
76  G4int hens=HEN->size();
77  for(G4int i=0; i<hens; ++i) delete[] (*HEN)[i];
78  delete HEN;
79 }
80 
81 void
83 {
84  outFile << "G4ChipsNeutronInelasticXS provides the inelastic cross\n"
85  << "section for neutron nucleus scattering as a function of incident\n"
86  << "momentum. The cross section is calculated using M. Kossov's\n"
87  << "CHIPS parameterization of cross section data.\n";
88 }
89 
91  const G4Element*,
92  const G4Material*)
93 {
94  return true;
95 }
96 
97 
99  const G4Isotope*,
100  const G4Element*,
101  const G4Material*)
102 {
103  G4double pMom=Pt->GetTotalMomentum();
104  G4int tgN = A - tgZ;
105 
106  return GetChipsCrossSection(pMom, tgZ, tgN, 2112);
107 }
108 
109 // The main member function giving the collision cross section (P is in IU, CS is in mb)
110 // Make pMom in independent units ! (Now it is MeV)
112 {
113 
114  G4bool in=false; // By default the isotope must be found in the AMDB
115  if(tgN!=lastN || tgZ!=lastZ) // The nucleus was not the last used isotope
116  {
117  in = false; // By default the isotope haven't be found in AMDB
118  lastP = 0.; // New momentum history (nothing to compare with)
119  lastN = tgN; // The last N of the calculated nucleus
120  lastZ = tgZ; // The last Z of the calculated nucleus
121  lastI = colN.size(); // Size of the Associative Memory DB in the heap
122  j = 0; // A#0f records found in DB for this projectile
123  if(lastI) for(G4int i=0; i<lastI; i++) // AMDB exists, try to find the (Z,N) isotope
124  {
125  if(colN[i]==tgN && colZ[i]==tgZ) // Try the record "i" in the AMDB
126  {
127  lastI=i; // Remember the index for future fast/last use
128  lastTH =colTH[i]; // The last THreshold (A-dependent)
129  if(pMom<=lastTH)
130  {
131  return 0.; // Energy is below the Threshold value
132  }
133  lastP =colP [i]; // Last Momentum (A-dependent)
134  lastCS =colCS[i]; // Last CrossSect (A-dependent)
135  in = true; // This is the case when the isotop is found in DB
136  // Momentum pMom is in IU ! @@ Units
137  lastCS=CalculateCrossSection(-1,j,2112,lastZ,lastN,pMom); // read & update
138  if(lastCS<=0. && pMom>lastTH) // Correct the threshold (@@ No intermediate Zeros)
139  {
140  lastCS=0.;
141  lastTH=pMom;
142  }
143  break; // Go out of the LOOP
144  }
145  j++; // Increment a#0f records found in DB
146  }
147  if(!in) // This isotope has not been calculated previously
148  {
150  lastCS=CalculateCrossSection(0,j,2112,lastZ,lastN,pMom); //calculate & create
151  //if(lastCS>0.) // It means that the AMBD was initialized
152  //{
153 
154  lastTH = 0; //ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
155  colN.push_back(tgN);
156  colZ.push_back(tgZ);
157  colP.push_back(pMom);
158  colTH.push_back(lastTH);
159  colCS.push_back(lastCS);
160  //} // M.K. Presence of H1 with high threshold breaks the syncronization
161  return lastCS*millibarn;
162  } // End of creation of the new set of parameters
163  else
164  {
165  colP[lastI]=pMom;
166  colCS[lastI]=lastCS;
167  }
168  } // End of parameters udate
169  else if(pMom<=lastTH)
170  {
171  return 0.; // Momentum is below the Threshold Value -> CS=0
172  }
173  else // It is the last used -> use the current tables
174  {
175  lastCS=CalculateCrossSection(1,j,2112,lastZ,lastN,pMom); // Only read and UpdateDB
176  lastP=pMom;
177  }
178  return lastCS*millibarn;
179 }
180 
181 // The main member function giving the gamma-A cross section (E in GeV, CS in mb)
183  G4int, G4int targZ, G4int targN, G4double Momentum)
184 {
185  static const G4double THmin=1.; // default minimum Momentum (MeV/c) Threshold
186  static const G4double THmiG=THmin*.001; // minimum Momentum (GeV/c) Threshold
187  static const G4double dP=10.; // step for the LEN (Low ENergy) table MeV/c
188  static const G4double dPG=dP*.001; // step for the LEN (Low ENergy) table GeV/c
189  static const G4int nL=105; // A#of LEN points in E (step 10 MeV/c)
190  static const G4double Pmin=THmin+(nL-1)*dP; // minP for the HighE part with safety
191  static const G4double Pmax=227000.; // maxP for the HEN (High ENergy) part 227 GeV
192  static const G4int nH=224; // A#of HEN points in lnE
193  static const G4double milP=G4Log(Pmin);// Low logarithm energy for the HEN part
194  static const G4double malP=G4Log(Pmax);// High logarithm energy (each 2.75 percent)
195  static const G4double dlP=(malP-milP)/(nH-1); // Step in log energy in the HEN part
196  static const G4double milPG=G4Log(.001*Pmin);// Low logarithmEnergy for HEN part GeV/c
197  //
198  // Associative memory for acceleration
199  //static std::vector <G4double> spA; // shadowing coefficients (A-dependent)
200  G4double sigma=0.;
201  if(F&&I) sigma=0.; // @@ *!* Fake line *!* to use F & I !!!Temporary!!!
202  //G4double A=targN+targZ; // A of the target
203  if(F<=0) // This isotope was not the last used isotop
204  {
205  if(F<0) // This isotope was found in DAMDB =-----=> RETRIEVE
206  {
207  G4int sync=LEN->size();
208  if(sync<=I) G4cerr<<"*!*G4ChipsNetronNuclCS::CalcCrossSect:Sync="<<sync<<"<="<<I<<G4endl;
209  lastLEN=(*LEN)[I]; // Pointer to prepared LowEnergy cross sections
210  lastHEN=(*HEN)[I]; // Pointer to prepared High Energy cross sections
211  }
212  else // This isotope wasn't calculated before => CREATE
213  {
214  lastLEN = new G4double[nL]; // Allocate memory for the new LEN cross sections
215  lastHEN = new G4double[nH]; // Allocate memory for the new HEN cross sections
216  // --- Instead of making a separate function ---
217  G4double P=THmiG; // Table threshold in GeV/c
218  for(G4int k=0; k<nL; k++)
219  {
220  lastLEN[k] = CrossSectionLin(targZ, targN, P);
221  P+=dPG;
222  }
223  G4double lP=milPG;
224  for(G4int n=0; n<nH; n++)
225  {
226  lastHEN[n] = CrossSectionLog(targZ, targN, lP);
227  lP+=dlP;
228  }
229  // --- End of possible separate function
230  // *** The synchronization check ***
231  G4int sync=LEN->size();
232  if(sync!=I)
233  {
234  G4cerr<<"***G4ChipsNetronNuclearCS::CalcCrossSect: Sync="<<sync<<"#"<<I<<", Z=" <<targZ
235  <<", N="<<targN<<", F="<<F<<G4endl;
236  //G4Exception("G4ProtonNuclearCS::CalculateCS:","39",FatalException,"overflow DB");
237  }
238  LEN->push_back(lastLEN); // remember the Low Energy Table
239  HEN->push_back(lastHEN); // remember the High Energy Table
240  } // End of creation of the new set of parameters
241  } // End of parameters udate
242  // =------------------= NOW the Magic Formula =---------------------------=
243  if (Momentum<lastTH) return 0.; // It must be already checked in the interface class
244  else if (Momentum<Pmin) // High Energy region
245  {
246  sigma=EquLinearFit(Momentum,nL,THmin,dP,lastLEN);
247  }
248  else if (Momentum<Pmax) // High Energy region
249  {
250  G4double lP=G4Log(Momentum);
251  sigma=EquLinearFit(lP,nH,milP,dlP,lastHEN);
252  }
253  else // UHE region (calculation, not frequent)
254  {
255  G4double P=0.001*Momentum; // Approximation formula is for P in GeV/c
256  sigma=CrossSectionFormula(targZ, targN, P, G4Log(P));
257  }
258  if(sigma<0.) return 0.;
259  return sigma;
260 }
261 
262 // Calculation formula for proton-nuclear inelastic cross-section (mb) (P in GeV/c)
264 {
265  //==> n (Z=0)
266  static const G4int N0=1;
267  static const G4double pZ0N1[4]={1., 0., 0., 1.};
268  static const std::pair<G4int, const G4double*> Z0N1(1,pZ0N1);
269  static const std::pair<G4int, const G4double*> Z0[N0]={Z0N1};
270  //==> H (Z=1) *** no protons, which are treated separately ***
271  static const G4int N1=2;
272  static const G4double pZ1N1[4]={6.E-8, 0., 0., 1.};
273  static const std::pair<G4int, const G4double*> Z1N1(1,pZ1N1);
274  static const G4double pZ1N2[4]={9.E-8, 0., 0., 1.};
275  static const std::pair<G4int, const G4double*> Z1N2(2,pZ1N2);
276  static const std::pair<G4int, const G4double*> Z1[N1]={Z1N1, Z1N2};
277  //==> He(Z=2)
278  static const G4int N2=2;
279  static const G4double pZ2N1[4]={1.E-13, 9000., 1.E-4, 2.E-4};
280  static const std::pair<G4int, const G4double*> Z2N1(1,pZ2N1);
281  static const G4double pZ2N2[4]={7.E-4, 0., 0., 1.};
282  static const std::pair<G4int, const G4double*> Z2N2(2,pZ2N2);
283  static const std::pair<G4int, const G4double*> Z2[N2]={Z2N1, Z2N2};
284  //==> Li(Z=3)
285  static const G4int N3=2;
286  static const G4double pZ3N3[4]={1.E-9, 3200., .021, 1.5E-5};
287  static const std::pair<G4int, const G4double*> Z3N1(3,pZ3N3);
288  static const G4double pZ3N4[4]={3.E-9, 200., .051, 2.5E-4};
289  static const std::pair<G4int, const G4double*> Z3N2(4,pZ3N4);
290  static const std::pair<G4int, const G4double*> Z3[N3]={Z3N1, Z3N2};
291  //==> Be(Z=4)
292  static const G4int N4=1;
293  static const G4double pZ4N5[4]={9.E-9, 400., .088, 4.E-4};
294  static const std::pair<G4int, const G4double*> Z4N5(5,pZ4N5);
295  static const std::pair<G4int, const G4double*> Z4[N4]={Z4N5};
296  //==> B (Z=5)
297  static const G4int N5=2;
298  static const G4double pZ5N5[4]={2.E-10, 2700., .009, 4.E-4};
299  static const std::pair<G4int, const G4double*> Z5N5(5,pZ5N5);
300  static const G4double pZ5N6[4]={2.E-8, 110., .030, 1.E-4};
301  static const std::pair<G4int, const G4double*> Z5N6(6,pZ5N6);
302  static const std::pair<G4int, const G4double*> Z5[N5]={Z5N5, Z5N6};
303  //==> C (Z=6)
304  static const G4int N6=2;
305  static const G4double pZ6N6[4]={1.5E-7, 300., .129, 5.E-4}; // *** Only Nat Mix ***
306  static const std::pair<G4int, const G4double*> Z6N6(6,pZ6N6);
307  static const G4double pZ6N7[4]={1.5E-7, 300., .129, 5.E-4}; // *** Only Nat Mix ***
308  static const std::pair<G4int, const G4double*> Z6N7(7,pZ6N7);
309  static const std::pair<G4int, const G4double*> Z6[N6]={Z6N6, Z6N7};
310  //==> N (Z=7)
311  static const G4int N7=2;
312  static const G4double pZ7N7[4]={5.E-8, 500., .085, 2.E-4};
313  static const std::pair<G4int, const G4double*> Z7N7(7,pZ7N7);
314  static const G4double pZ7N8[4]={5.E-8, 140., .15, 9.E-4};
315  static const std::pair<G4int, const G4double*> Z7N8(8,pZ7N8);
316  static const std::pair<G4int, const G4double*> Z7[N7]={Z7N7, Z7N8};
317  //==> O (Z=8)
318  static const G4int N8=3;
319  static const G4double pZ8N8[4]={7.E-8, 0., .021, 1.5E-5};
320  static const std::pair<G4int, const G4double*> Z8N8(8,pZ8N8);
321  static const G4double pZ8N9[4]={2.E-8, 170., .062, 1.E-3};
322  static const std::pair<G4int, const G4double*> Z8N9(9,pZ8N9);
323  static const G4double pZ8N10[4]={1.E-9, 0., .051, 2.5E-4}; // *** No DATA ***
324  static const std::pair<G4int, const G4double*> Z8N10(10,pZ8N10);
325  static const std::pair<G4int, const G4double*> Z8[N8]={Z8N8, Z8N9, Z8N10};
326  //==> F (Z=9)
327  static const G4int N9=1;
328  static const G4double pZ9N10[4]={1.E-11, 3000., .026, 3.E-5};
329  static const std::pair<G4int, const G4double*> Z9N10(10,pZ9N10);
330  static const std::pair<G4int, const G4double*> Z9[N9]={Z9N10};
331  //==> Ne(Z=10)
332  static const G4int N10=3;
333  static const G4double pZ10N10[4]={4.E-8, 0., .021, 1.5E-5}; // *** No DATA ***
334  static const std::pair<G4int, const G4double*> Z10N10(10,pZ10N10);
335  static const G4double pZ10N11[4]={4.E-8, 0., .021, 1.5E-5}; // *** No DATA ***
336  static const std::pair<G4int, const G4double*> Z10N11(11,pZ10N11);
337  static const G4double pZ10N12[4]={4.E-8, 0., .051, 2.5E-4}; // *** No DATA ***
338  static const std::pair<G4int, const G4double*> Z10N12(12,pZ10N12);
339  static const std::pair<G4int, const G4double*> Z10[N10]={Z10N10, Z10N11, Z10N12};
340  //==> Na(Z=11)
341  static const G4int N11=1;
342  static const G4double pZ11N12[4]={8.E-10, 500., .05, 3.E-4};
343  static const std::pair<G4int, const G4double*> Z11N12(12,pZ11N12);
344  static const std::pair<G4int, const G4double*> Z11[N11]={Z11N12};
345  //==> Mg(Z=12)
346  static const G4int N12=3;
347  static const G4double pZ12N12[4]={2.E-9, 350., .065, 3.E-4};
348  static const std::pair<G4int, const G4double*> Z12N12(12,pZ12N12);
349  static const G4double pZ12N13[4]={2.E-9, 350., .068, 2.E-4};
350  static const std::pair<G4int, const G4double*> Z12N13(13,pZ12N13);
351  static const G4double pZ12N14[4]={2.E-9, 0., .051, 2.5E-4};
352  static const std::pair<G4int, const G4double*> Z12N14(14,pZ12N14);
353  static const std::pair<G4int, const G4double*> Z12[N12]={Z12N12, Z12N13, Z12N14};
354  //==> Al(Z=13)
355  static const G4int N13=1;
356  static const G4double pZ13N14[4]={9.E-9, 500., .075, 4.E-4};
357  static const std::pair<G4int, const G4double*> Z13N14(14,pZ13N14);
358  static const std::pair<G4int, const G4double*> Z13[N13]={Z13N14};
359  //==> Si(Z=14)
360  static const G4int N14=3;
361  static const G4double pZ14N14[4]={4.E-9, 200., .076, 1.E-4};
362  static const std::pair<G4int, const G4double*> Z14N14(14,pZ14N14);
363  static const G4double pZ14N15[4]={6.E-9, 500., .073, 4.E-4};
364  static const std::pair<G4int, const G4double*> Z14N15(15,pZ14N15);
365  static const G4double pZ14N16[4]={4.E-9, 200., .076, 1.E-4};
366  static const std::pair<G4int, const G4double*> Z14N16(16,pZ14N16);
367  static const std::pair<G4int, const G4double*> Z14[N14]={Z14N14, Z14N15, Z14N16};
368  //==> P (Z=15)
369  static const G4int N15=1;
370  static const G4double pZ15N16[4]={6.E-9, 550., .077, 2.E-4};
371  static const std::pair<G4int, const G4double*> Z15N16(16,pZ15N16);
372  static const std::pair<G4int, const G4double*> Z15[N15]={Z15N16};
373  //==> S (Z=16)
374  static const G4int N16=4;
375  static const G4double pZ16N16[4]={1.5E-8, 500., .087, 5.E-4};
376  static const std::pair<G4int, const G4double*> Z16N16(16,pZ16N16);
377  static const G4double pZ16N17[4]={1.E-8, 300., .07, 4.E-3};
378  static const std::pair<G4int, const G4double*> Z16N17(17,pZ16N17);
379  static const G4double pZ16N18[4]={2.E-8, 300., .094, 3.E-4};
380  static const std::pair<G4int, const G4double*> Z16N18(18,pZ16N18);
381  static const G4double pZ16N20[4]={2.E-8, 200., .11, 3.E-4};
382  static const std::pair<G4int, const G4double*> Z16N20(20,pZ16N20);
383  static const std::pair<G4int, const G4double*> Z16[N16]={Z16N16, Z16N17, Z16N18, Z16N20};
384  //==> Cl(Z=17)
385  static const G4int N17=2;
386  static const G4double pZ17N18[4]={3.E-9, 300., .072, 4.E-4};
387  static const std::pair<G4int, const G4double*> Z17N18(18,pZ17N18);
388  static const G4double pZ17N20[4]={5.E-9, 0., .051, 2.5E-4};
389  static const std::pair<G4int, const G4double*> Z17N20(20,pZ17N20);
390  static const std::pair<G4int, const G4double*> Z17[N17]={Z17N18, Z17N20};
391  //==> Ar(Z=18)
392  static const G4int N18=3;
393  static const G4double pZ18N18[4]={2.5E-9, 300., .074, 2.E-4};
394  static const std::pair<G4int, const G4double*> Z18N18(18,pZ18N18);
395  static const G4double pZ18N20[4]={2.E-8, 400., .084, 4.E-4};
396  static const std::pair<G4int, const G4double*> Z18N20(20,pZ18N20);
397  static const G4double pZ18N22[4]={1.E-9, 100., .065, 2.E-4};
398  static const std::pair<G4int, const G4double*> Z18N22(22,pZ18N22);
399  static const std::pair<G4int, const G4double*> Z18[N18]={Z18N18, Z18N20, Z18N22};
400  //==> K (Z=19)
401  static const G4int N19=3;
402  static const G4double pZ19N20[4]={3.E-9, 4., .02, 2.E-4};
403  static const std::pair<G4int, const G4double*> Z19N20(20,pZ19N20);
404  static const G4double pZ19N21[4]={3.E-9, 500., .062, 7.E-4};
405  static const std::pair<G4int, const G4double*> Z19N21(21,pZ19N21);
406  static const G4double pZ19N22[4]={3.E-9, 400., .073, 3.E-4};
407  static const std::pair<G4int, const G4double*> Z19N22(22,pZ19N22);
408  static const std::pair<G4int, const G4double*> Z19[N19]={Z19N20, Z19N21, Z19N22};
409  //==> Ca(Z=20)
410  static const G4int N20=6;
411  static const G4double pZ20N20[4]={3.E-9, 0., .021, 1.5E-5};
412  static const std::pair<G4int, const G4double*> Z20N20(20,pZ20N20);
413  static const G4double pZ20N22[4]={2.E-9, 400., .072, 4.E-4};
414  static const std::pair<G4int, const G4double*> Z20N22(22,pZ20N22);
415  static const G4double pZ20N23[4]={.3E-9, 280., .042, 2.5E-4};
416  static const std::pair<G4int, const G4double*> Z20N23(23,pZ20N23);
417  static const G4double pZ20N24[4]={1.E-9, 300., .062, 2.E-4};
418  static const std::pair<G4int, const G4double*> Z20N24(24,pZ20N24);
419  static const G4double pZ20N26[4]={1.5E-8, 400., .064, 2.E-4};
420  static const std::pair<G4int, const G4double*> Z20N26(26,pZ20N26);
421  static const G4double pZ20N28[4]={7.E-9, 0., .051, 2.5E-4};
422  static const std::pair<G4int, const G4double*> Z20N28(28,pZ20N28);
423  static const std::pair<G4int, const G4double*> Z20[N20]={Z20N20, Z20N22, Z20N23,
424  Z20N24, Z20N26, Z20N28};
425  //==> Sc(Z=21)
426  static const G4int N21=1;
427  static const G4double pZ21N24[4]={5.E-9, 1000., .068, 6.E-4};
428  static const std::pair<G4int, const G4double*> Z21N24(24,pZ21N24);
429  static const std::pair<G4int, const G4double*> Z21[N21]={Z21N24};
430  //==> Ti(Z=22)
431  static const G4int N22=5;
432  static const G4double pZ22N24[4]={4.E-9, 900., .065, 6.E-4};
433  static const std::pair<G4int, const G4double*> Z22N24(24,pZ22N24);
434  static const G4double pZ22N25[4]={4.E-9, 1000., .065, 1.E-3};
435  static const std::pair<G4int, const G4double*> Z22N25(25,pZ22N25);
436  static const G4double pZ22N26[4]={4.E-9, 900., .066, 4.E-4};
437  static const std::pair<G4int, const G4double*> Z22N26(26,pZ22N26);
438  static const G4double pZ22N27[4]={4.E-9, 800., .021, 3.E-4};
439  static const std::pair<G4int, const G4double*> Z22N27(27,pZ22N27);
440  static const G4double pZ22N28[4]={4.E-9, 550., .067, 2.E-4};
441  static const std::pair<G4int, const G4double*> Z22N28(28,pZ22N28);
442  static const std::pair<G4int, const G4double*> Z22[N22]={Z22N24, Z22N25, Z22N26,
443  Z22N27, Z22N28};
444  //==> V (Z=23)
445  static const G4int N23=2;
446  static const G4double pZ23N27[4]={4.E-9, 700., .065, 1.E-3}; // *** Only Nat mix ***
447  static const std::pair<G4int, const G4double*> Z23N27(27,pZ23N27);
448  static const G4double pZ23N28[4]={4.E-9, 700., .065, 1.E-3}; // *** Only Nat mix ***
449  static const std::pair<G4int, const G4double*> Z23N28(28,pZ23N28);
450  static const std::pair<G4int, const G4double*> Z23[N23]={Z23N27, Z23N28};
451  //==> Cr(Z=24)
452  static const G4int N24=4;
453  static const G4double pZ24N26[4]={1.E-9, 750., .056, 2.E-4};
454  static const std::pair<G4int, const G4double*> Z24N26(26,pZ24N26);
455  static const G4double pZ24N28[4]={1.E-9, 350., .061, 1.E-4};
456  static const std::pair<G4int, const G4double*> Z24N28(28,pZ24N28);
457  static const G4double pZ24N29[4]={.4E-9, 650., .056, 1.5E-4};
458  static const std::pair<G4int, const G4double*> Z24N29(29,pZ24N29);
459  static const G4double pZ24N30[4]={1.E-9, 700., .054, 3.E-4};
460  static const std::pair<G4int, const G4double*> Z24N30(30,pZ24N30);
461  static const std::pair<G4int, const G4double*> Z24[N24]={Z24N26, Z24N28, Z24N29, Z24N30};
462  //==> Mn(Z=25)
463  static const G4int N25=1;
464  static const G4double pZ25N30[4]={.3E-9, 650., .042, 3.5E-4};
465  static const std::pair<G4int, const G4double*> Z25N30(30,pZ25N30);
466  static const std::pair<G4int, const G4double*> Z25[N25]={Z25N30};
467  //==> Fe(Z=26)
468  static const G4int N26=4;
469  static const G4double pZ26N28[4]={.9E-9, 200., .062, 1.E-4};
470  static const std::pair<G4int, const G4double*> Z26N28(28,pZ26N28);
471  static const G4double pZ26N30[4]={.9E-9, 1500., .055, 5.E-5};
472  static const std::pair<G4int, const G4double*> Z26N30(30,pZ26N30);
473  static const G4double pZ26N31[4]={.9E-9, 1100., .048, 9.E-4};
474  static const std::pair<G4int, const G4double*> Z26N31(31,pZ26N31);
475  static const G4double pZ26N32[4]={.9E-9, 500., .055, 2.E-4};
476  static const std::pair<G4int, const G4double*> Z26N32(32,pZ26N32);
477  static const std::pair<G4int, const G4double*> Z26[N26]={Z26N28, Z26N30, Z26N31, Z26N32};
478  //==> Co(Z=27)
479  static const G4int N27=1;
480  static const G4double pZ27N32[4]={.2E-9, 21., .008, 3.E-6};
481  static const std::pair<G4int, const G4double*> Z27N32(32,pZ27N32);
482  static const std::pair<G4int, const G4double*> Z27[N27]={Z27N32};
483  //==> Ni(Z=28)
484  static const G4int N28=5;
485  static const G4double pZ28N30[4]={.3E-9, 0., .021, 1.5E-5};
486  static const std::pair<G4int, const G4double*> Z28N30(30,pZ28N30);
487  static const G4double pZ28N32[4]={.3E-9, 0., .021, 1.5E-5};
488  static const std::pair<G4int, const G4double*> Z28N32(32,pZ28N32);
489  static const G4double pZ28N33[4]={.3E-9, 0., .021, 1.5E-5};
490  static const std::pair<G4int, const G4double*> Z28N33(33,pZ28N33);
491  static const G4double pZ28N34[4]={.3E-9, 700., .0065, 2.E-6};
492  static const std::pair<G4int, const G4double*> Z28N34(34,pZ28N34);
493  static const G4double pZ28N36[4]={.3E-9, 75., .0107, 4.E-6};
494  static const std::pair<G4int, const G4double*> Z28N36(36,pZ28N36);
495  static const std::pair<G4int, const G4double*> Z28[N28]={Z28N30, Z28N32, Z28N33,
496  Z28N34, Z28N36};
497  //==> Cu(Z=29)
498  static const G4int N29=2;
499  static const G4double pZ29N34[4]={.1E-9, 35., .005, 6.E-4};
500  static const std::pair<G4int, const G4double*> Z29N34(34,pZ29N34);
501  static const G4double pZ29N36[4]={.2E-9, 23., .01, 2.E-4};
502  static const std::pair<G4int, const G4double*> Z29N36(36,pZ29N36);
503  static const std::pair<G4int, const G4double*> Z29[N29]={Z29N34, Z29N36};
504  //==> Zn(Z=30)
505  static const G4int N30=5;
506  static const G4double pZ30N34[4]={.2E-9, 140., .02, 8.E-6}; // *** only NAT mix ***
507  static const std::pair<G4int, const G4double*> Z30N34(34,pZ30N34);
508  static const G4double pZ30N36[4]={.2E-9, 140., .02, 8.E-6}; // *** only NAT mix ***
509  static const std::pair<G4int, const G4double*> Z30N36(36,pZ30N36);
510  static const G4double pZ30N37[4]={.2E-9, 140., .02, 8.E-6}; // *** only NAT mix ***
511  static const std::pair<G4int, const G4double*> Z30N37(37,pZ30N37);
512  static const G4double pZ30N38[4]={.2E-9, 140., .02, 8.E-6}; // *** only NAT mix ***
513  static const std::pair<G4int, const G4double*> Z30N38(38,pZ30N38);
514  static const G4double pZ30N40[4]={.2E-9, 140., .02, 8.E-6}; // *** only NAT mix ***
515  static const std::pair<G4int, const G4double*> Z30N40(40,pZ30N40);
516  static const std::pair<G4int, const G4double*> Z30[N30]={Z30N34, Z30N36, Z30N37,
517  Z30N38, Z30N40};
518  //==> Ga(Z=31)
519  static const G4int N31=2;
520  static const G4double pZ31N38[4]={.3E-9, 450., .050, 3.E-4};
521  static const std::pair<G4int, const G4double*> Z31N38(38,pZ31N38);
522  static const G4double pZ31N40[4]={.3E-9, 600., .048, 2.E-4};
523  static const std::pair<G4int, const G4double*> Z31N40(40,pZ31N40);
524  static const std::pair<G4int, const G4double*> Z31[N31]={Z31N38, Z31N40};
525  //==> Ge(Z=32)
526  static const G4int N32=5;
527  static const G4double pZ32N38[4]={.2E-9, 200., .05, 2.E-4};
528  static const std::pair<G4int, const G4double*> Z32N38(38,pZ32N38);
529  static const G4double pZ32N40[4]={.2E-9, 600., .05, 2.E-4};
530  static const std::pair<G4int, const G4double*> Z32N40(40,pZ32N40);
531  static const G4double pZ32N41[4]={1.5E-11, 600., .028, 3.E-4};
532  static const std::pair<G4int, const G4double*> Z32N41(41,pZ32N41);
533  static const G4double pZ32N42[4]={9.E-11, 400., .048, 3.E-4};
534  static const std::pair<G4int, const G4double*> Z32N42(42,pZ32N42);
535  static const G4double pZ32N44[4]={9.E-11, 400., .043, 3.E-4};
536  static const std::pair<G4int, const G4double*> Z32N44(44,pZ32N44);
537  static const std::pair<G4int, const G4double*> Z32[N32]={Z32N38, Z32N40, Z32N41,
538  Z32N42, Z32N44};
539  //==> As(Z=33)
540  static const G4int N33=1;
541  static const G4double pZ33N42[4]={1.E-11, 1000., .032, 1.E-4};
542  static const std::pair<G4int, const G4double*> Z33N42(42,pZ33N42);
543  static const std::pair<G4int, const G4double*> Z33[N33]={Z33N42};
544  //==> Se(Z=34)
545  static const G4int N34=6;
546  static const G4double pZ34N40[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
547  static const std::pair<G4int, const G4double*> Z34N40(40,pZ34N40);
548  static const G4double pZ34N42[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
549  static const std::pair<G4int, const G4double*> Z34N42(42,pZ34N42);
550  static const G4double pZ34N43[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
551  static const std::pair<G4int, const G4double*> Z34N43(43,pZ34N43);
552  static const G4double pZ34N44[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
553  static const std::pair<G4int, const G4double*> Z34N44(44,pZ34N44);
554  static const G4double pZ34N46[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
555  static const std::pair<G4int, const G4double*> Z34N46(46,pZ34N46);
556  static const G4double pZ34N48[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
557  static const std::pair<G4int, const G4double*> Z34N48(48,pZ34N48);
558  static const std::pair<G4int, const G4double*> Z34[N34]={Z34N40, Z34N42, Z34N43,
559  Z34N44, Z34N46, Z34N48};
560  //==> Br(Z=35)
561  static const G4int N35=2;
562  static const G4double pZ35N44[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
563  static const std::pair<G4int, const G4double*> Z35N44(44,pZ35N44);
564  static const G4double pZ35N46[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
565  static const std::pair<G4int, const G4double*> Z35N46(46,pZ35N46);
566  static const std::pair<G4int, const G4double*> Z35[N35]={Z35N44, Z35N46};
567  //==> Kr(Z=36)
568  static const G4int N36=6;
569  static const G4double pZ36N42[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
570  static const std::pair<G4int, const G4double*> Z36N42(42,pZ36N42);
571  static const G4double pZ36N44[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
572  static const std::pair<G4int, const G4double*> Z36N44(44,pZ36N44);
573  static const G4double pZ36N46[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
574  static const std::pair<G4int, const G4double*> Z36N46(46,pZ36N46);
575  static const G4double pZ36N47[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
576  static const std::pair<G4int, const G4double*> Z36N47(47,pZ36N47);
577  static const G4double pZ36N48[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
578  static const std::pair<G4int, const G4double*> Z36N48(48,pZ36N48);
579  static const G4double pZ36N50[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
580  static const std::pair<G4int, const G4double*> Z36N50(50,pZ36N50);
581  static const std::pair<G4int, const G4double*> Z36[N36]={Z36N42, Z36N44, Z36N46,
582  Z36N47, Z36N48, Z36N50};
583  //==> Rb(Z=37)
584  static const G4int N37=2;
585  static const G4double pZ37N48[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
586  static const std::pair<G4int, const G4double*> Z37N48(48,pZ37N48);
587  static const G4double pZ37N50[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
588  static const std::pair<G4int, const G4double*> Z37N50(50,pZ37N50);
589  static const std::pair<G4int, const G4double*> Z37[N37]={Z37N48, Z37N50};
590  //==> Sr(Z=38)
591  static const G4int N38=4;
592  static const G4double pZ38N46[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
593  static const std::pair<G4int, const G4double*> Z38N46(46,pZ38N46);
594  static const G4double pZ38N48[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
595  static const std::pair<G4int, const G4double*> Z38N48(48,pZ38N48);
596  static const G4double pZ38N49[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
597  static const std::pair<G4int, const G4double*> Z38N49(49,pZ38N49);
598  static const G4double pZ38N50[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
599  static const std::pair<G4int, const G4double*> Z38N50(50,pZ38N50);
600  static const std::pair<G4int, const G4double*> Z38[N38]={Z38N46, Z38N48, Z38N49, Z38N50};
601  //==> Y (Z=39)
602  static const G4int N39=1;
603  static const G4double pZ39N50[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
604  static const std::pair<G4int, const G4double*> Z39N50(50,pZ39N50);
605  static const std::pair<G4int, const G4double*> Z39[N39]={Z39N50};
606  //==> Zr(Z=40)
607  static const G4int N40=5;
608  static const G4double pZ40N50[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
609  static const std::pair<G4int, const G4double*> Z40N50(50,pZ40N50);
610  static const G4double pZ40N51[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
611  static const std::pair<G4int, const G4double*> Z40N51(51,pZ40N51);
612  static const G4double pZ40N52[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
613  static const std::pair<G4int, const G4double*> Z40N52(52,pZ40N52);
614  static const G4double pZ40N54[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
615  static const std::pair<G4int, const G4double*> Z40N54(54,pZ40N54);
616  static const G4double pZ40N56[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
617  static const std::pair<G4int, const G4double*> Z40N56(56,pZ40N56);
618  static const std::pair<G4int, const G4double*> Z40[N40]={Z40N50, Z40N51, Z40N52,
619  Z40N54, Z40N56};
620  //==> Nb(Z=41)
621  static const G4int N41=1;
622  static const G4double pZ41N52[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
623  static const std::pair<G4int, const G4double*> Z41N52(52,pZ41N52);
624  static const std::pair<G4int, const G4double*> Z41[N41]={Z41N52};
625  //==> Mo(Z=42)
626  static const G4int N42=7;
627  static const G4double pZ42N50[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
628  static const std::pair<G4int, const G4double*> Z42N50(50,pZ42N50);
629  static const G4double pZ42N52[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
630  static const std::pair<G4int, const G4double*> Z42N52(52,pZ42N52);
631  static const G4double pZ42N53[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
632  static const std::pair<G4int, const G4double*> Z42N53(53,pZ42N53);
633  static const G4double pZ42N54[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
634  static const std::pair<G4int, const G4double*> Z42N54(54,pZ42N54);
635  static const G4double pZ42N55[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
636  static const std::pair<G4int, const G4double*> Z42N55(55,pZ42N55);
637  static const G4double pZ42N56[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
638  static const std::pair<G4int, const G4double*> Z42N56(56,pZ42N56);
639  static const G4double pZ42N58[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
640  static const std::pair<G4int, const G4double*> Z42N58(58,pZ42N58);
641  static const std::pair<G4int, const G4double*> Z42[N42]={Z42N50, Z42N52, Z42N53, Z42N54,
642  Z42N55, Z42N56, Z42N58};
643  //==> Mo(Z=43)
644  static const G4int N43=1;
645  static const G4double pZ43N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
646  static const std::pair<G4int, const G4double*> Z43N0(0,pZ43N0);
647  static const std::pair<G4int, const G4double*> Z43[N43]={Z43N0};
648  //==> Ru(Z=44)
649  static const G4int N44=7;
650  static const G4double pZ44N52[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
651  static const std::pair<G4int, const G4double*> Z44N52(52,pZ44N52);
652  static const G4double pZ44N54[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
653  static const std::pair<G4int, const G4double*> Z44N54(54,pZ44N54);
654  static const G4double pZ44N55[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
655  static const std::pair<G4int, const G4double*> Z44N55(55,pZ44N55);
656  static const G4double pZ44N56[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
657  static const std::pair<G4int, const G4double*> Z44N56(56,pZ44N56);
658  static const G4double pZ44N57[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
659  static const std::pair<G4int, const G4double*> Z44N57(57,pZ44N57);
660  static const G4double pZ44N58[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
661  static const std::pair<G4int, const G4double*> Z44N58(58,pZ44N58);
662  static const G4double pZ44N60[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
663  static const std::pair<G4int, const G4double*> Z44N60(60,pZ44N60);
664  static const std::pair<G4int, const G4double*> Z44[N44]={Z44N52, Z44N54, Z44N55, Z44N56,
665  Z44N57, Z44N58, Z44N60};
666  //==> Rh(Z=45)
667  static const G4int N45=1;
668  static const G4double pZ45N58[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
669  static const std::pair<G4int, const G4double*> Z45N58(58,pZ45N58);
670  static const std::pair<G4int, const G4double*> Z45[N45]={Z45N58};
671  //==> Pd(Z=46)
672  static const G4int N46=6;
673  static const G4double pZ46N56[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
674  static const std::pair<G4int, const G4double*> Z46N56(56,pZ46N56);
675  static const G4double pZ46N58[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
676  static const std::pair<G4int, const G4double*> Z46N58(58,pZ46N58);
677  static const G4double pZ46N59[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
678  static const std::pair<G4int, const G4double*> Z46N59(59,pZ46N59);
679  static const G4double pZ46N60[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
680  static const std::pair<G4int, const G4double*> Z46N60(60,pZ46N60);
681  static const G4double pZ46N62[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
682  static const std::pair<G4int, const G4double*> Z46N62(62,pZ46N62);
683  static const G4double pZ46N64[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
684  static const std::pair<G4int, const G4double*> Z46N64(64,pZ46N64);
685  static const std::pair<G4int, const G4double*> Z46[N46]={Z46N56, Z46N58, Z46N59,
686  Z46N60, Z46N62, Z46N64};
687  //==> Ag(Z=47)
688  static const G4int N47=2;
689  static const G4double pZ47N60[4]={3.E-12, 500., .01, 2.7E-5};
690  static const std::pair<G4int, const G4double*> Z47N60(60,pZ47N60);
691  static const G4double pZ47N62[4]={3.E-12, 480., .01, 2.5E-4};
692  static const std::pair<G4int, const G4double*> Z47N62(62,pZ47N62);
693  static const std::pair<G4int, const G4double*> Z47[N47]={Z47N60, Z47N62};
694  //==> Cd(Z=48)
695  static const G4int N48=8;
696  static const G4double pZ48N58[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
697  static const std::pair<G4int, const G4double*> Z48N58(58,pZ48N58);
698  static const G4double pZ48N60[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
699  static const std::pair<G4int, const G4double*> Z48N60(60,pZ48N60);
700  static const G4double pZ48N62[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
701  static const std::pair<G4int, const G4double*> Z48N62(62,pZ48N62);
702  static const G4double pZ48N63[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
703  static const std::pair<G4int, const G4double*> Z48N63(63,pZ48N63);
704  static const G4double pZ48N64[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
705  static const std::pair<G4int, const G4double*> Z48N64(64,pZ48N64);
706  static const G4double pZ48N65[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
707  static const std::pair<G4int, const G4double*> Z48N65(65,pZ48N65);
708  static const G4double pZ48N66[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
709  static const std::pair<G4int, const G4double*> Z48N66(66,pZ48N66);
710  static const G4double pZ48N68[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
711  static const std::pair<G4int, const G4double*> Z48N68(68,pZ48N68);
712  static const std::pair<G4int, const G4double*> Z48[N48]={Z48N58, Z48N60, Z48N62, Z48N63,
713  Z48N64, Z48N65, Z48N66, Z48N68};
714  //==> In(Z=49)
715  static const G4int N49=2;
716  static const G4double pZ49N64[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
717  static const std::pair<G4int, const G4double*> Z49N64(64,pZ49N64);
718  static const G4double pZ49N66[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
719  static const std::pair<G4int, const G4double*> Z49N66(66,pZ49N66);
720  static const std::pair<G4int, const G4double*> Z49[N49]={Z49N64, Z49N66};
721  //==> Sn(Z=50)
722  static const G4int N50=10;
723  static const G4double pZ50N62[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
724  static const std::pair<G4int, const G4double*> Z50N62(62,pZ50N62);
725  static const G4double pZ50N64[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
726  static const std::pair<G4int, const G4double*> Z50N64(64,pZ50N64);
727  static const G4double pZ50N65[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
728  static const std::pair<G4int, const G4double*> Z50N65(65,pZ50N65);
729  static const G4double pZ50N66[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
730  static const std::pair<G4int, const G4double*> Z50N66(66,pZ50N66);
731  static const G4double pZ50N67[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
732  static const std::pair<G4int, const G4double*> Z50N67(67,pZ50N67);
733  static const G4double pZ50N68[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
734  static const std::pair<G4int, const G4double*> Z50N68(68,pZ50N68);
735  static const G4double pZ50N69[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
736  static const std::pair<G4int, const G4double*> Z50N69(69,pZ50N69);
737  static const G4double pZ50N70[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
738  static const std::pair<G4int, const G4double*> Z50N70(70,pZ50N70);
739  static const G4double pZ50N72[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
740  static const std::pair<G4int, const G4double*> Z50N72(72,pZ50N72);
741  static const G4double pZ50N74[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
742  static const std::pair<G4int, const G4double*> Z50N74(74,pZ50N74);
743  static const std::pair<G4int, const G4double*> Z50[N50]={Z50N62, Z50N64, Z50N65, Z50N66,
744  Z50N67, Z50N68, Z50N69, Z50N70,
745  Z50N72, Z50N74};
746  //==> Sb(Z=51)
747  static const G4int N51=2;
748  static const G4double pZ51N70[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
749  static const std::pair<G4int, const G4double*> Z51N70(70,pZ51N70);
750  static const G4double pZ51N72[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
751  static const std::pair<G4int, const G4double*> Z51N72(72,pZ51N72);
752  static const std::pair<G4int, const G4double*> Z51[N51]={Z51N70, Z51N72};
753  //==> Te(Z=52)
754  static const G4int N52=8;
755  static const G4double pZ52N68[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
756  static const std::pair<G4int, const G4double*> Z52N68(68,pZ52N68);
757  static const G4double pZ52N70[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
758  static const std::pair<G4int, const G4double*> Z52N70(70,pZ52N70);
759  static const G4double pZ52N71[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
760  static const std::pair<G4int, const G4double*> Z52N71(71,pZ52N71);
761  static const G4double pZ52N72[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
762  static const std::pair<G4int, const G4double*> Z52N72(72,pZ52N72);
763  static const G4double pZ52N73[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
764  static const std::pair<G4int, const G4double*> Z52N73(73,pZ52N73);
765  static const G4double pZ52N74[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
766  static const std::pair<G4int, const G4double*> Z52N74(74,pZ52N74);
767  static const G4double pZ52N76[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
768  static const std::pair<G4int, const G4double*> Z52N76(76,pZ52N76);
769  static const G4double pZ52N78[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
770  static const std::pair<G4int, const G4double*> Z52N78(78,pZ52N78);
771  static const std::pair<G4int, const G4double*> Z52[N52]={Z52N68, Z52N70, Z52N71, Z52N72,
772  Z52N73, Z52N74, Z52N76, Z52N78};
773  //==> I (Z=53)
774  static const G4int N53=1;
775  static const G4double pZ53N74[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
776  static const std::pair<G4int, const G4double*> Z53N74(74,pZ53N74);
777  static const std::pair<G4int, const G4double*> Z53[N53]={Z53N74};
778  //==> Xe(Z=54)
779  static const G4int N54=9;
780  static const G4double pZ54N70[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
781  static const std::pair<G4int, const G4double*> Z54N70(70,pZ54N70);
782  static const G4double pZ54N72[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
783  static const std::pair<G4int, const G4double*> Z54N72(72,pZ54N72);
784  static const G4double pZ54N74[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
785  static const std::pair<G4int, const G4double*> Z54N74(74,pZ54N74);
786  static const G4double pZ54N75[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
787  static const std::pair<G4int, const G4double*> Z54N75(75,pZ54N75);
788  static const G4double pZ54N76[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
789  static const std::pair<G4int, const G4double*> Z54N76(76,pZ54N76);
790  static const G4double pZ54N77[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
791  static const std::pair<G4int, const G4double*> Z54N77(77,pZ54N77);
792  static const G4double pZ54N78[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
793  static const std::pair<G4int, const G4double*> Z54N78(78,pZ54N78);
794  static const G4double pZ54N80[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
795  static const std::pair<G4int, const G4double*> Z54N80(80,pZ54N80);
796  static const G4double pZ54N82[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
797  static const std::pair<G4int, const G4double*> Z54N82(82,pZ54N82);
798  static const std::pair<G4int, const G4double*> Z54[N54]={Z54N70, Z54N72, Z54N74,
799  Z54N75, Z54N76, Z54N77,
800  Z54N78, Z54N80, Z54N82};
801  //==> Cs(Z=55)
802  static const G4int N55=1;
803  static const G4double pZ55N78[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
804  static const std::pair<G4int, const G4double*> Z55N78(78,pZ55N78);
805  static const std::pair<G4int, const G4double*> Z55[N55]={Z55N78};
806  //==> Ba(Z=56)
807  static const G4int N56=7;
808  static const G4double pZ56N74[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
809  static const std::pair<G4int, const G4double*> Z56N74(74,pZ56N74);
810  static const G4double pZ56N76[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
811  static const std::pair<G4int, const G4double*> Z56N76(76,pZ56N76);
812  static const G4double pZ56N78[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
813  static const std::pair<G4int, const G4double*> Z56N78(78,pZ56N78);
814  static const G4double pZ56N79[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
815  static const std::pair<G4int, const G4double*> Z56N79(79,pZ56N79);
816  static const G4double pZ56N80[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
817  static const std::pair<G4int, const G4double*> Z56N80(80,pZ56N80);
818  static const G4double pZ56N81[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
819  static const std::pair<G4int, const G4double*> Z56N81(81,pZ56N81);
820  static const G4double pZ56N82[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
821  static const std::pair<G4int, const G4double*> Z56N82(82,pZ56N82);
822  static const std::pair<G4int, const G4double*> Z56[N56]={Z56N74, Z56N76, Z56N78, Z56N79,
823  Z56N80, Z56N81, Z56N82};
824  //==> La(Z=57)
825  static const G4int N57=2;
826  static const G4double pZ57N81[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
827  static const std::pair<G4int, const G4double*> Z57N81(81,pZ57N81);
828  static const G4double pZ57N82[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
829  static const std::pair<G4int, const G4double*> Z57N82(82,pZ57N82);
830  static const std::pair<G4int, const G4double*> Z57[N57]={Z57N81, Z57N82};
831  //==> Ce(Z=58)
832  static const G4int N58=4;
833  static const G4double pZ58N78[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
834  static const std::pair<G4int, const G4double*> Z58N78(78,pZ58N78);
835  static const G4double pZ58N80[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
836  static const std::pair<G4int, const G4double*> Z58N80(80,pZ58N80);
837  static const G4double pZ58N82[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
838  static const std::pair<G4int, const G4double*> Z58N82(82,pZ58N82);
839  static const G4double pZ58N84[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
840  static const std::pair<G4int, const G4double*> Z58N84(84,pZ58N84);
841  static const std::pair<G4int, const G4double*> Z58[N58]={Z58N78, Z58N80, Z58N82, Z58N84};
842  //==> Pr(Z=59)
843  static const G4int N59=1;
844  static const G4double pZ59N82[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
845  static const std::pair<G4int, const G4double*> Z59N82(82,pZ59N82);
846  static const std::pair<G4int, const G4double*> Z59[N59]={Z59N82};
847  //==> Nd(Z=60)
848  static const G4int N60=7;
849  static const G4double pZ60N82[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
850  static const std::pair<G4int, const G4double*> Z60N82(82,pZ60N82);
851  static const G4double pZ60N83[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
852  static const std::pair<G4int, const G4double*> Z60N83(83,pZ60N83);
853  static const G4double pZ60N84[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
854  static const std::pair<G4int, const G4double*> Z60N84(84,pZ60N84);
855  static const G4double pZ60N85[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
856  static const std::pair<G4int, const G4double*> Z60N85(85,pZ60N85);
857  static const G4double pZ60N86[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
858  static const std::pair<G4int, const G4double*> Z60N86(86,pZ60N86);
859  static const G4double pZ60N88[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
860  static const std::pair<G4int, const G4double*> Z60N88(88,pZ60N88);
861  static const G4double pZ60N90[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
862  static const std::pair<G4int, const G4double*> Z60N90(90,pZ60N90);
863  static const std::pair<G4int, const G4double*> Z60[N60]={Z60N82, Z60N83, Z60N84, Z60N85,
864  Z60N86, Z60N88, Z60N90};
865  //==> Mo(Z=61)
866  static const G4int N61=1;
867  static const G4double pZ61N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
868  static const std::pair<G4int, const G4double*> Z61N0(0,pZ61N0);
869  static const std::pair<G4int, const G4double*> Z61[N61]={Z61N0};
870  //==> Sm(Z=62)
871  static const G4int N62=7;
872  static const G4double pZ62N82[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
873  static const std::pair<G4int, const G4double*> Z62N82(82,pZ62N82);
874  static const G4double pZ62N85[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
875  static const std::pair<G4int, const G4double*> Z62N85(85,pZ62N85);
876  static const G4double pZ62N86[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
877  static const std::pair<G4int, const G4double*> Z62N86(86,pZ62N86);
878  static const G4double pZ62N87[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
879  static const std::pair<G4int, const G4double*> Z62N87(87,pZ62N87);
880  static const G4double pZ62N88[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
881  static const std::pair<G4int, const G4double*> Z62N88(88,pZ62N88);
882  static const G4double pZ62N90[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
883  static const std::pair<G4int, const G4double*> Z62N90(90,pZ62N90);
884  static const G4double pZ62N92[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
885  static const std::pair<G4int, const G4double*> Z62N92(92,pZ62N92);
886  static const std::pair<G4int, const G4double*> Z62[N62]={Z62N82, Z62N85, Z62N86, Z62N87,
887  Z62N88, Z62N90, Z62N92};
888  //==> Eu(Z=63)
889  static const G4int N63=2;
890  static const G4double pZ63N88[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
891  static const std::pair<G4int, const G4double*> Z63N88(88,pZ63N88);
892  static const G4double pZ63N90[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
893  static const std::pair<G4int, const G4double*> Z63N90(90,pZ63N90);
894  static const std::pair<G4int, const G4double*> Z63[N63]={Z63N88, Z63N90};
895  //==> Gd(Z=64)
896  static const G4int N64=7;
897  static const G4double pZ64N88[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
898  static const std::pair<G4int, const G4double*> Z64N88(88,pZ64N88);
899  static const G4double pZ64N90[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
900  static const std::pair<G4int, const G4double*> Z64N90(90,pZ64N90);
901  static const G4double pZ64N91[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
902  static const std::pair<G4int, const G4double*> Z64N91(91,pZ64N91);
903  static const G4double pZ64N92[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
904  static const std::pair<G4int, const G4double*> Z64N92(92,pZ64N92);
905  static const G4double pZ64N93[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
906  static const std::pair<G4int, const G4double*> Z64N93(93,pZ64N93);
907  static const G4double pZ64N94[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
908  static const std::pair<G4int, const G4double*> Z64N94(94,pZ64N94);
909  static const G4double pZ64N96[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
910  static const std::pair<G4int, const G4double*> Z64N96(96,pZ64N96);
911  static const std::pair<G4int, const G4double*> Z64[N64]={Z64N88, Z64N90, Z64N91, Z64N92,
912  Z64N93, Z64N94, Z64N96};
913  //==> Tb(Z=65)
914  static const G4int N65=1;
915  static const G4double pZ65N94[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
916  static const std::pair<G4int, const G4double*> Z65N94(82,pZ65N94);
917  static const std::pair<G4int, const G4double*> Z65[N65]={Z65N94};
918  //==> Dy(Z=66)
919  static const G4int N66=7;
920  static const G4double pZ66N90[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
921  static const std::pair<G4int, const G4double*> Z66N90(90,pZ66N90);
922  static const G4double pZ66N92[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
923  static const std::pair<G4int, const G4double*> Z66N92(92,pZ66N92);
924  static const G4double pZ66N94[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
925  static const std::pair<G4int, const G4double*> Z66N94(94,pZ66N94);
926  static const G4double pZ66N95[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
927  static const std::pair<G4int, const G4double*> Z66N95(95,pZ66N95);
928  static const G4double pZ66N96[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
929  static const std::pair<G4int, const G4double*> Z66N96(96,pZ66N96);
930  static const G4double pZ66N97[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
931  static const std::pair<G4int, const G4double*> Z66N97(97,pZ66N97);
932  static const G4double pZ66N98[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
933  static const std::pair<G4int, const G4double*> Z66N98(98,pZ66N98);
934  static const std::pair<G4int, const G4double*> Z66[N66]={Z66N90, Z66N92, Z66N94, Z66N95,
935  Z66N96, Z66N97, Z66N98};
936  //==> Ho(Z=67)
937  static const G4int N67=1;
938  static const G4double pZ67N98[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
939  static const std::pair<G4int, const G4double*> Z67N98(98,pZ67N98);
940  static const std::pair<G4int, const G4double*> Z67[N67]={Z67N98};
941  //==> Er(Z=68)
942  static const G4int N68=6;
943  static const G4double pZ68N94[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
944  static const std::pair<G4int, const G4double*> Z68N94(94,pZ68N94);
945  static const G4double pZ68N96[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
946  static const std::pair<G4int, const G4double*> Z68N96(96,pZ68N96);
947  static const G4double pZ68N98[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
948  static const std::pair<G4int, const G4double*> Z68N98(98,pZ68N98);
949  static const G4double pZ68N99[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
950  static const std::pair<G4int, const G4double*> Z68N99(99,pZ68N99);
951  static const G4double pZ68N100[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
952  static const std::pair<G4int, const G4double*> Z68N100(100,pZ68N100);
953  static const G4double pZ68N102[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
954  static const std::pair<G4int, const G4double*> Z68N102(102,pZ68N102);
955  static const std::pair<G4int, const G4double*> Z68[N68]={Z68N94, Z68N96, Z68N98,
956  Z68N99, Z68N100, Z68N102};
957  //==> Tm(Z=69)
958  static const G4int N69=1;
959  static const G4double pZ69N100[4]={3.E-12, 500., .01, 2.5E-4}; // *** No DATA ***
960  static const std::pair<G4int, const G4double*> Z69N100(100,pZ69N100);
961  static const std::pair<G4int, const G4double*> Z69[N69]={Z69N100};
962  //==> Yb(Z=70)
963  static const G4int N70=7;
964  static const G4double pZ70N98[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
965  static const std::pair<G4int, const G4double*> Z70N98(98,pZ70N98);
966  static const G4double pZ70N100[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
967  static const std::pair<G4int, const G4double*> Z70N100(100,pZ70N100);
968  static const G4double pZ70N101[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
969  static const std::pair<G4int, const G4double*> Z70N101(101,pZ70N101);
970  static const G4double pZ70N102[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
971  static const std::pair<G4int, const G4double*> Z70N102(102,pZ70N102);
972  static const G4double pZ70N103[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
973  static const std::pair<G4int, const G4double*> Z70N103(103,pZ70N103);
974  static const G4double pZ70N104[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
975  static const std::pair<G4int, const G4double*> Z70N104(104,pZ70N104);
976  static const G4double pZ70N106[4]={3.E-12, 500., .01, 2.5E-4}; // *** No DATA ***
977  static const std::pair<G4int, const G4double*> Z70N106(106,pZ70N106);
978  static const std::pair<G4int, const G4double*> Z70[N70]={Z70N98, Z70N100, Z70N101,
979  Z70N102, Z70N103, Z70N104,
980  Z70N106};
981  //==> Lu(Z=71)
982  static const G4int N71=2;
983  static const G4double pZ71N104[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
984  static const std::pair<G4int, const G4double*> Z71N104(104,pZ71N104);
985  static const G4double pZ71N105[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
986  static const std::pair<G4int, const G4double*> Z71N105(105,pZ71N105);
987  static const std::pair<G4int, const G4double*> Z71[N71]={Z71N104, Z71N105};
988  //==> Hf(Z=72)
989  static const G4int N72=6;
990  static const G4double pZ72N102[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
991  static const std::pair<G4int, const G4double*> Z72N102(102,pZ72N102);
992  static const G4double pZ72N104[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
993  static const std::pair<G4int, const G4double*> Z72N104(104,pZ72N104);
994  static const G4double pZ72N105[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
995  static const std::pair<G4int, const G4double*> Z72N105(105,pZ72N105);
996  static const G4double pZ72N106[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
997  static const std::pair<G4int, const G4double*> Z72N106(106,pZ72N106);
998  static const G4double pZ72N107[4]={3.E-12, 500., .01, 2.5E-5}; // *** NotImplemented ***
999  static const std::pair<G4int, const G4double*> Z72N107(107,pZ72N107);
1000  static const G4double pZ72N108[4]={3.E-12, 500., .01, 2.5E-4}; // *** NotImplemented ***
1001  static const std::pair<G4int, const G4double*> Z72N108(108,pZ72N108);
1002  static const std::pair<G4int, const G4double*> Z72[N72]={Z72N102, Z72N104, Z72N105,
1003  Z72N106, Z72N107, Z72N108};
1004  //==> Ta(Z=73)
1005  static const G4int N73=1;
1006  static const G4double pZ73N108[4]={4.E-12, 1100., .027, 1.E-3};
1007  static const std::pair<G4int, const G4double*> Z73N108(108,pZ73N108);
1008  static const std::pair<G4int, const G4double*> Z73[N73]={Z73N108};
1009  //==> W (Z=74)
1010  static const G4int N74=5;
1011  static const G4double pZ74N106[4]={7.E-12, 1000., .03, 2.E-4}; // *** No DATA ***
1012  static const std::pair<G4int, const G4double*> Z74N106(106,pZ74N106);
1013  static const G4double pZ74N108[4]={7.E-12, 1300., .03, 1.5E-4};
1014  static const std::pair<G4int, const G4double*> Z74N108(108,pZ74N108);
1015  static const G4double pZ74N109[4]={2.E-12, 1700., .023, 2.E-4};
1016  static const std::pair<G4int, const G4double*> Z74N109(109,pZ74N109);
1017  static const G4double pZ74N110[4]={7.E-12, 1100., .03, 1.5E-4};
1018  static const std::pair<G4int, const G4double*> Z74N110(110,pZ74N110);
1019  static const G4double pZ74N112[4]={7.E-12, 1100., .03, 1.5E-4};
1020  static const std::pair<G4int, const G4double*> Z74N112(112,pZ74N112);
1021  static const std::pair<G4int, const G4double*> Z74[N74]={Z74N106, Z74N108, Z74N109,
1022  Z74N110, Z74N112};
1023  //==> Re(Z=75)
1024  static const G4int N75=2;
1025  static const G4double pZ75N110[4]={5.E-12, 1000., .025, 3.E-4};
1026  static const std::pair<G4int, const G4double*> Z75N110(110,pZ75N110);
1027  static const G4double pZ75N112[4]={5.E-12, 1000., .025, 3.E-4};
1028  static const std::pair<G4int, const G4double*> Z75N112(112,pZ75N112);
1029  static const std::pair<G4int, const G4double*> Z75[N75]={Z75N110, Z75N112};
1030  //==> Os(Z=76)
1031  static const G4int N76=7;
1032  static const G4double pZ76N108[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1033  static const std::pair<G4int, const G4double*> Z76N108(108,pZ76N108);
1034  static const G4double pZ76N110[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1035  static const std::pair<G4int, const G4double*> Z76N110(110,pZ76N110);
1036  static const G4double pZ76N111[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1037  static const std::pair<G4int, const G4double*> Z76N111(111,pZ76N111);
1038  static const G4double pZ76N112[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1039  static const std::pair<G4int, const G4double*> Z76N112(112,pZ76N112);
1040  static const G4double pZ76N113[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1041  static const std::pair<G4int, const G4double*> Z76N113(113,pZ76N113);
1042  static const G4double pZ76N114[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1043  static const std::pair<G4int, const G4double*> Z76N114(114,pZ76N114);
1044  static const G4double pZ76N116[4]={3.E-12, 500., .01, 2.5E-4}; // *** No DATA ***
1045  static const std::pair<G4int, const G4double*> Z76N116(116,pZ76N116);
1046  static const std::pair<G4int, const G4double*> Z76[N76]={Z76N108, Z76N110, Z76N111,
1047  Z76N112, Z76N113, Z76N114,
1048  Z76N116};
1049  //==> Ir(Z=77)
1050  static const G4int N77=2;
1051  static const G4double pZ77N114[4]={4.E-12, 1700., .028, 2.E-4};
1052  static const std::pair<G4int, const G4double*> Z77N114(114,pZ77N114);
1053  static const G4double pZ77N116[4]={5.E-12, 1500., .028, 2.E-4};
1054  static const std::pair<G4int, const G4double*> Z77N116(116,pZ77N116);
1055  static const std::pair<G4int, const G4double*> Z77[N77]={Z77N114, Z77N116};
1056  //==> Pt(Z=78)
1057  static const G4int N78=6;
1058  static const G4double pZ78N112[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1059  static const std::pair<G4int, const G4double*> Z78N112(112,pZ78N112);
1060  static const G4double pZ78N114[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1061  static const std::pair<G4int, const G4double*> Z78N114(114,pZ78N114);
1062  static const G4double pZ78N116[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1063  static const std::pair<G4int, const G4double*> Z78N116(116,pZ78N116);
1064  static const G4double pZ78N117[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1065  static const std::pair<G4int, const G4double*> Z78N117(117,pZ78N117);
1066  static const G4double pZ78N118[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1067  static const std::pair<G4int, const G4double*> Z78N118(118,pZ78N118);
1068  static const G4double pZ78N120[4]={3.E-12, 500., .01, 2.5E-4}; // *** No DATA ***
1069  static const std::pair<G4int, const G4double*> Z78N120(120,pZ78N120);
1070  static const std::pair<G4int, const G4double*> Z78[N78]={Z78N112, Z78N114, Z78N116,
1071  Z78N117, Z78N118, Z78N120};
1072  //==> Au(Z=79)
1073  static const G4int N79=1;
1074  static const G4double pZ79N118[4]={.2E-9, 1600., .043, 5.E-4};
1075  static const std::pair<G4int, const G4double*> Z79N118(118,pZ79N118);
1076  static const std::pair<G4int, const G4double*> Z79[N79]={Z79N118};
1077  //==> Hg(Z=80)
1078  static const G4int N80=7;
1079  static const G4double pZ80N116[4]={6.E-8, 2500., .085, 2.E-3};
1080  static const std::pair<G4int, const G4double*> Z80N116(116,pZ80N116);
1081  static const G4double pZ80N118[4]={6.E-8, 2500., .083, 1.7E-3};
1082  static const std::pair<G4int, const G4double*> Z80N118(118,pZ80N118);
1083  static const G4double pZ80N119[4]={6.E-8, 2600., .073, 2.5E-3};
1084  static const std::pair<G4int, const G4double*> Z80N119(119,pZ80N119);
1085  static const G4double pZ80N120[4]={6.E-8, 2500., .084, 1.7E-3};
1086  static const std::pair<G4int, const G4double*> Z80N120(120,pZ80N120);
1087  static const G4double pZ80N121[4]={1.5E-7, 2600., .078, 4.E-3};
1088  static const std::pair<G4int, const G4double*> Z80N121(121,pZ80N121);
1089  static const G4double pZ80N122[4]={6.E-8, 2500., .083, 1.6E-3};
1090  static const std::pair<G4int, const G4double*> Z80N122(122,pZ80N122);
1091  static const G4double pZ80N124[4]={6.E-8, 2500., .083, 1.5E-3};
1092  static const std::pair<G4int, const G4double*> Z80N124(124,pZ80N124);
1093  static const std::pair<G4int, const G4double*> Z80[N80]={Z80N116, Z80N118, Z80N119,
1094  Z80N120, Z80N121, Z80N122,
1095  Z80N124};
1096  //==> Tl(Z=81)
1097  static const G4int N81=2;
1098  static const G4double pZ81N122[4]={3.E-12, 500., .01, 2.5E-5}; // *** No DATA ***
1099  static const std::pair<G4int, const G4double*> Z81N122(122,pZ81N122);
1100  static const G4double pZ81N124[4]={3.E-12, 500., .01, 2.5E-4}; // *** No DATA ***
1101  static const std::pair<G4int, const G4double*> Z81N124(124,pZ81N124);
1102  static const std::pair<G4int, const G4double*> Z81[N81]={Z81N122, Z81N124};
1103  //==> Pb(Z=82)
1104  static const G4int N82=4;
1105  static const G4double pZ82N122[4]={.2E-9, 40., .002, 6.E-4};
1106  static const std::pair<G4int, const G4double*> Z82N122(122,pZ82N122);
1107  static const G4double pZ82N124[4]={6.E-9, 1700., .076, 7.E-4};
1108  static const std::pair<G4int, const G4double*> Z82N124(124,pZ82N124);
1109  static const G4double pZ82N125[4]={.2E-9, 770., .057, 4.5E-4};
1110  static const std::pair<G4int, const G4double*> Z82N125(125,pZ82N125);
1111  static const G4double pZ82N126[4]={4.E-9, 0., .051, 2.E-4};
1112  static const std::pair<G4int, const G4double*> Z82N126(126,pZ82N126);
1113  static const std::pair<G4int, const G4double*> Z82[N82]={Z82N122, Z82N124, Z82N125,
1114  Z82N126};
1115  //==> Bi(Z=83)
1116  static const G4int N83=1;
1117  static const G4double pZ83N126[4]={1.5E-9, 150., .052, 5.E-5};
1118  static const std::pair<G4int, const G4double*> Z83N126(126,pZ83N126);
1119  static const std::pair<G4int, const G4double*> Z83[N83]={Z83N126};
1120  //==> Po(Z=84)
1121  static const G4int N84=1;
1122  static const G4double pZ84N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1123  static const std::pair<G4int, const G4double*> Z84N0(0,pZ84N0);
1124  static const std::pair<G4int, const G4double*> Z84[N84]={Z84N0};
1125  //==> At(Z=85)
1126  static const G4int N85=1;
1127  static const G4double pZ85N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1128  static const std::pair<G4int, const G4double*> Z85N0(0,pZ85N0);
1129  static const std::pair<G4int, const G4double*> Z85[N85]={Z85N0};
1130  //==> Rn(Z=86)
1131  static const G4int N86=1;
1132  static const G4double pZ86N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1133  static const std::pair<G4int, const G4double*> Z86N0(0,pZ86N0);
1134  static const std::pair<G4int, const G4double*> Z86[N86]={Z86N0};
1135  //==> Fr(Z=87)
1136  static const G4int N87=1;
1137  static const G4double pZ87N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1138  static const std::pair<G4int, const G4double*> Z87N0(0,pZ87N0);
1139  static const std::pair<G4int, const G4double*> Z87[N87]={Z87N0};
1140  //==> Ra(Z=88)
1141  static const G4int N88=1;
1142  static const G4double pZ88N138[4]={3.E-9, 2200., .057, 1.2E-3};
1143  static const std::pair<G4int, const G4double*> Z88N138(138,pZ88N138);
1144  static const std::pair<G4int, const G4double*> Z88[N88]={Z88N138};
1145  //==> Ac(Z=89)
1146  static const G4int N89=1;
1147  static const G4double pZ89N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1148  static const std::pair<G4int, const G4double*> Z89N0(0,pZ89N0);
1149  static const std::pair<G4int, const G4double*> Z89[N89]={Z89N0};
1150  //==> Th(Z=90)
1151  static const G4int N90=1;
1152  static const G4double pZ90N142[4]={1.E-11, 1200., .028, 3.E-4};
1153  static const std::pair<G4int, const G4double*> Z90N142(142,pZ90N142);
1154  static const std::pair<G4int, const G4double*> Z90[N90]={Z90N142};
1155  //==> Pa(Z=91)
1156  static const G4int N91=1;
1157  static const G4double pZ91N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1158  static const std::pair<G4int, const G4double*> Z91N0(0,pZ91N0);
1159  static const std::pair<G4int, const G4double*> Z91[N91]={Z91N0};
1160  //==> U (Z=92)
1161  static const G4int N92=2;
1162  static const G4double pZ92N143[4]={2.E-11, 2700., .026, 6.E-4};
1163  static const std::pair<G4int, const G4double*> Z92N143(143,pZ92N143);
1164  static const G4double pZ92N146[4]={1.E-11, 1700., .029, 2.5E-4};
1165  static const std::pair<G4int, const G4double*> Z92N146(146,pZ92N146);
1166  static const std::pair<G4int, const G4double*> Z92[N92]={Z92N143, Z92N146};
1167  //==> Np(Z=93)
1168  static const G4int N93=1;
1169  static const G4double pZ93N144[4]={4.E-8, 3700., .066, 3.5E-3};
1170  static const std::pair<G4int, const G4double*> Z93N144(144,pZ93N144);
1171  static const std::pair<G4int, const G4double*> Z93[N93]={Z93N144};
1172  //==> Pu(Z=94)
1173  static const G4int N94=3;
1174  static const G4double pZ94N145[4]={8.E-11, 2900., .029, 1.3E-3}; // *** Artificial ***
1175  static const std::pair<G4int, const G4double*> Z94N145(145,pZ94N145);
1176  static const G4double pZ94N148[4]={9.E-12, 1400., .025, 3.E-4}; // *** Artificial ***
1177  static const std::pair<G4int, const G4double*> Z94N148(148,pZ94N148);
1178  static const G4double pZ94N150[4]={4.E-12, 1500., .023, 1.2E-4};
1179  static const std::pair<G4int, const G4double*> Z94N150(150,pZ94N150);
1180  static const std::pair<G4int, const G4double*> Z94[N94]={Z94N145, Z94N148, Z94N150};
1181  //==> Am(Z=95)
1182  static const G4int N95=1;
1183  static const G4double pZ95N0[4]={3.E-12, 500., .01, 2.5E-4}; // *** NoStableIsotopes ***
1184  static const std::pair<G4int, const G4double*> Z95N0(0,pZ95N0);
1185  static const std::pair<G4int, const G4double*> Z95[N95]={Z95N0};
1186  //==> Cm(Z=96)
1187  static const G4int N96=1;
1188  static const G4double pZ96N151[4]={1.5E-8, 3700., .055, 2.E-3};
1189  static const std::pair<G4int, const G4double*> Z96N151(151,pZ96N151);
1190  static const std::pair<G4int, const G4double*> Z96[N96]={Z96N151};
1191 
1192  static const G4int NZ=97; // #of Elements covered by CHIPS
1193  static const std::pair<G4int, const G4double*>* Pars[NZ]={Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,
1194  Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18,Z19,Z20,Z21,Z22,Z23,Z24,Z25,Z26,Z27,Z28,Z29,Z30,
1195  Z31,Z32,Z33,Z34,Z35,Z36,Z37,Z38,Z39,Z40,Z41,Z42,Z43,Z44,Z45,Z46,Z47,Z48,Z49,Z50,Z51,
1196  Z52,Z53,Z54,Z55,Z56,Z57,Z58,Z59,Z60,Z61,Z62,Z63,Z64,Z65,Z66,Z67,Z68,Z69,Z70,Z71,Z72,
1197  Z73,Z74,Z75,Z76,Z77,Z78,Z79,Z80,Z81,Z82,Z83,Z84,Z85,Z86,Z87,Z88,Z89,Z90,Z91,Z92,Z93,
1198  Z94,Z95,Z96};
1199  static const G4int NIso[NZ]={N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15,N16,
1200  N17,N18,N19,N20,N21,N22,N23,N24,N25,N26,N27,N28,N29,N30,N31,N32,N33,N34,N35,N36,N37,
1201  N38,N39,N40,N41,N42,N43,N44,N45,N46,N47,N48,N49,N50,N51,N52,N53,N54,N55,N56,N57,N58,
1202  N59,N60,N61,N62,N63,N64,N65,N66,N67,N68,N69,N70,N71,N72,N73,N74,N75,N76,N77,N78,N79,
1203  N80,N81,N82,N83,N84,N85,N86,N87,N88,N89,N90,N91,N92,N93,N94,N95,N96};
1204  //G4int curN=Pars[1][0].first;
1205  //G4double par=Pars[1][0].second[1];
1206  //G4cout<<"-Warning-G4ChipsNeutronInelasticXS::CSLin: N="<<curN<<", P="<<par<<G4endl;
1207  G4double sigma=0.;
1208  G4double lP=G4Log(P);
1209  if( (tZ==1 && !tN) || (!tZ && tN==1)){if(P>.35) sigma=CrossSectionFormula(tZ,tN,P,lP);}
1210  else if(tZ<97 && tN<152) // General solution (*** Z/A limits ***)
1211  {
1212  HEthresh=1.E-4; // Default guess
1213  G4double pex=0.;
1214  G4double pos=0.;
1215  G4double wid=1.;
1216  G4int nn=NIso[tZ];
1217  G4bool nfound=true;
1218  if(nn) for (G4int in=0; in<nn; in++)
1219  {
1220  std::pair<G4int, const G4double*> curIs=Pars[tZ][in];
1221  if(curIs.first == tN)
1222  {
1223  const G4double* curT=curIs.second;
1224  HEthresh= curT[0];
1225  pex = curT[1];
1226  pos = curT[2];
1227  wid = curT[3];
1228  nfound = false;
1229  break;
1230  }
1231  }
1232  if(nfound) G4cout<<"-Warning-G4ChipsNeutronInelasticXS::CSLin: Z="<<tZ<<", N="
1233  <<tN<<" isotope is not implemented in CHIPS"<<G4endl;
1234  sigma=CrossSectionFormula(tZ,tN,P,lP);
1235  if(pex>0.)
1236  {
1237  G4double dp=P-pos;
1238  sigma+=pex*G4Exp(-dp*dp/wid);
1239  }
1240  }
1241  else
1242  {
1243  G4cerr<<"-Warning-G4ChipsNeutronNuclearCroSect::CSLin:*Bad A* Z="<<tZ<<", N="<<tN<<G4endl;
1244  sigma=0.;
1245  }
1246  if(sigma<0.) return 0.;
1247  return sigma;
1248 }
1249 
1250 // Calculation formula for proton-nuclear inelastic cross-section (mb) log(P in GeV/c)
1252 {
1253  G4double P=G4Exp(lP);
1254  return CrossSectionFormula(tZ, tN, P, lP);
1255 }
1256 // Calculation formula for proton-nuclear inelastic cross-section (mb) log(P in GeV/c)
1258  G4double P, G4double lP)
1259 {
1260  G4double sigma=0.;
1261  if(tZ==1 && !tN) // np interaction from G4QuasiElasticRatios
1262  {
1263 
1264  G4double El(0.), To(0.); // Uzhi
1265  if(P<0.1) // Copied from G4QuasiElasticRatios Uzhi / start
1266  {
1267  G4double p2=P*P;
1268  El=1./(0.00012+p2*(0.051+0.1*p2));
1269  To=El;
1270  }
1271  else if(P>1000.)
1272  {
1273  G4double lp=G4Log(P)-3.5;
1274  G4double lp2=lp*lp;
1275  El=0.0557*lp2+6.72;
1276  To=0.3 *lp2+38.2;
1277  }
1278  else
1279  {
1280  G4double p2=P*P;
1281  G4double LE=1./(0.00012+p2*(0.051+0.1*p2));
1282  G4double lp=G4Log(P)-3.5;
1283  G4double lp2=lp*lp;
1284  G4double rp2=1./p2;
1285  El=LE+(0.0557*lp2+6.72+30./P)/(1.+0.49*rp2/P);
1286  To=LE+(0.3 *lp2+38.2)/(1.+0.54*rp2*rp2);
1287  } // Copied from G4QuasiElasticRatios Uzhi / end
1288 
1289 /* // Uzhi 4.03.2013
1290  G4double p2=P*P;
1291  G4double lp=lP-3.5;
1292  G4double lp2=lp*lp;
1293  G4double rp2=1./p2;
1294  G4double El=(.0557*lp2+6.72+32.6/P)/(1.+rp2/P);
1295  G4double To=(.3*lp2+38.2+52.7*rp2)/(1.+2.72*rp2*rp2);
1296 */ // Uzhi 4.03.2013
1297  sigma=To-El;
1298  }
1299  else if(tZ<97 && tN<152) // General solution
1300  {
1301  //G4double lP=G4Log(P); // Already calculated
1302  G4double d=lP-4.2; //
1303  G4double p2=P*P; //
1304  G4double p4=p2*p2; //
1305  G4double a=tN+tZ; // A of the target
1306  G4double al=G4Log(a); //
1307  G4double sa=std::sqrt(a); //
1308  G4double a2=a*a; //
1309  G4double sa2=sa*a2; //
1310  G4double a3=a2*a; //
1311  G4double a4=a2*a2; //
1312  //G4double a5=a4*a;
1313  G4double a6=a4*a2; //
1314  G4double a7=a6*a; //
1315  G4double a8=a4*a4; //
1316  //G4double a12=a8*a4;
1317  //G4double a16=a8*a8;
1318  G4double c=(170.+3600./sa2)/(1.+65./sa2);
1319  G4double dl=al-3.;
1320  G4double dl2=dl*dl;
1321  G4double r=.21+.62*dl2/(1.+.5*dl2);
1322  G4double gg=42.*(G4Exp(al*0.8)+4.E-8*a4)/(1.+28./a)/(1.+5.E-5*a2);
1323  G4double e=5.*((a6+.021*a8)/(1.+.0013*a7)+.001*a3)/(1.+.0007*a2);
1324  G4double ss=5./(1.+144./a8);
1325  G4double h=HEthresh; // Individual
1326 
1327  //G4double h=(.01/a4+2.5e-6/a)*(1.+7.e-8*a4)/(1.+6.e7/a12/a2);
1328  //sigma=(c+d*d)/(1.+r/p4)+(gg+e*G4Exp(-ss*P))/(1.+h/p4/p4);
1329  sigma=(c+d*d)/(1+r/p4)+(gg+e*G4Exp(-ss*P))/(1+h/p4/p4);
1330  }
1331  else
1332  {
1333  G4cerr<<"-Warning-G4ChipsNeutronNuclearCroSect::CSForm:*Bad A* Z="<<tZ<<", N="<<tN<<G4endl;
1334  sigma=0.;
1335  }
1336  if(sigma<0.) return 0.;
1337  return sigma;
1338 }
1339 
1341 {
1342  if(DX<=0. || N<2)
1343  {
1344  G4cerr<<"***G4ChipsNeutronInelasticXS::EquLinearFit: DX="<<DX<<", N="<<N<<G4endl;
1345  return Y[0];
1346  }
1347 
1348  G4int N2=N-2;
1349  G4double d=(X-X0)/DX;
1350  G4int jj=static_cast<int>(d);
1351  if (jj<0) jj=0;
1352  else if(jj>N2) jj=N2;
1353  d-=jj; // excess
1354  G4double yi=Y[jj];
1355  G4double sigma=yi+(Y[jj+1]-yi)*d;
1356 
1357  return sigma;
1358 }