Skip to content

Commit

Permalink
Add other resonances (AliceO2Group#1540)
Browse files Browse the repository at this point in the history
  • Loading branch information
BongHwi authored Mar 23, 2024
1 parent d8bf2aa commit 00c052b
Show file tree
Hide file tree
Showing 7 changed files with 323 additions and 48 deletions.
10 changes: 10 additions & 0 deletions MC/config/PWGLF/ini/GeneratorLF_ExoticResonances_pp1360.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[GeneratorExternal]
fileName=${O2DPG_ROOT}/MC/config/PWGLF/pythia8/generator_pythia8_LF.C
funcName=generateLF("${O2DPG_ROOT}/MC/config/PWGLF/pythia8/generator/exoticresonancegun.json", true, 4)

# [GeneratorPythia8] # if triggered then this will be used as the background event
# config=${O2DPG_ROOT}/MC/config/PWGLF/pythia8/generator/pythia8_inel_136tev.cfg

[DecayerPythia8] # after for transport code!
config[0]=${O2DPG_ROOT}/MC/config/common/pythia8/decayer/base.cfg
config[1]=${O2DPG_ROOT}/MC/config/PWGLF/pythia8/generator/resonances.cfg
144 changes: 144 additions & 0 deletions MC/config/PWGLF/ini/tests/GeneratorLF_ExoticResonances_pp1360.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
int External()
{
std::string path{"o2sim_Kine.root"};
int numberOfInjectedSignalsPerEvent{1};
int numberOfGapEvents{4};
int numberOfEventsProcessed{0};
int numberOfEventsProcessedWithoutInjection{0};
std::vector<int> injectedPDGs = {
20223, // f_1(1285)
20333, // f_1(1420)
9030221, // f_0(1500)
10331, // f_0(1710)
335, // f_2(1525)
10221 // f_0(1370)
};
std::vector<std::vector<int>> decayDaughters = {
{310, -321, 211}, // f_1(1285)
{310, -321, 211}, // f_1(1420)
{310, 310}, // f_0(1500)
{310, 310}, // f_0(1710)
{310, 310}, // f_2(1525)
{310, 310} // f_0(1370)
};

auto nInjection = injectedPDGs.size();

TFile file(path.c_str(), "READ");
if (file.IsZombie())
{
std::cerr << "Cannot open ROOT file " << path << "\n";
return 1;
}

auto tree = (TTree *)file.Get("o2sim");
if (!tree)
{
std::cerr << "Cannot find tree o2sim in file " << path << "\n";
return 1;
}
std::vector<o2::MCTrack> *tracks{};
tree->SetBranchAddress("MCTrack", &tracks);

std::vector<int> nSignal;
for (int i = 0; i < nInjection; i++)
{
nSignal.push_back(0);
}
std::vector<std::vector<int>> nDecays;
std::vector<int> nNotDecayed;
for (int i = 0; i < nInjection; i++)
{
std::vector<int> nDecay;
for (int j = 0; j < decayDaughters[i].size(); j++)
{
nDecay.push_back(0);
}
nDecays.push_back(nDecay);
nNotDecayed.push_back(0);
}
auto nEvents = tree->GetEntries();
bool hasInjection = false;
for (int i = 0; i < nEvents; i++)
{
hasInjection = false;
numberOfEventsProcessed++;
auto check = tree->GetEntry(i);
for (int idxMCTrack = 0; idxMCTrack < tracks->size(); ++idxMCTrack)
{
auto track = tracks->at(idxMCTrack);
auto pdg = track.GetPdgCode();
auto it = std::find(injectedPDGs.begin(), injectedPDGs.end(), pdg);
int index = std::distance(injectedPDGs.begin(), it); // index of injected PDG
if (it != injectedPDGs.end()) // found
{
// count signal PDG
nSignal[index]++;
if(track.getFirstDaughterTrackId() < 0)
{
nNotDecayed[index]++;
continue;
}
for (int j{track.getFirstDaughterTrackId()}; j <= track.getLastDaughterTrackId(); ++j)
{
auto pdgDau = tracks->at(j).GetPdgCode();
bool foundDau= false;
// count decay PDGs
for (int idxDaughter = 0; idxDaughter < decayDaughters[index].size(); ++idxDaughter)
{
if (pdgDau == decayDaughters[index][idxDaughter])
{
nDecays[index][idxDaughter]++;
foundDau= true;
hasInjection = true;
break;
}
}
if (!foundDau) {
std::cerr << "Decay daughter not found: " << pdg << " -> " << pdgDau << "\n";
}
}
}
}
if (!hasInjection)
{
numberOfEventsProcessedWithoutInjection++;
}
}
std::cout << "--------------------------------\n";
std::cout << "# Events: " << nEvents << "\n";
for (int i = 0; i < nInjection; i++)
{
std::cout << "# Mother \n";
std::cout << injectedPDGs[i] << " generated: " << nSignal[i] << ", " << nNotDecayed[i] << " did not decay\n";
if (nSignal[i] == 0){
std::cerr << "No generated: " << injectedPDGs[i] << "\n";
// return 1; // At least one of the injected particles should be generated
}
for (int j = 0; j < decayDaughters[i].size(); j++)
{
std::cout << "# Daughter " << decayDaughters[i][j] << ": " << nDecays[i][j] << "\n";
}
// if (nSignal[i] != nEvents * numberOfInjectedSignalsPerEvent)
// {
// std::cerr << "Number of generated: " << injectedPDGs[i] << ", lower than expected\n";
// // return 1; // Don't need to return 1, since the number of generated particles is not the same for each event
// }
}
std::cout << "--------------------------------\n";
std::cout << "Number of events processed: " << numberOfEventsProcessed << "\n";
std::cout << "Number of input for the gap events: " << numberOfGapEvents << "\n";
std::cout << "Number of events processed without injection: " << numberOfEventsProcessedWithoutInjection << "\n";
// injected event + numberOfGapEvents*gap events + injected event + numberOfGapEvents*gap events + ...
// total fraction of the gap event: numberOfEventsProcessedWithoutInjection/numberOfEventsProcessed
float ratioOfNormalEvents = numberOfEventsProcessedWithoutInjection/numberOfEventsProcessed;
if (ratioOfNormalEvents > 0.75)
{
std::cout << "The number of injected event is loo low!!" << std::endl;
return 1;
}

return 0;
}

void GeneratorLF_ExoticResonances_pp1360() { External(); }
26 changes: 10 additions & 16 deletions MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp1360.C
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,12 @@ int External()
2224, // Delta(1232)+
-2224, // Delta(1232)bar-
2114, // Delta(1232)0
-2114 // Delta(1232)0bar
-2114, // Delta(1232)0bar
123314, // Xi(1820)-
-123314, // Xi(1820)+
123324, // Xi(1820)0
-123324 // Xi(1820)0bar
};
// TODO: add decay daughters
// 9030221, // f_0(1500)
// 10331, // f_0(1710)
// 123314, // Xi(1820)-
// -123314, // Xi(1820)+
// 123324, // Xi(1820)0
// -123324 // Xi(1820)0bar
std::vector<std::vector<int>> decayDaughters = {
{311, 211}, // K*+-
{-311, -211}, // K*bar+-
Expand All @@ -54,15 +51,12 @@ int External()
{2212, 211}, // Delta(1232)+
{-2212, -211}, // Delta(1232)bar-
{2212, -211}, // Delta(1232)-
{-2212, 211} // Delta(1232)bar+
{-2212, 211}, // Delta(1232)bar+
{3122, -311}, // Xi(1820)-
{3122, 311}, // Xi(1820)+
{3122, 310}, // Xi(1820)0
{-3122, 310} // Xi(1820)0bar
};
// TODO: add decay daughters
// {211, 211}, // f_0(1500)
// {211, 211}, // f_0(1710)
// {211, 211, 111}, // Xi(1820)-
// {-211, -211, -111}, // Xi(1820)+
// {211, 211, 111}, // Xi(1820)0
// {-211, -211, -111} // Xi(1820)0bar

