Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4UPiNuclearCrossSection.cc
이 파일의 문서화 페이지로 가기
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 // Calculation of the total, elastic and inelastic cross-sections
28 // based on Barashenkov parametrisations of pion data
29 //
30 // 16.08.06 V.Ivanchenko - first implementation on base of
31 // J.P Wellisch class G4PiNuclearCrossSection
32 // 22.01.07 V.Ivanchenko - add cross section interfaces with Z and A
33 // 05.03.07 V.Ivanchenko - fix weight for interpolation
34 // 13.03.07 V.Ivanchenko - cleanup at low energies
35 // 11.09.09 V.Ivanchenko - fixed bug in interpolation
36 //
37 
39 #include "G4SystemOfUnits.hh"
40 #include "G4LPhysicsFreeVector.hh"
41 #include "G4PionMinus.hh"
42 #include "G4PionPlus.hh"
43 #include "G4PhysicsTable.hh"
44 #include "G4NistManager.hh"
45 #include "G4HadronicException.hh"
46 
48  : G4VCrossSectionDataSet("G4UPiNuclearCrossSection")
49 {
50  isInitialized = false;
54 
55  NZ = 16;
56  aPower = 0.75;
57  elow = 20.0*MeV;
58  elowest = MeV;
60  for(G4int i=1; i<93; ++i) {
62  }
63 }
64 
66 {
71  delete piPlusElastic;
72  delete piPlusInelastic;
73  delete piMinusElastic;
74  delete piMinusInelastic;
75 }
76 
77 G4bool
79  G4int Z, const G4Material*)
80 {
81  return (1 < Z);
82 }
83 
86  G4int Z, G4int A)
87 {
88  G4double cross = 0.0;
89  G4PhysicsTable* table = 0;
91  if(part == piPlus) { table = piPlusElastic; }
92  else if(part == piMinus) { table = piMinusElastic; }
93  if(table) {
94  cross = Interpolate(Z, A, dp->GetKineticEnergy(),table);
95  }
96  return cross;
97 }
98 
101  G4int Z, G4int A)
102 {
103  G4double cross = 0.0;
104  G4double fact = 1.0;
105  G4double ekin = dp->GetKineticEnergy();
106  G4PhysicsTable* table = 0;
107  const G4ParticleDefinition* part = dp->GetDefinition();
108 
109  // Coulomb barrier
110  if(part == piPlus) {
111  if(ekin > elowest) {
112  table = piPlusInelastic;
113  if(ekin < elow) {
114  fact = std::sqrt((ekin-elowest)/(elow-elowest));
115  ekin = elow;
116  }
117  }
118  } else if(part == piMinus) {
119  table = piMinusInelastic;
120  if(ekin < elow) { ekin = elow; }
121  }
122  if(table) {
123  cross = fact*Interpolate(Z, A, ekin, table);
124  }
125  return cross;
126 }
127 
129  G4int Z, G4int A, G4double ekin, G4PhysicsTable* table)
130 {
131  G4double res = 0.0;
132  G4int idx;
133  G4int iz = Z;
134  if(iz > 92) iz = 92;
135  for(idx=0; idx<NZ; idx++) {if(theZ[idx] >= iz) break;}
136  if(idx >= NZ) idx = NZ - 1;
137  G4int iz2 = theZ[idx];
138  // G4cout << "U: iz= " << iz << " iz2= " << iz2 << " "
139  // << APower[iz] << " " << APower[iz2]<<G4endl;
140  G4double x2 = (((*table)[idx])->Value(ekin))*APower[iz]/APower[iz2];
141 
142  // use only one Z
143  if(iz >= theZ[idx] || idx == 0) {
144  res = x2;
145 
146  // Interpolation between Z
147  } else {
148 
149  G4int iz1 = theZ[idx-1];
150  G4double x1 = (((*table)[idx-1])->Value(ekin))*APower[iz]/APower[iz1];
151  G4double w1 = G4double(A) - theA[idx-1];
152  G4double w2 = theA[idx] - G4double(A);
153  res = (w1*x2 + w2*x1)/(w1 + w2);
154  }
155  return res;
156 }
157 
159  const G4double* tot,
160  const G4double* in,
161  const G4double* e,
162  G4int n)
163 {
164  G4LPhysicsFreeVector* pvin = new G4LPhysicsFreeVector(n,e[0]*GeV,e[n-1]*GeV);
165  //pvin->SetSpline(true);
166  G4LPhysicsFreeVector* pvel = new G4LPhysicsFreeVector(n,e[0]*GeV,e[n-1]*GeV);
167  //pvel->SetSpline(true);
168  for(G4int i=0; i<n; ++i) {
169  pvin->PutValues(i,e[i]*GeV,in[i]*millibarn);
170  pvel->PutValues(i,e[i]*GeV,std::max(0.0,(tot[i]-in[i])*millibarn));
171  }
172  if(p == "pi+") {
173  piPlusInelastic->push_back(pvin);
174  piPlusElastic->push_back(pvel);
175  } else {
177  piMinusElastic->push_back(pvel);
178  }
179 }
180 
182 {
183  if(&p == piPlus) {
184  G4cout << "### G4UPiNuclearCrossSection Elastic data for pi+" << G4endl;
185  G4cout << *piPlusElastic << G4endl;
186  G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi+" << G4endl;
188  } else if(&p == piMinus) {
189  G4cout << "### G4UPiNuclearCrossSection Elastic data for pi-" << G4endl;
191  G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi-" << G4endl;
193  }
194 }
195 
197 {
198  if(isInitialized) { return; }
199  if(&p != piPlus && &p != piMinus) {
200  throw G4HadronicException(__FILE__, __LINE__,"Is applicable only for pions");
201  return;
202  }
203  isInitialized = true;
204 
205  const G4int n = 16;
206  const G4int iz[n] = {2,4,6,7,8,11,13,20,26,29,42,48,50,74,82,92};
207  NZ = n;
208  theZ.reserve(n);
209  theA.reserve(n);
210 
212  G4int i;
213  for(i=0; i<n; ++i) {
214  theZ.push_back(iz[i]);
215  theA.push_back(nist->GetAtomicMassAmu(iz[i]));
216  }
217 
222 
223  const G4double e1[38] = {
224  0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16,
225  0.17, 0.18, 0.19, 0.2, 0.22,0.24, 0.26, 0.28, 0.3, 0.35,
226  0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2,
227  3, 5, 10, 20, 50, 100, 500, 1000};
228  const G4double e2[39] = {
229  0.02, 0.04, 0.06, 0.08, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15,
230  0.16, 0.17, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.35,
231  0.4, 0.45, 0.5, 0.55, 0.575,0.6, 0.7, 0.8, 0.9, 1,
232  2, 3, 5, 10, 20, 50, 100, 500, 1000};
233  const G4double e3[31] = {
234  0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2,
235  0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8,
236  0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
237  const G4double e4[32] = {
238  0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2,
239  0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.7,
240  0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
241  const G4double e5[34] = {
242  0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14,
243  0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
244  0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
245  const G4double e6[35] = {
246  0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14,
247  0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
248  0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
249 
250  const G4double he_t[38] = {
251  40, 70, 108, 152, 208, 276, 300, 320, 329, 333,
252  332, 328, 322, 310, 288, 260, 240, 216, 196, 144,
253  125, 112, 108.5, 109, 110.5, 117, 123, 128.5, 135, 110,
254  96, 87, 85, 83.5, 83.5, 83.5, 83.5, 83.5};
255  const G4double he_in[38] = {
256  18, 38, 62, 98, 136, 176, 190, 200, 209, 212,
257  212, 208, 204, 196, 176, 164, 150, 134, 124, 97.5,
258  90, 85,82.5, 83.5, 86.5, 93, 97.5,100, 102, 83,
259  77, 75, 74, 72.5, 72.5, 72.5, 72.5, 72.5};
260  const G4double be_m_t[38] = {
261  150, 210, 294, 396, 520, 600, 623, 635, 642, 640,
262  630, 615, 600, 576, 540, 504, 470, 435, 400, 340,
263  294, 258, 236, 230, 233, 244, 257, 270, 276, 250,
264  230, 215, 205, 194, 188, 186, 186, 186};
265  const G4double be_m_in[38] = {
266  90, 126, 177, 240, 320, 380, 400, 410, 414, 410,
267  400, 387, 371, 360, 333, 312, 285, 260, 237, 216,
268  198, 187, 182, 180, 182, 187, 193, 203, 207, 179,
269  172, 165, 159, 155, 144, 144, 144, 144};
270  const G4double be_p_t[38] = {
271  96, 150, 222, 320, 430, 514, 545, 565, 574, 574,
272  564, 552, 535, 522, 490, 462, 432, 398, 367, 314,
273  276, 248, 232, 230, 233, 244, 257, 270, 276, 250,
274  230, 215, 205, 194, 188, 186, 186, 186};
275  const G4double be_p_in[38] = {
276  60, 95, 142, 194, 262, 319, 345, 361, 364, 364,
277  354, 350, 330, 319, 298, 280, 258, 237, 216, 200,
278  189, 183, 182, 180, 182, 187, 193, 203, 207, 179,
279  172, 165, 159, 155, 144, 144, 144, 144};
280 
281  const G4double c_m_t[39] = {
282  204, 260, 366, 517, 630, 673, 694, 704, 710, 711,
283  706, 694, 676, 648, 616, 584, 548, 518, 489, 426,
284  376, 342, 323, 310, 312, 313, 319, 333, 342, 348,
285  310, 290, 268, 250, 245, 237, 234, 234, 234};
286  const G4double c_m_in[39] = {
287  128, 160, 224, 315, 388, 416, 430, 438, 444, 445,
288  440, 432, 416, 400, 380, 354, 320, 304, 288, 264,
289  246, 240, 233, 232, 233, 234, 238, 246, 252, 256,
290  220, 210, 198, 187, 183, 176, 174, 174, 174};
291  const G4double c_p_t[39] = {
292  140, 192, 294, 428, 594, 642, 662, 687, 685, 688,
293  684, 672, 656, 630, 598, 567, 533, 504, 474, 416,
294  369, 336, 319, 310, 312, 313, 319, 333, 342, 348,
295  310, 290, 268, 250, 245, 237, 234, 234, 234};
296  const G4double c_p_in[39] = {
297  94, 132, 184, 260, 370, 398, 408, 420, 426, 428,
298  424, 416, 400, 386, 366, 340, 308, 294, 280, 257,
299  241, 236, 231, 232, 233, 234, 238, 246, 252, 256,
300  220, 210, 198, 187, 183, 176, 174, 174, 174};
301  const G4double n_m_t[39] = {
302  246, 308, 424, 590, 729, 776, 800, 821, 822, 817,
303  800, 778, 768, 728, 690, 654, 615, 584, 556, 480,
304  430, 393, 373, 367, 368, 370, 375, 388, 390, 397,
305  364, 337, 310, 291, 275, 268, 268, 268, 268};
306  const G4double n_m_in[39] = {
307  155, 188, 256, 360, 456, 492, 512, 526, 526, 520,
308  504, 491, 475, 450, 425, 396, 376, 360, 340, 300,
309  282, 270, 265, 265, 266, 268, 273, 280, 288, 288,
310  256, 237, 226, 218, 208, 202, 202, 202, 202};
311  const G4double n_p_t[39] = {
312  150, 212, 328, 500, 680, 735, 762, 781, 782, 779,
313  770, 748, 740, 706, 672, 633, 600, 569, 541, 467,
314  419, 385, 368, 364, 366, 368, 375, 388, 390, 397,
315  364, 337, 310, 291, 275, 268, 268, 268, 268};
316  const G4double n_p_in[39] = {
317  90, 140, 208, 300, 426, 467, 490, 504, 504, 500,
318  484, 474, 460, 437, 413, 381, 365, 350, 330, 292,
319  276, 267, 263, 264, 265, 267, 273, 280, 288, 288,
320  256, 237, 226, 218, 208, 202, 202, 202, 202};
321 
322  const G4double o_m_t[31] = {
323  280, 360, 500, 685, 812, 861, 870, 865, 835, 800,
324  755, 700, 600, 537, 493, 468, 441, 436, 443, 449,
325  460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303};
326  const G4double o_m_in[31] = {
327  190, 207, 300, 420, 500, 540, 550, 542, 520, 490,
328  460, 423, 360, 339, 321, 314, 312, 314, 319, 324,
329  328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222};
330  const G4double o_p_t[31] = {
331  170, 240, 390, 570, 740, 818, 830, 822, 800, 765,
332  725, 675, 585, 525, 483, 458, 444, 447, 453, 449,
333  460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303};
334  const G4double o_p_in[31] = {
335  100, 145, 240, 340, 470, 518, 530, 522, 505, 477,
336  448, 412, 350, 330, 316, 310, 308, 311, 317, 324,
337  328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222};
338  const G4double na_m_t[31] = {
339  450, 545, 705, 910, 1020, 1075, 1087, 1080, 1042, 987,
340  943, 885, 790, 700, 650, 610, 585, 575, 585, 595,
341  600, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427};
342  const G4double na_m_in[31] = {
343  275, 315, 413, 545, 620, 660, 670, 662, 630, 593,
344  570, 520, 465, 420, 410, 395, 390, 400, 410, 418,
345  420, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292};
346  const G4double na_p_t[31] = {
347  210, 320, 530, 795, 960, 1035, 1050, 1040, 1007, 957,
348  918, 865, 773, 685, 636, 598, 575, 565, 578, 590,
349  598, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427};
350  const G4double na_p_in[31] = {
351  115, 210, 340, 495, 585, 630, 645, 637, 605, 572,
352  550, 505, 455, 410, 401, 388, 383, 393, 405, 414,
353  418, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292};
354  const G4double al_m_t[31] = {
355  532, 637, 832, 1057, 1207, 1230, 1210, 1174, 1133, 1095,
356  1038, 970, 890, 807, 750, 710, 675, 665, 670, 673,
357  678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488};
358  const G4double al_m_in[31] = {
359  300, 360, 495, 665, 750, 765, 750, 730, 700, 660,
360  615, 570, 520, 490, 470, 450, 448, 450, 450, 452,
361  456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332};
362  const G4double al_p_t[31] = {
363  225, 350, 616, 945, 1122, 1175, 1157, 1128, 1088, 1045,
364  988, 935, 870, 787, 730, 690, 660, 652, 660, 668,
365  678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488};
366  const G4double al_p_in[31] = {
367  120, 238, 390, 610, 712, 735, 720, 703, 655, 635,
368  590, 550, 505, 475, 455, 438, 440, 445, 445, 450,
369  456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332};
370 
371  const G4double ca_m_t[31] = {
372  800, 980, 1240, 1460, 1570, 1600, 1580, 1535, 1475, 1425,
373  1375,1295, 1200, 1083, 1000, 948, 915, 895, 900, 908,
374  915, 922, 856, 795, 740, 705, 682, 660, 660, 660, 660};
375  const G4double ca_m_in[31] = {
376  470, 550, 620, 860, 955, 960, 920, 860, 820, 780,
377  740, 665, 637, 615, 600, 590, 580, 580, 600, 608,
378  610, 615, 550, 525, 510, 488, 470, 450, 450, 450, 450};
379  const G4double ca_p_t[31] = {
380  275, 445, 790, 1195, 1440, 1485, 1475, 1435, 1385, 1335,
381  1295,1245,1160, 1050, 970, 923, 895, 877, 887, 897,
382  904, 913, 855, 795, 740, 705, 682, 660, 660, 660, 660};
383  const G4double ca_p_in[31] = {
384  160, 315, 500, 745, 870, 905, 900, 860, 810, 770,
385  740, 710, 640, 617, 595, 585, 575, 575, 590, 600,
386  602, 608, 550, 525, 510, 488, 470, 450, 450, 450, 450};
387  // ca data may have typo
388 
389  const G4double fe_m_t[32] = {
390  1175, 1363, 1670, 1950, 2050, 2040, 1975, 1886, 1834, 1773,
391  1720, 1635, 1474, 1380, 1269, 1225, 1182, 1162, 1159, 1162,
392  1178, 1190, 1197, 1102, 1135, 975, 945, 925, 905, 905,
393  905, 905};
394  const G4double fe_m_in[32] = {
395  625, 725, 910, 1180, 1275, 1250, 1200, 1150, 1100, 1040,
396  995, 925, 825, 810, 780, 760, 745, 740, 740, 740,
397  750, 760, 765, 690, 660, 635, 615, 600, 585, 585,
398  585, 585};
399  const G4double fe_p_t[32] = {
400  330, 575, 1010, 1500, 1837, 1875, 1820, 1751, 1691, 1636,
401  1690, 1450, 1396, 1305, 1219, 1190, 1148, 1138, 1134, 1144,
402  1163, 1175, 1183, 1198, 1135, 975, 945, 925, 905, 905,
403  905, 905};
404  const G4double fe_p_in[32] = {
405  210, 410, 707, 1010, 1125, 1150, 1100, 1070, 1010, 960,
406  920, 776, 780, 760, 750, 740, 720, 725, 725, 730,
407  740, 750, 755, 690, 660, 635, 615, 600, 585, 585,
408  585, 585};
409  const G4double cu_m_t[32] = {
410  1400, 1600, 1875, 2088, 2200, 2220, 2175, 2125, 2075, 2012,
411  1950, 1855, 1670, 1530, 1430, 1370, 1315, 1315, 1315, 1330,
412  1345, 1360, 1365, 1250, 1185, 1128, 1070, 1035, 1010, 1010,
413  1010, 1010};
414  const G4double cu_m_in[32] = {
415  725, 840, 1020, 1200, 1295, 1300, 1267, 1240, 1213, 1175,
416  1125, 1042, 950, 900, 860, 840, 830, 832, 835, 840,
417  850, 860, 865, 785, 735, 705, 680, 650, 630, 630,
418  630, 630};
419  const G4double cu_p_t[32] = {
420  355, 605, 1120, 1630, 1940, 2010, 2010, 1980, 1925, 1895,
421  1830, 1730, 1585, 1490, 1400, 1340, 1290, 1290, 1290, 1310,
422  1330, 1345, 1350, 1240, 1185, 1128, 1070, 1035, 1010, 1010,
423  1010, 1010};
424  const G4double cu_p_in[32] = {
425  230, 425, 780, 1025, 1155, 1190, 1190, 1180, 1125, 1100,
426  1050, 1000, 900, 870, 835, 815, 810, 812, 815, 825,
427  840, 850, 855, 780, 735, 705, 680, 650, 630, 630,
428  630, 630};
429 
430  const G4double mo_m_t[34] = {
431  2430, 2610, 2710, 2790, 2880, 2940, 2965, 2970, 2970, 2920,
432  2840, 2720, 2570, 2500, 2365, 2200, 2050, 1926, 1825, 1768,
433  1749, 1750, 1778, 1789, 1808, 1690, 1645, 1530, 1492, 1450,
434  1425, 1425, 1425, 1425};
435  const G4double mo_m_in[34] = {
436  925, 1125, 1250, 1375, 1500, 1600, 1680, 1750, 1770, 1730,
437  1660, 1580, 1500, 1450, 1330, 1250, 1190, 1140, 1100, 1075,
438  1075, 1070, 1088, 1095, 1110, 1035, 1005, 940, 917, 880,
439  860, 860, 860, 860};
440  const G4double mo_p_t[34] = {
441  410, 730, 1110, 1530, 1920, 2200, 2385, 2520, 2600, 2630,
442  2575, 2470, 2320, 2285, 2185, 2053, 1945, 1852, 1776, 1719,
443  1710, 1716, 1746, 1759, 1778, 1675, 1645, 1530, 1492, 1450,
444  1425, 1425, 1425, 1425};
445  const G4double mo_p_in[34] = {
446  270, 540, 825, 975, 1140, 1285, 1400, 1480, 1555, 1580,
447  1525, 1470, 1360, 1340, 1255, 1160, 1120, 1085, 1060, 1045,
448  1045, 1045, 1065, 1075, 1090, 1025, 1005, 940, 917, 880,
449  860, 860, 860, 860};
450  const G4double cd_m_t[34] = {
451  3060, 3125, 3170, 3220, 3255, 3280, 3290, 3260, 3270, 3200,
452  3120, 3080, 3090, 2920, 2810, 2640, 2362, 2230, 2115, 2050,
453  2020, 2025, 2040, 2070, 2100, 1900, 1795, 1740, 1675, 1645,
454  1625, 1620, 1620, 1620};
455  const G4double cd_m_in[34]= {
456  1025, 1275, 1440, 1625, 1740, 1800, 1880, 1920, 1980, 1920,
457  1850, 1810, 1720, 1650, 1560, 1450, 1330, 1290, 1245, 1210,
458  1200, 1200, 1205, 1205, 1230, 1130, 1085, 1060, 1000, 985,
459  975, 970, 970, 970};
460  const G4double cd_p_t[34] = {
461  455, 780, 1170, 1700, 2120, 2400, 2600, 2720, 2820, 2840,
462  2800, 2760, 2720, 2640, 2560, 2450, 2252, 2130, 2035, 1985,
463  1970, 1975, 2005, 2035, 2070, 1880, 1795, 1740, 1675, 1645,
464  1625, 1620, 1620, 1620};
465  const G4double cd_p_in[34] = {
466  310, 580, 880, 1060, 1270, 1400, 1530, 1610, 1660, 1680,
467  1640, 1600, 1560, 1500, 1430, 1330, 1280, 1230, 1200, 1180,
468  1170, 1175, 1180, 1180, 1210, 1120, 1085, 1060, 1000, 985,
469  975, 970, 970, 970};
470 
471  const G4double sn_m_t[35] = {
472  3000, 3180, 3250, 3300, 3300, 3410, 3470, 3450, 3410, 3350,
473  3280, 3200, 3120, 3050, 2900, 2630, 2500, 2325, 2190, 2100,
474  2060, 2055, 2055, 2055, 2067, 2085, 2000, 1900, 1835, 1770,
475  1720, 1700, 1695, 1695, 1695};
476  const G4double sn_m_in[35] = {
477  1050, 1350, 1520, 1650, 1800, 1980, 2070, 2120, 2090, 2050,
478  1980, 1920, 1830, 1770, 1670, 1500, 1435, 1350, 1300, 1230,
479  1220, 1235, 1235, 1235, 1237, 1240, 1160, 1120, 1090, 1065,
480  1040, 1020, 1015, 1015, 1015};
481  const G4double sn_p_t[35] = {
482  465, 800, 1200, 1760, 2170, 2480, 2730, 2885, 2970, 2980,
483  2970, 2890, 2840, 2790, 2620, 2450, 2335, 2205, 2080, 2020,
484  2010, 1990, 1990, 2015, 2030, 2045, 1980, 1890, 1835, 1770,
485  1720, 1700, 1695, 1695, 1695};
486  const G4double sn_p_in[35] = {
487  315, 590, 880, 1220, 1460, 1580, 1700, 1770, 1810, 1810,
488  1800, 1730, 1680, 1630, 1530, 1400, 1335, 1270, 1210, 1180,
489  1190, 1190, 1190, 1205, 1210, 1210, 1150, 1115, 1090, 1065,
490  1040, 1020, 1015, 1015, 1015};
491  const G4double w_m_t[35] = {
492  5200, 5115, 5025, 4975, 4900, 4850, 4780, 4725, 4600, 4490,
493  4355, 4255, 4125, 4040, 3830, 3580, 3330, 3110, 2955, 2860,
494  2852, 2845, 2885, 2900, 2915, 2940, 2800, 2660, 2570, 2490,
495  2460, 2425, 2420, 2420, 2420};
496  const G4double w_m_in[35] = {
497  1450, 1850, 2100, 2350, 2550, 2700, 2825, 2900, 2850, 2750,
498  2630, 2525, 2400, 2300, 2200, 2070, 1880, 1770, 1715, 1680,
499  1680, 1680, 1685, 1690, 1700, 1720, 1635, 1560, 1530, 1460,
500  1440, 1410, 1410, 1410, 1410};
501  const G4double w_p_t[35] = {
502  480, 900, 1500, 2350, 3020, 3420, 3650, 3775, 3875, 3830,
503  3750, 3700, 3630, 3550, 3550, 3290, 3070, 2890, 2840, 2730,
504  2725, 2720, 2770, 2805, 2828, 2865, 2770, 2640, 2570, 2490,
505  2460, 2425, 2420, 2420, 2420};
506  const G4double w_p_in[35] = {
507  325, 680, 990, 1500, 1850, 2150, 2250, 2300, 2350, 2330,
508  2280, 2230, 2200, 2120, 2130, 1900, 1780, 1670, 1635, 1600,
509  1602, 1605, 1610, 1615, 1630, 1660, 1620, 1550, 1530, 1460,
510  1440, 1410, 1410, 1410, 1410};
511 
512  const G4double pb_m_t[35] = {
513  5890, 5700, 5610, 5580, 5550, 5480, 5400, 5300, 5100, 4930,
514  4750, 4600, 4400, 4280, 4170, 3915, 3650, 3470, 3260, 3150,
515  3120, 3070, 3085, 3100, 3120, 3160, 3070, 2930, 2820, 2750,
516  2710, 2655, 2640, 2640, 2640};
517  const G4double pb_m_in[35] = {
518  1575, 2025, 2300, 2575, 2850, 3000, 3115, 3180, 3080, 2940,
519  2800, 2670, 2550, 2450, 2370, 2220, 2110, 2000, 1920, 1880,
520  1850, 1800, 1805, 1810, 1820, 1840, 1800, 1720, 1640, 1620,
521  1570, 1530, 1530, 1530, 1530};
522  const G4double pb_p_t[35] = {
523  515, 940, 1500, 2400, 3270, 3750, 4050, 4140, 4260, 4200,
524  4080, 3990, 3990, 3810, 3730, 3520, 3370, 3186, 3110, 3010,
525  2990, 2985, 3005, 3020, 3040, 3080, 3020, 2905, 2790, 2750,
526  2710, 2655, 2640, 2640, 2640};
527  const G4double pb_p_in[35] = {
528  348, 707, 1040, 1650, 2100, 2400, 2580, 2640, 2650, 2520,
529  2410, 2300, 2250, 2190, 2130, 2000, 1930, 1870, 1830, 1790,
530  1770, 1765, 1775, 1780, 1790, 1800, 1775, 1710, 1620, 1620,
531  1570, 1530, 1530, 1530, 1530};
532  const G4double u_m_t[35] = {
533  7080, 6830, 6650, 6530, 6400, 6280, 6100, 5840, 5660, 5520,
534  5330, 5160, 4990, 4810, 4630, 4323, 4130, 3870, 3700, 3550,
535  3490, 3465, 3467, 3475, 3495, 3515, 3440, 3360, 3150, 3040,
536  2985, 2955, 2940, 2940, 2940};
537  const G4double u_m_in[35] = {
538  1740, 2220, 2500, 2820, 3080, 3300, 3420, 3500, 3420, 3330,
539  3200, 3060, 2940, 2850, 2710, 2470, 2380, 2250, 2160, 2080,
540  2040, 2045, 2047, 2050, 2055, 2060, 2010, 1980, 1830, 1780,
541  1735, 1710, 1700, 1700, 1700};
542  const G4double u_p_t[35] = {
543  485, 960, 1580, 2700, 3550, 4050, 4320, 4420, 4620, 4660,
544  4580, 4470, 4350, 4295, 4187, 3938, 3755, 3573, 3450, 3342,
545  3310, 3295, 3310, 3330, 3375, 3405, 3350, 3338, 3135, 3040,
546  2985, 2955, 2940, 2940, 2940};
547  const G4double u_p_in[35] = {
548  334, 720, 1020, 1560, 2100, 2300, 2550, 2700, 2880, 2880,
549  2760, 2660, 2550, 2510, 2430, 2270, 2130, 2060, 2000, 1970,
550  1950, 1950, 1960, 1960, 1970, 1980, 1950, 1978, 1830, 1780,
551  1735, 1710, 1700, 1700, 1700};
552 
553  AddDataSet("pi-",he_t, he_in, e1, 38);
554  AddDataSet("pi+",he_t, he_in, e1, 38);
555  AddDataSet("pi-",be_m_t, be_m_in, e1, 38);
556  AddDataSet("pi+",be_p_t, be_p_in, e1, 38);
557  AddDataSet("pi-",c_m_t, c_m_in, e2, 39);
558  AddDataSet("pi+",c_p_t, c_p_in, e2, 39);
559  AddDataSet("pi-",n_m_t, n_m_in, e2, 39);
560  AddDataSet("pi+",n_p_t, n_p_in, e2, 39);
561  AddDataSet("pi-",o_m_t, o_m_in, e3, 31);
562  AddDataSet("pi+",o_p_t, o_p_in, e3, 31);
563  AddDataSet("pi-",na_m_t, na_m_in, e3, 31);
564  AddDataSet("pi+",na_p_t, na_p_in, e3, 31);
565  AddDataSet("pi-",al_m_t, al_m_in, e3, 31);
566  AddDataSet("pi+",al_p_t, al_p_in, e3, 31);
567  AddDataSet("pi-",ca_m_t, ca_m_in, e3, 31);
568  AddDataSet("pi+",ca_p_t, ca_p_in, e3, 31);
569  AddDataSet("pi-",fe_m_t, fe_m_in, e4, 32);
570  AddDataSet("pi+",fe_p_t, fe_p_in, e4, 32);
571  AddDataSet("pi-",cu_m_t, cu_m_in, e4, 32);
572  AddDataSet("pi+",cu_p_t, cu_p_in, e4, 32);
573  AddDataSet("pi-",mo_m_t, mo_m_in, e5, 34);
574  AddDataSet("pi+",mo_p_t, mo_p_in, e5, 34);
575  AddDataSet("pi-",cd_m_t, cd_m_in, e5, 34);
576  AddDataSet("pi+",cd_p_t, cd_p_in, e5, 34);
577  AddDataSet("pi-",sn_m_t, sn_m_in, e6, 35);
578  AddDataSet("pi+",sn_p_t, sn_p_in, e6, 35);
579  AddDataSet("pi-",w_m_t, w_m_in, e6, 35);
580  AddDataSet("pi+",w_p_t, w_p_in, e6, 35);
581  AddDataSet("pi-",pb_m_t, pb_m_in, e6, 35);
582  AddDataSet("pi+",pb_p_t, pb_p_in, e6, 35);
583  AddDataSet("pi-",u_m_t, u_m_in, e6, 35);
584  AddDataSet("pi+",u_p_t, u_p_in, e6, 35);
585 }
586 
587 void G4UPiNuclearCrossSection::CrossSectionDescription(std::ostream& outFile) const
588 {
589  outFile << "G4UPiNuclearCrossSection calculates the total, elastic and\n"
590  << "inelastic cross sections for pion scattering from nuclei\n"
591  << "heavier than hydrogen. It is based on the Barashenkov\n"
592  << "parameterization and is valid for all incident energies.\n";
593 }
594 
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:98
T max(const T t1, const T t2)
brief Return the largest of the two arguments
static constexpr double MeV
Definition: G4SIunits.hh:214
Float_t x1[n_points_granero]
Definition: compare.C:5
virtual G4bool IsElementApplicable(const G4DynamicParticle *aParticle, G4int Z, const G4Material *)
#define G4endl
Definition: G4ios.hh:61
const char * p
Definition: xmltok.h:285
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:98
G4double GetElasticCrossSection(const G4DynamicParticle *aParticle, G4int Z, G4int A)
void DumpPhysicsTable(const G4ParticleDefinition &)
G4double GetAtomicMassAmu(const G4String &symb) const
void PutValues(size_t index, G4double e, G4double dataValue)
Float_t Z
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
TString part[npart]
Definition: Style.C:32
static constexpr double millibarn
Definition: G4SIunits.hh:106
static G4Pow * GetInstance()
Definition: G4Pow.cc:57
G4ParticleDefinition * GetDefinition() const
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:242
const G4ParticleDefinition * piMinus
G4double Interpolate(G4int Z, G4int A, G4double ekin, G4PhysicsTable *)
G4double GetInelasticCrossSection(const G4DynamicParticle *aParticle, G4int Z, G4int A)
void AddDataSet(const G4String &p, const G4double *tot, const G4double *in, const G4double *e, G4int n)
double A(double temperature)
void push_back(G4PhysicsVector *)
int G4int
Definition: G4Types.hh:78
ifstream in
Definition: comparison.C:7
const G4ParticleDefinition * piPlus
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
void clearAndDestroy()
Char_t n[5]
virtual void CrossSectionDescription(std::ostream &) const
Float_t x2[n_points_geant4]
Definition: compare.C:26
static constexpr double GeV
Definition: G4SIunits.hh:217
void BuildPhysicsTable(const G4ParticleDefinition &)
static G4NistManager * Instance()