From ad5c3885d8e6f3424ee9a168bb72bf5f8b95a001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Jacazio?= Date: Wed, 16 Sep 2026 21:15:55 +0200 Subject: [PATCH] Add DittoMC --- MC/config/ALICE3/ini/ditto_pp_136tev.ini | 6 ++ MC/config/ALICE3/pythia8/generator_DittoMC.C | 62 ++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 MC/config/ALICE3/ini/ditto_pp_136tev.ini create mode 100644 MC/config/ALICE3/pythia8/generator_DittoMC.C diff --git a/MC/config/ALICE3/ini/ditto_pp_136tev.ini b/MC/config/ALICE3/ini/ditto_pp_136tev.ini new file mode 100644 index 000000000..cefe555d6 --- /dev/null +++ b/MC/config/ALICE3/ini/ditto_pp_136tev.ini @@ -0,0 +1,6 @@ +[Diamond] +width[2]=6.0 + +[GeneratorExternal] +fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/ALICE3/pythia8/generator_DittoMC.C +funcName=generator_DittoMC("Ditto_tune_pythia8_inel_136tev.root") diff --git a/MC/config/ALICE3/pythia8/generator_DittoMC.C b/MC/config/ALICE3/pythia8/generator_DittoMC.C new file mode 100644 index 000000000..d454a9383 --- /dev/null +++ b/MC/config/ALICE3/pythia8/generator_DittoMC.C @@ -0,0 +1,62 @@ +#include "Ditto.h" + +#include +#include +#include +#include + +#if !defined(__CLING__) || defined(__ROOTCLING__) + +#include + +#include +#include + +#include +#include + +#endif + +// Ditto event generator + +class GeneratorDittoMC : public o2::eventgen::GeneratorPythia8 +{ + public: + /// Constructor + GeneratorDittoMC(const TString& tuneFile) : mGenerator(makeConfig(tuneFile)) + { + mPythia.readString("ProcessLevel:all = off"); + } + + bool generateEvent() override + { + mGenerator.generate(); + mGenerator.loadParticles(mPythia.event, true); + return true; + } + + /// Destructor + ~GeneratorDittoMC() = default; + + private: + static Ditto::Config makeConfig(const TString& tuneFile) + { + Ditto::Config config; + if (tuneFile.IsNull()) { + throw std::runtime_error("DITTO_TUNE_FILE must point to a Ditto tune file"); + } + config.tuneFile = tuneFile; + + const char* alienProcId = std::getenv("ALIEN_PROC_ID"); + config.seed = alienProcId ? static_cast(std::atoll(alienProcId)) : 0; + Printf("Using Ditto tune: %s and seed: %lu\n", config.tuneFile.c_str(), config.seed); + return config; + } + + Ditto::Generator mGenerator; +}; + +FairGenerator* generator_DittoMC(const TString& tuneFile) +{ + return new GeneratorDittoMC(tuneFile); +}