HepMC3 migration and multi-threaded generation phase
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