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