diff --git a/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h b/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h index 229a1a7a8a535..4a64b0c836342 100644 --- a/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h +++ b/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h @@ -9,32 +9,30 @@ // granted to it by virtue of its status as an Intergovernmental Organization // or submit itself to any jurisdiction. -// -// Created by Sandro Wenzel on 11.08.22. -// - #ifndef O2_O2DATABASEPDG_H #define O2_O2DATABASEPDG_H -#include #include "TDatabasePDG.h" #include "TParticlePDG.h" +#include namespace o2 { // An ALICE specific extension of ROOT's TDatabasePDG // -// By using O2DatabasePDG::Instance() in our code instead of TDatabasePDG::Instance(), correct initialization -// is guaranteed. Alternatively, a static function is exposed with which particles can be added to TDatabasePDG objects -// directly. +// By using O2DatabasePDG::Instance() in our code instead of +// TDatabasePDG::Instance(), correct initialization is guaranteed. +// Alternatively, a static function is exposed with which particles can be added +// to TDatabasePDG objects directly. class O2DatabasePDG { // public: static TDatabasePDG* Instance() { - static bool initialized = false; // initialize this --> adds particles to TDatabasePDG; + static bool initialized = + false; // initialize this --> adds particles to TDatabasePDG; auto db = TDatabasePDG::Instance(); if (!initialized) { addALICEParticles(db); @@ -59,7 +57,8 @@ class O2DatabasePDG } // determine particle to get mass for based on PDG - static Double_t Mass(int pdg, bool& success, TDatabasePDG* db = O2DatabasePDG::Instance()) + static Double_t Mass(int pdg, bool& success, + TDatabasePDG* db = O2DatabasePDG::Instance()) { if (pdg < IONBASELOW || pdg > IONBASEHIGH) { // not an ion, return immediately @@ -69,7 +68,8 @@ class O2DatabasePDG // see if this ion can be found return MassImpl(particle, success); } - // if we are here, try one last time to look for ground state of potential isomere state + // if we are here, try one last time to look for ground state of potential + // isomere state pdg = pdg / 10 * 10; return MassImpl(db->GetParticle(pdg), success); } @@ -82,8 +82,8 @@ class O2DatabasePDG static constexpr int IONBASEHIGH{1099999999}; }; -// by keeping this inline, we can use it in other parts of the code, for instance Framework or Analysis, -// without needing to link against this library +// by keeping this inline, we can use it in other parts of the code, for +// instance Framework or Analysis, without needing to link against this library inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) { // @@ -107,31 +107,33 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) // Heavy-flavour particles - // χc1(3872) aka X(3872), taken from PDG 2022 (https://pdg.lbl.gov/2022/listings/rpp2022-list-chi-c1-3872.pdf) - db->AddParticle("Chi_c1(3872)", "Chi_c1(3872)", 3.87165, kFALSE, 0, 0, "CCBarMeson", 9920443); + // χc1(3872) aka X(3872), taken from PDG 2022 + // (https://pdg.lbl.gov/2022/listings/rpp2022-list-chi-c1-3872.pdf) + db->AddParticle("Chi_c1(3872)", "Chi_c1(3872)", 3.87165, kFALSE, 0, 0, + "CCBarMeson", 9920443); // // Bottom mesons // mass and life-time from PDG // - db->AddParticle("Upsilon(3S)", "Upsilon(3S)", 10.3552, kTRUE, - 0, 0, "Bottonium", 200553); + db->AddParticle("Upsilon(3S)", "Upsilon(3S)", 10.3552, kTRUE, 0, 0, + "Bottonium", 200553); // QCD diffractive states - db->AddParticle("rho_diff0", "rho_diff0", 0, kTRUE, - 0, 0, "QCD diffr. state", 9900110); - db->AddParticle("pi_diffr+", "pi_diffr+", 0, kTRUE, - 0, 3, "QCD diffr. state", 9900210); - db->AddParticle("omega_di", "omega_di", 0, kTRUE, - 0, 0, "QCD diffr. state", 9900220); - db->AddParticle("phi_diff", "phi_diff", 0, kTRUE, - 0, 0, "QCD diffr. state", 9900330); - db->AddParticle("J/psi_di", "J/psi_di", 0, kTRUE, - 0, 0, "QCD diffr. state", 9900440); - db->AddParticle("n_diffr0", "n_diffr0", 0, kTRUE, - 0, 0, "QCD diffr. state", 9902110); - db->AddParticle("p_diffr+", "p_diffr+", 0, kTRUE, - 0, 3, "QCD diffr. state", 9902210); + db->AddParticle("rho_diff0", "rho_diff0", 0, kTRUE, 0, 0, "QCD diffr. state", + 9900110); + db->AddParticle("pi_diffr+", "pi_diffr+", 0, kTRUE, 0, 3, "QCD diffr. state", + 9900210); + db->AddParticle("omega_di", "omega_di", 0, kTRUE, 0, 0, "QCD diffr. state", + 9900220); + db->AddParticle("phi_diff", "phi_diff", 0, kTRUE, 0, 0, "QCD diffr. state", + 9900330); + db->AddParticle("J/psi_di", "J/psi_di", 0, kTRUE, 0, 0, "QCD diffr. state", + 9900440); + db->AddParticle("n_diffr0", "n_diffr0", 0, kTRUE, 0, 0, "QCD diffr. state", + 9902110); + db->AddParticle("p_diffr+", "p_diffr+", 0, kTRUE, 0, 3, "QCD diffr. state", + 9902210); // From Herwig db->AddParticle("PSID ", " ", 3.7699, kFALSE, 0.0, 0, "meson", 30443); @@ -140,7 +142,7 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) db->AddParticle("A_0+ ", " ", 0.9960, kFALSE, 0.0, +3, "meson", 9000211); db->AddParticle("A_0- ", " ", 0.9960, kFALSE, 0.0, -3, "meson", -9000211); - //db->AddParticle("F0P0 ", " ", 0.9960, kFALSE, 0.0, 0, "meson", 9010221); + // db->AddParticle("F0P0 ", " ", 0.9960, kFALSE, 0.0, 0, "meson", 9010221); db->AddParticle("KDL_2+ ", " ", 1.773, kFALSE, 0.0, +3, "meson", 10325); db->AddParticle("KDL_2- ", " ", 1.773, kFALSE, 0.0, -3, "meson", -10325); @@ -198,8 +200,8 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) /// UPDATED VALUES FROM CODATA 2018 Int_t ionCode = kion + 10020; if (!db->GetParticle(ionCode)) { - db->AddParticle("Deuteron", "Deuteron", 1.87561294257, kTRUE, - 0, 3, "Ion", ionCode); + db->AddParticle("Deuteron", "Deuteron", 1.87561294257, kTRUE, 0, 3, "Ion", + ionCode); } db->AddAntiParticle("AntiDeuteron", -ionCode); @@ -212,8 +214,7 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) ionCode = kion + 20030; if (!db->GetParticle(ionCode)) { - db->AddParticle("HE3", "HE3", 2.80839160743, kFALSE, - 0, 6, "Ion", ionCode); + db->AddParticle("HE3", "HE3", 2.80839160743, kFALSE, 0, 6, "Ion", ionCode); } db->AddAntiParticle("AntiHE3", -ionCode); @@ -227,108 +228,77 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) // Special particles // - db->AddParticle("Cherenkov", "Cherenkov", 0, kFALSE, - 0, 0, "Special", kspe + 50); - db->AddParticle("FeedbackPhoton", "FeedbackPhoton", 0, kFALSE, - 0, 0, "Special", kspe + 51); + db->AddParticle("Cherenkov", "Cherenkov", 0, kFALSE, 0, 0, "Special", + kspe + 50); + db->AddParticle("FeedbackPhoton", "FeedbackPhoton", 0, kFALSE, 0, 0, + "Special", kspe + 51); - //Hyper nuclei and exotica + // Hyper nuclei and exotica ionCode = 1010010030; if (!db->GetParticle(ionCode)) { - db->AddParticle("HyperTriton", "HyperTriton", 2.99131, kFALSE, - 2.5e-15, 3, "Ion", ionCode); + db->AddParticle("HyperTriton", "HyperTriton", 2.991134, kFALSE, 2.5e-15, 3, + "Ion", ionCode); + db->AddAntiParticle("AntiHyperTriton", -ionCode); } - ionCode = -1010010030; - if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperTriton", "AntiHyperTriton", 2.99131, kFALSE, - 2.5e-15, 3, "Ion", ionCode); - } - - //hyper hydrogen 4 ground state + // hyper hydrogen 4 ionCode = 1010010040; if (!db->GetParticle(ionCode)) { - db->AddParticle("Hyperhydrog4", "Hyperhydrog4", 3.9226, kFALSE, - 2.5e-15, 3, "Ion", ionCode); - } - //anti hyper hydrogen 4 ground state - ionCode = -1010010040; - if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperhydrog4", "AntiHyperhydrog4", 3.9226, kFALSE, - 2.5e-15, 3, "Ion", ionCode); - } - //hyper hydrogen 4 excited state - ionCode = 1010010041; - if (!db->GetParticle(ionCode)) { - db->AddParticle("Hyperhydrog4*", "Hyperhydrog4*", 3.9237, kFALSE, - 2.5e-15, 3, "Ion", ionCode); - } - //anti hyper hydrogen 4 excited state - ionCode = -1010010041; - if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperhydrog4*", "AntiHyperhydrog4*", 3.9237, kFALSE, - 2.5e-15, 3, "Ion", ionCode); + db->AddParticle("Hyperhydrog4", "Hyperhydrog4", 3.922434, kFALSE, 2.5e-15, + 3, "Ion", ionCode); + db->AddAntiParticle("AntiHyperhydrog4", -ionCode); } - //hyper helium 4 ground state + + // hyper helium 4 ionCode = 1010020040; if (!db->GetParticle(ionCode)) { - db->AddParticle("Hyperhelium4", "Hyperhelium4", 3.9217, kFALSE, - 2.5e-15, 6, "Ion", ionCode); - } - //anti hyper helium 4 ground state - ionCode = -1010020040; - if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperhelium4", "AntiHyperhelium4", 3.9217, kFALSE, - 2.5e-15, 6, "Ion", ionCode); - } - //hyper helium 4 excited state - ionCode = 1010020041; - if (!db->GetParticle(ionCode)) { - db->AddParticle("Hyperhelium4*", "Hyperhelium4*", 3.9231, kFALSE, - 2.5e-15, 6, "Ion", ionCode); - } - //anti hyper helium 4 excited state - ionCode = -1010020041; - if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperhelium4*", "AntiHyperhelium4*", 3.9231, kFALSE, - 2.5e-15, 6, "Ion", ionCode); + db->AddParticle("Hyperhelium4", "Hyperhelium4", 3.921728, kFALSE, 2.5e-15, + 6, "Ion", ionCode); + db->AddAntiParticle("AntiHyperhelium4", -ionCode); } - // Lithium 4 ground state - ionCode = 1000030040; + // hyper helium 5 + ionCode = 1010020050; if (!db->GetParticle(ionCode)) { - db->AddParticle("Lithium4", "Lithium4", 3.7513, kFALSE, - 0.003, 9, "Ion", ionCode); + db->AddParticle("Hyperhelium5", "Hyperhelium5", 4.839961, kFALSE, 2.5e-15, + 6, "Ion", ionCode); + db->AddAntiParticle("AntiHyperhelium5", -ionCode); } - // anti Lithium 4 ground state - ionCode = -1000030040; + + // double hyper hydrogen 4 + ionCode = 1020010040; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiLithium4", "AntiLithium4", 3.7513, kFALSE, - 0.003, 9, "Ion", ionCode); + db->AddParticle("DoubleHyperhydrogen4", "DoubleHyperhydrogen4", 4.106, + kFALSE, 2.5e-15, 6, "Ion", ionCode); + db->AddAntiParticle("AntiDoubleHyperhydrogen4", -ionCode); } - ionCode = 1010020050; + // 4-Xi-He + ionCode = 1120020040; if (!db->GetParticle(ionCode)) { - db->AddParticle("Hyperhelium5", "Hyperhelium5", 4.841, kFALSE, - 2.5e-15, 6, "Ion", ionCode); + db->AddParticle("4XiHe", "4XiHe", 4.128, kFALSE, 4.04e-15, 3, "Ion", + ionCode); + db->AddAntiParticle("Anti4XiHe", -ionCode); } - ionCode = -1010020050; + // 4-Xi-H + ionCode = 1120010040; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperhelium5", "AntiHyperhelium5", 4.841, kFALSE, - 2.5e-15, 6, "Ion", ionCode); + db->AddParticle("4XiH", "4XiH", 4.128, kFALSE, 4.04e-15, 3, "Ion", ionCode); + db->AddAntiParticle("Anti4XiH", -ionCode); } - ionCode = 1020010040; + // Lithium 4 ground state + ionCode = 1000030040; if (!db->GetParticle(ionCode)) { - db->AddParticle("DoubleHyperhydrogen4", "DoubleHyperhydrogen4", 4.106, kFALSE, - 2.5e-15, 6, "Ion", ionCode); + db->AddParticle("Lithium4", "Lithium4", 3.7513, kFALSE, 0.003, 9, "Ion", + ionCode); } - - ionCode = -1020010040; + // anti Lithium 4 ground state + ionCode = -1000030040; if (!db->GetParticle(ionCode)) { - db->AddParticle("DoubleAntiHyperhydrogen4", "DoubleAntiHyperhydrogen4", 4.106, kFALSE, - 2.5e-15, 6, "Ion", ionCode); + db->AddParticle("AntiLithium4", "AntiLithium4", 3.7513, kFALSE, 0.003, 9, + "Ion", ionCode); } // hyper helium 4 sigma @@ -340,14 +310,14 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) // anti-hyper helium 4 sigma ionCode = -1110020040; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHyperhelium4sigma", "AntiHyperhelium4sigma", 3.995, kFALSE, - 2.5e-15, 6, "Ion", ionCode); + db->AddParticle("AntiHyperhelium4sigma", "AntiHyperhelium4sigma", 3.995, + kFALSE, 2.5e-15, 6, "Ion", ionCode); } ionCode = 1010000020; if (!db->GetParticle(ionCode)) { - db->AddParticle("LambdaNeutron", "LambdaNeutron", 2.054, kFALSE, - 2.5e-15, 0, "Special", ionCode); + db->AddParticle("LambdaNeutron", "LambdaNeutron", 2.054, kFALSE, 2.5e-15, 0, + "Special", ionCode); } ionCode = -1010000020; @@ -358,44 +328,44 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) ionCode = 1020000020; if (!db->GetParticle(ionCode)) { - db->AddParticle("Hdibaryon", "Hdibaryon", 2.23, kFALSE, - 2.5e-15, 0, "Special", ionCode); + db->AddParticle("Hdibaryon", "Hdibaryon", 2.23, kFALSE, 2.5e-15, 0, + "Special", ionCode); } ionCode = -1020000020; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiHdibaryon", "AntiHdibaryon", 2.23, kFALSE, - 2.5e-15, 0, "Special", ionCode); + db->AddParticle("AntiHdibaryon", "AntiHdibaryon", 2.23, kFALSE, 2.5e-15, 0, + "Special", ionCode); } ionCode = 1010000030; if (!db->GetParticle(ionCode)) { - db->AddParticle("LambdaNeutronNeutron", "LambdaNeutronNeutron", 2.99, kFALSE, - 2.5e-15, 0, "Special", ionCode); + db->AddParticle("LambdaNeutronNeutron", "LambdaNeutronNeutron", 2.99, + kFALSE, 2.5e-15, 0, "Special", ionCode); } ionCode = -1010000030; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiLambdaNeutronNeutron", "AntiLambdaNeutronNeutron", 2.99, kFALSE, - 2.5e-15, 0, "Special", ionCode); + db->AddParticle("AntiLambdaNeutronNeutron", "AntiLambdaNeutronNeutron", + 2.99, kFALSE, 2.5e-15, 0, "Special", ionCode); } ionCode = 1020010020; if (!db->GetParticle(ionCode)) { - db->AddParticle("Xi0Proton", "Xi0Proton", 2.248, kFALSE, - 5e-15, 3, "Ion", ionCode); + db->AddParticle("Xi0Proton", "Xi0Proton", 2.248, kFALSE, 5e-15, 3, "Ion", + ionCode); } ionCode = -1020010020; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiXi0Proton", "AntiXi0Proton", 2.248, kFALSE, - 5e-15, 3, "Ion", ionCode); + db->AddParticle("AntiXi0Proton", "AntiXi0Proton", 2.248, kFALSE, 5e-15, 3, + "Ion", ionCode); } ionCode = 1030000020; if (!db->GetParticle(ionCode)) { - db->AddParticle("OmegaProton", "OmegaProton", 2.592, kFALSE, - 2.5e-15, 0, "Special", ionCode); + db->AddParticle("OmegaProton", "OmegaProton", 2.592, kFALSE, 2.5e-15, 0, + "Special", ionCode); } ionCode = -1030000020; @@ -406,8 +376,8 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) ionCode = 1030010020; if (!db->GetParticle(ionCode)) { - db->AddParticle("OmegaNeutron", "OmegaNeutron", 2.472, kFALSE, - 0.003, 3, "Special", ionCode); + db->AddParticle("OmegaNeutron", "OmegaNeutron", 2.472, kFALSE, 0.003, 3, + "Special", ionCode); } ionCode = -1030010020; @@ -418,51 +388,51 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) ionCode = 1060020020; if (!db->GetParticle(ionCode)) { - db->AddParticle("OmegaOmega", "OmegaOmega", 3.229, kFALSE, - 2.5e-15, 6, "Special", ionCode); + db->AddParticle("OmegaOmega", "OmegaOmega", 3.229, kFALSE, 2.5e-15, 6, + "Special", ionCode); } ionCode = -1060020020; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiOmegaOmega", "AntiOmegaOmega", 3.229, kFALSE, - 2.5e-15, 6, "Special", ionCode); + db->AddParticle("AntiOmegaOmega", "AntiOmegaOmega", 3.229, kFALSE, 2.5e-15, + 6, "Special", ionCode); } ionCode = 1010010021; if (!db->GetParticle(ionCode)) { - db->AddParticle("Lambda1405Proton", "Lambda1405Proton", 2.295, kFALSE, - 0.05, 3, "Special", ionCode); + db->AddParticle("Lambda1405Proton", "Lambda1405Proton", 2.295, kFALSE, 0.05, + 3, "Special", ionCode); } ionCode = -1010010021; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiLambda1405Proton", "AntiLambda1405Proton", 2.295, kFALSE, - 0.05, 3, "Special", ionCode); + db->AddParticle("AntiLambda1405Proton", "AntiLambda1405Proton", 2.295, + kFALSE, 0.05, 3, "Special", ionCode); } ionCode = 1020000021; if (!db->GetParticle(ionCode)) { - db->AddParticle("Lambda1405Lambda1405", "Lambda1405Lambda1405", 2.693, kFALSE, - 0.05, 0, "Special", ionCode); + db->AddParticle("Lambda1405Lambda1405", "Lambda1405Lambda1405", 2.693, + kFALSE, 0.05, 0, "Special", ionCode); } ionCode = -1020000021; if (!db->GetParticle(ionCode)) { - db->AddParticle("AntiLambda1405Lambda1405", "AntiLambda1405Lambda1405", 2.693, kFALSE, - 0.05, 0, "Special", ionCode); + db->AddParticle("AntiLambda1405Lambda1405", "AntiLambda1405Lambda1405", + 2.693, kFALSE, 0.05, 0, "Special", ionCode); } ionCode = 2010010030; if (!db->GetParticle(ionCode)) { - db->AddParticle("CTriton", "CTriton", 4.162, kFALSE, - 3.3e-12, 3, "Ion", ionCode); + db->AddParticle("CTriton", "CTriton", 4.162, kFALSE, 3.3e-12, 3, "Ion", + ionCode); db->AddAntiParticle("AntiCTriton", -ionCode); } ionCode = 2010010020; if (!db->GetParticle(ionCode)) { - db->AddParticle("CDeuteron", "CDeuteron", 3.226, kFALSE, - 3.3e-12, 3, "Ion", ionCode); + db->AddParticle("CDeuteron", "CDeuteron", 3.226, kFALSE, 3.3e-12, 3, "Ion", + ionCode); db->AddAntiParticle("AntiCDeuteron", -ionCode); } @@ -470,104 +440,117 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) ionCode = 9010221; if (!db->GetParticle(ionCode)) { - db->AddParticle("f0_980", "f0_980", 0.980, kFALSE, - 0.07, 0, "Resonance", ionCode); + db->AddParticle("f0_980", "f0_980", 0.980, kFALSE, 0.07, 0, "Resonance", + ionCode); } ionCode = 225; if (!db->GetParticle(ionCode)) { - db->AddParticle("f2_1270", "f2_1270", 1.275, kFALSE, - 0.185, 0, "Resonance", ionCode); + db->AddParticle("f2_1270", "f2_1270", 1.275, kFALSE, 0.185, 0, "Resonance", + ionCode); } // Lambda(1520)0 ionCode = 102134; if (!db->GetParticle(ionCode)) { - db->AddParticle("Lambda_1520_0", "Lambda_1520_0", 1.5195, kFALSE, 0.0156, 0, "Resonance", ionCode); + db->AddParticle("Lambda_1520_0", "Lambda_1520_0", 1.5195, kFALSE, 0.0156, 0, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("AntiLambda_1520_0", "AntiLambda_1520_0", 1.5195, kFALSE, 0.0156, 0, "Resonance", -ionCode); + db->AddParticle("AntiLambda_1520_0", "AntiLambda_1520_0", 1.5195, kFALSE, + 0.0156, 0, "Resonance", -ionCode); } // f1 study ionCode = 20223; if (!db->GetParticle(ionCode)) { - db->AddParticle("f1_1285", "f1_1285", 1.28210, kFALSE, 0.02420, 0, "Resonance", ionCode); + db->AddParticle("f1_1285", "f1_1285", 1.28210, kFALSE, 0.02420, 0, + "Resonance", ionCode); } ionCode = 20333; if (!db->GetParticle(ionCode)) { - db->AddParticle("f1_1420", "f1_1420", 1.42640, kFALSE, 0.05490, 0, "Resonance", ionCode); + db->AddParticle("f1_1420", "f1_1420", 1.42640, kFALSE, 0.05490, 0, + "Resonance", ionCode); } // glueball hunting ionCode = 115; if (!db->GetParticle(ionCode)) { - db->AddParticle("a2_1320", "a2_1320", 1.3182, kFALSE, 0.1078, 0, "Resonance", ionCode); + db->AddParticle("a2_1320", "a2_1320", 1.3182, kFALSE, 0.1078, 0, + "Resonance", ionCode); } ionCode = 10221; if (!db->GetParticle(ionCode)) { - db->AddParticle("f0_1370", "f0_1370", 1.37, kFALSE, 0.200, 0, "Resonance", ionCode); + db->AddParticle("f0_1370", "f0_1370", 1.37, kFALSE, 0.200, 0, "Resonance", + ionCode); } ionCode = 9030221; if (!db->GetParticle(ionCode)) { - db->AddParticle("f0_1500", "f0_1500", 1.500, kFALSE, 0.112, 0, "Resonance", ionCode); + db->AddParticle("f0_1500", "f0_1500", 1.500, kFALSE, 0.112, 0, "Resonance", + ionCode); } ionCode = 10331; if (!db->GetParticle(ionCode)) { - db->AddParticle("f0_1710", "f0_1710", 1.710, kFALSE, 0.139, 0, "Resonance", ionCode); + db->AddParticle("f0_1710", "f0_1710", 1.710, kFALSE, 0.139, 0, "Resonance", + ionCode); } ionCode = 335; if (!db->GetParticle(ionCode)) { - db->AddParticle("f2_1525", "f2_1525", 1.525, kFALSE, 0.073, 0, "Resonance", ionCode); + db->AddParticle("f2_1525", "f2_1525", 1.525, kFALSE, 0.073, 0, "Resonance", + ionCode); } // Xi-/+ (1820) ionCode = 123314; if (!db->GetParticle(ionCode)) { - db->AddParticle("Xi_Minus_1820", "Xi_Minus_1820", 1.8234, kFALSE, 0.024, -3, "Resonance", ionCode); + db->AddParticle("Xi_Minus_1820", "Xi_Minus_1820", 1.8234, kFALSE, 0.024, -3, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Xi_Plus_1820", "Xi_Plus_1820", 1.8234, kFALSE, 0.024, 3, "Resonance", -ionCode); + db->AddParticle("Xi_Plus_1820", "Xi_Plus_1820", 1.8234, kFALSE, 0.024, 3, + "Resonance", -ionCode); } // Xi0 (1820) ionCode = 123324; if (!db->GetParticle(ionCode)) { - db->AddParticle("Xi_0_1820", "Xi_0_1820", 1.8234, kFALSE, 0.024, 0, "Resonance", ionCode); + db->AddParticle("Xi_0_1820", "Xi_0_1820", 1.8234, kFALSE, 0.024, 0, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Xi_0_Bar_1820", "Xi_0_Bar_1820", 1.8234, kFALSE, 0.024, 0, "Resonance", -ionCode); + db->AddParticle("Xi_0_Bar_1820", "Xi_0_Bar_1820", 1.8234, kFALSE, 0.024, 0, + "Resonance", -ionCode); } // Ps - hidden strange (s-sbar) pentaquarks ionCode = 9322134; if (!db->GetParticle(ionCode)) { - db->AddParticle("ps_2100", "ps_2100", 2.100, kFALSE, - 0.040, 3, "Resonance", ionCode); + db->AddParticle("ps_2100", "ps_2100", 2.100, kFALSE, 0.040, 3, "Resonance", + ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("anti-ps_2100", "anti-ps_2100", 2.100, kFALSE, - 0.040, -3, "Resonance", -ionCode); + db->AddParticle("anti-ps_2100", "anti-ps_2100", 2.100, kFALSE, 0.040, -3, + "Resonance", -ionCode); } ionCode = 9322136; if (!db->GetParticle(ionCode)) { - db->AddParticle("ps_2500", "ps_2500", 2.500, kFALSE, - 0.040, 3, "Resonance", ionCode); + db->AddParticle("ps_2500", "ps_2500", 2.500, kFALSE, 0.040, 3, "Resonance", + ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("anti-ps_2500", "anti-ps_2500", 2.500, kFALSE, - 0.040, -3, "Resonance", -ionCode); + db->AddParticle("anti-ps_2500", "anti-ps_2500", 2.500, kFALSE, 0.040, -3, + "Resonance", -ionCode); } - //Additional Hidden Strangeness Pentaquarks + // Additional Hidden Strangeness Pentaquarks - //Ps +/- + // Ps +/- ionCode = 9322132; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_Plus_1870", "Ps_Plus_1870", 1.870, kFALSE, - 0.10, 3, "Resonance", ionCode); + db->AddParticle("Ps_Plus_1870", "Ps_Plus_1870", 1.870, kFALSE, 0.10, 3, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { db->AddParticle("Anti-Ps_Minus_1870", "Anti-Ps_Minus_1870", 1.870, kFALSE, @@ -575,8 +558,8 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) } ionCode = 9322312; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_Plus_2065", "Ps_Plus_2065", 2.065, kFALSE, - 0.10, 3, "Resonance", ionCode); + db->AddParticle("Ps_Plus_2065", "Ps_Plus_2065", 2.065, kFALSE, 0.10, 3, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { db->AddParticle("Anti-Ps_Minus_2065", "Anti-Ps_Minus_2065", 2.065, kFALSE, @@ -584,8 +567,8 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) } ionCode = 9323212; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_Plus_2255", "Ps_Plus_2255", 2.255, kFALSE, - 0.10, 3, "Resonance", ionCode); + db->AddParticle("Ps_Plus_2255", "Ps_Plus_2255", 2.255, kFALSE, 0.10, 3, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { db->AddParticle("Anti-Ps_Minus_2255", "Anti-Ps_Minus_2255", 2.255, kFALSE, @@ -593,81 +576,87 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) } ionCode = 9332212; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_Plus_2455", "Ps_Plus_2455", 2.455, kFALSE, - 0.10, 3, "Resonance", ionCode); + db->AddParticle("Ps_Plus_2455", "Ps_Plus_2455", 2.455, kFALSE, 0.10, 3, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { db->AddParticle("Anti-Ps_Minus_2455", "Anti-Ps_Minus_2455", 2.455, kFALSE, 0.10, -3, "Resonance", -ionCode); } - //Ps0 + // Ps0 ionCode = 9322131; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_0_1870", "Ps_0_1870", 1.870, kFALSE, - 0.10, 0, "Resonance", ionCode); + db->AddParticle("Ps_0_1870", "Ps_0_1870", 1.870, kFALSE, 0.10, 0, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Anti-Ps_0_1870", "Anti-Ps_0_1870", 1.870, kFALSE, - 0.10, 0, "Resonance", -ionCode); + db->AddParticle("Anti-Ps_0_1870", "Anti-Ps_0_1870", 1.870, kFALSE, 0.10, 0, + "Resonance", -ionCode); } ionCode = 9322311; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_0_2065", "Ps_0_2065", 2.065, kFALSE, - 0.10, 0, "Resonance", ionCode); + db->AddParticle("Ps_0_2065", "Ps_0_2065", 2.065, kFALSE, 0.10, 0, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Anti-Ps_0_2065", "Anti-Ps_0_2065", 2.065, kFALSE, - 0.10, 0, "Resonance", -ionCode); + db->AddParticle("Anti-Ps_0_2065", "Anti-Ps_0_2065", 2.065, kFALSE, 0.10, 0, + "Resonance", -ionCode); } ionCode = 9323211; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_0_2255", "Ps_0_2255", 2.255, kFALSE, - 0.10, 0, "Resonance", ionCode); + db->AddParticle("Ps_0_2255", "Ps_0_2255", 2.255, kFALSE, 0.10, 0, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Anti-Ps_0_2255", "Anti-Ps_0_2255", 2.255, kFALSE, - 0.10, 0, "Resonance", -ionCode); + db->AddParticle("Anti-Ps_0_2255", "Anti-Ps_0_2255", 2.255, kFALSE, 0.10, 0, + "Resonance", -ionCode); } ionCode = 9332211; if (!db->GetParticle(ionCode)) { - db->AddParticle("Ps_0_2455", "Ps_0_2455", 2.455, kFALSE, - 0.10, 0, "Resonance", ionCode); + db->AddParticle("Ps_0_2455", "Ps_0_2455", 2.455, kFALSE, 0.10, 0, + "Resonance", ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Anti-Ps_0_2455", "Anti-Ps_0_2455", 2.455, kFALSE, - 0.10, 0, "Resonance", -ionCode); + db->AddParticle("Anti-Ps_0_2455", "Anti-Ps_0_2455", 2.455, kFALSE, 0.10, 0, + "Resonance", -ionCode); } // Charm pentaquarks - // Theta_c: isospin singlet with J=1/2+ (see https://arxiv.org/abs/hep-ph/0409121) + // Theta_c: isospin singlet with J=1/2+ (see + // https://arxiv.org/abs/hep-ph/0409121) ionCode = 9422111; if (!db->GetParticle(ionCode)) { db->AddParticle("Anti-Theta_c_3100", "Anti-Theta_c_3100", 3.099, kFALSE, - 83.e-6, 0, "Resonance", ionCode); // same width as D*+ (83 keV) + 83.e-6, 0, "Resonance", + ionCode); // same width as D*+ (83 keV) } if (!db->GetParticle(-ionCode)) { - db->AddParticle("Theta_c_3100", "Theta_c_3100", 3.099, kFALSE, - 83.e-6, 0, "Resonance", -ionCode); // same width as D*+ (83 keV) + db->AddParticle("Theta_c_3100", "Theta_c_3100", 3.099, kFALSE, 83.e-6, 0, + "Resonance", -ionCode); // same width as D*+ (83 keV) } // d*(2380) - dibaryon resonance - ionCode = 900010020; //Arbitrary choice - as deuteron but with leading 9 instead of 10 + ionCode = 900010020; // Arbitrary choice - as deuteron but with leading 9 + // instead of 10 if (!db->GetParticle(ionCode)) { - db->AddParticle("d*_2380", "d*_2380", 2.38, kFALSE, - 0.070, 3, "Resonance", ionCode); + db->AddParticle("d*_2380", "d*_2380", 2.38, kFALSE, 0.070, 3, "Resonance", + ionCode); } db->AddAntiParticle("d*_2380_bar", -ionCode); - //Sexaquark (uuddss): compact, neutral and stable hypothetical bound state (arxiv.org/abs/1708.08951) + // Sexaquark (uuddss): compact, neutral and stable hypothetical bound state + // (arxiv.org/abs/1708.08951) ionCode = 900000020; if (!db->GetParticle(ionCode)) { - db->AddParticle("Sexaquark", "Sexaquark", 2.0, kTRUE, 0.0, 0, "Special", ionCode); + db->AddParticle("Sexaquark", "Sexaquark", 2.0, kTRUE, 0.0, 0, "Special", + ionCode); } if (!db->GetParticle(-ionCode)) { - db->AddParticle("AntiSexaquark", "AntiSexaquark", 2.0, kTRUE, 0.0, 0, "Special", -ionCode); + db->AddParticle("AntiSexaquark", "AntiSexaquark", 2.0, kTRUE, 0.0, 0, + "Special", -ionCode); } // lastly, add particle from the the extra text file @@ -684,7 +673,9 @@ inline void O2DatabasePDG::addParticlesFromExternalFile(TDatabasePDG* db) db->ReadPDGTable(custom); } else if (const char* o2Root = std::getenv("O2_ROOT")) { // take the maintained file from O2 - auto inputExtraPDGs = std::string(o2Root) + "/share/Detectors/gconfig/data/extra_ions_pdg_table.dat"; + auto inputExtraPDGs = + std::string(o2Root) + + "/share/Detectors/gconfig/data/extra_ions_pdg_table.dat"; db->ReadPDGTable(inputExtraPDGs.c_str()); } initialized = true; @@ -693,4 +684,4 @@ inline void O2DatabasePDG::addParticlesFromExternalFile(TDatabasePDG* db) } // namespace o2 -#endif //O2_O2DATABASEPDG_H +#endif // O2_O2DATABASEPDG_H diff --git a/Steer/src/O2MCApplication.cxx b/Steer/src/O2MCApplication.cxx index 96cc2f2e969db..51d7a2dacc4ae 100644 --- a/Steer/src/O2MCApplication.cxx +++ b/Steer/src/O2MCApplication.cxx @@ -11,32 +11,32 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include "DetectorsBase/Aligner.h" +#include "DetectorsBase/GeometryManagerParam.h" #include "DetectorsBase/MaterialManager.h" +#include "SimConfig/GlobalProcessCutSimParam.h" +#include "SimConfig/SimUserDecay.h" +#include +#include +#include #include -#include +#include +#include +#include #include +#include +#include #include -#include -#include -#include -#include -#include "SimConfig/SimUserDecay.h" -#include -#include -#include "SimConfig/GlobalProcessCutSimParam.h" -#include "DetectorsBase/GeometryManagerParam.h" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace o2 { @@ -44,7 +44,8 @@ namespace steer { // helper function to send trivial data template -void TypedVectorAttach(const char* name, fair::mq::Channel& channel, fair::mq::Parts& parts) +void TypedVectorAttach(const char* name, fair::mq::Channel& channel, + fair::mq::Parts& parts) { static auto mgr = FairRootManager::Instance(); auto vector = mgr->InitObjectAs*>(name); @@ -52,8 +53,7 @@ void TypedVectorAttach(const char* name, fair::mq::Channel& channel, fair::mq::P auto buffer = (char*)&(*vector)[0]; auto buffersize = vector->size() * sizeof(T); fair::mq::MessagePtr message(channel.NewMessage( - buffer, buffersize, - [](void* data, void* hint) {}, buffer)); + buffer, buffersize, [](void* data, void* hint) {}, buffer)); parts.AddPart(std::move(message)); } } @@ -87,16 +87,15 @@ void O2MCApplicationBase::Stepping() auto outOfR = [x, y, this](float z) { // for the moment for cases when we have ZDC enabled if (std::abs(z) > mCutParams.tunnelZ) { - if ((x * x + y * y) > mCutParams.maxRTrackingZDC * mCutParams.maxRTrackingZDC) { + if ((x * x + y * y) > + mCutParams.maxRTrackingZDC * mCutParams.maxRTrackingZDC) { return true; } } return false; }; - if (z > mCutParams.ZmaxA || - -z > mCutParams.ZmaxC || - outOfR(z)) { + if (z > mCutParams.ZmaxA || -z > mCutParams.ZmaxC || outOfR(z)) { fMC->StopTrack(); return; } @@ -140,7 +139,8 @@ void O2MCApplicationBase::ConstructGeometry() for (int i = 0; i < vollist->GetEntries(); ++i) { auto vol = static_cast(vollist->At(i)); auto iter = fModVolMap.find(vol->GetNumber()); - voltomodulefile << vol->GetName() << ":" << mModIdToName[iter->second] << "\n"; + voltomodulefile << vol->GetName() << ":" << mModIdToName[iter->second] + << "\n"; } } @@ -148,9 +148,11 @@ void O2MCApplicationBase::InitGeometry() { // load special cuts which might be given from the outside first. auto& matMgr = o2::base::MaterialManager::Instance(); - matMgr.loadCutsAndProcessesFromJSON(o2::base::MaterialManager::ESpecial::kTRUE); + matMgr.loadCutsAndProcessesFromJSON( + o2::base::MaterialManager::ESpecial::kTRUE); matMgr.SetLowEnergyNeutronTransport(mCutParams.lowneut); - // During the following, FairModule::SetSpecialPhysicsCuts will be called for each module + // During the following, FairModule::SetSpecialPhysicsCuts will be called for + // each module FairMCApplication::InitGeometry(); matMgr.writeCutsAndProcessesToJSON(); // now the sensitive volumes are set up in fVolMap and we can query them @@ -178,7 +180,8 @@ bool O2MCApplicationBase::MisalignGeometry() // which can be used by digitization etc. immediately auto& confref = o2::conf::SimConfig::Instance(); auto geomfile = o2::base::NameConf::getGeomFileName(confref.getOutPrefix()); - // since in general the geometry is a CCDB object, it must be exported under the standard name + // since in general the geometry is a CCDB object, it must be exported under + // the standard name gGeoManager->SetName(std::string(o2::base::NameConf::CCDBOBJECT).c_str()); gGeoManager->Export(geomfile.c_str()); @@ -187,14 +190,16 @@ bool O2MCApplicationBase::MisalignGeometry() aligner.applyAlignment(confref.getTimestamp()); // export aligned geometry into different file - auto alignedgeomfile = o2::base::NameConf::getAlignedGeomFileName(confref.getOutPrefix()); + auto alignedgeomfile = + o2::base::NameConf::getAlignedGeomFileName(confref.getOutPrefix()); gGeoManager->Export(alignedgeomfile.c_str()); auto& param = o2::GeometryManagerParam::Instance(); // fill parallel world geometry if activated if (param.useParallelWorld) { - TGeoParallelWorld* pw = gGeoManager->CreateParallelWorld("priority_sensors"); + TGeoParallelWorld* pw = + gGeoManager->CreateParallelWorld("priority_sensors"); if (param.usePwGeoBVH) { pw->SetAccelerationMode(TGeoParallelWorld::AccelerationMode::kBVH); } @@ -232,7 +237,8 @@ void O2MCApplicationBase::FinishEvent() auto header = static_cast(fMCEventHeader); auto& confref = o2::conf::SimConfig::Instance(); - if (confref.isFilterOutNoHitEvents() && header->getMCEventStats().getNHits() == 0) { + if (confref.isFilterOutNoHitEvents() && + header->getMCEventStats().getNHits() == 0) { LOG(info) << "Discarding current event due to no hits"; SetSaveCurrentEvent(false); } @@ -248,7 +254,8 @@ void O2MCApplicationBase::BeginEvent() // register event header with our stack auto header = static_cast(fMCEventHeader); - static_cast(GetStack())->setMCEventStats(&header->getMCEventStats()); + static_cast(GetStack()) + ->setMCEventStats(&header->getMCEventStats()); mStepCounter = 0; mLongestTrackTime = 0; @@ -263,143 +270,248 @@ void addSpecialParticles() LOG(info) << "Adding custom particles to VMC"; - //Hypertriton - TVirtualMC::GetMC()->DefineParticle(1010010030, "HyperTriton", kPTHadron, 2.99131, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); - //Anti-Hypertriton - TVirtualMC::GetMC()->DefineParticle(-1010010030, "AntiHyperTriton", kPTHadron, 2.99131, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); - - //Hyper hydrogen 4 ground state - TVirtualMC::GetMC()->DefineParticle(1010010040, "Hyperhydrog4", kPTHadron, 3.9226, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - //Anti-Hyper hydrogen 4 ground state - TVirtualMC::GetMC()->DefineParticle(-1010010040, "AntiHyperhydrog4", kPTHadron, 3.9226, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - - //Hyper hydrogen 4 excited state - TVirtualMC::GetMC()->DefineParticle(1010010041, "Hyperhydrog4*", kPTHadron, 3.9237, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - //Anti-Hyper hydrogen 4 excited state - TVirtualMC::GetMC()->DefineParticle(-1010010041, "AntiHyperhydrog4*", kPTHadron, 3.9237, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - - //Hyper helium 4 ground state - TVirtualMC::GetMC()->DefineParticle(1010020040, "Hyperhelium4", kPTHadron, 3.9217, 2.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - //Anti-Hyper helium 4 ground state - TVirtualMC::GetMC()->DefineParticle(-1010020040, "AntiHyperhelium4", kPTHadron, 3.9217, 2.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - - //Hyper helium 4 excited state - TVirtualMC::GetMC()->DefineParticle(1010020041, "Hyperhelium4*", kPTHadron, 3.9231, 2.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - //Anti-Hyper helium 4 excited state - TVirtualMC::GetMC()->DefineParticle(-1010020041, "AntiHyperhelium4*", kPTHadron, 3.9231, 2.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - + // ### NUCLEI ### // Lithium 4 ground state - TVirtualMC::GetMC()->DefineParticle(1000030040, "Lithium4", kPTHadron, 3.7513, 3.0, 9.1e-23, "Ion", 0.003, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + TVirtualMC::GetMC()->DefineParticle(1000030040, "Lithium4", kPTHadron, 3.7513, + 3.0, 9.1e-23, "Ion", 0.003, 0, 1, 0, 0, 0, + 0, 0, 4, kFALSE); // Anti-Lithium 4 ground state - TVirtualMC::GetMC()->DefineParticle(-1000030040, "AntiLithium4", kPTHadron, 3.7513, 3.0, 9.1e-23, "Ion", 0.003, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - - //Hyper helium 5 - TVirtualMC::GetMC()->DefineParticle(1010020050, "Hyperhelium5", kPTHadron, 4.841, 2.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 5, kFALSE); - //Anti-Hyper helium 5 - TVirtualMC::GetMC()->DefineParticle(-1010020050, "AntiHyperhelium5", kPTHadron, 4.841, 2.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 5, kFALSE); - - //Double Hyper hydrogen 4 - TVirtualMC::GetMC()->DefineParticle(1020010040, "DoubleHyperhydrogen4", kPTHadron, 4.106, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - //Double Anti-Hyper hydrogen 4 - TVirtualMC::GetMC()->DefineParticle(-1020010040, "DoubleAntiHyperhydrogen4", kPTHadron, 4.106, 1.0, 2.632e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + TVirtualMC::GetMC()->DefineParticle(-1000030040, "AntiLithium4", kPTHadron, + 3.7513, 3.0, 9.1e-23, "Ion", 0.003, 0, 1, + 0, 0, 0, 0, 0, 4, kFALSE); + + // ### HYPER NUCLEI (|S| = 1) ### + // Hypertriton + TVirtualMC::GetMC()->DefineParticle(1010010030, "HyperTriton", kPTHadron, + 2.991134, 1.0, 2.632e-10, "Ion", 0.0, 0, + 1, 0, 0, 0, 0, 0, 3, kFALSE); + // Anti-Hypertriton + TVirtualMC::GetMC()->DefineParticle(-1010010030, "AntiHyperTriton", kPTHadron, + 2.991134, 1.0, 2.632e-10, "Ion", 0.0, 0, + 1, 0, 0, 0, 0, 0, 3, kFALSE); + + // Hyper hydrogen 4 + TVirtualMC::GetMC()->DefineParticle(1010010040, "Hyperhydrog4", kPTHadron, + 3.922434, 1.0, 2.08e-10, "Ion", 0.0, 0, 1, + 0, 0, 0, 0, 0, 4, kFALSE); + // Anti-Hyper hydrogen 4 + TVirtualMC::GetMC()->DefineParticle(-1010010040, "AntiHyperhydrog4", + kPTHadron, 3.922434, 1.0, 2.08e-10, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + + // Hyper helium 4 + TVirtualMC::GetMC()->DefineParticle(1010020040, "Hyperhelium4", kPTHadron, + 3.921728, 2.0, 2.50e-10, "Ion", 0.0, 0, 1, + 0, 0, 0, 0, 0, 4, kFALSE); + // Anti-Hyper helium 4 + TVirtualMC::GetMC()->DefineParticle(-1010020040, "AntiHyperhelium4", + kPTHadron, 3.921728, 2.0, 2.50e-10, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + + // Hyper helium 5 + TVirtualMC::GetMC()->DefineParticle(1010020050, "Hyperhelium5", kPTHadron, + 4.839961, 2.0, 2.74e-10, "Ion", 0.0, 0, 1, + 0, 0, 0, 0, 0, 5, kFALSE); + // Anti-Hyper helium 5 + TVirtualMC::GetMC()->DefineParticle(-1010020050, "AntiHyperhelium5", + kPTHadron, 4.839961, 2.0, 2.74e-10, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 5, kFALSE); + + // ### HYPER NUCLEI (|S| = 2) ### + // Double Hyper hydrogen 4 + TVirtualMC::GetMC()->DefineParticle(1020010040, "DoubleHyperhydrogen4", + kPTHadron, 4.106, 1.0, 2.632e-10, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + // Double Anti-Hyper hydrogen 4 + TVirtualMC::GetMC()->DefineParticle(-1020010040, "DoubleAntiHyperhydrogen4", + kPTHadron, 4.106, 1.0, 2.632e-10, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + + // 4Xi(-)H + TVirtualMC::GetMC()->DefineParticle(1120010040, "4XiH", kPTHadron, 4.128, 1.0, + 1.639e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, + 0, 4, kFALSE); + // Anti-4Xi(-)H + TVirtualMC::GetMC()->DefineParticle(-1120010040, "Anti4XiH", kPTHadron, 4.128, + 1.0, 1.639e-10, "Ion", 0.0, 0, 1, 0, 0, 0, + 0, 0, 4, kFALSE); + // 4Xi(-)He + TVirtualMC::GetMC()->DefineParticle(1120020040, "4XiHe", kPTHadron, 4.128, + 1.0, 1.639e-10, "Ion", 0.0, 0, 1, 0, 0, 0, + 0, 0, 4, kFALSE); + // Anti-4Xi(-)He + TVirtualMC::GetMC()->DefineParticle(-1120020040, "Anti4XiHe", kPTHadron, + 4.128, 1.0, 1.639e-10, "Ion", 0.0, 0, 1, + 0, 0, 0, 0, 0, 4, kFALSE); // Hyper helium 4 sigma - TVirtualMC::GetMC()->DefineParticle(1110020040, "Hyperhelium4sigma", kPTHadron, 3.995, 2.0, 8.018e-11, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + TVirtualMC::GetMC()->DefineParticle(1110020040, "Hyperhelium4sigma", + kPTHadron, 3.995, 2.0, 8.018e-11, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); // Anti-Hyper helium 4 sigma - TVirtualMC::GetMC()->DefineParticle(-1110020040, "AntiHyperhelium4sigma", kPTHadron, 3.995, 2.0, 8.018e-11, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); - - //Lambda-Neutron - TVirtualMC::GetMC()->DefineParticle(1010000020, "LambdaNeutron", kPTNeutron, 2.054, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Lambda-Neutron - TVirtualMC::GetMC()->DefineParticle(-1010000020, "AntiLambdaNeutron", kPTNeutron, 2.054, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //H-Dibaryon - TVirtualMC::GetMC()->DefineParticle(1020000020, "Hdibaryon", kPTNeutron, 2.23, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-H-Dibaryon - TVirtualMC::GetMC()->DefineParticle(-1020000020, "AntiHdibaryon", kPTNeutron, 2.23, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Xi-Proton - TVirtualMC::GetMC()->DefineParticle(1020010020, "Xi0Proton", kPTHadron, 2.248, 1.0, 1.333e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Xi-Proton - TVirtualMC::GetMC()->DefineParticle(-1020010020, "AntiXi0Proton", kPTHadron, 2.248, 1.0, 1.333e-10, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Lambda-Neutron-Neutron - TVirtualMC::GetMC()->DefineParticle(1010000030, "LambdaNeutronNeutron", kPTNeutron, 2.99, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); - - //Anti-Lambda-Neutron-Neutron - TVirtualMC::GetMC()->DefineParticle(-1010000030, "AntiLambdaNeutronNeutron", kPTNeutron, 2.99, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); - - //Omega-Proton - TVirtualMC::GetMC()->DefineParticle(1030000020, "OmegaProton", kPTNeutron, 2.592, 0.0, 2.632e-10, "Hadron", 0.0, 2, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Omega-Proton - TVirtualMC::GetMC()->DefineParticle(-1030000020, "AntiOmegaProton", kPTNeutron, 2.592, 0.0, 2.632e-10, "Hadron", 0.0, 2, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Omega-Neutron - TVirtualMC::GetMC()->DefineParticle(1030010020, "OmegaNeutron", kPTHadron, 2.472, 1.0, 2.190e-22, "Hadron", 0.0, 2, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Omega-Neutron - TVirtualMC::GetMC()->DefineParticle(-1030010020, "AntiOmegaNeutron", kPTHadron, 2.472, 1.0, 2.190e-22, "Hadron", 0.0, 2, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Omega-Omega - TVirtualMC::GetMC()->DefineParticle(1060020020, "OmegaOmega", kPTHadron, 3.229, 2.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Omega-Omega - TVirtualMC::GetMC()->DefineParticle(-1060020020, "AntiOmegaOmega", kPTHadron, 3.229, 2.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Lambda(1405)-Proton - TVirtualMC::GetMC()->DefineParticle(1010010021, "Lambda1405Proton", kPTHadron, 2.295, 1.0, 1.316e-23, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Lambda(1405)-Proton - TVirtualMC::GetMC()->DefineParticle(-1010010021, "AntiLambda1405Proton", kPTHadron, 2.295, 1.0, 1.316e-23, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Lambda(1405)-Lambda(1405) - TVirtualMC::GetMC()->DefineParticle(1020000021, "Lambda1405Lambda1405", kPTNeutron, 2.693, 0.0, 1.316e-23, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Anti-Lambda(1405)-Lambda(1405) - TVirtualMC::GetMC()->DefineParticle(-1020000021, "AntiLambda1405Lambda1405", kPTNeutron, 2.693, 0.0, 1.316e-23, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //c-deuteron - TVirtualMC::GetMC()->DefineParticle(2010010020, "CDeuteron", kPTHadron, 3.226, 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); - //Anti-c-deuteron - TVirtualMC::GetMC()->DefineParticle(-2010010020, "AntiCDeuteron", kPTHadron, 3.226, 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); - - //c-triton - TVirtualMC::GetMC()->DefineParticle(2010010030, "CTriton", kPTHadron, 4.162, 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - //Anti-c-Hypertriton - TVirtualMC::GetMC()->DefineParticle(-2010010030, "AntiCTriton", kPTHadron, 4.162, 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); - - //Resonances not in Generators - // f0(980) assume 70 MeV as width (PDG: 40 to 100 MeV) - TVirtualMC::GetMC()->DefineParticle(9010221, "f0_980", kPTNeutron, 0.98, 0.0, 9.403e-24, "Hadron", 7e-2, 0, 1, 1, 0, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-1110020040, "AntiHyperhelium4sigma", + kPTHadron, 3.995, 2.0, 8.018e-11, "Ion", + 0.0, 0, 1, 0, 0, 0, 0, 0, 4, kFALSE); + + // ### EXOTICA ### + // Lambda-Neutron + TVirtualMC::GetMC()->DefineParticle(1010000020, "LambdaNeutron", kPTNeutron, + 2.054, 0.0, 2.632e-10, "Hadron", 0.0, 0, + 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Anti-Lambda-Neutron + TVirtualMC::GetMC()->DefineParticle( + -1010000020, "AntiLambdaNeutron", kPTNeutron, 2.054, 0.0, 2.632e-10, + "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // H-Dibaryon + TVirtualMC::GetMC()->DefineParticle(1020000020, "Hdibaryon", kPTNeutron, 2.23, + 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, 0, 0, + 0, 0, 0, 2, kFALSE); + + // Anti-H-Dibaryon + TVirtualMC::GetMC()->DefineParticle(-1020000020, "AntiHdibaryon", kPTNeutron, + 2.23, 0.0, 2.632e-10, "Hadron", 0.0, 0, 1, + 0, 0, 0, 0, 0, 2, kFALSE); + + // Xi-Proton + TVirtualMC::GetMC()->DefineParticle(1020010020, "Xi0Proton", kPTHadron, 2.248, + 1.0, 1.333e-10, "Ion", 0.0, 0, 1, 0, 0, 0, + 0, 0, 2, kFALSE); + + // Anti-Xi-Proton + TVirtualMC::GetMC()->DefineParticle(-1020010020, "AntiXi0Proton", kPTHadron, + 2.248, 1.0, 1.333e-10, "Ion", 0.0, 0, 1, + 0, 0, 0, 0, 0, 2, kFALSE); + + // Lambda-Neutron-Neutron + TVirtualMC::GetMC()->DefineParticle( + 1010000030, "LambdaNeutronNeutron", kPTNeutron, 2.99, 0.0, 2.632e-10, + "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); + + // Anti-Lambda-Neutron-Neutron + TVirtualMC::GetMC()->DefineParticle( + -1010000030, "AntiLambdaNeutronNeutron", kPTNeutron, 2.99, 0.0, 2.632e-10, + "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 3, kFALSE); + + // Omega-Proton + TVirtualMC::GetMC()->DefineParticle(1030000020, "OmegaProton", kPTNeutron, + 2.592, 0.0, 2.632e-10, "Hadron", 0.0, 2, + 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Anti-Omega-Proton + TVirtualMC::GetMC()->DefineParticle( + -1030000020, "AntiOmegaProton", kPTNeutron, 2.592, 0.0, 2.632e-10, + "Hadron", 0.0, 2, 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Omega-Neutron + TVirtualMC::GetMC()->DefineParticle(1030010020, "OmegaNeutron", kPTHadron, + 2.472, 1.0, 2.190e-22, "Hadron", 0.0, 2, + 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Anti-Omega-Neutron + TVirtualMC::GetMC()->DefineParticle( + -1030010020, "AntiOmegaNeutron", kPTHadron, 2.472, 1.0, 2.190e-22, + "Hadron", 0.0, 2, 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Omega-Omega + TVirtualMC::GetMC()->DefineParticle(1060020020, "OmegaOmega", kPTHadron, + 3.229, 2.0, 2.632e-10, "Hadron", 0.0, 0, + 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Anti-Omega-Omega + TVirtualMC::GetMC()->DefineParticle(-1060020020, "AntiOmegaOmega", kPTHadron, + 3.229, 2.0, 2.632e-10, "Hadron", 0.0, 0, + 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Lambda(1405)-Proton + TVirtualMC::GetMC()->DefineParticle(1010010021, "Lambda1405Proton", kPTHadron, + 2.295, 1.0, 1.316e-23, "Hadron", 0.0, 0, + 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Anti-Lambda(1405)-Proton + TVirtualMC::GetMC()->DefineParticle( + -1010010021, "AntiLambda1405Proton", kPTHadron, 2.295, 1.0, 1.316e-23, + "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Lambda(1405)-Lambda(1405) + TVirtualMC::GetMC()->DefineParticle( + 1020000021, "Lambda1405Lambda1405", kPTNeutron, 2.693, 0.0, 1.316e-23, + "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // Anti-Lambda(1405)-Lambda(1405) + TVirtualMC::GetMC()->DefineParticle( + -1020000021, "AntiLambda1405Lambda1405", kPTNeutron, 2.693, 0.0, + 1.316e-23, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kFALSE); + + // c-deuteron + TVirtualMC::GetMC()->DefineParticle(2010010020, "CDeuteron", kPTHadron, 3.226, + 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, 0, 0, + 0, 0, 3, kFALSE); + // Anti-c-deuteron + TVirtualMC::GetMC()->DefineParticle(-2010010020, "AntiCDeuteron", kPTHadron, + 3.226, 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, + 0, 0, 0, 0, 3, kFALSE); + + // c-triton + TVirtualMC::GetMC()->DefineParticle(2010010030, "CTriton", kPTHadron, 4.162, + 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, 0, 0, + 0, 0, 2, kFALSE); + // Anti-c-Hypertriton + TVirtualMC::GetMC()->DefineParticle(-2010010030, "AntiCTriton", kPTHadron, + 4.162, 1.0, 2.0e-13, "Ion", 0.0, 0, 1, 0, + 0, 0, 0, 0, 2, kFALSE); + + // Resonances not in Generators + // f0(980) assume 70 MeV as width (PDG: 40 to 100 MeV) + TVirtualMC::GetMC()->DefineParticle(9010221, "f0_980", kPTNeutron, 0.98, 0.0, + 9.403e-24, "Hadron", 7e-2, 0, 1, 1, 0, 0, + 1, 0, 0, kTRUE); // f2(1270) (PDG: width = 185 MeV) - TVirtualMC::GetMC()->DefineParticle(225, "f2_1270", kPTNeutron, 1.275, 0.0, 3.558e-24, "Hadron", 0.185, 4, 1, 1, 0, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(225, "f2_1270", kPTNeutron, 1.275, 0.0, + 3.558e-24, "Hadron", 0.185, 4, 1, 1, 0, 0, + 1, 0, 0, kTRUE); // f1(1285) (PDG: width = 24.20 MeV) Spin/Parity might not be correct - TVirtualMC::GetMC()->DefineParticle(20223, "f1_1285", kPTNeutron, 1.28210, 0.0, 1e-24, "Hadron", 0.02420, 3, 1, 0, 0, 0, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(20223, "f1_1285", kPTNeutron, 1.28210, + 0.0, 1e-24, "Hadron", 0.02420, 3, 1, 0, 0, + 0, 0, 0, 1, kTRUE); // f1(1420) (PDG: width = 54 MeV) Spin/Parity might not be correct - TVirtualMC::GetMC()->DefineParticle(20333, "f1_1420", kPTNeutron, 1.42640, 0.0, 1e-24, "Hadron", 0.05490, 3, 1, 0, 0, 0, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(20333, "f1_1420", kPTNeutron, 1.42640, + 0.0, 1e-24, "Hadron", 0.05490, 3, 1, 0, 0, + 0, 0, 0, 1, kTRUE); // Glueball hunting family // Their life times are not known, so we set them to 1e-24 // f0(1370) (PDG: width = 200-500 MeV) Spin/Parity might not be correct - TVirtualMC::GetMC()->DefineParticle(10221, "f0_1370", kPTNeutron, 1.37, 0.0, 1e-24, "Hadron", 0.2, 1, 1, 1, 0, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(10221, "f0_1370", kPTNeutron, 1.37, 0.0, + 1e-24, "Hadron", 0.2, 1, 1, 1, 0, 0, 1, 0, + 0, kTRUE); // a2(1320) (PDG: width = 107.8 MeV) (Spin/Parity might not be correct) - TVirtualMC::GetMC()->DefineParticle(115, "a2_1320", kPTNeutron, 1.3182, 0.0, 1e-24, "Hadron", 0.1078, 1, 1, 1, 1, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(115, "a2_1320", kPTNeutron, 1.3182, 0.0, + 1e-24, "Hadron", 0.1078, 1, 1, 1, 1, 0, 1, + 0, 0, kTRUE); // f0(1500) (PDG: width = 112 MeV) Spin/Parity might not be correct - TVirtualMC::GetMC()->DefineParticle(9030221, "f0_1500", kPTNeutron, 1.506, 0.0, 1e-24, "Hadron", 0.112, 0, 1, 1, 0, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(9030221, "f0_1500", kPTNeutron, 1.506, + 0.0, 1e-24, "Hadron", 0.112, 0, 1, 1, 0, + 0, 1, 0, 0, kTRUE); // f0(1710) (PDG: width = 139 MeV) Spin/Parity might not be correct - TVirtualMC::GetMC()->DefineParticle(10331, "f0_1710", kPTNeutron, 1.71, 0.0, 1e-24, "Hadron", 0.139, 1, 1, 1, 0, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(10331, "f0_1710", kPTNeutron, 1.71, 0.0, + 1e-24, "Hadron", 0.139, 1, 1, 1, 0, 0, 1, + 0, 0, kTRUE); // f2(1525) (PDG: width = 73 MeV) Spin/Parity might not be correct - TVirtualMC::GetMC()->DefineParticle(335, "f2_1525", kPTNeutron, 1.525, 0.0, 1e-24, "Hadron", 0.073, 5, 1, 1, 0, 0, 1, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(335, "f2_1525", kPTNeutron, 1.525, 0.0, + 1e-24, "Hadron", 0.073, 5, 1, 1, 0, 0, 1, + 0, 0, kTRUE); // Xi_0(1820) - TVirtualMC::GetMC()->DefineParticle(123324, "Xi_0_1820", kPTNeutron, 1.8234, 0.0, 2.742550e-23, "Hadron", 0.024, 3, -1, 0, 1, 1, 0, 0, 1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-123324, "Xi_0_Bar_1820", kPTNeutron, 1.8234, 0.0, 2.742550e-23, "Hadron", 0.024, 3, -1, 0, 1, -1, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(123324, "Xi_0_1820", kPTNeutron, 1.8234, + 0.0, 2.742550e-23, "Hadron", 0.024, 3, -1, + 0, 1, 1, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-123324, "Xi_0_Bar_1820", kPTNeutron, + 1.8234, 0.0, 2.742550e-23, "Hadron", + 0.024, 3, -1, 0, 1, -1, 0, 0, -1, kTRUE); int xi_0_1820_mode[6][3] = {{0}}; float xi_0_1820_ratio[6] = {100.f, 0.f, 0.f, 0.f, 0.f, 0.f}; @@ -410,23 +522,37 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(-123324, xi_0_1820_ratio, xi_0_1820_mode); // Xi-+(1820) - TVirtualMC::GetMC()->DefineParticle(123314, "Xi_Minus_1820", kPTHadron, 1.8234, -1.0, 2.742550e-23, "Hadron", 0.024, 3, -1, 0, 1, -1, 0, 0, 1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-123314, "Xi_Plus_1820", kPTHadron, 1.8234, 1.0, 2.742550e-23, "Hadron", 0.024, 3, -1, 0, 1, 1, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(123314, "Xi_Minus_1820", kPTHadron, + 1.8234, -1.0, 2.742550e-23, "Hadron", + 0.024, 3, -1, 0, 1, -1, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-123314, "Xi_Plus_1820", kPTHadron, + 1.8234, 1.0, 2.742550e-23, "Hadron", + 0.024, 3, -1, 0, 1, 1, 0, 0, -1, kTRUE); int xi_charged_1820_mode[6][3] = {{0}}; float xi_charged_1820_ratio[6] = {100.f, 0.f, 0.f, 0.f, 0.f, 0.f}; xi_charged_1820_mode[0][0] = 3122; // Lambda xi_charged_1820_mode[0][1] = -321; // K- - TVirtualMC::GetMC()->SetDecayMode(123314, xi_charged_1820_ratio, xi_charged_1820_mode); + TVirtualMC::GetMC()->SetDecayMode(123314, xi_charged_1820_ratio, + xi_charged_1820_mode); xi_charged_1820_mode[0][0] = -3122; // Lambda-bar xi_charged_1820_mode[0][1] = 321; // K+ - TVirtualMC::GetMC()->SetDecayMode(-123314, xi_charged_1820_ratio, xi_charged_1820_mode); + TVirtualMC::GetMC()->SetDecayMode(-123314, xi_charged_1820_ratio, + xi_charged_1820_mode); // Ps - hidden strange (s-sbar) pentaquarks - TVirtualMC::GetMC()->DefineParticle(9322134, "Ps_2100", kPTHadron, 2.1, 1.0, 1.6455e-23, "Hadron", 4.e-2, 3, -1, 0, 0, 0, 0, 0, 1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-9322134, "AntiPs_2100", kPTHadron, 2.1, -1.0, 1.6455e-23, "Hadron", 4.e-2, 3, -1, 0, 0, 0, 0, 0, -1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(9322136, "Ps_2500", kPTHadron, 2.5, 1.0, 1.6455e-23, "Hadron", 4.e-2, 5, 1, 0, 0, 0, 0, 0, 1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-9322136, "AntiPs_2500", kPTHadron, 2.5, -1.0, 1.6455e-23, "Hadron", 4.e-2, 5, 1, 0, 0, 0, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(9322134, "Ps_2100", kPTHadron, 2.1, 1.0, + 1.6455e-23, "Hadron", 4.e-2, 3, -1, 0, 0, + 0, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-9322134, "AntiPs_2100", kPTHadron, 2.1, + -1.0, 1.6455e-23, "Hadron", 4.e-2, 3, -1, + 0, 0, 0, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(9322136, "Ps_2500", kPTHadron, 2.5, 1.0, + 1.6455e-23, "Hadron", 4.e-2, 5, 1, 0, 0, + 0, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-9322136, "AntiPs_2500", kPTHadron, 2.5, + -1.0, 1.6455e-23, "Hadron", 4.e-2, 5, 1, + 0, 0, 0, 0, 0, -1, kTRUE); Int_t psmode[6][3] = {0}; Float_t psratio[6] = {0.f}; @@ -441,27 +567,35 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(-9322134, psratio, psmode); TVirtualMC::GetMC()->SetDecayMode(-9322136, psratio, psmode); - //Omega(2012) + // Omega(2012) for (int j = 1; j < 6; j++) { psmode[j][0] = psmode[j][1] = 0; psratio[j] = 0.; } - TVirtualMC::GetMC()->DefineParticle(3335, "Omega2012", kPTHadron, 2.012, -1.0, 1.0285e-22, "Hadron", 0.0064, 3, -1, 0, 0, 0, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(3335, "Omega2012", kPTHadron, 2.012, -1.0, + 1.0285e-22, "Hadron", 0.0064, 3, -1, 0, 0, + 0, 0, 0, 1, kTRUE); psmode[0][0] = 3312; // Xi- psmode[0][1] = 310; // K0S psratio[0] = 100.; TVirtualMC::GetMC()->SetDecayMode(3335, psratio, psmode); - TVirtualMC::GetMC()->DefineParticle(-3335, "AntiOmega2012", kPTHadron, 2.012, 1.0, 1.0285e-22, "Hadron", 0.0064, 3, 1, 0, 0, 0, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-3335, "AntiOmega2012", kPTHadron, 2.012, + 1.0, 1.0285e-22, "Hadron", 0.0064, 3, 1, + 0, 0, 0, 0, 0, -1, kTRUE); psmode[0][0] = -3312; // anti-Xi+ psmode[0][1] = 310; // K0S psratio[0] = 100.; TVirtualMC::GetMC()->SetDecayMode(-3335, psratio, psmode); // d*(2380) - dibaryon resonance - TVirtualMC::GetMC()->DefineParticle(900010020, "d*_2380", kPTHadron, 2.38, 1.0, 0.94e-23, "Ion", 0.07, 6, 1, 0, 0, 0, 0, 0, 2, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-900010020, "d*_2380_bar", kPTHadron, 2.38, -1.0, 0.94e-23, "Ion", 0.07, 6, 1, 0, 0, 0, 0, 0, -2, kTRUE); + TVirtualMC::GetMC()->DefineParticle(900010020, "d*_2380", kPTHadron, 2.38, + 1.0, 0.94e-23, "Ion", 0.07, 6, 1, 0, 0, 0, + 0, 0, 2, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-900010020, "d*_2380_bar", kPTHadron, + 2.38, -1.0, 0.94e-23, "Ion", 0.07, 6, 1, + 0, 0, 0, 0, 0, -2, kTRUE); Int_t dstmode[6][3] = {0}; Float_t dstratio[6] = {0.f}; @@ -477,38 +611,71 @@ void addSpecialParticles() // Heavy vector mesons // D*+ - TVirtualMC::GetMC()->DefineParticle(413, "D*+", kPTHadron, 2.0103, 1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(413, "D*+", kPTHadron, 2.0103, 1.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // D*- - TVirtualMC::GetMC()->DefineParticle(-413, "D*-", kPTHadron, 2.0103, -1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-413, "D*-", kPTHadron, 2.0103, -1.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // D*0 - TVirtualMC::GetMC()->DefineParticle(423, "D*0", kPTHadron, 2.0007, 0.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(423, "D*0", kPTHadron, 2.0007, 0.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // D*0bar - TVirtualMC::GetMC()->DefineParticle(-423, "D*0bar", kPTHadron, 2.0007, 0.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-423, "D*0bar", kPTHadron, 2.0007, 0.0, + 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, + 0, kTRUE); // D*_s+ - TVirtualMC::GetMC()->DefineParticle(433, "D*_s+", kPTHadron, 2.1123, 1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(433, "D*_s+", kPTHadron, 2.1123, 1.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // D*_s- - TVirtualMC::GetMC()->DefineParticle(-433, "D*_s-", kPTHadron, 2.1123, -1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-433, "D*_s-", kPTHadron, 2.1123, -1.0, + 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, + 0, kTRUE); // B*0 - TVirtualMC::GetMC()->DefineParticle(513, "B*0", kPTHadron, 5.3251, 0.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(513, "B*0", kPTHadron, 5.3251, 0.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // B*0bar - TVirtualMC::GetMC()->DefineParticle(-513, "B*0bar", kPTHadron, 5.3251, 0.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-513, "B*0bar", kPTHadron, 5.3251, 0.0, + 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, + 0, kTRUE); // B*+ - TVirtualMC::GetMC()->DefineParticle(523, "B*+", kPTHadron, 5.3251, 1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(523, "B*+", kPTHadron, 5.3251, 1.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // B*- - TVirtualMC::GetMC()->DefineParticle(-523, "B*-", kPTHadron, 5.3251, -1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-523, "B*-", kPTHadron, 5.3251, -1.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // B*_s0 - TVirtualMC::GetMC()->DefineParticle(533, "B*_s0", kPTHadron, 5.4128, 0.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(533, "B*_s0", kPTHadron, 5.4128, 0.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // B*_s0bar - TVirtualMC::GetMC()->DefineParticle(-533, "B*_s0bar", kPTHadron, 5.4128, 0.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-533, "B*_s0bar", kPTHadron, 5.4128, 0.0, + 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, + 0, kTRUE); // B*_c+ - TVirtualMC::GetMC()->DefineParticle(543, "B*_c+", kPTHadron, 6.6020, 1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(543, "B*_c+", kPTHadron, 6.6020, 1.0, 0.0, + "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, + kTRUE); // B*_c- - TVirtualMC::GetMC()->DefineParticle(-543, "B*_c-", kPTHadron, 6.6020, -1.0, 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, 0, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-543, "B*_c-", kPTHadron, 6.6020, -1.0, + 0.0, "Hadron", 0.0, 1, -1, 0, 0, 0, 0, 0, + 0, kTRUE); // Charm pentaquarks - // Theta_c: isospin singlet with J=1/2+ (see https://arxiv.org/abs/hep-ph/0409121) - TVirtualMC::GetMC()->DefineParticle(9422111, "Anti-Theta_c_3100", kPTHadron, 3.099, 0., 6.9e-21, "Hadron", 83.e-6, 1, 1, 0, 0, 0, 0, 0, -1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-9422111, "Theta_c_3100", kPTHadron, 3.099, 0., 6.9e-21, "Hadron", 83.e-6, 1, 1, 0, 0, 0, 0, 0, 1, kTRUE); + // Theta_c: isospin singlet with J=1/2+ (see + // https://arxiv.org/abs/hep-ph/0409121) + TVirtualMC::GetMC()->DefineParticle(9422111, "Anti-Theta_c_3100", kPTHadron, + 3.099, 0., 6.9e-21, "Hadron", 83.e-6, 1, + 1, 0, 0, 0, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-9422111, "Theta_c_3100", kPTHadron, + 3.099, 0., 6.9e-21, "Hadron", 83.e-6, 1, + 1, 0, 0, 0, 0, 0, 1, kTRUE); for (int j = 1; j < 6; j++) { psmode[j][0] = psmode[j][1] = 0; @@ -522,7 +689,39 @@ void addSpecialParticles() psmode[0][1] = 2212; // p TVirtualMC::GetMC()->SetDecayMode(-9422111, psratio, psmode); - // Define the 2- and 3-body phase space decay for the Hyper-Triton + // Define the 2-body phase space decay for the Lithium 4 + Int_t model4[6][3]; + Float_t bratiol4[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + bratiol4[kz] = 0.; + model4[kz][0] = 0; + model4[kz][1] = 0; + model4[kz][2] = 0; + } + bratiol4[0] = 100.; + model4[0][0] = 1000020030; // Helium3 + model4[0][1] = 2212; // proton + + TVirtualMC::GetMC()->SetDecayMode(1000030040, bratiol4, model4); + + // Define the 2-body phase space decay for the Anti-Lithium 4 + Int_t amodel4[6][3]; + Float_t abratiol4[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + abratiol4[kz] = 0.; + amodel4[kz][0] = 0; + amodel4[kz][1] = 0; + amodel4[kz][2] = 0; + } + abratiol4[0] = 100.; + amodel4[0][0] = -1000020030; // Anti-Helium3 + amodel4[0][1] = -2212; // Anti-proton + + TVirtualMC::GetMC()->SetDecayMode(-1000030040, abratiol4, amodel4); + + // Define the 2- and 3-body phase space decay for the Hypertriton Int_t mode[6][3]; Float_t bratio[6]; @@ -543,7 +742,7 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(1010010030, bratio, mode); - // Define the 2- and 3-body phase space decay for the Anti-Hyper-Triton + // Define the 2- and 3-body phase space decay for the Anti-Hypertriton Int_t amode[6][3]; Float_t abratio[6]; @@ -565,7 +764,7 @@ void addSpecialParticles() ////// ----------Hypernuclei with Mass=4 ----------- ////////// - // Define the 2- and 3-body phase space decay for the Hyper Hydrogen 4 + // Define the 2- and 3-body phase space decay for the Hyperhydrogen 4 Int_t mode3[6][3]; Float_t bratio3[6]; @@ -586,10 +785,8 @@ void addSpecialParticles() mode3[1][2] = -211; // negative pion TVirtualMC::GetMC()->SetDecayMode(1010010040, bratio3, mode3); - //Decay for the excited state (after em transition) - TVirtualMC::GetMC()->SetDecayMode(1010010041, bratio3, mode3); - // Define the 2- and 3-body phase space decay for the Hyper Hydrogen 4 + // Define the 2- and 3-body phase space decay for the Hyperhydrogen 4 Int_t amode3[6][3]; Float_t abratio3[6]; @@ -608,10 +805,8 @@ void addSpecialParticles() amode3[1][2] = 211; // positive pion TVirtualMC::GetMC()->SetDecayMode(-1010010040, abratio3, amode3); - //Decay for the excited state (after em transition) - TVirtualMC::GetMC()->SetDecayMode(-1010010041, abratio3, amode3); - // Define the 3-body phase space decay for the Hyper Helium 4 + // Define the 3-body phase space decay for the Hyperhelium 4 Int_t mode4[6][3]; Float_t bratio4[6]; @@ -621,16 +816,18 @@ void addSpecialParticles() mode4[kz][1] = 0; mode4[kz][2] = 0; } - bratio4[0] = 100.; + bratio4[0] = 50.; mode4[0][0] = 1000020030; // Helium3 mode4[0][1] = -211; // negative pion mode4[0][2] = 2212; // proton + bratio4[1] = 50.; + mode4[1][0] = 1000030040; // lithium-4 + mode4[1][1] = -211; // negative pion + TVirtualMC::GetMC()->SetDecayMode(1010020040, bratio4, mode4); - //Decay for the excited state (after em transition) - TVirtualMC::GetMC()->SetDecayMode(1010020041, bratio4, mode4); - // Define the 2-body phase space decay for the Anti-Hyper Helium 4 + // Define the 2-body phase space decay for the Anti-Hyperhelium 4 Int_t amode4[6][3]; Float_t abratio4[6]; @@ -640,48 +837,18 @@ void addSpecialParticles() amode4[kz][1] = 0; amode4[kz][2] = 0; } - abratio4[0] = 100.; + abratio4[0] = 50.; amode4[0][0] = -1000020030; // anti-Helium 3 amode4[0][1] = 211; // positive pion amode4[0][2] = -2212; // anti proton - TVirtualMC::GetMC()->SetDecayMode(-1010020040, abratio4, amode4); - //Decay for the excited state (after em transition) - TVirtualMC::GetMC()->SetDecayMode(-1010020041, abratio4, amode4); - - // Define the 2-body phase space decay for the Lithium 4 - Int_t model4[6][3]; - Float_t bratiol4[6]; - - for (Int_t kz = 0; kz < 6; kz++) { - bratiol4[kz] = 0.; - model4[kz][0] = 0; - model4[kz][1] = 0; - model4[kz][2] = 0; - } - bratiol4[0] = 100.; - model4[0][0] = 1000020030; // Helium3 - model4[0][1] = 2212; // proton - - TVirtualMC::GetMC()->SetDecayMode(1000030040, bratiol4, model4); - - // Define the 2-body phase space decay for the Anti-Lithium 4 - Int_t amodel4[6][3]; - Float_t abratiol4[6]; + abratio4[1] = 50.; + amode4[1][0] = -1000030040; // antilithium-4 + amode4[1][1] = 211; // positive pion - for (Int_t kz = 0; kz < 6; kz++) { - abratiol4[kz] = 0.; - amodel4[kz][0] = 0; - amodel4[kz][1] = 0; - amodel4[kz][2] = 0; - } - abratiol4[0] = 100.; - amodel4[0][0] = -1000020030; // Anti-Helium3 - amodel4[0][1] = -2212; // Anti-proton - - TVirtualMC::GetMC()->SetDecayMode(-1000030040, abratiol4, amodel4); + TVirtualMC::GetMC()->SetDecayMode(-1010020040, abratio4, amode4); - // Define the 3-body phase space decay for the Hyper Helium 5 + // Define the 3-body phase space decay for the Hyperhelium 5 Int_t mode41[6][3]; Float_t bratio41[6]; @@ -702,7 +869,7 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(1010020050, bratio41, mode41); - // Define the 2-body phase space decay for the Anti-Hyper Helium 5 + // Define the 2-body phase space decay for the Anti-Hyperhelium 5 Int_t amode41[6][3]; Float_t abratio41[6]; @@ -723,7 +890,7 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(-1010020050, abratio41, amode41); - // Define the 3-body phase space decay for the Double Hyper Hydrogen 4 + // Define the 3-body phase space decay for the Doublehyperhydrogen 4 Int_t mode42[6][3]; Float_t bratio42[6]; @@ -733,13 +900,17 @@ void addSpecialParticles() mode42[kz][1] = 0; mode42[kz][2] = 0; } - bratio42[0] = 100.; + bratio42[0] = 50.; mode42[0][0] = 1010020040; // Hyper-Helium4 mode42[0][1] = -211; // negative pion + bratio42[1] = 50.; + mode42[1][0] = 1010010030; // Hypertriton + mode42[1][1] = 2212; // proton + mode42[1][2] = -211; // negative pion TVirtualMC::GetMC()->SetDecayMode(1020010040, bratio42, mode42); - // Define the 2-body phase space decay for the Anti Double Hyper Hydrogen 4 + // Define the 2-body phase space decay for the Anti-Doublehyperhydrogen 4 Int_t amode42[6][3]; Float_t abratio42[6]; @@ -752,9 +923,117 @@ void addSpecialParticles() abratio42[0] = 100.; amode42[0][0] = -1010020040; // anti-Hyper-Helium 4 amode42[0][1] = 211; // positive pion + abratio42[1] = 50.; + amode42[1][0] = -1010010030; // anti-Hypertriton + amode42[1][1] = -2212; // antiproton + amode42[1][2] = 211; // positive pion TVirtualMC::GetMC()->SetDecayMode(-1020010040, abratio42, amode42); + // Define the decay for the 4Xi(-)He + Int_t mode4XiHe[6][3]; + Float_t bratio4XiHe[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + bratio4XiHe[kz] = 0.; + mode4XiHe[kz][0] = 0; + mode4XiHe[kz][1] = 0; + mode4XiHe[kz][2] = 0; + } + bratio4XiHe[0] = 33.; + mode4XiHe[0][0] = 1010020040; // HyperHelium4 + mode4XiHe[0][1] = -211; // negative pion + + bratio4XiHe[1] = 33.; + mode4XiHe[1][0] = 3122; // lambda + mode4XiHe[1][1] = 1000020030; // helium-3 + mode4XiHe[1][2] = -211; // negative pion + + bratio4XiHe[2] = 33.; + mode4XiHe[2][0] = 1000030040; // lithium-4 + mode4XiHe[2][1] = -211; // negative pion + mode4XiHe[2][2] = -211; // negative pion + + TVirtualMC::GetMC()->SetDecayMode(1120020040, bratio4XiHe, mode4XiHe); + + // Define the decay for the Anti-4Xi(-)He + Int_t amode4XiHe[6][3]; + Float_t abratio4XiHe[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + abratio4XiHe[kz] = 0.; + amode4XiHe[kz][0] = 0; + amode4XiHe[kz][1] = 0; + amode4XiHe[kz][2] = 0; + } + abratio4XiHe[0] = 33.; + amode4XiHe[0][0] = -1010020040; // antiHyperHelium-4 + amode4XiHe[0][1] = 211; // positive pion + + abratio4XiHe[1] = 33.; + amode4XiHe[1][0] = -3122; // antilambda + amode4XiHe[1][1] = -1000020030; // antihelium-3 + amode4XiHe[1][2] = 211; // positive pion + + abratio4XiHe[2] = 33.; + amode4XiHe[2][0] = -1000030040; // antilithium-4 + amode4XiHe[2][1] = 211; // positive pion + amode4XiHe[2][2] = 211; // positive pion + + TVirtualMC::GetMC()->SetDecayMode(-1120020040, abratio4XiHe, amode4XiHe); + + // Define the decay for the 4Xi(-)H + Int_t mode4XiH[6][3]; + Float_t bratio4XiH[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + bratio4XiH[kz] = 0.; + mode4XiH[kz][0] = 0; + mode4XiH[kz][1] = 0; + mode4XiH[kz][2] = 0; + } + bratio4XiH[0] = 33.; + mode4XiH[0][0] = 1010010040; // HyperHydrogen4 + mode4XiH[0][1] = -211; // negative pion + + bratio4XiH[1] = 33.; + mode4XiH[1][0] = 3122; // lambda + mode4XiH[1][1] = 1000010030; // triton + mode4XiH[1][2] = -211; // negative pion + + bratio4XiH[2] = 33.; + mode4XiH[2][0] = 1000020040; // alpha + mode4XiH[2][1] = -211; // negative pion + mode4XiH[2][2] = -211; // negative pion + + TVirtualMC::GetMC()->SetDecayMode(1120010040, bratio4XiH, mode4XiH); + + // Define the decay for the Anti-4Xi(-)H + Int_t amode4XiH[6][3]; + Float_t abratio4XiH[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + abratio4XiH[kz] = 0.; + amode4XiH[kz][0] = 0; + amode4XiH[kz][1] = 0; + amode4XiH[kz][2] = 0; + } + abratio4XiH[0] = 33.; + amode4XiH[0][0] = -1010010040; // antiHyperHydrogen-4 + amode4XiH[0][1] = 211; // positive pion + + abratio4XiH[1] = 33.; + amode4XiH[1][0] = -3122; // antilambda + amode4XiH[1][1] = -1000010030; // antitriton + amode4XiH[1][2] = 211; // positive pion + + abratio4XiH[2] = 33.; + amode4XiH[2][0] = -1000020040; // antialpha + amode4XiH[2][1] = 211; // positive pion + amode4XiH[2][2] = 211; // positive pion + + TVirtualMC::GetMC()->SetDecayMode(-1120010040, abratio4XiH, amode4XiH); + // Define the 2- and 3-body phase space decay for the Hyper Helium 4 sigma Int_t mode4s[6][3]; Float_t bratio4s[6]; @@ -779,7 +1058,8 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(1110020040, bratio4s, mode4s); - // Define the 2- and 3-body phase space decay for the Anti Hyper Helium 4 sigma + // Define the 2- and 3-body phase space decay for the Anti Hyper Helium 4 + // sigma Int_t amode4s[6][3]; Float_t abratio4s[6]; @@ -1229,7 +1509,8 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(225, bratio, mode); - // Define the 2-body phase space decay for the resonances: f0(1500), f2(1525), f0(1710 + // Define the 2-body phase space decay for the resonances: f0(1500), f2(1525), + // f0(1710 for (Int_t kz = 0; kz < 6; kz++) { bratio[kz] = 0.; mode[kz][0] = 0; @@ -1269,8 +1550,12 @@ void addSpecialParticles() // Lambda1520/Lambda1520bar - TVirtualMC::GetMC()->DefineParticle(102134, "Lambda1520", kPTNeutron, 1.5195, 0.0, 4.22e-23, "Hadron", 0.0156, 3, -1, 0, 0, 0, 0, 0, 1, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-102134, "Lambda1520bar", kPTNeutron, 1.5195, 0.0, 4.22e-23, "Hadron", 0.0156, 3, -1, 0, 0, 0, 0, 0, -1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(102134, "Lambda1520", kPTNeutron, 1.5195, + 0.0, 4.22e-23, "Hadron", 0.0156, 3, -1, 0, + 0, 0, 0, 0, 1, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-102134, "Lambda1520bar", kPTNeutron, + 1.5195, 0.0, 4.22e-23, "Hadron", 0.0156, + 3, -1, 0, 0, 0, 0, 0, -1, kTRUE); // Lambda1520 decay modes Int_t lmode[9][3]; @@ -1380,9 +1665,14 @@ void addSpecialParticles() // -------------------------------------------------------------------- - //Sexaquark (uuddss): compact, neutral and stable hypothetical bound state (arxiv.org/abs/1708.08951) - TVirtualMC::GetMC()->DefineParticle(900000020, "Sexaquark", kPTUndefined, 2.0, 0.0, 4.35e+17, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, 2, kTRUE); - TVirtualMC::GetMC()->DefineParticle(-900000020, "AntiSexaquark", kPTUndefined, 2.0, 0.0, 4.35e+17, "Hadron", 0.0, 0, 1, 0, 0, 0, 0, 0, -2, kTRUE); + // Sexaquark (uuddss): compact, neutral and stable hypothetical bound state + // (arxiv.org/abs/1708.08951) + TVirtualMC::GetMC()->DefineParticle(900000020, "Sexaquark", kPTUndefined, 2.0, + 0.0, 4.35e+17, "Hadron", 0.0, 0, 1, 0, 0, + 0, 0, 0, 2, kTRUE); + TVirtualMC::GetMC()->DefineParticle(-900000020, "AntiSexaquark", kPTUndefined, + 2.0, 0.0, 4.35e+17, "Hadron", 0.0, 0, 1, + 0, 0, 0, 0, 0, -2, kTRUE); } void O2MCApplicationBase::AddParticles() @@ -1416,13 +1706,19 @@ void O2MCApplicationBase::initTrackRefHook() { if (mCutParams.stepTrackRefHook) { LOG(info) << "Initializing the hook for TrackReferences during stepping"; - auto expandedTrackRefHookFileName = o2::utils::expandShellVarsInFileName(mCutParams.stepTrackRefHookFile); + auto expandedTrackRefHookFileName = + o2::utils::expandShellVarsInFileName(mCutParams.stepTrackRefHookFile); if (std::filesystem::exists(expandedTrackRefHookFileName)) { // if this file exists we will compile the hook on the fly - mTrackRefFcn = o2::conf::GetFromMacro(mCutParams.stepTrackRefHookFile, "trackRefHook()", "o2::steer::O2MCApplicationBase::TrackRefFcn", "o2mc_stepping_trackref_hook"); - LOG(info) << "Hook initialized from file " << expandedTrackRefHookFileName; + mTrackRefFcn = o2::conf::GetFromMacro( + mCutParams.stepTrackRefHookFile, "trackRefHook()", + "o2::steer::O2MCApplicationBase::TrackRefFcn", + "o2mc_stepping_trackref_hook"); + LOG(info) << "Hook initialized from file " + << expandedTrackRefHookFileName; } else { - LOG(error) << "Did not file TrackRefHook file " << expandedTrackRefHookFileName << " ; Will not execute hook"; + LOG(error) << "Did not file TrackRefHook file " + << expandedTrackRefHookFileName << " ; Will not execute hook"; mTrackRefFcn = [](TVirtualMC const*) {}; // do nothing } } @@ -1438,7 +1734,8 @@ void O2MCApplication::initLate() } } -void O2MCApplication::attachSubEventInfo(fair::mq::Parts& parts, o2::data::SubEventInfo const& info) const +void O2MCApplication::attachSubEventInfo( + fair::mq::Parts& parts, o2::data::SubEventInfo const& info) const { // parts.AddPart(std::move(mSimDataChannel->NewSimpleMessage(info))); o2::base::attachTMessage(info, *mSimDataChannel, parts); @@ -1447,7 +1744,8 @@ void O2MCApplication::attachSubEventInfo(fair::mq::Parts& parts, o2::data::SubEv // helper function to fetch data from FairRootManager branch and serialize it // returns handle to container template -const T* attachBranch(std::string const& name, fair::mq::Channel& channel, fair::mq::Parts& parts) +const T* attachBranch(std::string const& name, fair::mq::Channel& channel, + fair::mq::Parts& parts) { auto mgr = FairRootManager::Instance(); // check if branch is present @@ -1474,12 +1772,17 @@ void O2MCApplication::SendData() fair::mq::Parts simdataparts; // fill these parts ... the receiver has to unpack similary - // TODO: actually we could just loop over branches in FairRootManager at this moment? - mSubEventInfo->npersistenttracks = static_cast(GetStack())->getMCTracks()->size(); - mSubEventInfo->nprimarytracks = static_cast(GetStack())->GetNprimary(); + // TODO: actually we could just loop over branches in FairRootManager at this + // moment? + mSubEventInfo->npersistenttracks = + static_cast(GetStack())->getMCTracks()->size(); + mSubEventInfo->nprimarytracks = + static_cast(GetStack())->GetNprimary(); attachSubEventInfo(simdataparts, *mSubEventInfo); - auto tracks = attachBranch>("MCTrack", *mSimDataChannel, simdataparts); - attachBranch>("TrackRefs", *mSimDataChannel, simdataparts); + auto tracks = attachBranch>( + "MCTrack", *mSimDataChannel, simdataparts); + attachBranch>("TrackRefs", *mSimDataChannel, + simdataparts); assert(tracks->size() == mSubEventInfo->npersistenttracks); for (auto det : listActiveDetectors) {