From 2b7a940b84c7069ebf63f1a38506686469397701 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Mon, 13 Apr 2026 15:57:41 +0200 Subject: [PATCH 1/3] Add Generator for NeNe based on EPOS4 --- MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini diff --git a/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini b/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini new file mode 100644 index 000000000..9da491aae --- /dev/null +++ b/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini @@ -0,0 +1,12 @@ +#NEV_TEST> 1 +[GeneratorExternal] +fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/examples/epos4/generator_EPOS4.C +funcName=generateEPOS4("${O2DPG_MC_CONFIG_ROOT}/MC/config/examples/epos4/generator/NeNe_536TeV_EPOS4.optns", 2147483647) + +[GeneratorFileOrCmd] +cmd=${O2DPG_MC_CONFIG_ROOT}/MC/config/examples/epos4/epos.sh +bMaxSwitch=none + +# Set to version 2 if EPOS4.0.0 is used +[HepMC] +version=3 From 4fd3471e48a386e09e04c1793ce80ccaa2f80931 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Mon, 13 Apr 2026 16:21:36 +0200 Subject: [PATCH 2/3] add missing test macro + fix NEV_test --- .../examples/ini/GeneratorEPOS4NeNe536TeV.ini | 2 +- .../ini/tests/GeneratorEPOS4NeNe536TeV.C | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C diff --git a/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini b/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini index 9da491aae..3dc0901ad 100644 --- a/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini +++ b/MC/config/examples/ini/GeneratorEPOS4NeNe536TeV.ini @@ -1,4 +1,4 @@ -#NEV_TEST> 1 +#NEV_TEST> 10 [GeneratorExternal] fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/examples/epos4/generator_EPOS4.C funcName=generateEPOS4("${O2DPG_MC_CONFIG_ROOT}/MC/config/examples/epos4/generator/NeNe_536TeV_EPOS4.optns", 2147483647) diff --git a/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C b/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C new file mode 100644 index 000000000..df9d82ba7 --- /dev/null +++ b/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C @@ -0,0 +1,78 @@ +int External() +{ + std::string path{"o2sim_Kine.root"}; + + // Check that file exists, can be opened and has the correct tree + 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); + + // Check if all events are filled + auto nEvents = tree->GetEntries(); + for (Long64_t i = 0; i < nEvents; ++i) + { + tree->GetEntry(i); + if (tracks->empty()) + { + std::cerr << "Empty entry found at event " << i << "\n"; + return 1; + } + } + + // Check if there is 1 event, as customarily set in the ini file + // Heavy-ion collisions with hydro and hadronic cascade are very slow to simulate + if (nEvents != 1) + { + std::cerr << "Expected 1 event, got " << nEvents << "\n"; + return 1; + } + + // ---- Neon-Neon parameters ---- + constexpr int kNeonPDG = 1000100200; // Ne-20 ion + constexpr double kEnucleon = 5360.; // GeV per nucleon + constexpr int kA = 20; // Neon mass number + constexpr double kNeonEnergy = kA * kEnucleon / 2.0; // beam energy in GeV + + // Check if each event has two neon ions at expected energy + for (int i = 0; i < nEvents; i++) + { + tree->GetEntry(i); + int count = 0; + + for (int idxMCTrack = 0; idxMCTrack < tracks->size(); ++idxMCTrack) + { + auto track = tracks->at(idxMCTrack); + double energy = track.GetEnergy(); + + // 50 MeV tolerance (floating point safety) + if (std::abs(energy - kNeonEnergy) < 5e-2 && + track.GetPdgCode() == kNeonPDG) + { + count++; + } + } + + if (count < 2) + { + std::cerr << "Event " << i + << " has less than 2 neon ions at " + << kNeonEnergy << " GeV\n"; + return 1; + } + } + + return 0; +} From 2d0dfa00928260641c03eee3f0f5aa5b7bc71690 Mon Sep 17 00:00:00 2001 From: Alberto Caliva Date: Tue, 14 Apr 2026 10:26:22 +0200 Subject: [PATCH 3/3] fix test macro --- MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C b/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C index df9d82ba7..994e64c42 100644 --- a/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C +++ b/MC/config/examples/ini/tests/GeneratorEPOS4NeNe536TeV.C @@ -34,9 +34,9 @@ int External() // Check if there is 1 event, as customarily set in the ini file // Heavy-ion collisions with hydro and hadronic cascade are very slow to simulate - if (nEvents != 1) + if (nEvents != 10) { - std::cerr << "Expected 1 event, got " << nEvents << "\n"; + std::cerr << "Expected 10 events, got " << nEvents << "\n"; return 1; }