00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "globals.hh"
00027 #include "G4ResonanceNames.hh"
00028 #include "G4VCrossSectionSource.hh"
00029 #include "G4KineticTrack.hh"
00030 #include "G4CrossSectionVector.hh"
00031 #include "G4ParticleDefinition.hh"
00032 #include "G4ShortLivedConstructor.hh"
00033 #include "G4ShortLivedTable.hh"
00034 #include "G4ParticleTable.hh"
00035 #include "G4PionPlus.hh"
00036
00037 G4ResonanceNames::G4ResonanceNames()
00038 {
00039
00040
00041 nameNstar.push_back("N(1440)+");
00042 nameNstar.push_back("N(1440)0");
00043 nameNstar.push_back("N(1520)+");
00044 nameNstar.push_back("N(1520)0");
00045 nameNstar.push_back("N(1535)+");
00046 nameNstar.push_back("N(1535)0");
00047 nameNstar.push_back("N(1650)+");
00048 nameNstar.push_back("N(1650)0");
00049 nameNstar.push_back("N(1675)+");
00050 nameNstar.push_back("N(1675)0");
00051 nameNstar.push_back("N(1680)+");
00052 nameNstar.push_back("N(1680)0");
00053 nameNstar.push_back("N(1700)+");
00054 nameNstar.push_back("N(1700)0");
00055 nameNstar.push_back("N(1710)+");
00056 nameNstar.push_back("N(1710)0");
00057 nameNstar.push_back("N(1720)+");
00058 nameNstar.push_back("N(1720)0");
00059 nameNstar.push_back("N(1900)+");
00060 nameNstar.push_back("N(1900)0");
00061 nameNstar.push_back("N(1990)+");
00062 nameNstar.push_back("N(1990)0");
00063 nameNstar.push_back("N(2090)+");
00064 nameNstar.push_back("N(2090)0");
00065 nameNstar.push_back("N(2190)+");
00066 nameNstar.push_back("N(2190)0");
00067 nameNstar.push_back("N(2220)+");
00068 nameNstar.push_back("N(2220)0");
00069 nameNstar.push_back("N(2250)+");
00070 nameNstar.push_back("N(2250)0");
00071
00072
00073
00074
00075 G4String d1232Minus("delta-");
00076 G4String d1232Zero("delta0");
00077 G4String d1232Plus("delta+");
00078 G4String d1232PlusPlus("delta++");
00079 nameDelta.push_back(d1232Minus);
00080 nameDelta.push_back(d1232Zero);
00081 nameDelta.push_back(d1232Plus);
00082 nameDelta.push_back(d1232PlusPlus);
00083
00084
00085
00086
00087 nameDeltastar.push_back("delta(1600)+");
00088 nameDeltastar.push_back("delta(1600)++");
00089 nameDeltastar.push_back("delta(1600)-");
00090 nameDeltastar.push_back("delta(1600)0");
00091 nameDeltastar.push_back("delta(1620)+");
00092 nameDeltastar.push_back("delta(1620)++");
00093 nameDeltastar.push_back("delta(1620)-");
00094 nameDeltastar.push_back("delta(1620)0");
00095 nameDeltastar.push_back("delta(1700)+");
00096 nameDeltastar.push_back("delta(1700)++");
00097 nameDeltastar.push_back("delta(1700)-");
00098 nameDeltastar.push_back("delta(1700)0");
00099 nameDeltastar.push_back("delta(1900)+");
00100 nameDeltastar.push_back("delta(1900)++");
00101 nameDeltastar.push_back("delta(1900)-");
00102 nameDeltastar.push_back("delta(1900)0");
00103 nameDeltastar.push_back("delta(1905)+");
00104 nameDeltastar.push_back("delta(1905)++");
00105 nameDeltastar.push_back("delta(1905)-");
00106 nameDeltastar.push_back("delta(1905)0");
00107 nameDeltastar.push_back("delta(1910)+");
00108 nameDeltastar.push_back("delta(1910)++");
00109 nameDeltastar.push_back("delta(1910)-");
00110 nameDeltastar.push_back("delta(1910)0");
00111 nameDeltastar.push_back("delta(1920)+");
00112 nameDeltastar.push_back("delta(1920)++");
00113 nameDeltastar.push_back("delta(1920)-");
00114 nameDeltastar.push_back("delta(1920)0");
00115 nameDeltastar.push_back("delta(1930)+");
00116 nameDeltastar.push_back("delta(1930)++");
00117 nameDeltastar.push_back("delta(1930)-");
00118 nameDeltastar.push_back("delta(1930)0");
00119 nameDeltastar.push_back("delta(1950)+");
00120 nameDeltastar.push_back("delta(1950)++");
00121 nameDeltastar.push_back("delta(1950)-");
00122 nameDeltastar.push_back("delta(1950)0");
00123
00124
00125
00126
00127 nameLambda.push_back("lambda");
00128 nameLambda.push_back("lambda(1405)");
00129 nameLambda.push_back("lambda(1520)");
00130 nameLambda.push_back("lambda(1600)");
00131 nameLambda.push_back("lambda(1670)");
00132 nameLambda.push_back("lambda(1690)");
00133 nameLambda.push_back("lambda(1800)");
00134 nameLambda.push_back("lambda(1810)");
00135 nameLambda.push_back("lambda(1820)");
00136 nameLambda.push_back("lambda(1830)");
00137 nameLambda.push_back("lambda(1890)");
00138 nameLambda.push_back("lambda(2100)");
00139 nameLambda.push_back("lambda(2110)");
00140
00141
00142
00143
00144 nameSigma.push_back("sigma(1385)+");
00145 nameSigma.push_back("sigma(1385)-");
00146 nameSigma.push_back("sigma(1385)0");
00147 nameSigma.push_back("sigma(1660)+");
00148 nameSigma.push_back("sigma(1660)-");
00149 nameSigma.push_back("sigma(1660)0");
00150 nameSigma.push_back("sigma(1670)+");
00151 nameSigma.push_back("sigma(1670)-");
00152 nameSigma.push_back("sigma(1670)0");
00153 nameSigma.push_back("sigma(1750)+");
00154 nameSigma.push_back("sigma(1750)-");
00155 nameSigma.push_back("sigma(1750)0");
00156 nameSigma.push_back("sigma(1775)+");
00157 nameSigma.push_back("sigma(1775)-");
00158 nameSigma.push_back("sigma(1775)0");
00159 nameSigma.push_back("sigma(1915)+");
00160 nameSigma.push_back("sigma(1915)-");
00161 nameSigma.push_back("sigma(1915)0");
00162 nameSigma.push_back("sigma(1940)+");
00163 nameSigma.push_back("sigma(1940)-");
00164 nameSigma.push_back("sigma(1940)0");
00165 nameSigma.push_back("sigma(2030)+");
00166 nameSigma.push_back("sigma(2030)-");
00167 nameSigma.push_back("sigma(2030)0");
00168
00169
00170
00171
00172 nameXi.push_back("xi(1530)-");
00173 nameXi.push_back("xi(1530)0");
00174 nameXi.push_back("xi(1690)-");
00175 nameXi.push_back("xi(1690)0");
00176 nameXi.push_back("xi(1820)-");
00177 nameXi.push_back("xi(1820)0");
00178 nameXi.push_back("xi(1950)-");
00179 nameXi.push_back("xi(1950)0");
00180 nameXi.push_back("xi(2030)-");
00181 nameXi.push_back("xi(2030)0");
00182
00183
00184 G4ShortLivedConstructor ShortLived;
00185 ShortLived.ConstructParticle();
00186 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
00187
00188 size_t i;
00189
00190
00191 for (i=0; i<nameNstar.size(); i++)
00192 {
00193 lowResMap[nameNstar[i]] = particleTable->FindParticle("N(1440)0");
00194 }
00195
00196 for (i=0; i<nameDeltastar.size(); i++)
00197 {
00198 lowResMap[nameDeltastar[i]] = particleTable->FindParticle("delta0");
00199 }
00200
00201 for (i=0; i<nameDelta.size(); i++)
00202 {
00203 lowResMap[nameDelta[i]] = particleTable->FindParticle("delta0");
00204 }
00205
00206 for (i=0; i<nameLambda.size(); i++)
00207 {
00208 lowResMap[nameLambda[i]] = particleTable->FindParticle("lambda");
00209 }
00210
00211 for (i=0; i<nameSigma.size(); i++)
00212 {
00213 lowResMap[nameSigma[i]] = particleTable->FindParticle("sigma0");
00214 }
00215
00216 shortMap["N(1440)0"] = "N(1440)";
00217 shortMap["N(1440)+"] = "N(1440)";
00218
00219 shortMap["N(1520)0"] = "N(1520)";;
00220 shortMap["N(1520)+"] = "N(1520)";
00221
00222 shortMap["N(1535)0"] = "N(1535)";
00223 shortMap["N(1535)+"] = "N(1535)";
00224
00225 shortMap["N(1650)0"] = "N(1650)";
00226 shortMap["N(1650)+"] = "N(1650)";
00227
00228 shortMap["N(1675)0"] = "N(1675)";
00229 shortMap["N(1675)+"] = "N(1675)";
00230
00231 shortMap["N(1680)0"] = "N(1680)";
00232 shortMap["N(1680)+"] = "N(1680)";
00233
00234 shortMap["N(1700)0"] = "N(1700)";
00235 shortMap["N(1700)+"] = "N(1700)";
00236
00237 shortMap["N(1710)0"] = "N(1710)";
00238 shortMap["N(1710)+"] = "N(1710)";
00239
00240 shortMap["N(1720)0"] = "N(1720)";
00241 shortMap["N(1720)+"] = "N(1720)";
00242
00243 shortMap["N(1900)0"] = "N(1900)";
00244 shortMap["N(1900)+"] = "N(1900)";
00245
00246 shortMap["N(1990)0"] = "N(1990)";
00247 shortMap["N(1990)+"] = "N(1990)";
00248
00249 shortMap["N(2090)0"] = "N(2090)";
00250 shortMap["N(2090)+"] = "N(2090)";
00251
00252 shortMap["N(2190)0"] = "N(2190)";
00253 shortMap["N(2190)+"] = "N(2190)";
00254
00255 shortMap["N(2220)0"] = "N(2220)";
00256 shortMap["N(2220)+"] = "N(2220)";
00257
00258 shortMap["N(2250)0"] = "N(2250)";
00259 shortMap["N(2250)+"] = "N(2250)";
00260
00261
00262
00263
00264 shortMap["delta(1600)-"] = "delta(1600)";
00265 shortMap["delta(1600)0"] = "delta(1600)";
00266 shortMap["delta(1600)+"] = "delta(1600)";
00267 shortMap["delta(1600)++"] = "delta(1600)";
00268
00269 shortMap["delta(1620)-"] = "delta(1620)";
00270 shortMap["delta(1620)0"] = "delta(1620)";
00271 shortMap["delta(1620)+"] = "delta(1620)";
00272 shortMap["delta(1620)++"] = "delta(1620)";
00273
00274 shortMap["delta(1700)-"] = "delta(1700)";
00275 shortMap["delta(1700)0"] = "delta(1700)";
00276 shortMap["delta(1700)+"] = "delta(1700)";
00277 shortMap["delta(1700)++"] = "delta(1700)";
00278
00279 shortMap["delta(1900)-"] = "delta(1900)";
00280 shortMap["delta(1900)0"] = "delta(1900)";
00281 shortMap["delta(1900)+"] = "delta(1900)";
00282 shortMap["delta(1900)++"] = "delta(1900)";
00283
00284 shortMap["delta(1905)-"] = "delta(1905)";
00285 shortMap["delta(1905)0"] = "delta(1905)";
00286 shortMap["delta(1905)+"] = "delta(1905)";
00287 shortMap["delta(1905)++"] = "delta(1905)";
00288
00289 shortMap["delta(1910)-"] = "delta(1910)";
00290 shortMap["delta(1910)0"] = "delta(1910)";
00291 shortMap["delta(1910)+"] = "delta(1910)";
00292 shortMap["delta(1910)++"] = "delta(1910)";
00293
00294 shortMap["delta(1920)-"] = "delta(1920)";
00295 shortMap["delta(1920)0"] = "delta(1920)";
00296 shortMap["delta(1920)+"] = "delta(1920)";
00297 shortMap["delta(1920)++"] = "delta(1920)";
00298
00299 shortMap["delta(1930)-"] = "delta(1930)";
00300 shortMap["delta(1930)0"] = "delta(1930)";
00301 shortMap["delta(1930)+"] = "delta(1930)";
00302 shortMap["delta(1930)++"] = "delta(1930)";
00303
00304 shortMap["delta(1950)-"] = "delta(1950)";
00305 shortMap["delta(1950)0"] = "delta(1950)";
00306 shortMap["delta(1950)+"] = "delta(1950)";
00307 shortMap["delta(1950)++"] = "delta(1950)";
00308
00309
00310
00311 shortMap["delta-"] = "delta";
00312 shortMap["delta0"] = "delta";
00313 shortMap["delta+"] = "delta";
00314 shortMap["delta++"] = "delta";
00315
00316 }
00317
00318
00319 G4ResonanceNames::~G4ResonanceNames()
00320 { }
00321
00322
00323 G4bool G4ResonanceNames::operator==(const G4ResonanceNames &right) const
00324 {
00325 return(this == (G4ResonanceNames*) &right);
00326 }
00327
00328
00329 G4bool G4ResonanceNames::operator!=(const G4ResonanceNames &right) const
00330 {
00331 return (this != (G4ResonanceNames*) &right);
00332 }
00333
00334
00335 G4double G4ResonanceNames::MinMass(const G4String& name)
00336 {
00337
00338 const G4double coeff = 0.001;
00339
00340 G4double lowMass = 0.;
00341
00342 G4ParticleDefinition* def = 0;
00343
00344 if (lowResMap.find(name) != lowResMap.end())
00345 {
00346 def = lowResMap[name];
00347 }
00348 else
00349 {
00350 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
00351 def = particleTable->FindParticle(name);
00352 }
00353 if (def != 0)
00354 {
00355 G4ParticleDefinition* pion = G4PionPlus::PionPlusDefinition();
00356 lowMass = (1. + coeff) * def->GetPDGMass() + pion->GetPDGMass();
00357 }
00358 else
00359 {
00360 G4cout << "G4ResonanceNames::MinMass - " << name << " not found" << G4endl;
00361 throw G4HadronicException(__FILE__, __LINE__, "G4ResonanceNames::MinMass - resonance name not found");
00362 }
00363 return lowMass;
00364 }
00365
00366
00367 const G4String G4ResonanceNames::ShortName(const G4String& name)
00368 {
00369 G4String shortName = "";
00370 if (shortMap.find(name) != shortMap.end())
00371 {
00372 shortName = shortMap[name];
00373 }
00374 return shortName;
00375 }