Add electrons with brem
The goal of this MR is to create electrons including brem recovery in the functional framework. This includes:
-
new
FunctionalBremAdder
: copy of BremAdder with minimal modifications to make it thread safe. -
new
ParticleWithBremMaker
: takes a container of particles and one of photons as input and creates new particles for which the momentum has been corrected by matching brem photons usingFunctionalBremAdder::addBrem
- the choice is made to copy all the particles, including the ones for which a matching brem is not found. This means the output and input container of particles are of the same size. This is done so analysts can then run directly on the output and get all the electrons (no matter if a matching brem was found or not)
- it checks that the input particles have tracks associated and don't have already brem added
-
new
FunctionalDiElectronMaker
: takes a container of particles and one of photons, builds pairs of particles, applies bremsstrahlung corrections ensuring that the same photon is not used to correct both electrons (usingFunctionalBremAdder::addBrem2Pair
), and builds a parent particle from the combination. This is based on the old DiElectronMaker but it has been made thread safe and simplified a lot by removing all the features that were never used. The major difference is that it takes particles instead of protoparticles as input. The current idea is that selections on the input particles are applied before and not inside the DiElectronMaker. Mass and PT cuts can be applied to the parent particle inside the DiElectronMaker.- if the standard vertex fit fails and for the case of converted photons, it uses
ParticleTransporter
to build the combined particle (inherited from the original code). The usage of this tool in aToolHandle
required to make all its methodsconst
. All the methods have been marked as such but no check has been done that they are actually const.
- if the standard vertex fit fails and for the case of converted photons, it uses
This is needed for Moore!669 (merged)