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 #include "globals.hh" 27 #include "G4ResonanceNames.hh" 28 #include "G4VCrossSectionSource.hh" 29 #include "G4KineticTrack.hh" 30 #include "G4CrossSectionVector.hh" 31 #include "G4ParticleDefinition.hh" 32 #include "G4ShortLivedConstructor.hh" 33 #include "G4ParticleTable.hh" 34 #include "G4PionPlus.hh" 35 36 G4ResonanceNames::G4ResonanceNames() 37 { 38 // Excited N resonances 39 40 nameNstar.push_back("N(1440)+"); 41 nameNstar.push_back("N(1440)0"); 42 nameNstar.push_back("N(1520)+"); 43 nameNstar.push_back("N(1520)0"); 44 nameNstar.push_back("N(1535)+"); 45 nameNstar.push_back("N(1535)0"); 46 nameNstar.push_back("N(1650)+"); 47 nameNstar.push_back("N(1650)0"); 48 nameNstar.push_back("N(1675)+"); 49 nameNstar.push_back("N(1675)0"); 50 nameNstar.push_back("N(1680)+"); 51 nameNstar.push_back("N(1680)0"); 52 nameNstar.push_back("N(1700)+"); 53 nameNstar.push_back("N(1700)0"); 54 nameNstar.push_back("N(1710)+"); 55 nameNstar.push_back("N(1710)0"); 56 nameNstar.push_back("N(1720)+"); 57 nameNstar.push_back("N(1720)0"); 58 nameNstar.push_back("N(1900)+"); 59 nameNstar.push_back("N(1900)0"); 60 nameNstar.push_back("N(1990)+"); 61 nameNstar.push_back("N(1990)0"); 62 nameNstar.push_back("N(2090)+"); 63 nameNstar.push_back("N(2090)0"); 64 nameNstar.push_back("N(2190)+"); 65 nameNstar.push_back("N(2190)0"); 66 nameNstar.push_back("N(2220)+"); 67 nameNstar.push_back("N(2220)0"); 68 nameNstar.push_back("N(2250)+"); 69 nameNstar.push_back("N(2250)0"); 70 71 72 // Delta 73 74 const G4String& d1232Minus("delta-"); 75 const G4String& d1232Zero("delta0"); 76 const G4String& d1232Plus("delta+"); 77 const G4String& d1232PlusPlus("delta++"); 78 nameDelta.push_back(d1232Minus); 79 nameDelta.push_back(d1232Zero); 80 nameDelta.push_back(d1232Plus); 81 nameDelta.push_back(d1232PlusPlus); 82 83 84 // Excited Delta resonances 85 86 nameDeltastar.push_back("delta(1600)+"); 87 nameDeltastar.push_back("delta(1600)++"); 88 nameDeltastar.push_back("delta(1600)-"); 89 nameDeltastar.push_back("delta(1600)0"); 90 nameDeltastar.push_back("delta(1620)+"); 91 nameDeltastar.push_back("delta(1620)++"); 92 nameDeltastar.push_back("delta(1620)-"); 93 nameDeltastar.push_back("delta(1620)0"); 94 nameDeltastar.push_back("delta(1700)+"); 95 nameDeltastar.push_back("delta(1700)++"); 96 nameDeltastar.push_back("delta(1700)-"); 97 nameDeltastar.push_back("delta(1700)0"); 98 nameDeltastar.push_back("delta(1900)+"); 99 nameDeltastar.push_back("delta(1900)++"); 100 nameDeltastar.push_back("delta(1900)-"); 101 nameDeltastar.push_back("delta(1900)0"); 102 nameDeltastar.push_back("delta(1905)+"); 103 nameDeltastar.push_back("delta(1905)++"); 104 nameDeltastar.push_back("delta(1905)-"); 105 nameDeltastar.push_back("delta(1905)0"); 106 nameDeltastar.push_back("delta(1910)+"); 107 nameDeltastar.push_back("delta(1910)++"); 108 nameDeltastar.push_back("delta(1910)-"); 109 nameDeltastar.push_back("delta(1910)0"); 110 nameDeltastar.push_back("delta(1920)+"); 111 nameDeltastar.push_back("delta(1920)++"); 112 nameDeltastar.push_back("delta(1920)-"); 113 nameDeltastar.push_back("delta(1920)0"); 114 nameDeltastar.push_back("delta(1930)+"); 115 nameDeltastar.push_back("delta(1930)++"); 116 nameDeltastar.push_back("delta(1930)-"); 117 nameDeltastar.push_back("delta(1930)0"); 118 nameDeltastar.push_back("delta(1950)+"); 119 nameDeltastar.push_back("delta(1950)++"); 120 nameDeltastar.push_back("delta(1950)-"); 121 nameDeltastar.push_back("delta(1950)0"); 122 123 124 // Lambda 125 126 nameLambda.push_back("lambda"); 127 nameLambda.push_back("lambda(1405)"); 128 nameLambda.push_back("lambda(1520)"); 129 nameLambda.push_back("lambda(1600)"); 130 nameLambda.push_back("lambda(1670)"); 131 nameLambda.push_back("lambda(1690)"); 132 nameLambda.push_back("lambda(1800)"); 133 nameLambda.push_back("lambda(1810)"); 134 nameLambda.push_back("lambda(1820)"); 135 nameLambda.push_back("lambda(1830)"); 136 nameLambda.push_back("lambda(1890)"); 137 nameLambda.push_back("lambda(2100)"); 138 nameLambda.push_back("lambda(2110)"); 139 140 141 // Sigma 142 143 nameSigma.push_back("sigma(1385)+"); 144 nameSigma.push_back("sigma(1385)-"); 145 nameSigma.push_back("sigma(1385)0"); 146 nameSigma.push_back("sigma(1660)+"); 147 nameSigma.push_back("sigma(1660)-"); 148 nameSigma.push_back("sigma(1660)0"); 149 nameSigma.push_back("sigma(1670)+"); 150 nameSigma.push_back("sigma(1670)-"); 151 nameSigma.push_back("sigma(1670)0"); 152 nameSigma.push_back("sigma(1750)+"); 153 nameSigma.push_back("sigma(1750)-"); 154 nameSigma.push_back("sigma(1750)0"); 155 nameSigma.push_back("sigma(1775)+"); 156 nameSigma.push_back("sigma(1775)-"); 157 nameSigma.push_back("sigma(1775)0"); 158 nameSigma.push_back("sigma(1915)+"); 159 nameSigma.push_back("sigma(1915)-"); 160 nameSigma.push_back("sigma(1915)0"); 161 nameSigma.push_back("sigma(1940)+"); 162 nameSigma.push_back("sigma(1940)-"); 163 nameSigma.push_back("sigma(1940)0"); 164 nameSigma.push_back("sigma(2030)+"); 165 nameSigma.push_back("sigma(2030)-"); 166 nameSigma.push_back("sigma(2030)0"); 167 168 169 // Xi 170 171 nameXi.push_back("xi(1530)-"); 172 nameXi.push_back("xi(1530)0"); 173 nameXi.push_back("xi(1690)-"); 174 nameXi.push_back("xi(1690)0"); 175 nameXi.push_back("xi(1820)-"); 176 nameXi.push_back("xi(1820)0"); 177 nameXi.push_back("xi(1950)-"); 178 nameXi.push_back("xi(1950)0"); 179 nameXi.push_back("xi(2030)-"); 180 nameXi.push_back("xi(2030)0"); 181 182 183 G4ShortLivedConstructor ShortLived; 184 ShortLived.ConstructParticle(); 185 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); 186 187 size_t i; 188 189 // Fill a map with the lowest resonance for each category 190 for (i=0; i<nameNstar.size(); i++) 191 { 192 lowResMap[nameNstar[i]] = particleTable->FindParticle("N(1440)0"); 193 } 194 195 for (i=0; i<nameDeltastar.size(); i++) 196 { 197 lowResMap[nameDeltastar[i]] = particleTable->FindParticle("delta0"); 198 } 199 200 for (i=0; i<nameDelta.size(); i++) 201 { 202 lowResMap[nameDelta[i]] = particleTable->FindParticle("delta0"); 203 } 204 205 for (i=0; i<nameLambda.size(); i++) 206 { 207 lowResMap[nameLambda[i]] = particleTable->FindParticle("lambda"); 208 } 209 210 for (i=0; i<nameSigma.size(); i++) 211 { 212 lowResMap[nameSigma[i]] = particleTable->FindParticle("sigma0"); 213 } 214 215 shortMap["N(1440)0"] = "N(1440)"; 216 shortMap["N(1440)+"] = "N(1440)"; 217 218 shortMap["N(1520)0"] = "N(1520)";; 219 shortMap["N(1520)+"] = "N(1520)"; 220 221 shortMap["N(1535)0"] = "N(1535)"; 222 shortMap["N(1535)+"] = "N(1535)"; 223 224 shortMap["N(1650)0"] = "N(1650)"; 225 shortMap["N(1650)+"] = "N(1650)"; 226 227 shortMap["N(1675)0"] = "N(1675)"; 228 shortMap["N(1675)+"] = "N(1675)"; 229 230 shortMap["N(1680)0"] = "N(1680)"; 231 shortMap["N(1680)+"] = "N(1680)"; 232 233 shortMap["N(1700)0"] = "N(1700)"; 234 shortMap["N(1700)+"] = "N(1700)"; 235 236 shortMap["N(1710)0"] = "N(1710)"; 237 shortMap["N(1710)+"] = "N(1710)"; 238 239 shortMap["N(1720)0"] = "N(1720)"; 240 shortMap["N(1720)+"] = "N(1720)"; 241 242 shortMap["N(1900)0"] = "N(1900)"; 243 shortMap["N(1900)+"] = "N(1900)"; 244 245 shortMap["N(1990)0"] = "N(1990)"; 246 shortMap["N(1990)+"] = "N(1990)"; 247 248 shortMap["N(2090)0"] = "N(2090)"; 249 shortMap["N(2090)+"] = "N(2090)"; 250 251 shortMap["N(2190)0"] = "N(2190)"; 252 shortMap["N(2190)+"] = "N(2190)"; 253 254 shortMap["N(2220)0"] = "N(2220)"; 255 shortMap["N(2220)+"] = "N(2220)"; 256 257 shortMap["N(2250)0"] = "N(2250)"; 258 shortMap["N(2250)+"] = "N(2250)"; 259 260 261 // Excited Delta 262 263 shortMap["delta(1600)-"] = "delta(1600)"; 264 shortMap["delta(1600)0"] = "delta(1600)"; 265 shortMap["delta(1600)+"] = "delta(1600)"; 266 shortMap["delta(1600)++"] = "delta(1600)"; 267 268 shortMap["delta(1620)-"] = "delta(1620)"; 269 shortMap["delta(1620)0"] = "delta(1620)"; 270 shortMap["delta(1620)+"] = "delta(1620)"; 271 shortMap["delta(1620)++"] = "delta(1620)"; 272 273 shortMap["delta(1700)-"] = "delta(1700)"; 274 shortMap["delta(1700)0"] = "delta(1700)"; 275 shortMap["delta(1700)+"] = "delta(1700)"; 276 shortMap["delta(1700)++"] = "delta(1700)"; 277 278 shortMap["delta(1900)-"] = "delta(1900)"; 279 shortMap["delta(1900)0"] = "delta(1900)"; 280 shortMap["delta(1900)+"] = "delta(1900)"; 281 shortMap["delta(1900)++"] = "delta(1900)"; 282 283 shortMap["delta(1905)-"] = "delta(1905)"; 284 shortMap["delta(1905)0"] = "delta(1905)"; 285 shortMap["delta(1905)+"] = "delta(1905)"; 286 shortMap["delta(1905)++"] = "delta(1905)"; 287 288 shortMap["delta(1910)-"] = "delta(1910)"; 289 shortMap["delta(1910)0"] = "delta(1910)"; 290 shortMap["delta(1910)+"] = "delta(1910)"; 291 shortMap["delta(1910)++"] = "delta(1910)"; 292 293 shortMap["delta(1920)-"] = "delta(1920)"; 294 shortMap["delta(1920)0"] = "delta(1920)"; 295 shortMap["delta(1920)+"] = "delta(1920)"; 296 shortMap["delta(1920)++"] = "delta(1920)"; 297 298 shortMap["delta(1930)-"] = "delta(1930)"; 299 shortMap["delta(1930)0"] = "delta(1930)"; 300 shortMap["delta(1930)+"] = "delta(1930)"; 301 shortMap["delta(1930)++"] = "delta(1930)"; 302 303 shortMap["delta(1950)-"] = "delta(1950)"; 304 shortMap["delta(1950)0"] = "delta(1950)"; 305 shortMap["delta(1950)+"] = "delta(1950)"; 306 shortMap["delta(1950)++"] = "delta(1950)"; 307 308 // Delta 309 310 shortMap["delta-"] = "delta"; 311 shortMap["delta0"] = "delta"; 312 shortMap["delta+"] = "delta"; 313 shortMap["delta++"] = "delta"; 314 315 } 316 317 318 G4ResonanceNames::~G4ResonanceNames() 319 { } 320 321 322 G4bool G4ResonanceNames::operator==(const G4ResonanceNames &right) const 323 { 324 return(this == (G4ResonanceNames*) &right); 325 } 326 327 328 G4bool G4ResonanceNames::operator!=(const G4ResonanceNames &right) const 329 { 330 return (this != (G4ResonanceNames*) &right); 331 } 332 333 334 G4double G4ResonanceNames::MinMass(const G4String& name) 335 { 336 // Cut, from UrQMD (reference still to be detailed) 337 static const G4double coeff = 0.001; 338 339 G4double lowMass = 0.; 340 341 G4ParticleDefinition* def = 0; 342 343 if (lowResMap.find(name) != lowResMap.end()) 344 { 345 def = lowResMap[name]; 346 } 347 else 348 { 349 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); 350 def = particleTable->FindParticle(name); 351 } 352 if (def != 0) 353 { 354 G4ParticleDefinition* pion = G4PionPlus::PionPlusDefinition(); 355 lowMass = (1. + coeff) * def->GetPDGMass() + pion->GetPDGMass(); 356 } 357 else 358 { 359 G4cout << "G4ResonanceNames::MinMass - " << name << " not found" << G4endl; 360 throw G4HadronicException(__FILE__, __LINE__, "G4ResonanceNames::MinMass - resonance name not found"); 361 } 362 return lowMass; 363 } 364 365 366 const G4String G4ResonanceNames::ShortName(const G4String& name) 367 { 368 G4String shortName = ""; 369 if (shortMap.find(name) != shortMap.end()) 370 { 371 shortName = shortMap[name]; 372 } 373 return shortName; 374 } 375