Fixed the "pythia-bug" in Lamarr
The mechanism with which particles are imported from HepMC to MCParticles in Lamarr is as follows:
- Find the pp collisions and store an identifier of the primary vertices in a list
- Loop over all the particles in HepMC event to find those produced from the primary vertex
- Descend the decay tree down to the stable particles, skipping Pythia-internal particles such as quarks, gluons, diquarks...
- Copy and reorganize particle properties from HepMC format to
LHCb::MCParticle
objects and store them in TES
This works perfectly with ParticleGun but with Pythia there is a problem: if the prompt-produced particle is represented by Pythia as produced from the decay of a quark or diquark (fragmentation) then those intermediate particles are filtered out by Lamarr before checking their decay products rejecting the whole decay chain.
This MR is to refactor the code of LamarrPropagator in order to separate the decay tree traversal from the filter on the particle nature.
The fix has been tested on 100 D*+ decays and there is nothing obviously wrong, but before merging we need:
-
to check with larger statistics and produce some plot of the reconstructed quantities -
ensure MC truth matching is still working
Edited by Lucio Anderlini