diff --git a/Common/Constants/include/CommonConstants/PhysicsConstants.h b/Common/Constants/include/CommonConstants/PhysicsConstants.h index 10351c965af3a..6a8a791cffd22 100644 --- a/Common/Constants/include/CommonConstants/PhysicsConstants.h +++ b/Common/Constants/include/CommonConstants/PhysicsConstants.h @@ -75,7 +75,8 @@ enum Pdg { kHyperTriton = 1010010030, kHyperHydrogen4 = 1010010040, kHyperHelium4 = 1010020040, - kHyperHelium5 = 1010020050 + kHyperHelium5 = 1010020050, + kHyperHelium4Sigma = 1110020040 }; /// \brief Declarations of masses for additional particles @@ -124,6 +125,7 @@ constexpr double MassHyperTriton = 2.99131; constexpr double MassHyperHydrogen4 = 3.9226; constexpr double MassHyperHelium4 = 3.9217; constexpr double MassHyperHelium5 = 4.841; +constexpr double MassHyperHelium4Sigma = 3.995; /// \brief Declarations of masses for particles in ROOT PDG_t constexpr double MassDown = 0.00467; @@ -194,6 +196,7 @@ constexpr double MassKaonNeutral = MassK0; constexpr double MassLambda = MassLambda0; constexpr double MassHyperhydrog4 = MassHyperHydrogen4; constexpr double MassHyperhelium4 = MassHyperHelium4; +constexpr double MassHyperhelium4sigma = MassHyperHelium4Sigma; // Light speed constexpr float LightSpeedCm2S = 299792458.e2; // C in cm/s diff --git a/Common/Constants/include/CommonConstants/make_pdg_header.py b/Common/Constants/include/CommonConstants/make_pdg_header.py index b71bff40b0011..5c1e4602a9fbb 100755 --- a/Common/Constants/include/CommonConstants/make_pdg_header.py +++ b/Common/Constants/include/CommonConstants/make_pdg_header.py @@ -131,6 +131,7 @@ class Pdg(Enum): kHyperHydrogen4 = 1010010040 kHyperHelium4 = 1010020040 kHyperHelium5 = 1010020050 + kHyperHelium4Sigma = 1110020040 dbPdg = ROOT.o2.O2DatabasePDG diff --git a/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h b/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h index d89443150e199..3487f7a0e5aef 100644 --- a/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h +++ b/DataFormats/simulation/include/SimulationDataFormat/O2DatabasePDG.h @@ -331,6 +331,19 @@ inline void O2DatabasePDG::addALICEParticles(TDatabasePDG* db) 2.5e-15, 6, "Ion", ionCode); } + // hyper helium 4 sigma + ionCode = 1110020040; + if (!db->GetParticle(ionCode)) { + db->AddParticle("Hyperhelium4sigma", "Hyperhelium4sigma", 3.995, kFALSE, + 2.5e-15, 6, "Ion", ionCode); + } + // anti-hyper helium 4 sigma + ionCode = -1110020040; + if (!db->GetParticle(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, diff --git a/Steer/src/O2MCApplication.cxx b/Steer/src/O2MCApplication.cxx index ed4735b21b46a..240e56aba28c4 100644 --- a/Steer/src/O2MCApplication.cxx +++ b/Steer/src/O2MCApplication.cxx @@ -303,6 +303,11 @@ void addSpecialParticles() //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); + // 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); + // 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); @@ -748,6 +753,54 @@ void addSpecialParticles() TVirtualMC::GetMC()->SetDecayMode(-1020010040, abratio42, amode42); + // Define the 2- and 3-body phase space decay for the Hyper Helium 4 sigma + Int_t mode4s[6][3]; + Float_t bratio4s[6]; + + for (Int_t kz = 0; kz < 6; kz++) { + bratio4s[kz] = 0.; + mode4s[kz][0] = 0; + mode4s[kz][1] = 0; + mode4s[kz][2] = 0; + } + bratio4s[0] = 20.; + mode4s[0][0] = 1000020040; // Helium4 + mode4s[0][1] = 111; // pion0 + bratio4s[1] = 40.; + mode4s[1][0] = 1000010030; // tritium + mode4s[1][2] = 2212; // proton + mode4s[1][1] = 111; // pion0 + bratio4s[2] = 40.; + mode4s[2][0] = 1000010030; // tritium + mode4s[2][2] = 2212; // pion+ + mode4s[2][1] = 2112; // neutron + + TVirtualMC::GetMC()->SetDecayMode(1110020040, bratio4s, mode4s); + + // 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]; + + for (Int_t kz = 0; kz < 6; kz++) { + abratio4s[kz] = 0.; + amode4s[kz][0] = 0; + amode4s[kz][1] = 0; + amode4s[kz][2] = 0; + } + abratio4s[0] = 50.; + amode4s[0][0] = -1000020040; // anti-Helium4 + amode4s[0][1] = 111; // pion0 + abratio4s[1] = 50.; + amode4s[1][0] = -1000010030; // anti-tritium + amode4s[1][2] = -2212; // anti-proton + amode4s[1][1] = 111; // pion0 + abratio4s[2] = 50.; + amode4s[2][0] = -1000010030; // anti-tritium + amode4s[2][2] = -211; // pion- + amode4s[2][1] = -2112; // anti-neutron + + TVirtualMC::GetMC()->SetDecayMode(-1110020040, abratio4s, amode4s); + // Define the 2-body phase space decay for the Lambda-neutron boundstate Int_t mode1[6][3]; Float_t bratio1[6];