Skip to content

HepMC3 migration and multi-threaded generation phase

Dominik Muller requested to merge hepmc3_migration into master

Migration of the generation phase to HepMC3. HepMC events are currently stored temporarily on the TES as std::vector<HepMC::GenEvent>

Done:

  • Migration of Gen/Generators, Gen/LbPythia8 and Gen/LbPGuns
  • Can generate events and fill the monitoring diagrams
  • Modernization of involved algorithms to be able to read non-DataObjects from TES
  • Thread-safe GenCounters using atomics
  • Algorithm to optionally write HepMC into ROOT (either TTree or native format), ASCII or HEPEVT files.
  • Thread safe random numbers using engines local to algorithm's executes
  • Multi-threaded generation phase (with locked access to Pythia)
  • Validation executable to compare generated files to check reproducibility

ToDo:

  • Modernize all involved tools (use of Gaudi::Property etc)
  • Remove remaining dependence on LHCb::HepMCEvent (mainly due to the particle Status codes)

Once ready, I will rebase this branch to repackage and squash commits to a more logical structure

Edited by Dominik Muller

Merge request reports