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 // 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" 38 #include "G4XDeltaDeltastarTable.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 when 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 when 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 249 G4XDeltaDeltastarTable::G4XDeltaDeltastarTable() 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 298 G4XDeltaDeltastarTable::~G4XDeltaDeltastarTable() 299 { } 300 301 302 const G4PhysicsVector* G4XDeltaDeltastarTable::CrossSectionTable(const G4String& particleName) const 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 337