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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "G4ExcitedLambdaConstructor.hh"
00038
00039 #include "G4SystemOfUnits.hh"
00040 #include "G4ParticleDefinition.hh"
00041 #include "G4ParticleTable.hh"
00042 #include "G4ShortLivedTable.hh"
00043 #include "G4PhaseSpaceDecayChannel.hh"
00044 #include "G4VDecayChannel.hh"
00045 #include "G4DecayTable.hh"
00046
00047
00048 G4ExcitedLambdaConstructor::G4ExcitedLambdaConstructor():
00049 G4ExcitedBaryonConstructor(NStates, LambdaIsoSpin)
00050 {
00051
00052 }
00053
00054 G4ExcitedLambdaConstructor::~G4ExcitedLambdaConstructor()
00055 {
00056 }
00057
00058 G4DecayTable* G4ExcitedLambdaConstructor::CreateDecayTable(
00059 const G4String& parentName,
00060 G4int iIso3,
00061 G4int iState,
00062 G4bool fAnti)
00063 {
00064
00065 G4DecayTable* decayTable = new G4DecayTable();
00066
00067 G4double br;
00068 if ( (br=bRatio[iState][NK]) >0.0) {
00069 AddNKMode( decayTable, parentName, br, iIso3, fAnti);
00070 }
00071
00072 if ( (br=bRatio[iState][NKStar]) >0.0) {
00073 AddNKStarMode( decayTable, parentName, br, iIso3, fAnti);
00074 }
00075
00076 if ( (br=bRatio[iState][SigmaPi]) >0.0) {
00077 AddSigmaPiMode( decayTable, parentName, br, iIso3, fAnti);
00078 }
00079
00080 if ( (br=bRatio[iState][SigmaStarPi]) >0.0) {
00081 AddSigmaStarPiMode( decayTable, parentName, br, iIso3, fAnti);
00082 }
00083
00084 if ( (br=bRatio[iState][LambdaGamma]) >0.0) {
00085 AddLambdaGammaMode( decayTable, parentName, br, iIso3, fAnti);
00086 }
00087
00088 if ( (br=bRatio[iState][LambdaEta]) >0.0) {
00089 AddLambdaEtaMode( decayTable, parentName, br, iIso3, fAnti);
00090 }
00091
00092 if ( (br=bRatio[iState][LambdaOmega]) >0.0) {
00093 AddLambdaOmegaMode( decayTable, parentName, br, iIso3, fAnti);
00094 }
00095
00096 return decayTable;
00097 }
00098
00099 G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaGammaMode(
00100 G4DecayTable* decayTable, const G4String& nameParent,
00101 G4double br, G4int , G4bool fAnti)
00102 {
00103 G4VDecayChannel* mode;
00104
00105
00106 G4String lambda = "lambda";
00107 if (fAnti) lambda = "anti_" + lambda;
00108
00109
00110 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00111 lambda,"gamma");
00112
00113 decayTable->Insert(mode);
00114
00115 return decayTable;
00116 }
00117 G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaEtaMode(
00118 G4DecayTable* decayTable, const G4String& nameParent,
00119 G4double br, G4int , G4bool fAnti)
00120 {
00121 G4VDecayChannel* mode;
00122
00123
00124 G4String lambda = "lambda";
00125 if (fAnti) lambda = "anti_" + lambda;
00126
00127
00128 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00129 lambda,"eta");
00130
00131 decayTable->Insert(mode);
00132
00133 return decayTable;
00134 }
00135
00136 G4DecayTable* G4ExcitedLambdaConstructor::AddLambdaOmegaMode(
00137 G4DecayTable* decayTable, const G4String& nameParent,
00138 G4double br, G4int , G4bool fAnti)
00139 {
00140 G4VDecayChannel* mode;
00141
00142
00143 G4String lambda = "lambda";
00144 if (fAnti) lambda = "anti_" + lambda;
00145
00146
00147 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00148 lambda,"omega");
00149
00150 decayTable->Insert(mode);
00151
00152 return decayTable;
00153 }
00154
00155 G4DecayTable* G4ExcitedLambdaConstructor::AddNKMode(
00156 G4DecayTable* decayTable, const G4String& nameParent,
00157 G4double br, G4int , G4bool fAnti)
00158 {
00159 G4VDecayChannel* mode;
00160
00161 G4String daughterN;
00162 G4String daughterK;
00163
00164
00165
00166 daughterN = "proton";
00167 if (!fAnti) {
00168 daughterK = "kaon-";
00169 } else {
00170 daughterK = "kaon+";
00171 }
00172 if (fAnti) daughterN = "anti_" + daughterN;
00173
00174 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00175 daughterN,daughterK);
00176
00177 decayTable->Insert(mode);
00178
00179
00180
00181 daughterN = "neutron";
00182 if (!fAnti) {
00183 daughterK = "anti_kaon0";
00184 } else {
00185 daughterK = "kaon0";
00186 }
00187 if (fAnti) daughterN = "anti_" + daughterN;
00188
00189 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00190 daughterN,daughterK);
00191
00192 decayTable->Insert(mode);
00193
00194
00195 return decayTable;
00196 }
00197
00198 G4DecayTable* G4ExcitedLambdaConstructor::AddNKStarMode(
00199 G4DecayTable* decayTable, const G4String& nameParent,
00200 G4double br, G4int , G4bool fAnti)
00201 {
00202 G4VDecayChannel* mode;
00203
00204 G4String daughterN;
00205 G4String daughterK;
00206
00207
00208
00209 daughterN = "proton";
00210 if (!fAnti) {
00211 daughterK = "k_star-";
00212 } else {
00213 daughterK = "k_star+";
00214 }
00215 if (fAnti) daughterN = "anti_" + daughterN;
00216
00217 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00218 daughterN,daughterK);
00219
00220 decayTable->Insert(mode);
00221
00222
00223
00224 daughterN = "neutron";
00225 if (!fAnti) {
00226 daughterK = "anti_k_star0";
00227 } else {
00228 daughterK = "k_star0";
00229 }
00230 if (fAnti) daughterN = "anti_" + daughterN;
00231
00232 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00233 daughterN,daughterK);
00234
00235 decayTable->Insert(mode);
00236
00237
00238 return decayTable;
00239 }
00240
00241 G4DecayTable* G4ExcitedLambdaConstructor::AddSigmaPiMode(
00242 G4DecayTable* decayTable, const G4String& nameParent,
00243 G4double br, G4int , G4bool fAnti)
00244 {
00245 G4VDecayChannel* mode;
00246
00247 G4String daughterSigma;
00248 G4String daughterPi;
00249
00250
00251
00252 daughterSigma = "sigma+";
00253 if (!fAnti) {
00254 daughterPi = "pi-";
00255 } else {
00256 daughterPi = "pi+";
00257 }
00258 if (fAnti) daughterSigma = "anti_" + daughterSigma;
00259
00260 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00261 daughterSigma,daughterPi);
00262
00263 decayTable->Insert(mode);
00264
00265
00266
00267 daughterSigma = "sigma0";
00268 daughterPi = "pi0";
00269
00270 if (fAnti) daughterSigma = "anti_" + daughterSigma;
00271
00272 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00273 daughterSigma,daughterPi);
00274
00275
00276 decayTable->Insert(mode);
00277
00278
00279
00280 daughterSigma = "sigma-";
00281 if (!fAnti) {
00282 daughterPi = "pi+";
00283 } else {
00284 daughterPi = "pi-";
00285 }
00286 if (fAnti) daughterSigma = "anti_" + daughterSigma;
00287
00288 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00289 daughterSigma,daughterPi);
00290
00291 decayTable->Insert(mode);
00292
00293 return decayTable;
00294 }
00295
00296
00297 G4DecayTable* G4ExcitedLambdaConstructor::AddSigmaStarPiMode(
00298 G4DecayTable* decayTable, const G4String& nameParent,
00299 G4double br, G4int , G4bool fAnti)
00300 {
00301 G4VDecayChannel* mode;
00302
00303 G4String daughterSigma;
00304 G4String daughterPi;
00305
00306
00307
00308 daughterSigma = "sigma(1385)+";
00309 if (!fAnti) {
00310 daughterPi = "pi-";
00311 } else {
00312 daughterPi = "pi+";
00313 }
00314 if (fAnti) daughterSigma = "anti_" + daughterSigma;
00315
00316 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00317 daughterSigma,daughterPi);
00318
00319 decayTable->Insert(mode);
00320
00321
00322
00323 daughterSigma = "sigma(1385)0";
00324 daughterPi = "pi0";
00325
00326 if (fAnti) daughterSigma = "anti_" + daughterSigma;
00327
00328 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00329 daughterSigma,daughterPi);
00330
00331
00332 decayTable->Insert(mode);
00333
00334
00335
00336 daughterSigma = "sigma(1385)-";
00337 if (!fAnti) {
00338 daughterPi = "pi+";
00339 } else {
00340 daughterPi = "pi-";
00341 }
00342 if (fAnti) daughterSigma = "anti_" + daughterSigma;
00343
00344 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00345 daughterSigma,daughterPi);
00346
00347 decayTable->Insert(mode);
00348
00349 return decayTable;
00350 }
00351
00352 const char* G4ExcitedLambdaConstructor::name[] = {
00353 "lambda(1405)","lambda(1520)","lambda(1600)","lambda(1670)","lambda(1690)",
00354 "lambda(1800)","lambda(1810)","lambda(1820)","lambda(1830)","lambda(1890)",
00355 "lambda(2100)","lambda(2110)"
00356 };
00357
00358 const G4double G4ExcitedLambdaConstructor::mass[] = {
00359 1.4051*GeV,1.5195*GeV, 1.600*GeV, 1.670*GeV, 1.690*GeV,
00360 1.800*GeV, 1.810*GeV, 1.820*GeV, 1.830*GeV, 1.890*GeV,
00361 2.100*GeV, 2.110*GeV
00362 };
00363
00364 const G4double G4ExcitedLambdaConstructor::width[] = {
00365 50.0*MeV, 15.6*MeV, 150.0*MeV, 35.0*MeV, 60.0*MeV,
00366 300.0*MeV, 150.0*MeV, 80.0*MeV, 95.0*MeV, 100.0*MeV,
00367 200.0*MeV, 200.0*MeV
00368 };
00369
00370 const G4int G4ExcitedLambdaConstructor::iSpin[] = {
00371 1, 3, 1, 1, 3,
00372 1, 1, 5, 5, 3,
00373 7, 5
00374 };
00375
00376 const G4int G4ExcitedLambdaConstructor::iParity[] = {
00377 -1, -1, +1, -1, -1,
00378 -1, +1, +1, -1, +1,
00379 -1, +1
00380 };
00381
00382 const G4int G4ExcitedLambdaConstructor::encodingOffset[] = {
00383 10000, 0, 20000, 30000, 10000,
00384 40000, 50000, 0, 10000, 20000,
00385 0, 20000
00386 };
00387
00388 const G4double G4ExcitedLambdaConstructor::bRatio[ G4ExcitedLambdaConstructor::NStates ][ G4ExcitedLambdaConstructor::NumberOfDecayModes] =
00389 {
00390 { 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0},
00391 { 0.45, 0.0, 0.43, 0.11, 0.01, 0.0, 0.0},
00392 { 0.35, 0.0, 0.65, 0.0, 0.0, 0.0, 0.0},
00393 { 0.20, 0.0, 0.50, 0.0, 0.0, 0.30, 0.0},
00394 { 0.25, 0.0, 0.45, 0.30, 0.0, 0.0, 0.0},
00395 { 0.40, 0.20, 0.20, 0.20, 0.0, 0.0, 0.0},
00396 { 0.35, 0.45, 0.15, 0.05, 0.0, 0.0, 0.0},
00397 { 0.73, 0.0, 0.16, 0.11, 0.0, 0.0, 0.0},
00398 { 0.10, 0.0, 0.70, 0.20, 0.0, 0.0, 0.0},
00399 { 0.37, 0.21, 0.11, 0.31, 0.0, 0.0, 0.0},
00400 { 0.35, 0.20, 0.05, 0.30, 0.0, 0.02, 0.08},
00401 { 0.25, 0.45, 0.30, 0.0, 0.0, 0.0, 0.0}
00402 };
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418