From 8def6bc639e2fc1f18540ac88e4137f804f75364 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Wed, 14 Jan 2026 11:32:36 +0100 Subject: [PATCH 1/3] [PWGLF] Add hybrid generator for strangeness in jets --- .../ini/GeneratorLFStrangenessInJets_gap4.ini | 5 ++ .../tests/GeneratorLFStrangenessInJets_gap4.C | 67 +++++++++++++++++++ .../pythia8_inel_plus_jets_ropes_13p6TeV.json | 30 +++++++++ 3 files changed, 102 insertions(+) create mode 100644 MC/config/PWGLF/ini/GeneratorLFStrangenessInJets_gap4.ini create mode 100644 MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C create mode 100644 MC/config/common/external/generator/pythia8_inel_plus_jets_ropes_13p6TeV.json diff --git a/MC/config/PWGLF/ini/GeneratorLFStrangenessInJets_gap4.ini b/MC/config/PWGLF/ini/GeneratorLFStrangenessInJets_gap4.ini new file mode 100644 index 000000000..b2e2057a3 --- /dev/null +++ b/MC/config/PWGLF/ini/GeneratorLFStrangenessInJets_gap4.ini @@ -0,0 +1,5 @@ +[GeneratorHybrid] +configFile=${O2DPG_MC_CONFIG_ROOT}/MC/config/common/external/generator/pythia8_inel_plus_jets_ropes_13p6TeV.json + +[DecayerPythia8] +config[0]=${O2DPG_MC_CONFIG_ROOT}/MC/config/common/pythia8/decayer/base.cfg diff --git a/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C b/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C new file mode 100644 index 000000000..f0942243d --- /dev/null +++ b/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C @@ -0,0 +1,67 @@ +int Hybrid() +{ + std::string path{"o2sim_Kine.root"}; + + 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* tracks{}; + o2::MCEventHeader* header{}; + + tree->SetBranchAddress("MCTrack", &tracks); + tree->SetBranchAddress("MCEventHeader.", &header); + + int nEvents = tree->GetEntries(); + + int nMB = 0; + int nHard = 0; + + long long multMB = 0; + long long multHard = 0; + + for (int i = 0; i < nEvents; ++i) { + tree->GetEntry(i); + + int genId = header->getGeneratorId(); + int mult = tracks->size(); + + if (genId == 0) { + nMB++; + multMB += mult; + } else if (genId == 1) { + nHard++; + multHard += mult; + } + } + + std::cout << "--------------------------------\n"; + std::cout << "# Events total: " << nEvents << "\n"; + std::cout << "# MB events : " << nMB << "\n"; + std::cout << "# Hard events : " << nHard << "\n"; + + if (nHard == 0 || nMB == 0) { + std::cerr << "One of the generators was never used\n"; + return 1; + } + + std::cout << "Avg multiplicity MB : " + << double(multMB) / nMB << "\n"; + std::cout << "Avg multiplicity Hard : " + << double(multHard) / nHard << "\n"; + + if (multHard <= multMB) { + std::cerr << "Hard events not harder than MB ones\n"; + return 1; + } + + return 0; +} diff --git a/MC/config/common/external/generator/pythia8_inel_plus_jets_ropes_13p6TeV.json b/MC/config/common/external/generator/pythia8_inel_plus_jets_ropes_13p6TeV.json new file mode 100644 index 000000000..80a650f1b --- /dev/null +++ b/MC/config/common/external/generator/pythia8_inel_plus_jets_ropes_13p6TeV.json @@ -0,0 +1,30 @@ +{ + "generators": [ + { + "name": "pythia8", + "config": { + "config": "${O2_ROOT}/share/Generators/egconfig/pythia8_inel.cfg", + "hooksFileName": "", + "hooksFuncName": "", + "includePartonEvent": false, + "particleFilter": "", + "verbose": 0 + } + }, + { + "name": "pythia8", + "config": { + "config": "${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGLF/pythia8/generator/pythia8_jet_ropes_136tev.cfg", + "hooksFileName": "", + "hooksFuncName": "", + "includePartonEvent": false, + "particleFilter": "", + "verbose": 0 + } + } + ], + "fractions": [ + 4, + 1 + ] +} From 27616328a0322721dc7a9cf5b01efe80c44de29c Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Wed, 14 Jan 2026 11:58:22 +0100 Subject: [PATCH 2/3] remove test file --- .../tests/GeneratorLFStrangenessInJets_gap4.C | 67 ------------------- 1 file changed, 67 deletions(-) delete mode 100644 MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C diff --git a/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C b/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C deleted file mode 100644 index f0942243d..000000000 --- a/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C +++ /dev/null @@ -1,67 +0,0 @@ -int Hybrid() -{ - std::string path{"o2sim_Kine.root"}; - - 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* tracks{}; - o2::MCEventHeader* header{}; - - tree->SetBranchAddress("MCTrack", &tracks); - tree->SetBranchAddress("MCEventHeader.", &header); - - int nEvents = tree->GetEntries(); - - int nMB = 0; - int nHard = 0; - - long long multMB = 0; - long long multHard = 0; - - for (int i = 0; i < nEvents; ++i) { - tree->GetEntry(i); - - int genId = header->getGeneratorId(); - int mult = tracks->size(); - - if (genId == 0) { - nMB++; - multMB += mult; - } else if (genId == 1) { - nHard++; - multHard += mult; - } - } - - std::cout << "--------------------------------\n"; - std::cout << "# Events total: " << nEvents << "\n"; - std::cout << "# MB events : " << nMB << "\n"; - std::cout << "# Hard events : " << nHard << "\n"; - - if (nHard == 0 || nMB == 0) { - std::cerr << "One of the generators was never used\n"; - return 1; - } - - std::cout << "Avg multiplicity MB : " - << double(multMB) / nMB << "\n"; - std::cout << "Avg multiplicity Hard : " - << double(multHard) / nHard << "\n"; - - if (multHard <= multMB) { - std::cerr << "Hard events not harder than MB ones\n"; - return 1; - } - - return 0; -} From 99bc6c8ec70694f8ab932202cb5438e410676907 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Wed, 14 Jan 2026 12:37:09 +0100 Subject: [PATCH 3/3] added proper test macro --- .../tests/GeneratorLFStrangenessInJets_gap4.C | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C diff --git a/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C b/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C new file mode 100644 index 000000000..9e5f6f85f --- /dev/null +++ b/MC/config/PWGLF/ini/tests/GeneratorLFStrangenessInJets_gap4.C @@ -0,0 +1,28 @@ +#include "TFile.h" +#include "TTree.h" +#include +#include +#include "SimulationDataFormat/MCTrack.h" + +int Hybrid() +{ + std::string path{"o2sim_Kine.root"}; + + 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 *tracks{}; + tree->SetBranchAddress("MCTrack", &tracks); + + std::cout << "Found " << tree->GetEntries() << " events." << std::endl; + return 0; +}