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 // GEANT 4 class implementation file 28 // 29 // - Add "rho0" 25 Feb. 2000 H.Kurashige 30 // - Fix spin/isospin number for quarks 06 Apr. 2001 H.Kurashige 31 // - update quark mass 11 Oct. 2006 H.Kurashige 32 // - update meson/baryon masses 11 Oct. 2006 H.Kurashige 33 // - Added charm and bottom diquarks 09 Oct. 2019 V.Uzhinsky 34 // - Update mass and width for excited mesons 35 // and excited baryons following PDG 2023 05 Nov. 2023 S.Okada 36 37 #include "G4ShortLivedConstructor.hh" 38 39 #include "G4DecayTable.hh" 40 #include "G4DiQuarks.hh" 41 #include "G4ExcitedBaryons.hh" 42 #include "G4ExcitedDeltaConstructor.hh" 43 #include "G4ExcitedLambdaConstructor.hh" 44 #include "G4ExcitedMesonConstructor.hh" 45 #include "G4ExcitedMesons.hh" 46 #include "G4ExcitedNucleonConstructor.hh" 47 #include "G4ExcitedSigmaConstructor.hh" 48 #include "G4ExcitedXiConstructor.hh" 49 #include "G4Gluons.hh" 50 #include "G4ParticleDefinition.hh" 51 #include "G4PhaseSpaceDecayChannel.hh" 52 #include "G4Quarks.hh" 53 #include "G4SystemOfUnits.hh" 54 #include "G4VDecayChannel.hh" 55 56 G4bool G4ShortLivedConstructor::isConstructed = false; 57 58 void G4ShortLivedConstructor::ConstructParticle() 59 { 60 if (!isConstructed) { 61 ConstructQuarks(); 62 ConstructResonances(); 63 isConstructed = true; 64 } 65 } 66 67 void G4ShortLivedConstructor::ConstructQuarks() 68 { 69 G4ParticleDefinition* particle; 70 71 // Construct Quraks/Gluons as dynamic object 72 // Arguments for constructor are as follows 73 // name mass width charge 74 // 2*spin parity C-conjugation 75 // 2*Isospin 2*Isospin3 G-parity 76 // type lepton number baryon number PDG encoding 77 // stable lifetime decay table 78 79 // clang-format off 80 // gluon 81 particle = new G4Gluons( 82 "gluon", 0.0*MeV, 0.0*MeV, 0.0*eplus, 83 2, -1, 0, 84 0, 0, 0, 85 "gluons", 0, 0, 21, 86 true, -1.0, nullptr); 87 particle->SetAntiPDGEncoding(21); 88 // u-quark 89 particle = new G4Quarks( 90 "u_quark", 2.2*MeV, 0.0*keV, 2./3.*eplus, 91 1, +1, 0, 92 1, +1, 0, 93 "quarks", 0, 0, 2, 94 true, -1.0, nullptr); 95 // d-quark 96 particle = new G4Quarks( 97 "d_quark", 4.7*MeV, 0.0*keV, -1./3.*eplus, 98 1, +1, 0, 99 1, -1, 0, 100 "quarks", 0, 0, 1, 101 true, -1.0, nullptr); 102 // s-quark 103 particle = new G4Quarks( 104 "s_quark", 96.0*MeV, 0.0*keV, -1./3.*eplus, 105 1, +1, 0, 106 0, 0, 0, 107 "quarks", 0, 0, 3, 108 true, -1.0, nullptr); 109 // c-quark 110 particle = new G4Quarks( 111 "c_quark", 1.28*GeV, 0.0*keV, +2./3.*eplus, 112 1, +1, 0, 113 0, 0, 0, 114 "quarks", 0, 0, 4, 115 true, -1.0, nullptr); 116 // b-quark 117 particle = new G4Quarks( 118 "b_quark", 4.18*GeV, 0.0*keV, -1./3.*eplus, 119 1, +1, 0, 120 0, 0, 0, 121 "quarks", 0, 0, 5, 122 true, -1.0, nullptr); 123 // t-quark 124 particle = new G4Quarks( 125 "t_quark", 173.1*GeV, 1.41*GeV, +2./3.*eplus, 126 1, +1, 0, 127 0, 0, 0, 128 "quarks", 0, 0, 6, 129 true, -1.0, nullptr); 130 // anti u-quark 131 particle = new G4Quarks( 132 "anti_u_quark", 2.2*MeV, 0.0*keV, -2./3.*eplus, 133 1, +1, 0, 134 1, -1, 0, 135 "quarks", 0, 0, -2, 136 true, -1.0, nullptr); 137 // anti d-quark 138 particle = new G4Quarks( 139 "anti_d_quark", 4.7*MeV, 0.0*keV, 1./3.*eplus, 140 1, +1, 0, 141 1, +1, 0, 142 "quarks", 0, 0, -1, 143 true, -1.0, nullptr); 144 // anti s-quark 145 particle = new G4Quarks( 146 "anti_s_quark", 96.0*MeV, 0.0*keV, 1./3.*eplus, 147 1, +1, 0, 148 0, 0, 0, 149 "quarks", 0, 0, -3, 150 true, -1.0, nullptr); 151 // anti c-quark 152 particle = new G4Quarks( 153 "anti_c_quark", 1.28*GeV, 0.0*keV, -2./3.*eplus, 154 1, +1, 0, 155 0, 0, 0, 156 "quarks", 0, 0, -4, 157 true, -1.0, nullptr); 158 // anti b-quark 159 particle = new G4Quarks( 160 "anti_b_quark", 4.18*GeV, 0.0*keV, 1./3.*eplus, 161 1, +1, 0, 162 0, 0, 0, 163 "quarks", 0, 0, -5, 164 true, -1.0, nullptr); 165 // anti t-quark 166 particle = new G4Quarks( 167 "anti_t_quark", 173.1*GeV, 1.41*GeV, -2./3.*eplus, 168 1, +1, 0, 169 0, 0, 0, 170 "quarks", 0, 0, -6, 171 true, -1.0, nullptr); 172 173 // uu1-Diquark 174 particle = new G4DiQuarks( 175 "uu1_diquark", 4.6*MeV, 0.0*MeV, 4./3.*eplus, 176 2, +1, 0, 177 2, +2, 0, 178 "diquarks", 0, 0, 2203, 179 true, -1.0, nullptr); 180 // ud1-Diquark 181 particle = new G4DiQuarks( 182 "ud1_diquark", 7.0*MeV, 0.0*MeV, 1./3.*eplus, 183 2, +1, 0, 184 2, +0, 0, 185 "diquarks", 0, 0, 2103, 186 true, -1.0, nullptr); 187 // dd1-Diquark 188 particle = new G4DiQuarks( 189 "dd1_diquark", 9.6*MeV, 0.0*MeV, -2./3.*eplus, 190 2, +1, 0, 191 2, -2, 0, 192 "diquarks", 0, 0, 1103, 193 true, -1.0, nullptr); 194 195 // ud0-Diquark 196 particle = new G4DiQuarks( 197 "ud0_diquark", 7.1*MeV, 0.0*MeV, 1./3.*eplus, 198 0, +1, 0, 199 0, +0, 0, 200 "diquarks", 0, 0, 2101, 201 true, -1.0, nullptr); 202 203 // sd1-Diquark 204 particle = new G4DiQuarks( 205 "sd1_diquark", 102.8*MeV, 0.0*MeV, -2./3.*eplus, 206 2, +1, 0, 207 1, -1, 0, 208 "diquarks", 0, 0, 3103, 209 true, -1.0, nullptr); 210 211 // su1-Diquark 212 particle = new G4DiQuarks( 213 "su1_diquark", 101.4*MeV, 0.0*MeV, 1./3.*eplus, 214 2, +1, 0, 215 1, +1, 0, 216 "diquarks", 0, 0, 3203, 217 true, -1.0, nullptr); 218 219 // sd0-Diquark 220 particle = new G4DiQuarks( 221 "sd0_diquark", 102.0*MeV, 0.0*MeV, -2./3.*eplus, 222 0, +1, 0, 223 1, -1, 0, 224 "diquarks", 0, 0, 3101, 225 true, -1.0, nullptr); 226 227 // su0-Diquark 228 particle = new G4DiQuarks( 229 "su0_diquark", 101.4*MeV, 0.0*MeV, 1./3.*eplus, 230 0, +1, 0, 231 1, +1, 0, 232 "diquarks", 0, 0, 3201, 233 true, -1.0, nullptr); 234 235 // anti uu1-Diquark 236 particle = new G4DiQuarks( 237 "anti_uu1_diquark", 4.6*MeV, 0.0*MeV, -4./3.*eplus, 238 2, +1, 0, 239 2, -2, 0, 240 "diquarks", 0, 0, -2203, 241 true, -1.0, nullptr); 242 // anti ud1-Diquark 243 particle = new G4DiQuarks( 244 "anti_ud1_diquark", 7.0*MeV, 0.0*MeV, -1./3.*eplus, 245 2, +1, 0, 246 2, +0, 0, 247 "diquarks", 0, 0, -2103, 248 true, -1.0, nullptr); 249 // anti dd1-Diquark 250 particle = new G4DiQuarks( 251 "anti_dd1_diquark", 9.6*MeV, 0.0*MeV, 2./3.*eplus, 252 2, +1, 0, 253 2, +2, 0, 254 "diquarks", 0, 0, -1103, 255 true, -1.0, nullptr); 256 257 // anti ud0-Diquark 258 particle = new G4DiQuarks( 259 "anti_ud0_diquark", 7.1*MeV, 0.0*MeV, -1./3.*eplus, 260 0, +1, 0, 261 0, +0, 0, 262 "diquarks", 0, 0, -2101, 263 true, -1.0, nullptr); 264 265 // anti sd1-Diquark 266 particle = new G4DiQuarks( 267 "anti_sd1_diquark", 102.8*MeV, 0.0*MeV, 2./3.*eplus, 268 2, +1, 0, 269 1, +1, 0, 270 "diquarks", 0, 0, -3103, 271 true, -1.0, nullptr); 272 273 // anti su1-Diquark 274 particle = new G4DiQuarks( 275 "anti_su1_diquark", 101.4*MeV, 0.0*MeV, -1./3.*eplus, 276 2, +1, 0, 277 1, -1, 0, 278 "diquarks", 0, 0, -3203, 279 true, -1.0, nullptr); 280 281 // anti sd0-Diquark 282 particle = new G4DiQuarks( 283 "anti_sd0_diquark", 102.0*MeV, 0.0*MeV, 2./3.*eplus, 284 0, +1, 0, 285 1, +1, 0, 286 "diquarks", 0, 0, -3101, 287 true, -1.0, nullptr); 288 289 // anti su0-Diquark 290 particle = new G4DiQuarks( 291 "anti_su0_diquark", 101.4*MeV, 0.0*MeV, -1./3.*eplus, 292 0, +1, 0, 293 1, -1, 0, 294 "diquarks", 0, 0, -3201, 295 true, -1.0, nullptr); 296 // ss1-Diquark 297 particle = new G4DiQuarks( 298 "ss1_diquark", 198.0*MeV, 0.0*MeV, -2./3.*eplus, 299 2, +1, 0, 300 0, 0, 0, 301 "diquarks", 0, 0, 3303, 302 true, -1.0, nullptr); 303 304 // anti ss1-Diquark 305 particle = new G4DiQuarks( 306 "anti_ss1_diquark", 198.0*MeV, 0.0*MeV, 2./3.*eplus, 307 2, +1, 0, 308 0, 0, 0, 309 "diquarks", 0, 0, -3303, 310 true, -1.0, nullptr); 311 312 // ----------- V. Uzhinsky October 2019: Add di-quarks having c and b quarks ---------------- 313 // They have to be improved. 314 315 // cd0-Diquark 316 particle = new G4DiQuarks( 317 "cd0_diquark", 1286.1*MeV, 0.0*MeV, 1./3.*eplus, 318 0, +1, 0, 319 0, +0, 0, 320 "diquarks", 0, 0, 4101, 321 true, -1.0, nullptr); 322 323 // cd1-Diquark 324 particle = new G4DiQuarks( 325 "cd1_diquark", 1286.0*MeV, 0.0*MeV, 1./3.*eplus, 326 2, +1, 0, 327 2, +0, 0, 328 "diquarks", 0, 0, 4103, 329 true, -1.0, nullptr); 330 331 // cu0-Diquark 332 particle = new G4DiQuarks( 333 "cu0_diquark", 1283.1*MeV, 0.0*MeV, 4./3.*eplus, 334 0, +1, 0, 335 0, +0, 0, 336 "diquarks", 0, 0, 4201, 337 true, -1.0, nullptr); 338 339 // cu1-Diquark 340 particle = new G4DiQuarks( 341 "cu1_diquark", 1283.0*MeV, 0.0*MeV, 4./3.*eplus, 342 2, +1, 0, 343 2, +0, 0, 344 "diquarks", 0, 0, 4203, 345 true, -1.0, nullptr); 346 347 // cs0-Diquark 348 particle = new G4DiQuarks( 349 "cs0_diquark", 1380.1*MeV, 0.0*MeV, 1./3.*eplus, 350 0, +1, 0, 351 0, +0, 0, 352 "diquarks", 0, 0, 4301, 353 true, -1.0, nullptr); 354 355 // cs1-Diquark 356 particle = new G4DiQuarks( 357 "cs1_diquark", 1380.0*MeV, 0.0*MeV, 1./3.*eplus, 358 2, +1, 0, 359 2, +0, 0, 360 "diquarks", 0, 0, 4303, 361 true, -1.0, nullptr); 362 363 // cc1-Diquark 364 particle = new G4DiQuarks( 365 "cc1_diquark", 2565.0*MeV, 0.0*MeV, 4./3.*eplus, 366 2, +1, 0, 367 2, +0, 0, 368 "diquarks", 0, 0, 4403, 369 true, -1.0, nullptr); 370 371 //--------------------------------------------- 372 373 // bd0-Diquark 374 particle = new G4DiQuarks( 375 "bd0_diquark", 4186.1*MeV, 0.0*MeV, -2./3.*eplus, 376 0, +1, 0, 377 0, +0, 0, 378 "diquarks", 0, 0, 5101, 379 true, -1.0, nullptr); 380 381 // bd1-Diquark 382 particle = new G4DiQuarks( 383 "bd1_diquark", 4186.0*MeV, 0.0*MeV, -2./3.*eplus, 384 2, +1, 0, 385 2, +0, 0, 386 "diquarks", 0, 0, 5103, 387 true, -1.0, nullptr); 388 389 // bu0-Diquark 390 particle = new G4DiQuarks( 391 "bu0_diquark", 4183.1*MeV, 0.0*MeV, 1./3.*eplus, 392 0, +1, 0, 393 0, +0, 0, 394 "diquarks", 0, 0, 5201, 395 true, -1.0, nullptr); 396 397 // bu1-Diquark 398 particle = new G4DiQuarks( 399 "bu1_diquark", 4183.0*MeV, 0.0*MeV, 1./3.*eplus, 400 2, +1, 0, 401 2, +0, 0, 402 "diquarks", 0, 0, 5203, 403 true, -1.0, nullptr); 404 405 // bs0-Diquark 406 particle = new G4DiQuarks( 407 "bs0_diquark", 4280.1*MeV, 0.0*MeV, -2./3.*eplus, 408 0, +1, 0, 409 0, +0, 0, 410 "diquarks", 0, 0, 5301, 411 true, -1.0, nullptr); 412 413 // bs1-Diquark 414 particle = new G4DiQuarks( 415 "bs1_diquark", 4280.0*MeV, 0.0*MeV, -2./3.*eplus, 416 2, +1, 0, 417 2, +0, 0, 418 "diquarks", 0, 0, 5303, 419 true, -1.0, nullptr); 420 421 // bc0-Diquark 422 particle = new G4DiQuarks( 423 "bc0_diquark", 5465.1*MeV, 0.0*MeV, 1./3.*eplus, 424 0, +1, 0, 425 0, +0, 0, 426 "diquarks", 0, 0, 5401, 427 true, -1.0, nullptr); 428 429 // bc1-Diquark 430 particle = new G4DiQuarks( 431 "bc1_diquark", 5465.0*MeV, 0.0*MeV, 1./3.*eplus, 432 2, +1, 0, 433 2, +0, 0, 434 "diquarks", 0, 0, 5403, 435 true, -1.0, nullptr); 436 437 // bb1-Diquark 438 particle = new G4DiQuarks( 439 "bb1_diquark", 8365.0*MeV, 0.0*MeV, -2./3.*eplus, 440 2, +1, 0, 441 2, +0, 0, 442 "diquarks", 0, 0, 5503, 443 true, -1.0, nullptr); 444 445 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 446 447 // anti cd0-Diquark 448 particle = new G4DiQuarks( 449 "anti_cd0_diquark", 1286.1*MeV, 0.0*MeV, -1./3.*eplus, 450 0, +1, 0, 451 0, +0, 0, 452 "diquarks", 0, 0, -4101, 453 true, -1.0, nullptr); 454 455 // anti cd1-Diquark 456 particle = new G4DiQuarks( 457 "anti_cd1_diquark", 1286.0*MeV, 0.0*MeV, -1./3.*eplus, 458 2, +1, 0, 459 2, +0, 0, 460 "diquarks", 0, 0, -4103, 461 true, -1.0, nullptr); 462 463 // anti cu0-Diquark 464 particle = new G4DiQuarks( 465 "anti_cu0_diquark", 1283.1*MeV, 0.0*MeV, -4./3.*eplus, 466 0, +1, 0, 467 0, +0, 0, 468 "diquarks", 0, 0, -4201, 469 true, -1.0, nullptr); 470 471 // anti cu1-Diquark 472 particle = new G4DiQuarks( 473 "anti_cu1_diquark", 1283.0*MeV, 0.0*MeV, -4./3.*eplus, 474 2, +1, 0, 475 2, +0, 0, 476 "diquarks", 0, 0, -4203, 477 true, -1.0, nullptr); 478 479 // anti cs0-Diquark 480 particle = new G4DiQuarks( 481 "anti_cs0_diquark", 1380.1*MeV, 0.0*MeV, -1./3.*eplus, 482 0, +1, 0, 483 0, +0, 0, 484 "diquarks", 0, 0, -4301, 485 true, -1.0, nullptr); 486 487 // anti cs1-Diquark 488 particle = new G4DiQuarks( 489 "anti_cs1_diquark", 1380.0*MeV, 0.0*MeV, -1./3.*eplus, 490 2, +1, 0, 491 2, +0, 0, 492 "diquarks", 0, 0, -4303, 493 true, -1.0, nullptr); 494 495 // anti cc1-Diquark 496 particle = new G4DiQuarks( 497 "anti_cc1_diquark", 2565.0*MeV, 0.0*MeV, -4./3.*eplus, 498 2, +1, 0, 499 2, +0, 0, 500 "diquarks", 0, 0, -4403, 501 true, -1.0, nullptr); 502 503 //--------------------------------------------- 504 505 // anti bd0-Diquark 506 particle = new G4DiQuarks( 507 "anti_bd0_diquark", 4186.1*MeV, 0.0*MeV, +2./3.*eplus, 508 0, +1, 0, 509 0, +0, 0, 510 "diquarks", 0, 0, -5101, 511 true, -1.0, nullptr); 512 513 // anti bd1-Diquark 514 particle = new G4DiQuarks( 515 "anti_bd1_diquark", 4186.0*MeV, 0.0*MeV, +2./3.*eplus, 516 2, +1, 0, 517 2, +0, 0, 518 "diquarks", 0, 0, -5103, 519 true, -1.0, nullptr); 520 521 // anti bu0-Diquark 522 particle = new G4DiQuarks( 523 "anti_bu0_diquark", 4183.1*MeV, 0.0*MeV, -1./3.*eplus, 524 0, +1, 0, 525 0, +0, 0, 526 "diquarks", 0, 0, -5201, 527 true, -1.0, nullptr); 528 529 // anti bu1-Diquark 530 particle = new G4DiQuarks( 531 "anti_bu1_diquark", 4183.0*MeV, 0.0*MeV, -1./3.*eplus, 532 2, +1, 0, 533 2, +0, 0, 534 "diquarks", 0, 0, -5203, 535 true, -1.0, nullptr); 536 537 // anti bs0-Diquark 538 particle = new G4DiQuarks( 539 "anti_bs0_diquark", 4280.1*MeV, 0.0*MeV, +2./3.*eplus, 540 0, +1, 0, 541 0, +0, 0, 542 "diquarks", 0, 0, -5301, 543 true, -1.0, nullptr); 544 545 // anti bs1-Diquark 546 particle = new G4DiQuarks( 547 "anti_bs1_diquark", 4280.0*MeV, 0.0*MeV, +2./3.*eplus, 548 2, +1, 0, 549 2, +0, 0, 550 "diquarks", 0, 0, -5303, 551 true, -1.0, nullptr); 552 553 // anti bc0-Diquark 554 particle = new G4DiQuarks( 555 "anti_bc0_diquark", 5465.1*MeV, 0.0*MeV, -1./3.*eplus, 556 0, +1, 0, 557 0, +0, 0, 558 "diquarks", 0, 0, -5401, 559 true, -1.0, nullptr); 560 561 // anti bc1-Diquark 562 particle = new G4DiQuarks( 563 "anti_bc1_diquark", 5465.0*MeV, 0.0*MeV, -1./3.*eplus, 564 2, +1, 0, 565 2, +0, 0, 566 "diquarks", 0, 0, -5403, 567 true, -1.0, nullptr); 568 569 // anti bb1-Diquark 570 particle = new G4DiQuarks( 571 "anti_bb1_diquark", 8365.0*MeV, 0.0*MeV, 2./3.*eplus, 572 2, +1, 0, 573 2, +0, 0, 574 "diquarks", 0, 0, -5503, 575 true, -1.0, nullptr); 576 577 // clang-format on 578 579 particle = nullptr; 580 } 581 582 void G4ShortLivedConstructor::ConstructResonances() 583 { 584 ConstructBaryons(); 585 ConstructMesons(); 586 587 // N* 588 G4ExcitedNucleonConstructor nucleons; 589 nucleons.Construct(); 590 591 // Delta* 592 G4ExcitedDeltaConstructor deltas; 593 deltas.Construct(); 594 595 // Lambda* 596 G4ExcitedLambdaConstructor lamdas; 597 lamdas.Construct(); 598 599 // Sigma* 600 G4ExcitedSigmaConstructor sigmas; 601 sigmas.Construct(); 602 603 // Xi* 604 G4ExcitedXiConstructor xis; 605 xis.Construct(); 606 607 // Mesons 608 G4ExcitedMesonConstructor mesons; 609 mesons.Construct(); 610 } 611 612 void G4ShortLivedConstructor::ConstructBaryons() 613 { 614 G4DecayTable* decayTable; 615 G4VDecayChannel* mode; 616 G4ExcitedBaryons* particle; 617 618 // Construct Resonace particles as dynamic object 619 // Arguments for constructor are as follows 620 // name mass width charge 621 // 2*spin parity C-conjugation 622 // 2*Isospin 2*Isospin3 G-parity 623 // type lepton number baryon number PDG encoding 624 // stable lifetime decay table 625 626 // delta baryons 627 // delta(1232)++ 628 // clang-format off 629 particle = new G4ExcitedBaryons( 630 "delta++", 1.232*GeV, 117.0*MeV, +2.0*eplus, 631 3, +1, 0, 632 3, +3, 0, 633 "baryon", 0, +1, 2224, 634 false, 0.0, nullptr); 635 // clang-format on 636 637 // set sub type 638 particle->SetMultipletName("delta"); 639 // create decay table 640 decayTable = new G4DecayTable(); 641 // create decay channel of delta++ -> proton + pi+ 642 // parent BR #daughters 643 mode = new G4PhaseSpaceDecayChannel("delta++", 1.000, 2, "proton", "pi+"); 644 // add decay table 645 decayTable->Insert(mode); 646 particle->SetDecayTable(decayTable); 647 648 // delta(1232)+ 649 // clang-format off 650 particle = new G4ExcitedBaryons( 651 "delta+", 1.232*GeV, 117.0*MeV, +1.0*eplus, 652 3, +1, 0, 653 3, +1, 0, 654 "baryon", 0, +1, 2214, 655 false, 0.0, nullptr); 656 // clang-format on 657 658 // set sub type 659 particle->SetMultipletName("delta(1232)"); 660 // create decay table 661 decayTable = new G4DecayTable(); 662 // create decay channel of delta+ -> proton + Gamma 663 // parent BR #daughters 664 mode = new G4PhaseSpaceDecayChannel("delta+", 0.01, 2, "proton", "gamma"); 665 decayTable->Insert(mode); 666 // create decay channel of delta+ -> neutron + pi+ 667 // parent BR #daughters 668 // create decay channel of delta+ -> proton + pi0 669 // parent BR #daughters 670 mode = new G4PhaseSpaceDecayChannel("delta+", 0.495, 2, "proton", "pi0"); 671 decayTable->Insert(mode); 672 // create decay channel of delta+ -> neutron + pi+ 673 // parent BR #daughters 674 mode = new G4PhaseSpaceDecayChannel("delta+", 0.495, 2, "neutron", "pi+"); 675 decayTable->Insert(mode); 676 particle->SetDecayTable(decayTable); 677 678 // delta(1232)0 679 // clang-format off 680 particle = new G4ExcitedBaryons( 681 "delta0", 1.232*GeV, 117.0*MeV, +0.0*eplus, 682 3, +1, 0, 683 3, -1, 0, 684 "baryon", 0, +1, 2114, 685 false, 0.0, nullptr); 686 // clang-format on 687 688 // set sub type 689 particle->SetMultipletName("delta(1232)"); 690 // create decay table 691 decayTable = new G4DecayTable(); 692 // create decay channel of delta+ -> neutron + gamma 693 // parent BR #daughters 694 mode = new G4PhaseSpaceDecayChannel("delta0", 0.01, 2, "neutron", "gamma"); 695 decayTable->Insert(mode); 696 // create decay channel of delta+ -> proton + pi- 697 // parent BR #daughters 698 mode = new G4PhaseSpaceDecayChannel("delta0", 0.495, 2, "proton", "pi-"); 699 decayTable->Insert(mode); 700 // create decay channel of delta+ -> neutron + pi0 701 // parent BR #daughters 702 mode = new G4PhaseSpaceDecayChannel("delta0", 0.495, 2, "neutron", "pi0"); 703 decayTable->Insert(mode); 704 particle->SetDecayTable(decayTable); 705 706 // delta(1232)- 707 // clang-format off 708 particle = new G4ExcitedBaryons( 709 "delta-", 1.232*GeV, 117.0*MeV, -1.0*eplus, 710 3, +1, 0, 711 3, -3, 0, 712 "baryon", 0, +1, 1114, 713 false, 0.0, nullptr); 714 // clang-format on 715 716 // set sub type 717 particle->SetMultipletName("delta(1232)"); 718 // create decay table 719 decayTable = new G4DecayTable(); 720 // create decay channel of delta+ -> neutron + pi- 721 // parent BR #daughters 722 mode = new G4PhaseSpaceDecayChannel("delta-", 1.000, 2, "neutron", "pi-"); 723 decayTable->Insert(mode); 724 particle->SetDecayTable(decayTable); 725 726 //////////////////////////// 727 // anti_delta baryons 728 // anti_delta(1232)++ 729 // clang-format off 730 particle = new G4ExcitedBaryons( 731 "anti_delta++", 1.232*GeV, 117.0*MeV, -2.0*eplus, 732 3, +1, 0, 733 3, -3, 0, 734 "baryon", 0, -1, -2224, 735 false, 0.0, nullptr); 736 // clang-format on 737 738 // set sub type 739 particle->SetMultipletName("delta(1232)"); 740 // create decay table 741 decayTable = new G4DecayTable(); 742 // create decay channel of delta++ -> anti_proton + pi- 743 // parent BR #daughters 744 mode = new G4PhaseSpaceDecayChannel("anti_delta++", 1.000, 2, "anti_proton", "pi-"); 745 // add decay table 746 decayTable->Insert(mode); 747 particle->SetDecayTable(decayTable); 748 749 // anti_delta(1232)+ 750 // clang-format off 751 particle = new G4ExcitedBaryons( 752 "anti_delta+", 1.232*GeV, 117.0*MeV, -1.0*eplus, 753 3, +1, 0, 754 3, -1, 0, 755 "baryon", 0, -1, -2214, 756 false, 0.0, nullptr); 757 // clang-format on 758 759 // set sub type 760 particle->SetMultipletName("delta(1232)"); 761 // create decay table 762 decayTable = new G4DecayTable(); 763 // create decay channel of anti_delta+ -> anti_proton + pi0 764 // parent BR #daughters 765 mode = new G4PhaseSpaceDecayChannel("anti_delta+", 0.500, 2, "anti_proton", "pi0"); 766 decayTable->Insert(mode); 767 // create decay channel of anti_delta+ -> anti_neutron + pi- 768 // parent BR #daughters 769 mode = new G4PhaseSpaceDecayChannel("anti_delta+", 0.500, 2, "anti_neutron", "pi-"); 770 decayTable->Insert(mode); 771 particle->SetDecayTable(decayTable); 772 773 // anti_delta(1232)0 774 // clang-format off 775 particle = new G4ExcitedBaryons( 776 "anti_delta0", 1.232*GeV, 117.0*MeV, +0.0*eplus, 777 3, +1, 0, 778 3, +1, 0, 779 "baryon", 0, -1, -2114, 780 false, 0.0, nullptr); 781 // clang-format on 782 783 // set sub type 784 particle->SetMultipletName("delta(1232)"); 785 // create decay table 786 decayTable = new G4DecayTable(); 787 // create decay channel of anti_delta+ -> anti_proton + pi+ 788 // parent BR #daughters 789 mode = new G4PhaseSpaceDecayChannel("anti_delta0", 0.500, 2, "anti_proton", "pi+"); 790 decayTable->Insert(mode); 791 // create decay channel of delta+ -> neutron + pi0 792 // parent BR #daughters 793 mode = new G4PhaseSpaceDecayChannel("anti_delta0", 0.500, 2, "anti_neutron", "pi0"); 794 decayTable->Insert(mode); 795 particle->SetDecayTable(decayTable); 796 797 // anti_delta(1232)- 798 // clang-format off 799 particle = new G4ExcitedBaryons( 800 "anti_delta-", 1.232*GeV, 117.0*MeV, +1.0*eplus, 801 3, +1, 0, 802 3, +3, 0, 803 "baryon", 0, -1, -1114, 804 false, 0.0, nullptr); 805 // clang-format on 806 807 // set sub type 808 particle->SetMultipletName("delta(1232)"); 809 // create decay table 810 decayTable = new G4DecayTable(); 811 // create decay channel of delta- -> neutron + pi+ 812 // parent BR #daughters 813 mode = new G4PhaseSpaceDecayChannel("anti_delta-", 1.000, 2, "anti_neutron", "pi+"); 814 decayTable->Insert(mode); 815 particle->SetDecayTable(decayTable); 816 } 817 818 void G4ShortLivedConstructor::ConstructMesons() 819 { 820 G4DecayTable* decayTable; 821 G4VDecayChannel* mode; 822 G4ExcitedMesons* particle; 823 824 // Construct Resonace particles as dynamic object 825 // Arguments for constructor are as follows 826 // name mass width charge 827 // 2*spin parity C-conjugation 828 // 2*Isospin 2*Isospin3 G-parity 829 // type lepton number baryon number PDG encoding 830 // stable lifetime decay table 831 832 // vector mesons 833 // omega 834 // clang-format off 835 particle = new G4ExcitedMesons( 836 "omega", 782.65*MeV, 8.68*MeV, +0.0*eplus, 837 2, -1, -1, 838 0, +0, -1, 839 "meson", 0, 0, 223, 840 false, 0.0, nullptr); 841 // clang-format on 842 843 particle->SetAntiPDGEncoding(223); 844 // set sub type 845 particle->SetMultipletName("omega"); 846 // create decay table 847 decayTable = new G4DecayTable(); 848 // create decay channel of omega -> pi+ + pi- + pi0 849 // parent BR #daughters 850 mode = new G4PhaseSpaceDecayChannel("omega", 0.891, 3, "pi+", "pi-", "pi0"); 851 // add decay table 852 decayTable->Insert(mode); 853 854 // create decay channel of omega -> gamma + pi0 855 // parent BR #daughters 856 mode = new G4PhaseSpaceDecayChannel("omega", 0.0890, 2, "gamma", "pi0"); 857 // add decay table 858 decayTable->Insert(mode); 859 860 // create decay channel of omega -> pi+ + pi- 861 // parent BR #daughters 862 mode = new G4PhaseSpaceDecayChannel("omega", 0.0170, 2, "pi+", "pi-"); 863 // add decay table 864 decayTable->Insert(mode); 865 particle->SetDecayTable(decayTable); 866 867 // phi 868 // clang-format off 869 particle = new G4ExcitedMesons( 870 "phi", 1019.46*MeV, 4.249*MeV, +0.0*eplus, 871 2, -1, -1, 872 0, +0, -1, 873 "meson", 0, 0, 333, 874 false, 0.0, nullptr); 875 // clang-format on 876 877 particle->SetAntiPDGEncoding(333); 878 // set sub type 879 particle->SetMultipletName("phi"); 880 // create decay table 881 decayTable = new G4DecayTable(); 882 // create decay channel of phi -> kaon+ + kaon- 883 // parent BR #daughters 884 mode = new G4PhaseSpaceDecayChannel("phi", 0.492, 2, "kaon+", "kaon-"); 885 decayTable->Insert(mode); 886 // create decay channel of phi -> kaon0S + kaon0L 887 // parent BR #daughters 888 mode = new G4PhaseSpaceDecayChannel("phi", 0.340, 2, "kaon0S", "kaon0L"); 889 // add decay table 890 decayTable->Insert(mode); 891 // create decay channel of phi -> rho0 + pi0 892 // parent BR #daughters 893 mode = new G4PhaseSpaceDecayChannel("phi", 0.153, 2, "rho0", "pi0"); 894 // add decay table 895 decayTable->Insert(mode); 896 particle->SetDecayTable(decayTable); 897 898 // rho+ 899 // clang-format off 900 particle = new G4ExcitedMesons( 901 "rho+", 775.8*MeV, 149.1*MeV, +1.0*eplus, 902 2, -1, -1, 903 2, +2, +1, 904 "meson", 0, 0, 213, 905 false, 0.0, nullptr); 906 // clang-format on 907 908 // set sub type 909 particle->SetMultipletName("rho"); 910 // create decay table 911 decayTable = new G4DecayTable(); 912 // create decay channel of rho+ -> pi+ + pi0 913 // parent BR #daughters 914 mode = new G4PhaseSpaceDecayChannel("rho+", 1.000, 2, "pi+", "pi0"); 915 // add decay table 916 decayTable->Insert(mode); 917 particle->SetDecayTable(decayTable); 918 919 // rho- 920 // clang-format off 921 particle = new G4ExcitedMesons( 922 "rho-", 775.8*MeV, 149.1*MeV, -1.0*eplus, 923 2, -1, -1, 924 2, -2, +1, 925 "meson", 0, 0, -213, 926 false, 0.0, nullptr); 927 // clang-format on 928 929 // set sub type 930 particle->SetMultipletName("rho"); 931 // create decay table 932 decayTable = new G4DecayTable(); 933 // create decay channel of rho- -> pi- + pi0 934 // parent BR #daughters 935 mode = new G4PhaseSpaceDecayChannel("rho-", 1.000, 2, "pi-", "pi0"); 936 // add decay table 937 decayTable->Insert(mode); 938 particle->SetDecayTable(decayTable); 939 940 // rho0 941 // clang-format off 942 particle = new G4ExcitedMesons( 943 "rho0", 775.26*MeV, 147.4*MeV, 0.0, 944 2, -1, -1, 945 2, 0, +1, 946 "meson", 0, 0, 113, 947 false, 0.0*ns, nullptr ); 948 // clang-format on 949 particle->SetAntiPDGEncoding(113); 950 // set sub type 951 particle->SetMultipletName("rho"); 952 // create decay table 953 decayTable = new G4DecayTable(); 954 // create decay channel of rho0 -> pi+ + pi- 955 // parent BR #daughters 956 mode = new G4PhaseSpaceDecayChannel("rho0", 1.000, 2, "pi+", "pi-"); 957 // add decay table 958 decayTable->Insert(mode); 959 particle->SetDecayTable(decayTable); 960 961 // a0(980)+ 962 // clang-format off 963 particle = new G4ExcitedMesons( 964 "a0(980)+", 980.0*MeV, 60.0*MeV, +1.0*eplus, 965 0, +1, +1, 966 2, +2, -1, 967 "meson", 0, 0, 9000211, 968 false, 0.0, nullptr); 969 // clang-format on 970 // set sub type 971 particle->SetMultipletName("a0(980)"); 972 // create decay table 973 decayTable = new G4DecayTable(); 974 // create decay channel of a0(980)+ -> eta + pi+ 975 // parent BR #daughters 976 mode = new G4PhaseSpaceDecayChannel("a0(980)+", 1.000, 2, "pi+", "eta"); 977 // add decay table 978 decayTable->Insert(mode); 979 particle->SetDecayTable(decayTable); 980 981 // a0(980)- 982 // clang-format off 983 particle = new G4ExcitedMesons( 984 "a0(980)-", 980.0*MeV, 60.0*MeV, -1.0*eplus, 985 0, +1, +1, 986 2, -2, -1, 987 "meson", 0, 0, -9000211, 988 false, 0.0, nullptr); 989 // clang-format on 990 991 // set sub type 992 particle->SetMultipletName("a0(980)"); 993 // create decay table 994 decayTable = new G4DecayTable(); 995 // create decay channel of a0(980)- -> eta + pi- 996 // parent BR #daughters 997 mode = new G4PhaseSpaceDecayChannel("a0(980)-", 1.000, 2, "pi-", "eta"); 998 // add decay table 999 decayTable->Insert(mode); 1000 particle->SetDecayTable(decayTable); 1001 1002 // a0(980)0 1003 // clang-format off 1004 particle = new G4ExcitedMesons( 1005 "a0(980)0", 980.0*MeV, 75.0*MeV, 0.0, 1006 0, +1, +1, 1007 2, 0, -1, 1008 "meson", 0, 0, 9000111, 1009 false, 0.0, nullptr); 1010 // clang-format on 1011 particle->SetAntiPDGEncoding(9000111); 1012 // set sub type 1013 particle->SetMultipletName("a0(980)"); 1014 // create decay table 1015 decayTable = new G4DecayTable(); 1016 // create decay channel of a0(980)0 -> eta + pi0 1017 // parent BR #daughters 1018 mode = new G4PhaseSpaceDecayChannel("a0(980)0", 1.000, 2, "pi0", "eta"); 1019 // add decay table 1020 decayTable->Insert(mode); 1021 particle->SetDecayTable(decayTable); 1022 1023 // f0(500) (was f0(500) f0(400-1200)) 1024 // clang-format off 1025 particle = new G4ExcitedMesons( 1026 "f0(500)", 600.0*MeV, 450.0*MeV, 0.0, 1027 0, +1, +1, 1028 0, 0, +1, 1029 "meson", 0, 0, 9000221, 1030 false, 0.0, nullptr); 1031 // clang-format on 1032 1033 particle->SetAntiPDGEncoding(9000221); 1034 // set sub type 1035 particle->SetMultipletName("f0(500)"); 1036 // create decay table 1037 decayTable = new G4DecayTable(); 1038 // create decay channel of f0(500) -> pi + pi 1039 // parent BR #daughters 1040 mode = new G4PhaseSpaceDecayChannel("f0(500)", 1.000, 2, "pi+", "pi-"); 1041 // add decay table 1042 decayTable->Insert(mode); 1043 particle->SetDecayTable(decayTable); 1044 1045 // f0(980) 1046 // clang-format off 1047 particle = new G4ExcitedMesons( 1048 "f0(980)", 990.0*MeV, 55.0*MeV, 0.0, 1049 0, +1, +1, 1050 0, 0, +1, 1051 "meson", 0, 0, 9010221, 1052 false, 0.0, nullptr); 1053 // clang-format on 1054 1055 particle->SetAntiPDGEncoding(9010221); 1056 // set sub type 1057 particle->SetMultipletName("f0(980)"); 1058 // create decay table 1059 decayTable = new G4DecayTable(); 1060 // create decay channel of f0(980) -> pi + pi 1061 // parent BR #daughters 1062 mode = new G4PhaseSpaceDecayChannel("f0(980)", 1.000, 2, "pi+", "pi-"); 1063 // add decay table 1064 decayTable->Insert(mode); 1065 particle->SetDecayTable(decayTable); 1066 1067 // eta(1405) 1068 // clang-format off 1069 particle = new G4ExcitedMesons( 1070 "eta(1405)", 1408.8*MeV, 50.1*MeV, 0.0, 1071 0, -1, +1, 1072 0, 0, +1, 1073 "meson", 0, 0, 9020221, 1074 false, 0.0, nullptr); 1075 // clang-format on 1076 1077 particle->SetAntiPDGEncoding(9020221); 1078 // set sub type 1079 particle->SetMultipletName("eta(1405)"); 1080 // create decay table 1081 decayTable = new G4DecayTable(); 1082 // create decay channel of eta(1405) -> rho + rho 1083 // parent BR #daughters 1084 mode = new G4PhaseSpaceDecayChannel("eta(1405)", 1.000, 2, "rho+", "rho-"); 1085 // add decay table 1086 decayTable->Insert(mode); 1087 particle->SetDecayTable(decayTable); 1088 1089 // f0(1500) 1090 // clang-format off 1091 particle = new G4ExcitedMesons( 1092 "f0(1500)", 1522.0*MeV, 108.0*MeV, 0.0, 1093 0, +1, +1, 1094 0, 0, +1, 1095 "meson", 0, 0, 9030221, 1096 false, 0.0, nullptr); 1097 // clang-format on 1098 1099 particle->SetAntiPDGEncoding(9030221); 1100 // set sub type 1101 particle->SetMultipletName("f0(1500)"); 1102 // create decay table 1103 decayTable = new G4DecayTable(); 1104 // create decay channel of f0(1500) -> eta + eta 1105 // parent BR #daughters 1106 mode = new G4PhaseSpaceDecayChannel("f0(1500)", 1.000, 2, "eta", "eta"); 1107 // add decay table 1108 decayTable->Insert(mode); 1109 particle->SetDecayTable(decayTable); 1110 1111 // f0(1710) 1112 // clang-format off 1113 particle = new G4ExcitedMesons( 1114 "f0(1710)", 1733.0*MeV, 150.0*MeV, 0.0, 1115 0, +1, +1, 1116 0, 0, +1, 1117 "meson", 0, 0, 10331, 1118 false, 0.0, nullptr); 1119 // clang-format on 1120 1121 particle->SetAntiPDGEncoding(10331); 1122 // set sub type 1123 particle->SetMultipletName("f0(1710)"); 1124 // create decay table 1125 decayTable = new G4DecayTable(); 1126 1127 // create decay channel of f0(1710) -> k0 + k0 1128 // parent BR #daughters 1129 mode = new G4PhaseSpaceDecayChannel("f0(1710)", 0.40, 2, "kaon0S", "kaon0S"); 1130 // add decay table 1131 decayTable->Insert(mode); 1132 1133 // create decay channel of f0(1710) -> k+ + k+ 1134 // parent BR #daughters 1135 mode = new G4PhaseSpaceDecayChannel("f0(1710)", 0.40, 2, "kaon+", "kaon-"); 1136 // add decay table 1137 decayTable->Insert(mode); 1138 1139 // create decay channel of f0(1710) -> eta + eta 1140 // parent BR #daughters 1141 mode = new G4PhaseSpaceDecayChannel("f0(1710)", 0.20, 2, "eta", "eta"); 1142 // add decay table 1143 decayTable->Insert(mode); 1144 particle->SetDecayTable(decayTable); 1145 1146 // k_star+ 1147 // clang-format off 1148 particle = new G4ExcitedMesons( 1149 "k_star+", 891.67*MeV, 51.4*MeV, +1.0*eplus, 1150 2, -1, 0, 1151 1, +1, 0, 1152 "meson", 0, 0, 323, 1153 false, 0.0, nullptr); 1154 // clang-format on 1155 1156 // set sub type 1157 particle->SetMultipletName("k_star"); 1158 // create decay table 1159 decayTable = new G4DecayTable(); 1160 // create decay channel of k_star+ -> kaon+ + pi0 1161 // parent BR #daughters 1162 mode = new G4PhaseSpaceDecayChannel("k_star+", 0.500, 2, "kaon+", "pi0"); 1163 // add decay table 1164 decayTable->Insert(mode); 1165 // create decay channel of k_star+ -> kaon+ + pi0 1166 // parent BR #daughters 1167 mode = new G4PhaseSpaceDecayChannel("k_star+", 0.500, 2, "kaon0", "pi+"); 1168 // add decay table 1169 decayTable->Insert(mode); 1170 particle->SetDecayTable(decayTable); 1171 1172 // k_star0 1173 // clang-format off 1174 particle = new G4ExcitedMesons( 1175 "k_star0", 895.55*MeV, 47.3*MeV, 0.0*eplus, 1176 2, -1, 0, 1177 1, -1, 0, 1178 "meson", 0, 0, 313, 1179 false, 0.0, nullptr); 1180 // clang-format on 1181 1182 // set sub type 1183 particle->SetMultipletName("k_star"); 1184 // create decay table 1185 decayTable = new G4DecayTable(); 1186 // create decay channel of k_star0 -> kaon+ + pi- 1187 // parent BR #daughters 1188 mode = new G4PhaseSpaceDecayChannel("k_star0", 0.500, 2, "kaon+", "pi-"); 1189 // add decay table 1190 decayTable->Insert(mode); 1191 // create decay channel of k_star0 -> kaon0 + pi0 1192 // parent BR #daughters 1193 mode = new G4PhaseSpaceDecayChannel("k_star0", 0.500, 2, "kaon0", "pi0"); 1194 // add decay table 1195 decayTable->Insert(mode); 1196 particle->SetDecayTable(decayTable); 1197 1198 // k_star- 1199 // clang-format off 1200 particle = new G4ExcitedMesons( 1201 "k_star-", 891.67*MeV, 51.4*MeV, -1.0*eplus, 1202 2, -1, 0, 1203 1, +1, 0, 1204 "meson", 0, 0, -323, 1205 false, 0.0, nullptr); 1206 // clang-format on 1207 1208 // set sub type 1209 particle->SetMultipletName("k_star"); 1210 // create decay table 1211 decayTable = new G4DecayTable(); 1212 // create decay channel of k_star- -> kaon- + pi0 1213 // parent BR #daughters 1214 mode = new G4PhaseSpaceDecayChannel("k_star-", 0.500, 2, "kaon-", "pi0"); 1215 // add decay table 1216 decayTable->Insert(mode); 1217 // create decay channel of k_star- -> anti_kaon0 + pi- 1218 // parent BR #daughters 1219 mode = new G4PhaseSpaceDecayChannel("k_star-", 0.500, 2, "anti_kaon0", "pi-"); 1220 // add decay table 1221 decayTable->Insert(mode); 1222 particle->SetDecayTable(decayTable); 1223 1224 // anti_k_star0 1225 // clang-format off 1226 particle = new G4ExcitedMesons( 1227 "anti_k_star0", 895.55*MeV, 47.3*MeV, 0.0*eplus, 1228 2, -1, 0, 1229 1, -1, 0, 1230 "meson", 0, 0, -313, 1231 false, 0.0, nullptr); 1232 // clang-format on 1233 1234 // set sub type 1235 particle->SetMultipletName("k_star"); 1236 // create decay table 1237 decayTable = new G4DecayTable(); 1238 // create decay channel of anti_k_star0 -> kaon- + pi+ 1239 // parent BR #daughters 1240 mode = new G4PhaseSpaceDecayChannel("anti_k_star0", 0.500, 2, "kaon-", "pi+"); 1241 // add decay table 1242 decayTable->Insert(mode); 1243 // create decay channel of anti_k_star0 -> anti_kaon0 + pi0 1244 // parent BR #daughters 1245 mode = new G4PhaseSpaceDecayChannel("anti_k_star0", 0.500, 2, "anti_kaon0", "pi0"); 1246 // add decay table 1247 decayTable->Insert(mode); 1248 particle->SetDecayTable(decayTable); 1249 } 1250