SLIDE 2 2
Review recommendation: modularization
different tracking flows were living in a single module, tracking functionality was also included in the module code tracking functionality extracted to algorithm classes
PMAlgTrackingBase for common things: input data, output of reconstruction, basic PMA algorithms and tracking functionality (actually only helper for isochron tracks is common for two derived algs) PMAlgTracker: set of methods for matching 2D clusters and building/extending/stiching tracks PMAlgFitter: more input data (PFParticles and associations), and simple methods to create trajectory fits to track-like objects and segment fits to initial parts of shower-like objects vertexing functionality avalilable to both algorithms, now used only by „full” tracking algorithm (where it is free to decide on track breaking); need to add more simple way of using it with „fit only” algorithm (where it could do a good job of fitting many tracks from a single vertex) but need convention on particle-interaction vertex in input data products…
two specialized modules implemented
PMAlgTrackMaker_module to work on 2D clusters at input and do the complete event topology reconstruction (3D tracks, 3D vertices, particle hierarchy) PMAlgTrajFitter_module to create only 3D trajectory fits for the elsewhere prepared topology (particles associated to their 2D clusters are the input)
- nly relevant data products registered
less complicated configuration no „if-elses” in the module flow
some other recommendations done while moving code
FHiCL parameter set validation in all PMA algorithms and modules no allocated memory out of produce() methods, algorithms are local to produce() minor cosmetics, e.g.: use art::InputTag instead of std::string labels, use std::make_unique instead of std::unique_ptr constructors