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 "G4ExcitedMesonConstructor.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 G4ExcitedMesonConstructor::G4ExcitedMesonConstructor(G4int ,
00049 G4int )
00050 : type("meson"), leptonNumber(0), baryonNumber(0)
00051 {
00052 }
00053
00054 G4ExcitedMesonConstructor::~G4ExcitedMesonConstructor()
00055 {
00056 }
00057
00058 void G4ExcitedMesonConstructor::Construct(G4int idx)
00059 {
00060 G4int iType;
00061 if (idx < 0 ) {
00062 for (G4int state=0; state< NMultiplets; state +=1) {
00063 for (iType = 0; iType < NMesonTypes ; iType++)
00064 ConstructMesons(state, iType);
00065 }
00066 } else if (idx < NMultiplets ) {
00067 for (iType = 0; iType < NMesonTypes ; iType++)
00068 ConstructMesons(idx, iType);
00069 } else {
00070 #ifdef G4VERBOSE
00071 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>1) {
00072 G4cerr << "G4ExcitedMesonConstructor::Construct()";
00073 G4cerr << " illegal index os state = " << idx << G4endl;
00074 }
00075 #endif
00076 }
00077 }
00078
00079 G4bool G4ExcitedMesonConstructor::Exist(G4int idxState, G4int idxType)
00080 {
00081 G4bool value = true;
00082 if ( idxType == TEtaPrime ) {
00083 if (idxState==N13P0) value = false;
00084 if (idxState==N13D1) value = false;
00085 } else if ( idxType == TPi ) {
00086 if (idxState==N23P2) value = false;
00087 }
00088 return value;
00089 }
00090
00091 #include "G4ExcitedMesons.hh"
00092
00093 void G4ExcitedMesonConstructor::ConstructMesons(G4int iState, G4int iType)
00094 {
00095 if (!Exist(iState, iType) ) return;
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 G4String aName;
00110 G4ExcitedMesons* particle;
00111
00112 for ( G4int iIso3=(-1)*iIsoSpin[iType]; iIso3<=iIsoSpin[iType]; iIso3+=2) {
00113 aName= GetName(iIso3, iState, iType);
00114 G4double fmass = mass[iState][iType];
00115 G4double fwidth = width[iState][iType];
00116 if ( (iType== TK) || (iType==TAntiK ) ) {
00117 if ( GetCharge(iIso3,iType) == 0.0) {
00118 fmass += massKdiff[iState];
00119 fwidth += widthKdiff[iState];
00120 }
00121 }
00122 particle = new G4ExcitedMesons(
00123 aName, fmass, fwidth,
00124 GetCharge(iIso3,iType), iSpin[iState],
00125 iParity[iState], iChargeConjugation[iState],
00126 iIsoSpin[iType], iIso3,
00127 iGParity[iState][iType],
00128 type, leptonNumber, baryonNumber,
00129 GetEncoding(iIso3, iState, iType),
00130 false, 0.0, NULL
00131 );
00132
00133 if ( (iType==TEta) || (iType==TEtaPrime) || ((iType==TPi)&&(iIso3==0)) ) {
00134
00135 particle->SetAntiPDGEncoding(GetEncoding(iIso3, iState, iType));
00136 }
00137 particle->SetMultipletName(name[iState][iType]);
00138 particle->SetDecayTable(CreateDecayTable( aName, iIso3, iState, iType));
00139 }
00140 }
00141
00142
00143 G4int G4ExcitedMesonConstructor::GetQuarkContents(G4int iQ,
00144 G4int iIso3,
00145 G4int iType)
00146 {
00147
00148
00149 G4int quark=0;
00150 if (iType == TPi) {
00151 if ( iIso3 == 2 ){
00152 if ( iQ == 0 ){ quark = 2; }
00153 else { quark = 1; }
00154 } else if ( iIso3 == 0 ){
00155 quark = 1;
00156 } else if ( iIso3 == -2 ){
00157 if ( iQ == 0 ){ quark = 1; }
00158 else { quark = 2; }
00159 }
00160 } else if (iType == TEta) {
00161 quark = 2;
00162
00163 } else if (iType == TEtaPrime) {
00164 quark = 3;
00165
00166 } else if (iType == TAntiK) {
00167 if ( iIso3 == 1 ){
00168 if ( iQ == 0 ){ quark = 3; }
00169 else { quark = 1; }
00170 } else if ( iIso3 == -1 ){
00171 if ( iQ == 0 ){ quark = 3; }
00172 else { quark = 2; }
00173 }
00174
00175 } else if (iType == TK) {
00176 if ( iIso3 == 1 ){
00177 if ( iQ == 0 ){ quark = 2; }
00178 else { quark = 3; }
00179 } else if ( iIso3 == -1 ){
00180 if ( iQ == 0 ){ quark = 1; }
00181 else { quark = 3; }
00182 }
00183
00184 }
00185 return quark;
00186 }
00187
00188 G4double G4ExcitedMesonConstructor::GetCharge(G4int iIsoSpin3, G4int idxType )
00189 {
00190 static G4double quark_charge[7] =
00191 {
00192 0., -1./3., +2./3., -1./3., +2./3., -1./3., +2./3.
00193 };
00194
00195 G4double charge = quark_charge[GetQuarkContents(0, iIsoSpin3, idxType)]*eplus;
00196 charge -= quark_charge[GetQuarkContents(1, iIsoSpin3, idxType)]*eplus;
00197 return charge;
00198 }
00199
00200 G4int G4ExcitedMesonConstructor::GetEncoding(G4int iIsoSpin3,
00201 G4int idxState,
00202 G4int idxType )
00203 {
00204 G4int encoding = encodingOffset[idxState];
00205 encoding += iSpin[idxState] +1;
00206 G4int iQ = 0;
00207 G4int iQbar = 1;
00208
00209 if ( idxType == TPi ) {
00210 if (iIsoSpin3<0) {
00211 iQ = 1;
00212 iQbar = 0;
00213 }
00214 } else if ( idxType == TK ) {
00215 iQ = 1;
00216 iQbar = 0;
00217 }
00218
00219
00220 encoding += 100*GetQuarkContents(iQ, iIsoSpin3, idxType);
00221 encoding += 10*GetQuarkContents(iQbar, iIsoSpin3, idxType);
00222 if ( idxType == TPi ) {
00223 if (iIsoSpin3<0) {
00224 encoding *= -1;
00225 }
00226 } else if ( idxType == TAntiK ) {
00227 encoding *= -1;
00228 }
00229
00230
00231
00232 if (idxState == 9 ) {
00233 if (idxType == TEta) {
00234
00235 encoding = 9030225;
00236 } else if (idxType == TEtaPrime) {
00237
00238 encoding = 9060225;
00239 }
00240 }
00241
00242 return encoding;
00243 }
00244
00245 G4DecayTable* G4ExcitedMesonConstructor::CreateDecayTable(
00246 const G4String& parentName,
00247 G4int iIso3,
00248 G4int iState,
00249 G4int iType)
00250 {
00251
00252 G4DecayTable* decayTable = new G4DecayTable();
00253 G4double br;
00254
00255 if ((iType==TK)||(iType==TAntiK)) {
00256
00257 if ( (br=bRatio[iState][iType][MKPi]) >0.0) {
00258 AddKPiMode( decayTable, parentName, br, iIso3, iType );
00259 }
00260 if ( (br=bRatio[iState][iType][MKStarPi]) >0.0) {
00261 AddKStarPiMode( decayTable, parentName, br, iIso3, iType );
00262 }
00263 if ( (br=bRatio[iState][iType][MKRho]) >0.0) {
00264 AddKRhoMode( decayTable, parentName, br, iIso3, iType );
00265 }
00266 if ( (br=bRatio[iState][iType][MKOmega]) >0.0) {
00267 AddKOmegaMode( decayTable, parentName, br, iIso3, iType );
00268 }
00269 if ( (br=bRatio[iState][iType][MKStar2Pi]) >0.0) {
00270 AddKStar2PiMode( decayTable, parentName, br, iIso3, iType );
00271 }
00272 if ( (br=bRatio[iState][iType][MKTwoPi]) >0.0) {
00273 AddKTwoPiMode( decayTable, parentName, br, iIso3, iType );
00274 }
00275 if ( (br=bRatio[iState][iType][MKEta]) >0.0) {
00276 AddKEtaMode( decayTable, parentName, br, iIso3, iType );
00277 }
00278
00279 } else {
00280 if ( (br=bRatio[iState][iType][MPiGamma]) >0.0) {
00281 AddPiGammaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00282 }
00283 if ( (br=bRatio[iState][iType][MRhoGamma]) >0.0) {
00284 AddRhoGammaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00285 }
00286 if ( (br=bRatio[iState][iType][M2Pi]) >0.0) {
00287 Add2PiMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00288 }
00289 if ( (br=bRatio[iState][iType][MPiRho]) >0.0) {
00290 AddPiRhoMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00291 }
00292 if ( (br=bRatio[iState][iType][M3Pi]) >0.0) {
00293 Add3PiMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00294 }
00295 if ( (br=bRatio[iState][iType][M4Pi]) >0.0) {
00296 Add4PiMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00297 }
00298 if ( (br=bRatio[iState][iType][MKKStar]) >0.0) {
00299 AddKKStarMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00300 }
00301 if ( (br=bRatio[iState][iType][M2PiEta]) >0.0) {
00302 Add2PiEtaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00303 }
00304 if ( (br=bRatio[iState][iType][MRhoEta]) >0.0) {
00305 AddRhoEtaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00306 }
00307 if ( (br=bRatio[iState][iType][M2PiRho]) >0.0) {
00308 Add2PiRhoMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00309 }
00310 if ( (br=bRatio[iState][iType][M2PiOmega]) >0.0) {
00311 Add2PiOmegaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00312 }
00313 if ( (br=bRatio[iState][iType][M2Eta]) >0.0) {
00314 Add2EtaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00315 }
00316 if ( (br=bRatio[iState][iType][M2K]) >0.0) {
00317 Add2KMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00318 }
00319 if ( (br=bRatio[iState][iType][M2KPi]) >0.0) {
00320 Add2KPiMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00321 }
00322 if ( (br=bRatio[iState][iType][MPiOmega]) >0.0) {
00323 AddPiOmegaMode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00324 }
00325 if ( (br=bRatio[iState][iType][MPiF2]) >0.0) {
00326 AddPiF2Mode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00327 }
00328 if ( (br=bRatio[iState][iType][MPiF0]) >0.0) {
00329 AddPiF0Mode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00330 }
00331 if ( (br=bRatio[iState][iType][MPiA2]) >0.0) {
00332 AddPiA2Mode( decayTable, parentName, br, iIso3, iIsoSpin[iType] );
00333 }
00334 }
00335
00336 return decayTable;
00337 }
00338
00339 G4DecayTable* G4ExcitedMesonConstructor::AddKPiMode(
00340 G4DecayTable* decayTable, const G4String& nameParent,
00341 G4double br, G4int iIso3, G4int iType)
00342 {
00343 G4VDecayChannel* mode;
00344
00345 if (iIso3 == +1) {
00346 if (iType == TK) {
00347 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00348 "kaon+","pi0");
00349 decayTable->Insert(mode);
00350 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00351 "kaon0","pi+");
00352 decayTable->Insert(mode);
00353 }else if (iType==TAntiK) {
00354 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00355 "anti_kaon0","pi0");
00356 decayTable->Insert(mode);
00357 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00358 "kaon-","pi+");
00359 decayTable->Insert(mode);
00360 }
00361 } else if (iIso3 == -1) {
00362 if (iType == TK) {
00363 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00364 "kaon0","pi0");
00365 decayTable->Insert(mode);
00366 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00367 "kaon+","pi-");
00368 decayTable->Insert(mode);
00369
00370 }else if (iType==TAntiK) {
00371 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00372 "kaon-","pi0");
00373 decayTable->Insert(mode);
00374 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00375 "anti_kaon0","pi-");
00376 decayTable->Insert(mode);
00377 }
00378 }
00379
00380 return decayTable;
00381 }
00382 G4DecayTable* G4ExcitedMesonConstructor::AddKTwoPiMode(
00383 G4DecayTable* decayTable, const G4String& nameParent,
00384 G4double br, G4int iIso3, G4int iType)
00385 {
00386 G4VDecayChannel* mode;
00387
00388 if (iIso3 == +1) {
00389 if (iType == TK) {
00390 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00391 "k2_star(1430)+","pi0");
00392 decayTable->Insert(mode);
00393 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00394 "k2_star(1430)0","pi+");
00395 decayTable->Insert(mode);
00396 }else if (iType==TAntiK) {
00397 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00398 "anti_k2_star(1430)0","pi0");
00399 decayTable->Insert(mode);
00400 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00401 "k2_star(1430)-","pi+");
00402 decayTable->Insert(mode);
00403 }
00404 } else if (iIso3 == -1) {
00405 if (iType == TK) {
00406 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00407 "k2_star(1430)0","pi0");
00408 decayTable->Insert(mode);
00409 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00410 "k2_star(1430)+","pi-");
00411 decayTable->Insert(mode);
00412
00413 }else if (iType==TAntiK) {
00414 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00415 "k2_star(1430)-","pi0");
00416 decayTable->Insert(mode);
00417 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00418 "anti_k2_star(1430)0","pi-");
00419 decayTable->Insert(mode);
00420 }
00421 }
00422
00423 return decayTable;
00424 }
00425
00426 G4DecayTable* G4ExcitedMesonConstructor::AddKOmegaMode(
00427 G4DecayTable* decayTable, const G4String& nameParent,
00428 G4double br, G4int iIso3, G4int iType)
00429 {
00430 G4VDecayChannel* mode;
00431
00432 if (iIso3 == +1) {
00433 if (iType == TK) {
00434 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00435 "kaon+","omega");
00436 decayTable->Insert(mode);
00437 }else if (iType==TAntiK) {
00438 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00439 "anti_kaon0","omega");
00440 decayTable->Insert(mode);
00441 }
00442 } else if (iIso3 == -1) {
00443 if (iType == TK) {
00444 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00445 "kaon0","omega");
00446 decayTable->Insert(mode);
00447 }else if (iType==TAntiK) {
00448 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00449 "kaon-","omega");
00450 decayTable->Insert(mode);
00451 }
00452 }
00453
00454 return decayTable;
00455 }
00456
00457 G4DecayTable* G4ExcitedMesonConstructor::AddKEtaMode(
00458 G4DecayTable* decayTable, const G4String& nameParent,
00459 G4double br, G4int iIso3, G4int iType)
00460 {
00461 G4VDecayChannel* mode;
00462
00463 if (iIso3 == +1) {
00464 if (iType == TK) {
00465 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00466 "kaon+","eta");
00467 decayTable->Insert(mode);
00468 }else if (iType==TAntiK) {
00469 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00470 "anti_kaon0","eta");
00471 decayTable->Insert(mode);
00472 }
00473 } else if (iIso3 == -1) {
00474 if (iType == TK) {
00475 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00476 "kaon0","eta");
00477 decayTable->Insert(mode);
00478 }else if (iType==TAntiK) {
00479 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00480 "kaon-","eta");
00481 decayTable->Insert(mode);
00482 }
00483 }
00484
00485 return decayTable;
00486 }
00487
00488 G4DecayTable* G4ExcitedMesonConstructor::AddKRhoMode(
00489 G4DecayTable* decayTable, const G4String& nameParent,
00490 G4double br, G4int iIso3, G4int iType)
00491 {
00492 G4VDecayChannel* mode;
00493
00494 if (iIso3 == +1) {
00495 if (iType == TK) {
00496 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00497 "kaon+","rho0");
00498 decayTable->Insert(mode);
00499 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00500 "kaon0","rho+");
00501 decayTable->Insert(mode);
00502 }else if (iType==TAntiK) {
00503 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00504 "anti_kaon0","rho0");
00505 decayTable->Insert(mode);
00506 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00507 "kaon-","rho+");
00508 decayTable->Insert(mode);
00509 }
00510 } else if (iIso3 == -1) {
00511 if (iType == TK) {
00512 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00513 "kaon0","rho0");
00514 decayTable->Insert(mode);
00515 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00516 "kaon+","rho-");
00517 decayTable->Insert(mode);
00518
00519 }else if (iType==TAntiK) {
00520 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00521 "kaon-","rho0");
00522 decayTable->Insert(mode);
00523 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00524 "anti_kaon0","rho-");
00525 decayTable->Insert(mode);
00526 }
00527 }
00528
00529 return decayTable;
00530 }
00531
00532 G4DecayTable* G4ExcitedMesonConstructor::AddKStarPiMode(
00533 G4DecayTable* decayTable, const G4String& nameParent,
00534 G4double br, G4int iIso3, G4int iType)
00535 {
00536 G4VDecayChannel* mode;
00537
00538 if (iIso3 == +1) {
00539 if (iType == TK) {
00540 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00541 "k_star+","pi0");
00542 decayTable->Insert(mode);
00543 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00544 "k_star0","pi+");
00545 decayTable->Insert(mode);
00546 }else if (iType==TAntiK) {
00547 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00548 "anti_k_star0","pi0");
00549 decayTable->Insert(mode);
00550 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00551 "k_star-","pi+");
00552 decayTable->Insert(mode);
00553 }
00554 } else if (iIso3 == -1) {
00555 if (iType == TK) {
00556 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00557 "k_star0","pi0");
00558 decayTable->Insert(mode);
00559 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00560 "k_star+","pi-");
00561 decayTable->Insert(mode);
00562
00563 }else if (iType==TAntiK) {
00564 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 2,
00565 "k_star-","pi0");
00566 decayTable->Insert(mode);
00567 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 2,
00568 "anti_k_star0","pi-");
00569 decayTable->Insert(mode);
00570 }
00571 }
00572
00573 return decayTable;
00574 }
00575
00576 G4DecayTable* G4ExcitedMesonConstructor::AddKStar2PiMode(
00577 G4DecayTable* decayTable, const G4String& nameParent,
00578 G4double br, G4int iIso3, G4int iType)
00579 {
00580
00581 G4VDecayChannel* mode;
00582
00583 if (iIso3 == +1) {
00584 if (iType == TK) {
00585 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
00586 "k_star+","pi+","pi-");
00587 decayTable->Insert(mode);
00588 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
00589 "k_star0","pi+","pi0");
00590 decayTable->Insert(mode);
00591 }else if (iType==TAntiK) {
00592 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
00593 "anti_k_star0","pi+","pi-");
00594 decayTable->Insert(mode);
00595 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
00596 "k_star-","pi+","pi0");
00597 decayTable->Insert(mode);
00598 }
00599 } else if (iIso3 == -1) {
00600 if (iType == TK) {
00601 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
00602 "k_star0","pi+","pi-");
00603 decayTable->Insert(mode);
00604 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
00605 "k_star+","pi-","pi0");
00606 decayTable->Insert(mode);
00607
00608 }else if (iType==TAntiK) {
00609 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
00610 "k_star-","pi+","pi-");
00611 decayTable->Insert(mode);
00612 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
00613 "anti_k_star0","pi-","pi0");
00614 decayTable->Insert(mode);
00615 }
00616 }
00617
00618 return decayTable;
00619 }
00620
00621 G4DecayTable* G4ExcitedMesonConstructor::AddPiGammaMode(
00622 G4DecayTable* decayTable, const G4String& nameParent,
00623 G4double br, G4int iIso3, G4int iIso)
00624 {
00625 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00626
00627 G4VDecayChannel* mode;
00628
00629 G4String daughter;
00630 if (iIso3 == +2) {
00631 daughter = "pi+";
00632 } else if (iIso3 == 0) {
00633 daughter = "pi0";
00634 } else if (iIso3 ==-2) {
00635 daughter = "pi-";
00636 } else {
00637 return decayTable;
00638 }
00639
00640 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00641 daughter,"gamma");
00642
00643 decayTable->Insert(mode);
00644
00645 return decayTable;
00646 }
00647
00648 G4DecayTable* G4ExcitedMesonConstructor::AddPiOmegaMode(
00649 G4DecayTable* decayTable, const G4String& nameParent,
00650 G4double br, G4int iIso3, G4int iIso)
00651 {
00652 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00653
00654 G4VDecayChannel* mode;
00655
00656 G4String daughter;
00657 if (iIso3 == +2) {
00658 daughter = "pi+";
00659 } else if (iIso3 == 0) {
00660 daughter = "pi0";
00661 } else if (iIso3 ==-2) {
00662 daughter = "pi-";
00663 } else {
00664 return decayTable;
00665 }
00666
00667 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00668 daughter,"omega");
00669
00670 decayTable->Insert(mode);
00671
00672 return decayTable;
00673 }
00674
00675 G4DecayTable* G4ExcitedMesonConstructor::AddRhoGammaMode(
00676 G4DecayTable* decayTable, const G4String& nameParent,
00677 G4double br, G4int iIso3, G4int iIso)
00678 {
00679 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00680
00681 G4VDecayChannel* mode;
00682
00683 G4String daughter;
00684 if (iIso3 == +2) {
00685 daughter = "rho+";
00686 } else if (iIso3 == 0) {
00687 daughter = "rho0";
00688 } else if (iIso3 ==-2) {
00689 daughter = "rho-";
00690 } else {
00691 return decayTable;
00692 }
00693
00694 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00695 daughter,"gamma");
00696
00697 decayTable->Insert(mode);
00698
00699 return decayTable;
00700 }
00701
00702 G4DecayTable* G4ExcitedMesonConstructor::AddPiEtaMode(
00703 G4DecayTable* decayTable, const G4String& nameParent,
00704 G4double br, G4int iIso3, G4int iIso)
00705 {
00706 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00707
00708 G4VDecayChannel* mode;
00709
00710 G4String daughter;
00711 if (iIso3 == +2) {
00712 daughter = "pi+";
00713 } else if (iIso3 == 0) {
00714 daughter = "pi0";
00715 } else if (iIso3 ==-2) {
00716 daughter = "pi-";
00717 } else {
00718 return decayTable;
00719 }
00720
00721 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00722 daughter,"eta");
00723
00724 decayTable->Insert(mode);
00725
00726 return decayTable;
00727 }
00728
00729 G4DecayTable* G4ExcitedMesonConstructor::AddRhoEtaMode(
00730 G4DecayTable* decayTable, const G4String& nameParent,
00731 G4double br, G4int iIso3, G4int iIso)
00732 {
00733 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00734
00735 G4VDecayChannel* mode;
00736
00737 G4String daughter;
00738 if (iIso3 == +2) {
00739 daughter = "rho+";
00740 } else if (iIso3 == 0) {
00741 daughter = "rho0";
00742 } else if (iIso3 ==-2) {
00743 daughter = "rho-";
00744 } else {
00745 return decayTable;
00746 }
00747
00748 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00749 daughter,"eta");
00750
00751 decayTable->Insert(mode);
00752
00753 return decayTable;
00754 }
00755
00756 G4DecayTable* G4ExcitedMesonConstructor::AddPiF2Mode(
00757 G4DecayTable* decayTable, const G4String& nameParent,
00758 G4double br, G4int iIso3, G4int iIso)
00759 {
00760 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00761
00762 G4VDecayChannel* mode;
00763
00764 G4String daughter;
00765 if (iIso3 == +2) {
00766 daughter = "pi+";
00767 } else if (iIso3 == 0) {
00768 daughter = "pi0";
00769 } else if (iIso3 ==-2) {
00770 daughter = "pi-";
00771 } else {
00772 return decayTable;
00773 }
00774
00775 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00776 daughter,"f2(1270)");
00777
00778 decayTable->Insert(mode);
00779
00780 return decayTable;
00781 }
00782
00783 G4DecayTable* G4ExcitedMesonConstructor::AddPiF0Mode(
00784 G4DecayTable* decayTable, const G4String& nameParent,
00785 G4double br, G4int iIso3, G4int iIso)
00786 {
00787 if ((iIso!=2)&&(iIso!=0)) return decayTable;
00788
00789 G4VDecayChannel* mode;
00790
00791 G4String daughter;
00792 if (iIso3 == +2) {
00793 daughter = "pi+";
00794 } else if (iIso3 == 0) {
00795 daughter = "pi0";
00796 } else if (iIso3 ==-2) {
00797 daughter = "pi-";
00798 } else {
00799 return decayTable;
00800 }
00801
00802 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00803 daughter,"f0(1370)");
00804
00805 decayTable->Insert(mode);
00806 return decayTable;
00807 }
00808
00809
00810 G4DecayTable* G4ExcitedMesonConstructor::Add2PiMode(
00811 G4DecayTable* decayTable, const G4String& nameParent,
00812 G4double br, G4int iIso3, G4int iIso)
00813 {
00814 G4VDecayChannel* mode;
00815
00816 G4String daughterPi1;
00817 G4String daughterPi2;
00818 G4double r;
00819
00820
00821 if (iIso==0) {
00822 if (iIso3==0) {
00823
00824 daughterPi1 = "pi+";
00825 daughterPi2 = "pi-";
00826 r = br*2./3.;
00827 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00828 daughterPi1,daughterPi2);
00829 decayTable->Insert(mode);
00830
00831
00832 daughterPi1 = "pi0";
00833 daughterPi2 = "pi0";
00834 r = br*1./3.;
00835 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00836 daughterPi1,daughterPi2);
00837 decayTable->Insert(mode);
00838 }
00839 } else if (iIso==2) {
00840 if (iIso3==+2) {
00841
00842 daughterPi1 = "pi+";
00843 daughterPi2 = "pi0";
00844 r = br;
00845 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00846 daughterPi1,daughterPi2);
00847
00848 decayTable->Insert(mode);
00849 } else if (iIso3==0) {
00850
00851 daughterPi1 = "pi+";
00852 daughterPi2 = "pi-";
00853 r = br;
00854 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00855 daughterPi1,daughterPi2);
00856 decayTable->Insert(mode);
00857 } else if (iIso3==-2) {
00858
00859 daughterPi1 = "pi-";
00860 daughterPi2 = "pi0";
00861 r = br;
00862 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00863 daughterPi1,daughterPi2);
00864 decayTable->Insert(mode);
00865 }
00866 }
00867 return decayTable;
00868 }
00869
00870 G4DecayTable* G4ExcitedMesonConstructor::AddPiRhoMode(
00871 G4DecayTable* decayTable, const G4String& nameParent,
00872 G4double br, G4int iIso3, G4int iIso)
00873 {
00874 G4VDecayChannel* mode;
00875
00876 G4String daughterPi;
00877 G4String daughterRho;
00878 G4double r;
00879
00880
00881 if (iIso==0) {
00882 if (iIso3==0) {
00883
00884 daughterPi = "pi+";
00885 daughterRho = "rho-";
00886 r = br/3.;
00887 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00888 daughterPi,daughterRho);
00889 decayTable->Insert(mode);
00890
00891
00892 daughterPi = "pi0";
00893 daughterRho = "rho0";
00894 r = br*1./3.;
00895 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00896 daughterPi,daughterRho);
00897 decayTable->Insert(mode);
00898
00899
00900 daughterPi = "pi-";
00901 daughterRho = "rho+";
00902 r = br*1./3.;
00903 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00904 daughterPi,daughterRho);
00905 decayTable->Insert(mode);
00906 }
00907 } else if (iIso==2) {
00908 if (iIso3==+2) {
00909
00910 daughterPi = "pi+";
00911 daughterRho = "rho0";
00912 r = br/2.;
00913 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00914 daughterPi,daughterRho);
00915 decayTable->Insert(mode);
00916
00917
00918 daughterPi = "pi0";
00919 daughterRho = "rho+";
00920 r = br/2.;
00921 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00922 daughterPi,daughterRho);
00923 decayTable->Insert(mode);
00924 } else if (iIso3==0) {
00925
00926 daughterPi = "pi+";
00927 daughterRho = "rho-";
00928 r = br/2.;
00929 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00930 daughterPi,daughterRho);
00931 decayTable->Insert(mode);
00932
00933
00934 daughterPi = "pi-";
00935 daughterRho = "rho+";
00936 r = br/2.;
00937 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00938 daughterPi,daughterRho);
00939 decayTable->Insert(mode);
00940 } else if (iIso3==-2) {
00941
00942 daughterPi = "pi-";
00943 daughterRho = "rho0";
00944 r = br/2.;
00945 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00946 daughterPi,daughterRho);
00947 decayTable->Insert(mode);
00948
00949
00950 daughterPi = "pi0";
00951 daughterRho = "rho-";
00952 r = br/2.;
00953 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00954 daughterPi,daughterRho);
00955 decayTable->Insert(mode);
00956 }
00957 }
00958 return decayTable;
00959 }
00960
00961 G4DecayTable* G4ExcitedMesonConstructor::AddPiA2Mode(
00962 G4DecayTable* decayTable, const G4String& nameParent,
00963 G4double br, G4int iIso3, G4int iIso)
00964 {
00965 G4VDecayChannel* mode;
00966
00967 G4String daughterPi;
00968 G4String daughterA2;
00969 G4double r;
00970
00971
00972 if (iIso==0) {
00973 if (iIso3==0) {
00974
00975 daughterPi = "pi+";
00976 daughterA2 = "a2(1320)-";
00977 r = br/3.;
00978 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00979 daughterPi,daughterA2);
00980 decayTable->Insert(mode);
00981
00982
00983 daughterPi = "pi0";
00984 daughterA2 = "a2(1320)0";
00985 r = br*1./3.;
00986 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00987 daughterPi,daughterA2);
00988 decayTable->Insert(mode);
00989
00990
00991 daughterPi = "pi-";
00992 daughterA2 = "a2(1320)+";
00993 r = br*1./3.;
00994 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00995 daughterPi,daughterA2);
00996 decayTable->Insert(mode);
00997 }
00998 } else if (iIso==2) {
00999 if (iIso3==+2) {
01000
01001 daughterPi = "pi+";
01002 daughterA2 = "a2(1320)0";
01003 r = br/2.;
01004 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
01005 daughterPi,daughterA2);
01006 decayTable->Insert(mode);
01007
01008
01009 daughterPi = "pi0";
01010 daughterA2 = "a2(1320)+";
01011 r = br/2.;
01012 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
01013 daughterPi,daughterA2);
01014 decayTable->Insert(mode);
01015 } else if (iIso3==0) {
01016
01017 daughterPi = "pi+";
01018 daughterA2 = "a2(1320)-";
01019 r = br/2.;
01020 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
01021 daughterPi,daughterA2);
01022 decayTable->Insert(mode);
01023
01024
01025 daughterPi = "pi-";
01026 daughterA2 = "a2(1320)+";
01027 r = br/2.;
01028 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
01029 daughterPi,daughterA2);
01030 decayTable->Insert(mode);
01031 } else if (iIso3==-2) {
01032
01033 daughterPi = "pi-";
01034 daughterA2 = "a2(1320)0";
01035 r = br/2.;
01036 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
01037 daughterPi,daughterA2);
01038 decayTable->Insert(mode);
01039
01040
01041 daughterPi = "pi0";
01042 daughterA2 = "a2(1320)-";
01043 r = br/2.;
01044 mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
01045 daughterPi,daughterA2);
01046 decayTable->Insert(mode);
01047 }
01048 }
01049 return decayTable;
01050 }
01051
01052 G4DecayTable* G4ExcitedMesonConstructor::Add3PiMode(
01053 G4DecayTable* decayTable, const G4String& nameParent,
01054 G4double br, G4int iIso3, G4int iIso)
01055 {
01056 G4VDecayChannel* mode;
01057
01058
01059
01060 if (iIso==0) {
01061
01062 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 3,
01063 "pi+","pi-","pi0");
01064 decayTable->Insert(mode);
01065 } else if (iIso==2) {
01066
01067 if (iIso3==+2) {
01068 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01069 "pi+","pi0","pi0");
01070 decayTable->Insert(mode);
01071 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
01072 "pi+","pi+","pi-");
01073 decayTable->Insert(mode);
01074 } else if (iIso3==0) {
01075 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01076 "pi0","pi0","pi0");
01077 decayTable->Insert(mode);
01078 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
01079 "pi0","pi+","pi-");
01080 decayTable->Insert(mode);
01081 } else if (iIso3==-2) {
01082 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01083 "pi-","pi0","pi0");
01084 decayTable->Insert(mode);
01085 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
01086 "pi-","pi+","pi-");
01087 decayTable->Insert(mode);
01088 }
01089 }
01090 return decayTable;
01091 }
01092
01093 G4DecayTable* G4ExcitedMesonConstructor::Add4PiMode(
01094 G4DecayTable* decayTable, const G4String& nameParent,
01095 G4double br, G4int iIso3, G4int )
01096 {
01097 G4VDecayChannel* mode;
01098
01099 if (iIso3==0) {
01100
01101 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2., 4,
01102 "pi+","pi-","pi+","pi-");
01103 decayTable->Insert(mode);
01104
01105 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2., 4,
01106 "pi+","pi-","pi0","pi0");
01107 decayTable->Insert(mode);
01108 } else if (iIso3==+2) {
01109
01110 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 4,
01111 "pi+","pi0","pi0","pi0");
01112 decayTable->Insert(mode);
01113
01114 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 4,
01115 "pi+","pi+","pi-","pi0");
01116 decayTable->Insert(mode);
01117 } else if (iIso3==-2) {
01118
01119 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 4,
01120 "pi-","pi0","pi0","pi0");
01121 decayTable->Insert(mode);
01122
01123 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 4,
01124 "pi-","pi-","pi+","pi0");
01125 decayTable->Insert(mode);
01126 }
01127 return decayTable;
01128 }
01129
01130 G4DecayTable* G4ExcitedMesonConstructor::Add2PiEtaMode(
01131 G4DecayTable* decayTable, const G4String& nameParent,
01132 G4double br, G4int , G4int iIso)
01133 {
01134
01135
01136 if (iIso!=0) return decayTable;
01137
01138 G4VDecayChannel* mode;
01139
01140
01141 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
01142 "eta","pi+","pi-");
01143 decayTable->Insert(mode);
01144
01145
01146 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01147 "eta","pi0","pi0");
01148 decayTable->Insert(mode);
01149 return decayTable;
01150 }
01151
01152 G4DecayTable* G4ExcitedMesonConstructor::Add2EtaMode(
01153 G4DecayTable* decayTable, const G4String& nameParent,
01154 G4double br, G4int , G4int iIso)
01155 {
01156 if (iIso!=0) return decayTable;
01157
01158 G4VDecayChannel* mode;
01159
01160
01161 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
01162 "eta","eta");
01163 decayTable->Insert(mode);
01164 return decayTable;
01165 }
01166
01167 G4DecayTable* G4ExcitedMesonConstructor::Add2PiOmegaMode(
01168 G4DecayTable* decayTable, const G4String& nameParent,
01169 G4double br, G4int iIso3, G4int iIso)
01170 {
01171
01172 G4VDecayChannel* mode;
01173 if (iIso==0) {
01174
01175 mode = new G4PhaseSpaceDecayChannel(nameParent, br*2./3., 3,
01176 "omega","pi+","pi-");
01177 decayTable->Insert(mode);
01178
01179
01180 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01181 "omega","pi0","pi0");
01182 decayTable->Insert(mode);
01183 } else if (iIso==2) {
01184 if (iIso3==+2) {
01185
01186 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 3,
01187 "omega","pi+","pi0");
01188 decayTable->Insert(mode);
01189 } else if (iIso3==0) {
01190
01191 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2., 3,
01192 "omega","pi-","pi+");
01193 decayTable->Insert(mode);
01194
01195 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2., 3,
01196 "omega","pi0","pi0");
01197 decayTable->Insert(mode);
01198 } else if (iIso3==-2) {
01199
01200 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 3,
01201 "omega","pi-","pi0");
01202 decayTable->Insert(mode);
01203 }
01204 }
01205 return decayTable;
01206 }
01207
01208
01209
01210 G4DecayTable* G4ExcitedMesonConstructor::Add2PiRhoMode(
01211 G4DecayTable* decayTable, const G4String& nameParent,
01212 G4double br, G4int iIso3, G4int iIso)
01213 {
01214 G4VDecayChannel* mode;
01215
01216 if (iIso==0) {
01217
01218
01219 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01220 "rho0","pi+","pi-");
01221 decayTable->Insert(mode);
01222 } else if (iIso==2) {
01223 if (iIso3==+2) {
01224
01225 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01226 "rho+","pi0","pi0");
01227 decayTable->Insert(mode);
01228
01229 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01230 "rho+","pi+","pi-");
01231 decayTable->Insert(mode);
01232
01233 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01234 "rho0","pi+","pi0");
01235 decayTable->Insert(mode);
01236
01237 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01238 "rho-","pi+","pi+");
01239 decayTable->Insert(mode);
01240 } else if (iIso3==-2) {
01241
01242 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01243 "rho-","pi0","pi0");
01244 decayTable->Insert(mode);
01245
01246 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01247 "rho-","pi+","pi-");
01248 decayTable->Insert(mode);
01249
01250 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01251 "rho0","pi-","pi0");
01252 decayTable->Insert(mode);
01253
01254 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01255 "rho+","pi-","pi-");
01256 decayTable->Insert(mode);
01257 } else if (iIso3==0) {
01258
01259 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01260 "rho+","pi-","pi0");
01261 decayTable->Insert(mode);
01262
01263 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01264 "rho0","pi+","pi-");
01265 decayTable->Insert(mode);
01266
01267 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01268 "rho0","pi0","pi0");
01269 decayTable->Insert(mode);
01270
01271 mode = new G4PhaseSpaceDecayChannel(nameParent, br/5., 3,
01272 "rho-","pi+","pi-");
01273 decayTable->Insert(mode);
01274 }
01275 }
01276 return decayTable;
01277 }
01278
01279
01280 G4DecayTable* G4ExcitedMesonConstructor::AddKKStarMode(
01281 G4DecayTable* decayTable, const G4String& nameParent,
01282 G4double br, G4int , G4int iIso)
01283 {
01284
01285
01286 if (iIso!=0) return decayTable;
01287
01288 G4VDecayChannel* mode;
01289
01290
01291 mode = new G4PhaseSpaceDecayChannel(nameParent, br/4., 2,
01292 "kaon+","k_star-");
01293 decayTable->Insert(mode);
01294
01295
01296 mode = new G4PhaseSpaceDecayChannel(nameParent, br/4., 2,
01297 "kaon-","k_star0");
01298 decayTable->Insert(mode);
01299
01300
01301 mode = new G4PhaseSpaceDecayChannel(nameParent, br/4., 2,
01302 "kaon0","anti_k_star0");
01303 decayTable->Insert(mode);
01304
01305
01306 mode = new G4PhaseSpaceDecayChannel(nameParent, br/4., 2,
01307 "anti_kaon0","k_star0");
01308 decayTable->Insert(mode);
01309
01310
01311 return decayTable;
01312 }
01313
01314 G4DecayTable* G4ExcitedMesonConstructor::Add2KMode(
01315 G4DecayTable* decayTable, const G4String& nameParent,
01316 G4double br, G4int iIso3, G4int )
01317 {
01318 G4VDecayChannel* mode;
01319
01320 if (iIso3==0) {
01321
01322 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2., 2,
01323 "kaon+","kaon-");
01324 decayTable->Insert(mode);
01325
01326
01327 mode = new G4PhaseSpaceDecayChannel(nameParent, br/2., 2,
01328 "kaon0","anti_kaon0");
01329 decayTable->Insert(mode);
01330 } else if (iIso3==+2) {
01331
01332 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
01333 "kaon+","anti_kaon0");
01334 decayTable->Insert(mode);
01335 } else if (iIso3==-2) {
01336
01337 mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
01338 "kaon-","kaon0");
01339 decayTable->Insert(mode);
01340 }
01341
01342 return decayTable;
01343 }
01344
01345 G4DecayTable* G4ExcitedMesonConstructor::Add2KPiMode(
01346 G4DecayTable* decayTable, const G4String& nameParent,
01347 G4double br, G4int , G4int iIso)
01348 {
01349
01350
01351 if (iIso!=0) return decayTable;
01352
01353 G4VDecayChannel* mode;
01354
01355
01356 mode = new G4PhaseSpaceDecayChannel(nameParent, br/6., 3,
01357 "kaon+","kaon-","pi0");
01358 decayTable->Insert(mode);
01359
01360
01361 mode = new G4PhaseSpaceDecayChannel(nameParent, br/6., 3,
01362 "kaon0","anti_kaon0","pi0");
01363 decayTable->Insert(mode);
01364
01365
01366 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01367 "kaon+","anti_kaon0","pi-");
01368 decayTable->Insert(mode);
01369
01370
01371 mode = new G4PhaseSpaceDecayChannel(nameParent, br/3., 3,
01372 "kaon-","kaon0","pi+");
01373 decayTable->Insert(mode);
01374
01375
01376 return decayTable;
01377 }
01378
01379
01380
01381
01382
01383
01384
01385
01386 const char* G4ExcitedMesonConstructor::name[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ] =
01387 {
01388 { "b1(1235)", "h1(1170)", "h1(1380)", "k1(1270)", "k1(1270)" },
01389 { "a0(1450)", "f0(1370)", "", "k0_star(1430)", "k0_star(1430)" },
01390 { "a1(1260)", "f1(1285)", "f1(1420)", "k1(1400)", "k1(1400)" },
01391 { "a2(1320)", "f2(1270)","f2_prime(1525)","k2_star(1430)","k2_star(1430)"},
01392 {"pi2(1670)", "eta2(1645)", "eta2(1870)", "k2(1770)", "k2(1770)" },
01393 {"rho(1700)", "omega(1650)", "", "k_star(1680)", "k_star(1680)" },
01394 {"rho3(1690)","omega3(1670)","phi3(1850)", "k3_star(1780)", "k3_star(1780)" },
01395 { "pi(1300)", "eta(1295)", "eta(1475)", "k(1460)", "k(1460)" },
01396 {"rho(1450)","omega(1420)", "phi(1680)", "k_star(1410)", "k_star(1410)" },
01397 { "", "f2(1810)", "f2(2010)", "k2_star(1980)", "k2_star(1980)" }
01398 };
01399
01400 const G4double G4ExcitedMesonConstructor::mass[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ] =
01401 {
01402 { 1.2295*GeV, 1.170*GeV, 1.386*GeV, 1.272*GeV, 1.272*GeV },
01403 { 1.474*GeV, 1.350*GeV, 0.0, 1.430*GeV, 1.430*GeV },
01404 { 1.230*GeV,1.2818*GeV,1.4264*GeV, 1.403*GeV, 1.403*GeV },
01405 { 1.3183*GeV,1.2751*GeV, 1.525*GeV,1.4256*GeV, 1.4256*GeV },
01406 { 1.6722*GeV, 1.617*GeV, 1.842*GeV, 1.773*GeV, 1.773*GeV },
01407 { 1.720*GeV, 1.670*GeV, 0.0, 1.717*GeV, 1.717*GeV },
01408 { 1.6888*GeV, 1.667*GeV, 1.854*GeV, 1.776*GeV, 1.776*GeV },
01409 { 1.300*GeV, 1.294*GeV, 1.476*GeV, 1.460*GeV, 1.460*GeV },
01410 { 1.465*GeV, 1.425*GeV, 1.680*GeV, 1.414*GeV, 1.414*GeV },
01411 { 0.0, 1.815*GeV, 2.010*GeV, 1.973*GeV, 1.973*GeV }
01412 };
01413
01414 const G4double G4ExcitedMesonConstructor::massKdiff[ G4ExcitedMesonConstructor::NMultiplets ] = {
01415 0.0*MeV, 0.0*MeV, 0.0*MeV, 6.8*MeV, 0.0*MeV,
01416 0.0*MeV, 0.0*MeV, 0.0*MeV, 0.0*MeV, 0.0*MeV
01417 };
01418
01419 const G4double G4ExcitedMesonConstructor::widthKdiff[ G4ExcitedMesonConstructor::NMultiplets ] = {
01420 0.0*MeV, 0.0*MeV, 0.0*MeV, 10.5*MeV, 0.0*MeV,
01421 0.0*MeV, 0.0*MeV, 0.0*MeV, 0.0*MeV, 0.0*MeV
01422 };
01423
01424 const G4double G4ExcitedMesonConstructor::width[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ] =
01425 {
01426 { 142.0*MeV, 360.0*MeV, 91.0*MeV, 90.0*MeV, 90.0*MeV },
01427 { 265.0*MeV, 350.0*MeV, 0.0, 270.0*MeV, 270.0*MeV },
01428 { 420.0*MeV, 24.3*MeV, 54.9*MeV, 174.0*MeV, 174.0*MeV },
01429 { 107.0*MeV, 185.1*MeV, 73.0*MeV, 98.5*MeV, 98.5*MeV },
01430 { 260.0*MeV, 181.0*MeV, 225.0*MeV, 186.0*MeV, 186.0*MeV },
01431 { 250.0*MeV, 315.0*MeV, 0.0, 320.0*MeV, 320.0*MeV },
01432 { 161.0*MeV, 168.0*MeV, 87.0*MeV, 159.0*MeV, 159.0*MeV },
01433 { 400.0*MeV, 55.0*MeV, 85.0*MeV, 260.0*MeV, 260.0*MeV },
01434 { 400.0*MeV, 215.0*MeV, 150.0*MeV, 232.0*MeV, 232.0*MeV },
01435 { 0.0, 197.0*MeV, 200.0*MeV, 373.0*MeV, 373.0*MeV }
01436 };
01437
01438
01439 const G4int G4ExcitedMesonConstructor::iIsoSpin[] =
01440 {
01441
01442 2, 0, 0, 1, 1
01443 };
01444
01445 const G4int G4ExcitedMesonConstructor::iSpin[] =
01446 {
01447
01448
01449 2, 0, 2, 4, 4, 2, 6, 0, 2, 4
01450 };
01451
01452 const G4int G4ExcitedMesonConstructor::iParity[] =
01453 {
01454
01455
01456 +1, +1, +1, +1, -1, -1, -1, -1, -1, +1
01457 };
01458
01459 const G4int G4ExcitedMesonConstructor::iChargeConjugation[] =
01460 {
01461
01462
01463 -1, +1, +1, +1, +1, -1, -1, +1, -1, +1
01464 };
01465
01466 const G4int G4ExcitedMesonConstructor::iGParity[G4ExcitedMesonConstructor::NMultiplets ][ G4ExcitedMesonConstructor::NMesonTypes ]=
01467 {
01468 { +1, -1, -1, 0, 0},
01469 { -1, +1, 0, 0, 0},
01470 { -1, +1, +1, 0, 0},
01471 { -1, +1, +1, 0, 0},
01472 { -1, +1, +1, 0, 0},
01473 { +1, -1, 0, 0, 0},
01474 { +1, -1, -1, 0, 0},
01475 { -1, +1, +1, 0, 0},
01476 { +1, -1, -1, 0, 0},
01477 { 0, +1, +1, 0, 0}
01478 };
01479
01480
01481 const G4int G4ExcitedMesonConstructor::encodingOffset[]=
01482 { 10000, 10000, 20000, 0, 10000, 30000, 0, 100000,100000,100000};
01483
01484
01485
01486
01487 const G4double G4ExcitedMesonConstructor::bRatio[G4ExcitedMesonConstructor::NMultiplets][G4ExcitedMesonConstructor::NMesonTypes][G4ExcitedMesonConstructor::NumberOfDecayModes]=
01488 {
01489
01490 {
01491 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00 },
01492 { 0.00, 0.00, 0.00, 0.90, 0.10, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01493 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01494 { 0.00, 0.47, 0.42, 0.11, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01495 { 0.00, 0.47, 0.42, 0.11, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01496 },
01497
01498 {
01499 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.90, 0.00, 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.00, 0.00 },
01500 { 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00 },
01501 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01502 { 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01503 { 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01504 },
01505
01506 {
01507 { 0.10, 0.00, 0.00, 0.90, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01508 { 0.00, 0.07, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.54, 0.00, 0.10, 0.00, 0.00, 0.00, 0.09, 0.00, 0.00, 0.00, 0.00 },
01509 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00 },
01510 { 0.00, 0.96, 0.03, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01511 { 0.00, 0.96, 0.03, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01512 },
01513
01514 {
01515 { 0.00, 0.00, 0.00, 0.70, 0.00, 0.14, 0.00, 0.00, 0.00, 0.00, 0.00, 0.11, 0.00, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00 },
01516 { 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00 },
01517 { 0.00, 0.00, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.89, 0.00, 0.00, 0.00, 0.00, 0.00 },
01518 { 0.50, 0.25, 0.09, 0.03, 0.13, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01519 { 0.50, 0.25, 0.09, 0.03, 0.13, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01520 },
01521
01522 {
01523 { 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.04, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.56, 0.10, 0.00 },
01524 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.00, 0.00, 0.00, 0.90 },
01525 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50 },
01526 { 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01527 { 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01528 },
01529
01530 {
01531 { 0.00, 0.00, 0.10, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01532 { 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01533 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01534 { 0.00, 0.40, 0.30, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01535 { 0.00, 0.40, 0.30, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01536 },
01537
01538 {
01539 { 0.00, 0.00, 0.24, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, 0.04, 0.11, 0.00, 0.00, 0.00 },
01540 { 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01541 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00 },
01542 { 0.19, 0.20, 0.31, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01543 { 0.19, 0.20, 0.31, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01544 },
01545
01546 {
01547 { 0.00, 0.00, 0.00, 0.50, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01548 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01549 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.20, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00 },
01550 { 0.00, 0.50, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01551 { 0.00, 0.50, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01552 },
01553
01554 {
01555 { 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01556 { 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01557 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.10, 0.10, 0.00, 0.00, 0.00, 0.00 },
01558 { 0.30, 0.65, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01559 { 0.30, 0.65, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01560 },
01561
01562 {
01563 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01564 { 0.00, 0.00, 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.30, 0.00, 0.00, 0.00, 0.00, 0.20, 0.00, 0.00, 0.00, 0.00, 0.00 },
01565 { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01566 { 0.00, 0.00, 0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
01567 { 0.00, 0.00, 0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 }
01568 }
01569 };
01570
01571
01572
01573
01574
01575