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