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