Geant4 Cross Reference |
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 // 31 // File name: G4XNDeltastarTable 32 // 33 // Author: Maria Grazia Pia (MariaGrazia.Pia@genova.infn.it) 34 // 35 // Creation date: 4 June 1999 36 // 37 // Modifications: 38 // 39 // Hadron Kinetic Model 40 // p p -> N Delta* cross section tables 41 // 42 // ------------------------------------------------------------------- 43 44 #include "globals.hh" 45 #include "G4ios.hh" 46 #include "G4SystemOfUnits.hh" 47 #include "G4XNDeltastarTable.hh" 48 #include "G4PhysicsFreeVector.hh" 49 50 const G4int G4XNDeltastarTable::sizeNDeltastar = 121; 51 52 // Energies (GeV) corresponding to the cross section table 53 // Units are assigned when filling the PhysicsVector 54 55 const G4double G4XNDeltastarTable::energyTable[121] = 56 { 57 0.0, 58 2.014, 2.014, 2.016, 2.018, 2.022, 2.026, 2.031, 2.037, 2.044, 2.052, 59 2.061, 2.071, 2.082, 2.094, 2.107, 2.121, 2.135, 2.151, 2.168, 2.185, 60 2.204, 2.223, 2.244, 2.265, 2.287, 2.311, 2.335, 2.360, 2.386, 2.413, 61 2.441, 2.470, 2.500, 2.531, 2.562, 2.595, 2.629, 2.664, 2.699, 2.736, 62 2.773, 2.812, 2.851, 2.891, 2.933, 2.975, 3.018, 3.062, 3.107, 3.153, 63 3.200, 3.248, 3.297, 3.347, 3.397, 3.449, 3.502, 3.555, 3.610, 3.666, 64 3.722, 3.779, 3.838, 3.897, 3.957, 4.018, 4.081, 4.144, 4.208, 4.273, 65 4.339, 4.406, 4.473, 4.542, 4.612, 4.683, 4.754, 4.827, 4.900, 4.975, 66 5.000, 6.134, 7.269, 8.403, 9.538, 10.672, 11.807, 12.941, 14.076, 15.210, 67 16.345, 17.479, 18.613, 19.748, 20.882, 22.017, 23.151, 24.286, 25.420, 26.555, 68 27.689, 28.824, 29.958, 31.092, 32.227, 33.361, 34.496, 35.630, 36.765, 37.899, 69 39.034, 40.168, 41.303, 42.437, 43.571, 44.706, 45.840, 46.975, 48.109, 49.244 70 }; 71 72 // Cross-sections in mb, from S.A. Bass et al., Prog.Part.Nucl.Phys.41:225-370,1998 73 // Units are assigned when filling the PhysicsVector 74 75 const G4double G4XNDeltastarTable::sigmaND1600[121]= 76 { 77 0.0, 78 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 79 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 80 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, 81 0.001, 0.002, 0.003, 0.004, 0.006, 0.009, 0.014, 0.022, 82 0.036, 0.060, 0.104, 0.179, 0.290, 0.418, 0.543, 0.656, 83 0.755, 0.841, 0.914, 0.976, 1.029, 1.073, 1.110, 1.139, 84 1.163, 1.181, 1.195, 1.204, 1.210, 1.212, 1.212, 1.209, 85 1.203, 1.196, 1.187, 1.176, 1.164, 1.150, 1.136, 1.120, 86 1.104, 1.087, 1.070, 1.052, 1.034, 1.016, 0.997, 0.978, 87 0.959, 0.940, 0.921, 0.903, 0.884, 0.865, 0.847, 0.828, 88 0.822, 0.597, 0.447, 0.345, 0.274, 0.223, 0.184, 0.155, 89 0.132, 0.114, 0.099, 0.087, 0.077, 0.069, 0.062, 0.056, 90 0.050, 0.046, 0.042, 0.039, 0.036, 0.033, 0.030, 0.028, 91 0.026, 0.025, 0.023, 0.022, 0.020, 0.019, 0.018, 0.017, 92 0.016, 0.015, 0.015, 0.014, 0.013, 0.013, 0.012, 0.011 93 }; 94 95 const G4double G4XNDeltastarTable::sigmaND1620[121] = 96 { 97 0.0, 98 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 99 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 0.001, 100 0.001, 0.001, 0.002, 0.002, 0.003, 0.003, 0.004, 0.005, 101 0.006, 0.007, 0.009, 0.010, 0.013, 0.016, 0.021, 0.028, 102 0.040, 0.060, 0.096, 0.154, 0.228, 0.304, 0.372, 0.431, 103 0.483, 0.526, 0.563, 0.595, 0.621, 0.643, 0.660, 0.674, 104 0.685, 0.693, 0.699, 0.702, 0.704, 0.704, 0.702, 0.699, 105 0.694, 0.689, 0.682, 0.675, 0.669, 0.661, 0.651, 0.642, 106 0.632, 0.621, 0.611, 0.600, 0.589, 0.577, 0.566, 0.555, 107 0.544, 0.532, 0.521, 0.510, 0.499, 0.488, 0.477, 0.466, 108 0.463, 0.332, 0.247, 0.189, 0.150, 0.121, 0.100, 0.084, 109 0.071, 0.061, 0.053, 0.047, 0.041, 0.037, 0.033, 0.030, 110 0.027, 0.025, 0.022, 0.021, 0.019, 0.018, 0.016, 0.015, 111 0.014, 0.013, 0.012, 0.012, 0.011, 0.010, 0.010, 0.009, 112 0.009, 0.008, 0.008, 0.007, 0.007, 0.007, 0.006, 0.006 113 }; 114 115 const G4double G4XNDeltastarTable::sigmaND1700[121] = 116 { 117 0.0, 118 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 119 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 120 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 121 0.001, 0.002, 0.003, 0.005, 0.008, 0.013, 0.020, 0.029, 122 0.043, 0.062, 0.090, 0.131, 0.187, 0.258, 0.338, 0.418, 123 0.495, 0.564, 0.626, 0.680, 0.726, 0.766, 0.800, 0.828, 124 0.852, 0.871, 0.886, 0.898, 0.906, 0.911, 0.914, 0.914, 125 0.913, 0.909, 0.904, 0.898, 0.890, 0.881, 0.871, 0.861, 126 0.849, 0.837, 0.825, 0.812, 0.798, 0.785, 0.771, 0.756, 127 0.742, 0.728, 0.713, 0.699, 0.685, 0.670, 0.656, 0.642, 128 0.637, 0.462, 0.345, 0.266, 0.211, 0.171, 0.141, 0.119, 129 0.101, 0.087, 0.076, 0.066, 0.059, 0.052, 0.047, 0.042, 130 0.038, 0.035, 0.032, 0.029, 0.027, 0.025, 0.023, 0.021, 131 0.020, 0.019, 0.017, 0.016, 0.015, 0.015, 0.014, 0.013, 132 0.012, 0.012, 0.011, 0.010, 0.010, 0.009, 0.009, 0.009 133 }; 134 135 136 const G4double G4XNDeltastarTable::sigmaND1900[121] = 137 { 138 0.0, 139 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 140 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 141 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.002, 0.002, 142 0.002, 0.003, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 143 0.010, 0.012, 0.015, 0.019, 0.025, 0.034, 0.048, 0.069, 144 0.097, 0.129, 0.162, 0.193, 0.220, 0.243, 0.263, 0.280, 145 0.294, 0.305, 0.315, 0.322, 0.328, 0.333, 0.336, 0.337, 146 0.338, 0.338, 0.337, 0.336, 0.334, 0.331, 0.328, 0.325, 147 0.321, 0.316, 0.312, 0.307, 0.302, 0.297, 0.292, 0.287, 148 0.282, 0.276, 0.271, 0.265, 0.260, 0.255, 0.249, 0.244, 149 0.242, 0.175, 0.131, 0.101, 0.080, 0.064, 0.053, 0.045, 150 0.038, 0.033, 0.028, 0.025, 0.022, 0.020, 0.018, 0.016, 151 0.014, 0.013, 0.012, 0.011, 0.010, 0.009, 0.009, 0.008, 152 0.007, 0.007, 0.007, 0.006, 0.006, 0.005, 0.005, 0.005, 153 0.005, 0.004, 0.004, 0.004, 0.004, 0.004, 0.003, 0.003 154 }; 155 156 const G4double G4XNDeltastarTable::sigmaND1905[121] = 157 { 158 0.0, 159 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 160 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 161 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 162 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, 163 0.002, 0.003, 0.005, 0.008, 0.013, 0.023, 0.041, 0.075, 164 0.131, 0.206, 0.286, 0.362, 0.430, 0.491, 0.542, 0.587, 165 0.626, 0.659, 0.687, 0.710, 0.730, 0.745, 0.757, 0.767, 166 0.774, 0.778, 0.781, 0.782, 0.781, 0.778, 0.775, 0.770, 167 0.764, 0.757, 0.749, 0.741, 0.732, 0.722, 0.712, 0.702, 168 0.691, 0.680, 0.669, 0.658, 0.646, 0.635, 0.623, 0.611, 169 0.607, 0.454, 0.346, 0.270, 0.216, 0.176, 0.146, 0.123, 170 0.105, 0.091, 0.079, 0.070, 0.066, 0.055, 0.050, 0.045, 171 0.041, 0.037, 0.034, 0.031, 0.029, 0.027, 0.025, 0.023, 172 0.021, 0.020, 0.019, 0.018, 0.016, 0.016, 0.015, 0.014, 173 0.013, 0.012, 0.012, 0.011, 0.011, 0.010, 0.010, 0.009 174 }; 175 176 const G4double G4XNDeltastarTable::sigmaND1910[121] = 177 { 178 0.0, 179 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 180 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 181 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 182 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, 0.001, 0.002, 183 0.002, 0.003, 0.004, 0.006, 0.008, 0.012, 0.017, 0.026, 184 0.041, 0.063, 0.089, 0.116, 0.142, 0.164, 0.184, 0.201, 185 0.215, 0.227, 0.238, 0.246, 0.253, 0.259, 0.263, 0.266, 186 0.268, 0.270, 0.270, 0.270, 0.270, 0.269, 0.267, 0.265, 187 0.263, 0.260, 0.257, 0.254, 0.251, 0.247, 0.243, 0.240, 188 0.236, 0.232, 0.228, 0.224, 0.219, 0.215, 0.211, 0.207, 189 0.206, 0.152, 0.115, 0.089, 0.071, 0.058, 0.048, 0.040, 190 0.034, 0.030, 0.027, 0.023, 0.020, 0.018, 0.016, 0.015, 191 0.013, 0.012, 0.011, 0.010, 0.009, 0.009, 0.008, 0.007, 192 0.007, 0.006, 0.006, 0.006, 0.005, 0.005, 0.005, 0.004, 193 0.004, 0.004, 0.004, 0.004, 0.003, 0.003, 0.003, 0.003 194 }; 195 196 const G4double G4XNDeltastarTable::sigmaND1920[121] = 197 { 198 0.0, 199 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 200 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 201 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 202 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 0.001, 0.001, 203 0.001, 0.002, 0.003, 0.004, 0.006, 0.009, 0.013, 0.022, 204 0.037, 0.068, 0.123, 0.194, 0.263, 0.322, 0.371, 0.412, 205 0.446, 0.473, 0.496, 0.515, 0.529, 0.540, 0.549, 0.555, 206 0.559, 0.561, 0.561, 0.560, 0.558, 0.555, 0.551, 0.546, 207 0.540, 0.534, 0.527, 0.519, 0.512, 0.504, 0.495, 0.487, 208 0.478, 0.470, 0.461, 0.452, 0.443, 0.434, 0.425, 0.416, 209 0.413, 0.301, 0.225, 0.174, 0.138, 0.112, 0.092, 0.078, 210 0.066, 0.057, 0.049, 0.043, 0.038, 0.034, 0.031, 0.028, 211 0.025, 0.023, 0.021, 0.019, 0.018, 0.016, 0.015, 0.014, 212 0.013, 0.012, 0.011, 0.011, 0.010, 0.009, 0.009, 0.008, 213 0.008, 0.008, 0.007, 0.007, 0.007, 0.006, 0.006, 0.006 214 }; 215 216 const G4double G4XNDeltastarTable::sigmaND1930[121] = 217 { 218 0.0, 219 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 220 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 221 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 222 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 0.001, 223 0.001, 0.002, 0.003, 0.004, 0.006, 0.010, 0.016, 0.028, 224 0.051, 0.092, 0.154, 0.227, 0.298, 0.363, 0.419, 0.468, 225 0.509, 0.545, 0.575, 0.605, 0.626, 0.643, 0.658, 0.665, 226 0.674, 0.680, 0.684, 0.687, 0.687, 0.687, 0.685, 0.681, 227 0.677, 0.672, 0.666, 0.659, 0.651, 0.644, 0.635, 0.626, 228 0.617, 0.608, 0.598, 0.588, 0.578, 0.568, 0.558, 0.547, 229 0.544, 0.407, 0.310, 0.242, 0.193, 0.157, 0.131, 0.110, 230 0.094, 0.081, 0.075, 0.062, 0.055, 0.049, 0.044, 0.040, 231 0.036, 0.033, 0.030, 0.028, 0.025, 0.024, 0.022, 0.020, 232 0.019, 0.018, 0.017, 0.016, 0.015, 0.014, 0.013, 0.012, 233 0.012, 0.011, 0.010, 0.010, 0.009, 0.009, 0.009, 0.008 234 }; 235 236 const G4double G4XNDeltastarTable::sigmaND1950[121] = 237 { 238 0.0, 239 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 240 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 241 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 242 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.001, 243 0.001, 0.001, 0.002, 0.003, 0.005, 0.008, 0.013, 0.023, 244 0.041, 0.078, 0.142, 0.229, 0.319, 0.402, 0.475, 0.538, 245 0.597, 0.643, 0.678, 0.711, 0.739, 0.762, 0.781, 0.797, 246 0.809, 0.818, 0.824, 0.828, 0.830, 0.830, 0.829, 0.825, 247 0.821, 0.815, 0.809, 0.801, 0.793, 0.784, 0.774, 0.764, 248 0.753, 0.742, 0.730, 0.718, 0.706, 0.694, 0.682, 0.670, 249 0.666, 0.500, 0.380, 0.297, 0.237, 0.193, 0.160, 0.135, 250 0.115, 0.099, 0.087, 0.076, 0.068, 0.060, 0.054, 0.049, 251 0.044, 0.040, 0.037, 0.034, 0.031, 0.029, 0.027, 0.025, 252 0.023, 0.022, 0.020, 0.019, 0.018, 0.017, 0.016, 0.015, 253 0.014, 0.013, 0.013, 0.012, 0.012, 0.011, 0.010, 0.010 254 }; 255 256 257 258 G4XNDeltastarTable::G4XNDeltastarTable() 259 { 260 xMap["delta(1600)-"] = (G4double*) sigmaND1600; 261 xMap["delta(1600)0"] = (G4double*) sigmaND1600; 262 xMap["delta(1600)+"] = (G4double*) sigmaND1600; 263 xMap["delta(1600)++"] = (G4double*) sigmaND1600; 264 265 xMap["delta(1620)-"] = (G4double*) sigmaND1620; 266 xMap["delta(1620)0"] = (G4double*) sigmaND1620; 267 xMap["delta(1620)+"] = (G4double*) sigmaND1620; 268 xMap["delta(1620)++"] = (G4double*) sigmaND1620; 269 270 xMap["delta(1700)-"] = (G4double*) sigmaND1700; 271 xMap["delta(1700)0"] = (G4double*) sigmaND1700; 272 xMap["delta(1700)+"] = (G4double*) sigmaND1700; 273 xMap["delta(1700)++"] = (G4double*) sigmaND1700; 274 275 xMap["delta(1900)-"] = (G4double*) sigmaND1900; 276 xMap["delta(1900)0"] = (G4double*) sigmaND1900; 277 xMap["delta(1900)+"] = (G4double*) sigmaND1900; 278 xMap["delta(1900)++"] = (G4double*) sigmaND1900; 279 280 xMap["delta(1905)-"] = (G4double*) sigmaND1905; 281 xMap["delta(1905)0"] = (G4double*) sigmaND1905; 282 xMap["delta(1905)+"] = (G4double*) sigmaND1905; 283 xMap["delta(1905)++"] = (G4double*) sigmaND1905; 284 285 xMap["delta(1910)-"] = (G4double*) sigmaND1910; 286 xMap["delta(1910)0"] = (G4double*) sigmaND1910; 287 xMap["delta(1910)+"] = (G4double*) sigmaND1910; 288 xMap["delta(1910)++"] = (G4double*) sigmaND1910; 289 290 xMap["delta(1920)-"] = (G4double*) sigmaND1920; 291 xMap["delta(1920)0"] = (G4double*) sigmaND1920; 292 xMap["delta(1920)+"] = (G4double*) sigmaND1920; 293 xMap["delta(1920)++"] = (G4double*) sigmaND1920; 294 295 xMap["delta(1930)-"] = (G4double*) sigmaND1930; 296 xMap["delta(1930)0"] = (G4double*) sigmaND1930; 297 xMap["delta(1930)+"] = (G4double*) sigmaND1930; 298 xMap["delta(1930)++"] = (G4double*) sigmaND1930; 299 300 xMap["delta(1950)-"] = (G4double*) sigmaND1950; 301 xMap["delta(1950)0"] = (G4double*) sigmaND1950; 302 xMap["delta(1950)+"] = (G4double*) sigmaND1950; 303 xMap["delta(1950)++"] = (G4double*) sigmaND1950; 304 } 305 306 307 G4XNDeltastarTable::~G4XNDeltastarTable() 308 { } 309 310 311 const G4PhysicsVector* G4XNDeltastarTable::CrossSectionTable(const G4String& particleName) const 312 { 313 // NOTE: the returned pointer is owned by the client 314 315 if (xMap.find(particleName) != xMap.end()) 316 { 317 // Cross section table for the requested particle available in the Map 318 G4PhysicsFreeVector* sigmaVector = new G4PhysicsFreeVector(sizeNDeltastar); 319 std::map <G4String, G4double*, std::less<G4String> >::const_iterator iter; 320 G4double* sigmaPointer = 0; 321 for (iter = xMap.begin(); iter != xMap.end(); ++iter) 322 { 323 G4String str = (*iter).first; 324 if (str == particleName) 325 { 326 sigmaPointer = (*iter).second; 327 } 328 } 329 330 G4int i; 331 for (i=0; i<sizeNDeltastar; i++) 332 { 333 G4double value = *(sigmaPointer + i) * 0.5* millibarn; 334 G4double energy = energyTable[i] * GeV; 335 sigmaVector->PutValue(i,energy,value); 336 } 337 return sigmaVector; 338 } 339 else 340 // No cross section table for the requested particle is available in the Map 341 return 0; 342 } 343 344 345 346 347 348 349 350 351 352 353