Geant4_10
G4XDeltaDeltastarTable.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 // -------------------------------------------------------------------
28 // GEANT4 Class file
29 //
30 // Hadron Kinetic Model
31 // p p -> Delta Delta* cross section tables
32 //
33 // -------------------------------------------------------------------
34 
35 #include "globals.hh"
36 #include "G4ios.hh"
37 #include "G4SystemOfUnits.hh"
39 #include "G4PhysicsFreeVector.hh"
40 
41 const G4int G4XDeltaDeltastarTable::sizeDeltaDeltastar = 121;
42 
43 // Energies (GeV) corresponding to the cross section table
44 // Units are assigned while filling the PhysicsVector
45 
46 const G4double G4XDeltaDeltastarTable::energyTable[121] =
47 {
48  0.0,
49  2.014, 2.014, 2.016, 2.018, 2.022, 2.026, 2.031, 2.037, 2.044, 2.052,
50  2.061, 2.071, 2.082, 2.094, 2.107, 2.121, 2.135, 2.151, 2.168, 2.185,
51  2.204, 2.223, 2.244, 2.265, 2.287, 2.311, 2.335, 2.360, 2.386, 2.413,
52  2.441, 2.470, 2.500, 2.531, 2.562, 2.595, 2.629, 2.664, 2.699, 2.736,
53  2.773, 2.812, 2.851, 2.891, 2.933, 2.975, 3.018, 3.062, 3.107, 3.153,
54  3.200, 3.248, 3.297, 3.347, 3.397, 3.449, 3.502, 3.555, 3.610, 3.666,
55  3.722, 3.779, 3.838, 3.897, 3.957, 4.018, 4.081, 4.144, 4.208, 4.273,
56  4.339, 4.406, 4.473, 4.542, 4.612, 4.683, 4.754, 4.827, 4.900, 4.975,
57  5.000, 6.134, 7.269, 8.403, 9.538, 10.672, 11.807, 12.941, 14.076, 15.210,
58  16.345, 17.479, 18.613, 19.748, 20.882, 22.017, 23.151, 24.286, 25.420, 26.555,
59  27.689, 28.824, 29.958, 31.092, 32.227, 33.361, 34.496, 35.630, 36.765, 37.899,
60  39.034, 40.168, 41.303, 42.437, 43.571, 44.706, 45.840, 46.975, 48.109, 49.244
61 };
62 
63 // Cross-sections in mb, from S.A. Bass et al., Prog.Part.Nucl.Phys.41:225-370,1998
64 // Units are assigned while filling the PhysicsVector
65 
66 const G4double G4XDeltaDeltastarTable::sigmaDD1600[121]=
67 {
68  0.0,
69  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
70  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
71  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
72  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
73  0.000, 0.000, 0.001, 0.001, 0.002, 0.003, 0.005, 0.010,
74  0.018, 0.000, 0.000, 0.003, 0.015, 0.045, 0.087, 0.134,
75  0.183, 0.231, 0.277, 0.319, 0.359, 0.395, 0.429, 0.459,
76  0.486, 0.510, 0.532, 0.551, 0.568, 0.582, 0.595, 0.605,
77  0.614, 0.621, 0.626, 0.630, 0.633, 0.635, 0.635, 0.634,
78  0.633, 0.630, 0.627, 0.623, 0.619, 0.614, 0.608, 0.602,
79  0.600, 0.490, 0.391, 0.314, 0.259, 0.213, 0.178, 0.152,
80  0.130, 0.113, 0.099, 0.088, 0.078, 0.070, 0.063, 0.057,
81  0.052, 0.047, 0.043, 0.040, 0.037, 0.034, 0.031, 0.029,
82  0.027, 0.026, 0.024, 0.023, 0.021, 0.020, 0.019, 0.018,
83  0.017, 0.016, 0.015, 0.014, 0.014, 0.013, 0.013, 0.012
84 };
85 
86 const G4double G4XDeltaDeltastarTable::sigmaDD1620[121] =
87 {
88  0.0,
89  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
90  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
91  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
92  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 0.001,
93  0.001, 0.002, 0.003, 0.004, 0.005, 0.007, 0.009, 0.014,
94  0.000, 0.000, 0.001, 0.006, 0.020, 0.043, 0.070, 0.100,
95  0.128, 0.156, 0.182, 0.207, 0.229, 0.249, 0.267, 0.284,
96  0.299, 0.312, 0.324, 0.334, 0.343, 0.351, 0.357, 0.362,
97  0.367, 0.370, 0.372, 0.374, 0.375, 0.375, 0.374, 0.373,
98  0.372, 0.370, 0.367, 0.364, 0.361, 0.358, 0.354, 0.350,
99  0.348, 0.280, 0.220, 0.176, 0.144, 0.117, 0.098, 0.091,
100  0.071, 0.062, 0.054, 0.048, 0.042, 0.038, 0.034, 0.031,
101  0.028, 0.025, 0.023, 0.021, 0.020, 0.018, 0.017, 0.016,
102  0.015, 0.014, 0.013, 0.012, 0.011, 0.011, 0.010, 0.010,
103  0.009, 0.009, 0.008, 0.008, 0.007, 0.007, 0.007, 0.006
104 };
105 
106 const G4double G4XDeltaDeltastarTable::sigmaDD1700[121] =
107 {
108  0.0,
109  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
110  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
111  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
112  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
113  0.000, 0.000, 0.001, 0.001, 0.002, 0.004, 0.007, 0.012,
114  0.019, 0.031, 0.000, 0.000, 0.001, 0.006, 0.021, 0.044,
115  0.073, 0.103, 0.134, 0.164, 0.193, 0.220, 0.246, 0.269,
116  0.291, 0.310, 0.328, 0.344, 0.358, 0.370, 0.381, 0.391,
117  0.399, 0.405, 0.411, 0.416, 0.419, 0.421, 0.423, 0.424,
118  0.424, 0.423, 0.422, 0.420, 0.418, 0.415, 0.412, 0.408,
119  0.407, 0.335, 0.268, 0.215, 0.177, 0.145, 0.121, 0.103,
120  0.088, 0.077, 0.067, 0.059, 0.053, 0.047, 0.042, 0.038,
121  0.035, 0.032, 0.029, 0.027, 0.025, 0.023, 0.021, 0.020,
122  0.018, 0.017, 0.016, 0.015, 0.014, 0.013, 0.013, 0.012,
123  0.011, 0.011, 0.010, 0.010, 0.009, 0.009, 0.008, 0.008
124 };
125 
126 
127 const G4double G4XDeltaDeltastarTable::sigmaDD1900[121] =
128 {
129  0.0,
130  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
131  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
132  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
133  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
134  0.001, 0.001, 0.001, 0.001, 0.002, 0.002, 0.003, 0.003,
135  0.004, 0.006, 0.007, 0.010, 0.000, 0.000, 0.000, 0.001,
136  0.006, 0.014, 0.025, 0.036, 0.047, 0.058, 0.068, 0.077,
137  0.086, 0.094, 0.101, 0.107, 0.113, 0.118, 0.122, 0.126,
138  0.129, 0.132, 0.134, 0.136, 0.137, 0.138, 0.139, 0.140,
139  0.140, 0.140, 0.139, 0.139, 0.138, 0.137, 0.136, 0.135,
140  0.135, 0.111, 0.088, 0.070, 0.059, 0.047, 0.039, 0.033,
141  0.029, 0.025, 0.022, 0.019, 0.017, 0.015, 0.014, 0.012,
142  0.011, 0.010, 0.009, 0.009, 0.008, 0.007, 0.007, 0.006,
143  0.006, 0.005, 0.005, 0.005, 0.005, 0.004, 0.004, 0.004,
144  0.004, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003
145 };
146 
147 const G4double G4XDeltaDeltastarTable::sigmaDD1905[121] =
148 {
149  0.0,
150  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
151  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
152  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
153  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
154  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
155  0.001, 0.001, 0.003, 0.005, 0.009, 0.000, 0.000, 0.001,
156  0.005, 0.018, 0.038, 0.061, 0.086, 0.110, 0.134, 0.157,
157  0.178, 0.197, 0.216, 0.232, 0.248, 0.262, 0.274, 0.285,
158  0.295, 0.304, 0.312, 0.318, 0.324, 0.329, 0.333, 0.336,
159  0.338, 0.340, 0.341, 0.342, 0.342, 0.341, 0.340, 0.339,
160  0.338, 0.293, 0.240, 0.196, 0.166, 0.135, 0.114, 0.098,
161  0.084, 0.073, 0.064, 0.057, 0.055, 0.045, 0.041, 0.037,
162  0.034, 0.031, 0.028, 0.026, 0.024, 0.022, 0.021, 0.019,
163  0.018, 0.017, 0.016, 0.015, 0.014, 0.013, 0.012, 0.012,
164  0.011, 0.011, 0.010, 0.010, 0.009, 0.009, 0.008, 0.008
165 };
166 
167 const G4double G4XDeltaDeltastarTable::sigmaDD1910[121] =
168 {
169  0.0,
170  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
171  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
172  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
173  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
174  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.001,
175  0.001, 0.001, 0.002, 0.003, 0.005, 0.008, 0.000, 0.000,
176  0.001, 0.004, 0.010, 0.018, 0.027, 0.035, 0.044, 0.052,
177  0.059, 0.066, 0.073, 0.078, 0.083, 0.088, 0.092, 0.096,
178  0.099, 0.102, 0.104, 0.106, 0.108, 0.110, 0.111, 0.112,
179  0.112, 0.113, 0.113, 0.113, 0.112, 0.112, 0.112, 0.111,
180  0.111, 0.094, 0.076, 0.062, 0.052, 0.042, 0.036, 0.030,
181  0.026, 0.023, 0.020, 0.018, 0.016, 0.014, 0.013, 0.011,
182  0.010, 0.009, 0.009, 0.008, 0.007, 0.007, 0.006, 0.006,
183  0.006, 0.005, 0.005, 0.005, 0.004, 0.004, 0.004, 0.004,
184  0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.003, 0.002
185 };
186 
187 const G4double G4XDeltaDeltastarTable::sigmaDD1920[121] =
188 {
189  0.0,
190  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
191  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
192  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
193  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
194  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
195  0.001, 0.001, 0.001, 0.002, 0.003, 0.006, 0.000, 0.000,
196  0.001, 0.007, 0.020, 0.040, 0.060, 0.080, 0.099, 0.117,
197  0.133, 0.147, 0.160, 0.171, 0.181, 0.190, 0.198, 0.204,
198  0.210, 0.215, 0.219, 0.222, 0.225, 0.227, 0.228, 0.229,
199  0.229, 0.229, 0.229, 0.228, 0.227, 0.226, 0.224, 0.222,
200  0.222, 0.183, 0.146, 0.117, 0.098, 0.078, 0.066, 0.056,
201  0.048, 0.041, 0.036, 0.032, 0.028, 0.025, 0.023, 0.021,
202  0.019, 0.017, 0.016, 0.014, 0.013, 0.012, 0.011, 0.011,
203  0.010, 0.009, 0.009, 0.008, 0.008, 0.007, 0.007, 0.006,
204  0.006, 0.006, 0.005, 0.005, 0.005, 0.005, 0.005, 0.004
205 };
206 
207 const G4double G4XDeltaDeltastarTable::sigmaDD1930[121] =
208 {
209  0.0,
210  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
211  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
212  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
213  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
214  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
215  0.000, 0.001, 0.001, 0.002, 0.004, 0.007, 0.000, 0.000,
216  0.001, 0.004, 0.015, 0.033, 0.053, 0.075, 0.096, 0.117,
217  0.136, 0.154, 0.171, 0.187, 0.201, 0.214, 0.225, 0.236,
218  0.245, 0.253, 0.261, 0.267, 0.272, 0.277, 0.281, 0.284,
219  0.287, 0.288, 0.290, 0.290, 0.291, 0.291, 0.290, 0.289,
220  0.289, 0.251, 0.206, 0.168, 0.142, 0.115, 0.097, 0.083,
221  0.071, 0.062, 0.059, 0.048, 0.043, 0.038, 0.035, 0.031,
222  0.028, 0.026, 0.024, 0.022, 0.020, 0.019, 0.017, 0.016,
223  0.015, 0.014, 0.013, 0.012, 0.012, 0.011, 0.010, 0.010,
224  0.009, 0.009, 0.008, 0.008, 0.008, 0.007, 0.007, 0.007
225 };
226 
227 const G4double G4XDeltaDeltastarTable::sigmaDD1950[121] =
228 {
229  0.0,
230  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
231  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
232  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
233  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
234  0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,
235  0.000, 0.001, 0.001, 0.002, 0.003, 0.006, 0.011, 0.000,
236  0.000, 0.002, 0.011, 0.029, 0.053, 0.078, 0.103, 0.128,
237  0.151, 0.173, 0.194, 0.213, 0.230, 0.246, 0.261, 0.274,
238  0.285, 0.296, 0.305, 0.313, 0.320, 0.326, 0.331, 0.335,
239  0.339, 0.342, 0.344, 0.345, 0.346, 0.346, 0.345, 0.344,
240  0.344, 0.301, 0.247, 0.202, 0.170, 0.139, 0.117, 0.099,
241  0.086, 0.075, 0.065, 0.058, 0.051, 0.046, 0.042, 0.038,
242  0.034, 0.031, 0.029, 0.026, 0.024, 0.022, 0.021, 0.019,
243  0.018, 0.017, 0.016, 0.015, 0.014, 0.013, 0.013, 0.012,
244  0.011, 0.011, 0.010, 0.010, 0.009, 0.009, 0.008, 0.008
245 };
246 
247 
248 
250 {
251  xMap["delta(1600)-"] = (G4double*) sigmaDD1600;
252  xMap["delta(1600)0"] = (G4double*) sigmaDD1600;
253  xMap["delta(1600)+"] = (G4double*) sigmaDD1600;
254  xMap["delta(1600)++"] = (G4double*) sigmaDD1600;
255 
256  xMap["delta(1620)-"] = (G4double*) sigmaDD1620;
257  xMap["delta(1620)0"] = (G4double*) sigmaDD1620;
258  xMap["delta(1620)+"] = (G4double*) sigmaDD1620;
259  xMap["delta(1620)++"] = (G4double*) sigmaDD1620;
260 
261  xMap["delta(1700)-"] = (G4double*) sigmaDD1700;
262  xMap["delta(1700)0"] = (G4double*) sigmaDD1700;
263  xMap["delta(1700)+"] = (G4double*) sigmaDD1700;
264  xMap["delta(1700)++"] = (G4double*) sigmaDD1700;
265 
266  xMap["delta(1900)-"] = (G4double*) sigmaDD1900;
267  xMap["delta(1900)0"] = (G4double*) sigmaDD1900;
268  xMap["delta(1900)+"] = (G4double*) sigmaDD1900;
269  xMap["delta(1900)++"] = (G4double*) sigmaDD1900;
270 
271  xMap["delta(1905)-"] = (G4double*) sigmaDD1905;
272  xMap["delta(1905)0"] = (G4double*) sigmaDD1905;
273  xMap["delta(1905)+"] = (G4double*) sigmaDD1905;
274  xMap["delta(1905)++"] = (G4double*) sigmaDD1905;
275 
276  xMap["delta(1910)-"] = (G4double*) sigmaDD1910;
277  xMap["delta(1910)0"] = (G4double*) sigmaDD1910;
278  xMap["delta(1910)+"] = (G4double*) sigmaDD1910;
279  xMap["delta(1910)++"] = (G4double*) sigmaDD1910;
280 
281  xMap["delta(1920)-"] = (G4double*) sigmaDD1920;
282  xMap["delta(1920)0"] = (G4double*) sigmaDD1920;
283  xMap["delta(1920)+"] = (G4double*) sigmaDD1920;
284  xMap["delta(1920)++"] = (G4double*) sigmaDD1920;
285 
286  xMap["delta(1930)-"] = (G4double*) sigmaDD1930;
287  xMap["delta(1930)0"] = (G4double*) sigmaDD1930;
288  xMap["delta(1930)+"] = (G4double*) sigmaDD1930;
289  xMap["delta(1930)++"] = (G4double*) sigmaDD1930;
290 
291  xMap["delta(1950)-"] = (G4double*) sigmaDD1950;
292  xMap["delta(1950)0"] = (G4double*) sigmaDD1950;
293  xMap["delta(1950)+"] = (G4double*) sigmaDD1950;
294  xMap["delta(1950)++"] = (G4double*) sigmaDD1950;
295 }
296 
297 
299 { }
300 
301 
303 {
304  // NOTE: the returned pointer is owned by the client
305 
306  if (xMap.find(particleName) != xMap.end())
307  {
308  // Cross section table for the requested particle available in the Map
309  G4PhysicsFreeVector* sigmaVector = new G4PhysicsFreeVector(sizeDeltaDeltastar);
310  std::map <G4String, G4double*, std::less<G4String> >::const_iterator iter;
311  G4double* sigmaPointer = 0;
312  for (iter = xMap.begin(); iter != xMap.end(); ++iter)
313  {
314  G4String str = (*iter).first;
315  if (str == particleName)
316  {
317  sigmaPointer = (*iter).second;
318  }
319  }
320 
321  G4int i;
322  for (i=0; i<sizeDeltaDeltastar; i++)
323  {
324  G4double value = *(sigmaPointer + i) * 0.5* millibarn;
325  G4double energy = energyTable[i] * GeV;
326  sigmaVector->PutValue(i,energy,value);
327  }
328  return sigmaVector;
329  }
330  else
331  // No cross section table for the requested particle is available in the Map
332  return 0;
333 }
334 
335 
336 
void PutValue(size_t binNumber, G4double binValue, G4double dataValue)
G4int first(char) const
int G4int
Definition: G4Types.hh:78
int millibarn
Definition: hepunit.py:40
virtual const G4PhysicsVector * CrossSectionTable(const G4String &particleName) const
double energy
Definition: plottest35.C:25
const XML_Char int const XML_Char * value
Definition: expat.h:331
double G4double
Definition: G4Types.hh:76