Functional charged ProtoParticle making
!393 (merged) adds ProtoParticle making to Moore but it requires that the algorithms get explicitly scheduled. as the charged ProtoParticle making is not Functional at the moment. Neutral ProtoParticle making is Functional and can be handled by the scheduler.
Problem:
The ProtoParticle is essentially a collection of pointers which links the objects of different detectors to each other. The core of the charged ProtoParticle is always the Track and then PID informations gets added to it. The way it is done is that first a ProtoParticle object is created by the FunctionalChargedProtoParticleMaker
and then in subsequent algorithms the PID information is added. This inherently breaks the model the const TES as the ProtoParticle needs to be updated. Algorithms like ChargedProtoParticleAddMuonInfo
have been updated in LHCb!2422 (merged) and Rec!1866 (merged) to declare their dependencies via DataHandles but the ProtoParticle getes updated and is not declared as an output. Therefore, this dependency is hidden to scheduler and it needs to be manually defined in which order to execute the algorithms. The whole data flow
can be seen in LHCb!2422 (merged). Additionally, algorithms like ChargedProtoCombineDLLsAlg
or the ANNPID algorithms have only ProtoParticles as input and update them.
Possible solutions:
- One solution to make the sequence of algorithms functional would be to create one algorithm which creates ProtoParticles and fills all PID information.
- Rethink the ProtoParticle while making the algorithms functional. Some ideas can be found here and here. And a very basic implementation was started here. Note, the links mention particles and not proto particles but in the case of charged basic particle the particle is essentially a proto particle with an assigned mass hypothesis.