Skip to content
Snippets Groups Projects
Commit 4076ef94 authored by Iouri Vassiliev's avatar Iouri Vassiliev Committed by Volker Friese
Browse files

Add Hypernuclei and Open Charm decay

parent 917e71c6
No related branches found
No related tags found
1 merge request!2001Add Hypernuclei and Open Charm decay
Pipeline #33797 passed
......@@ -167,13 +167,17 @@ void CbmTransport::ConfigureVMC()
LOG(info) << GetName() << ": Create TGeant3";
vmc = new TGeant3("C++ Interface to Geant3");
} //? Native Geant3
if (!fGeant3Settings) { fGeant3Settings = new CbmGeant3Settings(); }
if (!fGeant3Settings) {
fGeant3Settings = new CbmGeant3Settings();
}
fGeant3Settings->Init(vmc);
} //? Geant3
else if (fEngine == kGeant4) {
LOG(info) << GetName() << ": Create TGeant4";
if (!fGeant4Settings) { fGeant4Settings = new CbmGeant4Settings(); }
if (!fGeant4Settings) {
fGeant4Settings = new CbmGeant4Settings();
}
std::array<std::string, 3> runConfigSettings = fGeant4Settings->GetG4RunConfig();
TG4RunConfiguration* runConfig =
new TG4RunConfiguration(runConfigSettings[0], runConfigSettings[1], runConfigSettings[2]);
......@@ -369,7 +373,7 @@ void CbmTransport::RegisterIons()
stable = kTRUE;
charge = 2.;
pdgdb->AddParticle(name, name, mass, stable, 0., charge, "Ion", code);
pdgdb->AddAntiParticle("He3-", -1 * code);
pdgdb->AddAntiParticle("He4-", -1 * code);
}
// --------------------------------------------------------------------------
......@@ -394,7 +398,7 @@ void CbmTransport::PiAndEtaDecay(TVirtualMC* vmc)
{
assert(vmc);
LOG(info) << GetName() << ": Set decay modes for pi0 and eta";
LOG(info) << GetName() << ": Set decay modes for pi0, eta, Hypernuclei and Open Charm";
if (fEngine == kGeant4) {
std::cout << std::endl << std::endl;
......@@ -407,6 +411,374 @@ void CbmTransport::PiAndEtaDecay(TVirtualMC* vmc)
std::cout << std::endl << std::endl;
return;
}
Double_t lifetime = 1.85e-10; // lifetime 3HL
Double_t mass = 2.99339;
Int_t PDG = 3004;
Double_t charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "H3L", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
Int_t mode[6][3];
Float_t bratio[6];
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000020030; //3He
mode[0][1] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.632e-10; // lifetime NL
mass = 2.046;
PDG = 3003;
charge = 0.;
TVirtualMC::GetMC()->DefineParticle(PDG, "LambdaN", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1,
0, 0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000010020; //d
mode[0][1] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 1.80e-10; // lifetime 4HL
mass = 3.92975;
PDG = 3005;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "H4L", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000020040; //4He
mode[0][1] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 1.50e-10; // lifetime 4HeL
mass = 3.93070;
PDG = 3006;
charge = 2.;
TVirtualMC::GetMC()->DefineParticle(PDG, "He4L", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0,
0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000020030; //3He
mode[0][1] = 2212; //proton
mode[0][2] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 1.85e-10; // lifetime 3HL->d p pi
mass = 2.99339;
PDG = 3012;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "H3L_{dppi}", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1,
1, 0, 0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000010020; //d
mode[0][1] = 2212; //proton
mode[0][2] = -211; //pi-
// mode[0][0] = 3003; //LambdaN
// mode[0][1] = 2212; //proton
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.632e-10; // lifetime 5HeL->4He p pi
mass = 4.8393;
PDG = 3007;
charge = 2.;
TVirtualMC::GetMC()->DefineParticle(PDG, "He5L", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0,
0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000020040; //4He
mode[0][1] = 2212; //proton
mode[0][2] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.632e-10; // lifetime 4HLL_2body
mass = 4.10791;
PDG = 3008;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "H4LL_{He4Lpi-}", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0,
1, 1, 0, 0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 3006; //4HeL
mode[0][1] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.632e-10; // lifetime 4HLL_3body
mass = 4.10791;
PDG = 3009;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "H4LL_{H3Lppi-}", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0,
1, 1, 0, 0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 3004; //3HL
mode[0][1] = 2212; //p
mode[0][2] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.632e-10; // lifetime 5HLL
mass = 5.04748;
PDG = 3010;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "H5LL_{He5Lpi-}", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0,
1, 1, 0, 0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 3007; //5HeL
mode[0][1] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.632e-10; // lifetime 6HeLL
mass = 5.98575;
PDG = 3011;
charge = 2.;
TVirtualMC::GetMC()->DefineParticle(PDG, "He6LL", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0,
0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 3007; //5HeL
mode[0][1] = 2212; //proton
mode[0][2] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
// charm **********************************************************************************************************************
lifetime = 4.1e-13; // lifetime D0 -> K- pi
mass = 1.86486;
PDG = 421;
charge = 0.;
TVirtualMC::GetMC()->DefineParticle(PDG, "D0", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = -321; //K-
mode[0][1] = 211; //pi+
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 4.1e-13; // lifetime D0b -> K+ pi-
mass = 1.86486;
PDG = -421;
charge = 0.;
TVirtualMC::GetMC()->DefineParticle(PDG, "D0b", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 321; //K+
mode[0][1] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 2.0e-13; // lifetime Lc -> p K- pi+
mass = 2.28646;
PDG = 4122;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "Lc", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 2212; //p
mode[0][1] = -321; //K-
mode[0][2] = 211; //pi+
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 1.04e-12; // lifetime D+ -> K- pi pi
mass = 1.86962;
PDG = 411;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "D+", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = -321; //K-
mode[0][1] = 211; //pi+
mode[0][2] = 211; //pi+
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 1.04e-12; // lifetime D- -> K pi- pi-
mass = 1.86962;
PDG = -411;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "D-", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 321; //K+
mode[0][1] = -211; //pi-
mode[0][2] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 5.0e-13; // lifetime Ds+ -> K- K+ pi+
mass = 1.96850;
PDG = 431;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "Ds+", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = -321; //K-
mode[0][1] = 321; //K+
mode[0][2] = 211; //pi+
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
lifetime = 5.0e-13; // lifetime Ds- -> K- K+ pi-
mass = 1.96850;
PDG = -431;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "Ds-", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0, 0,
1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = -321; //K-
mode[0][1] = 321; //K+
mode[0][2] = -211; //pi-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
// end charm **********************************************************************************************************************
lifetime = 1.55e-22; // lifetime 5HeD->4He K pi- pi-
mass = 5.5809994;
PDG = 4006;
charge = 1.;
TVirtualMC::GetMC()->DefineParticle(PDG, "He5D", kPTHadron, mass, charge, lifetime, "hadron", 0.0, 1, 1, 0, 1, 1, 0,
0, 1, kFALSE);
for (Int_t kz = 0; kz < 6; kz++) {
bratio[kz] = 0.;
mode[kz][0] = 0;
mode[kz][1] = 0;
mode[kz][2] = 0;
}
bratio[0] = 100.;
mode[0][0] = 1000020040; //4He
mode[0][1] = -411; //D-
TVirtualMC::GetMC()->SetDecayMode(PDG, bratio, mode);
TGeant3* gMC3 = static_cast<TGeant3*>(vmc);
assert(vmc);
......@@ -480,14 +852,18 @@ void CbmTransport::Run(Int_t nEvents)
if (gen) {
numAvailEvents = gen->GetNumAvailableEvents();
if (nEvents > numAvailEvents) {
if (numAvailEvents < numMinAvailEvents) { numMinAvailEvents = numAvailEvents; }
if (numAvailEvents < numMinAvailEvents) {
numMinAvailEvents = numAvailEvents;
}
}
}
CbmPlutoGenerator* pgen = dynamic_cast<CbmPlutoGenerator*>(genList->At(i));
if (pgen) {
numAvailEvents = pgen->GetNumAvailableEvents();
if (nEvents > numAvailEvents) {
if (numAvailEvents < numMinAvailEvents) { numMinAvailEvents = numAvailEvents; }
if (numAvailEvents < numMinAvailEvents) {
numMinAvailEvents = numAvailEvents;
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment