Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions MC/config/ALICE3/ini/ditto_pp_136tev.ini
Original file line number Diff line number Diff line change
@@ -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")
62 changes: 62 additions & 0 deletions MC/config/ALICE3/pythia8/generator_DittoMC.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include "Ditto.h"

#include <algorithm>
#include <cstdint>
#include <cstdlib>
#include <stdexcept>

#if !defined(__CLING__) || defined(__ROOTCLING__)

#include <SimulationDataFormat/MCGenProperties.h>

#include <Generators/GeneratorPythia8.h>
#include <Pythia8/Pythia.h>

#include <FairGenerator.h>
#include <FairPrimaryGenerator.h>

#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::uint64_t>(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);
}
Loading