auto nInjection = injectedPDGs.size();

Expand Down
26 changes: 10 additions & 16 deletions MC/config/PWGLF/ini/tests/GeneratorLF_Resonances_pp900.C
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,12 @@ int External()
2224, // Delta(1232)+
-2224, // Delta(1232)bar-
2114, // Delta(1232)0
-2114 // Delta(1232)0bar
-2114, // Delta(1232)0bar
123314, // Xi(1820)-
-123314, // Xi(1820)+
123324, // Xi(1820)0
-123324 // Xi(1820)0bar
};
// TODO: add decay daughters
// 9030221, // f_0(1500)
// 10331, // f_0(1710)
// 123314, // Xi(1820)-
// -123314, // Xi(1820)+
// 123324, // Xi(1820)0
// -123324 // Xi(1820)0bar
std::vector<std::vector<int>> decayDaughters = {
{311, 211}, // K*+-
{-311, -211}, // K*bar+-
Expand All @@ -54,15 +51,12 @@ int External()
{2212, 211}, // Delta(1232)+
{-2212, -211}, // Delta(1232)bar-
{2212, -211}, // Delta(1232)-
{-2212, 211} // Delta(1232)bar+
{-2212, 211}, // Delta(1232)bar+
{3122, -311}, // Xi(1820)-
{3122, 311}, // Xi(1820)+
{3122, 310}, // Xi(1820)0
{-3122, 310} // Xi(1820)0bar
};
// TODO: add decay daughters
// {211, 211}, // f_0(1500)
// {211, 211}, // f_0(1710)
// {211, 211, 111}, // Xi(1820)-
// {-211, -211, -111}, // Xi(1820)+
// {211, 211, 111}, // Xi(1820)0
// {-211, -211, -111} // Xi(1820)0bar

auto nInjection = injectedPDGs.size();

Expand Down
56 changes: 56 additions & 0 deletions MC/config/PWGLF/pythia8/generator/exoticresonancegun.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"f_1(1285)" : {
"pdg": 20223,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"f_1(1420)" : {
"pdg": 20333,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"f_0(1500)" : {
"pdg": 9030221,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"f_0(1710)" : {
"pdg": 10331,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"f_2(1525)" : {
"pdg": 335,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"f_0(1370)" : {
"pdg": 10221,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
}
}
36 changes: 36 additions & 0 deletions MC/config/PWGLF/pythia8/generator/resonancelistgun.json
Original file line number Diff line number Diff line change
Expand Up @@ -178,5 +178,41 @@
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"Xi(1820)0" : {
"pdg": 123314,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"Anti-Xi(1820)0" : {
"pdg": -123314,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"Xi(1820)-" : {
"pdg": 123324,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
},
"Xi(1820)+" : {
"pdg": -123324,
"n": 1,
"ptMin": 0.0,
"ptMax": 20,
"etaMin": -1.2,
"etaMax": 1.2,
"genDecayed": true
}
}
Loading

0 comments on commit 00c052b

Please sign in to comment.