Implements a generalized 5d scan which filters pair of hits in bins linearized about nominal trajectory.
- Author
- Elliot Lipeles
- Date
- Sept 6th, 2024 Declarations in this file: class FPGATrackSimGenScanTool : public AthAlgTool, virtual public IFPGATrackSimRoadFinderTool
Overview of structure:
- This tool generalized a Hough transform to scan in up to 5 track paramters (e.g. pt,eta,phi,d0,z0). Slides documenting algorithm and performance can be found here: https://its.cern.ch/jira/browse/EFTRACK-195
- The 5 parameters are defined by a abstract base class "FPGATrackSimGenScanBinningBase" which is in seperate corresponing .h and .cxx files. Included there are the base class and implementations for the "StdBinning" = (pt,eta,phi,d0,z0) but also a KeyLyr based version which bins tracks by the phi and z values at two radii and a sagitta parameter (called xm here). See implementation details in that header.
- FPGATrackSimGenScanBinning can define some of the 5 parameters to be "slice", "scan", and "row". E.g. a classic 2d-Hough could be implemented by defining slice parameters to be eta,z0 scan to be pT, and row to be phi (with d0 unused)
- In order to efficiently navigate and iterate over the 5d bins, a dedicated array class has been developed in FPGATrackSimGenScanArray.
- After binning it creates pairs of hits in sequential layers and applies pair filter cuts to those to enforce consistency with the bin they are found in. The cuts are based on internal "phiShift" and "etaShift" values that are calcualted as deviations the bins nominal track trajectory. The exact meaning of the phi and eta parameter can be changed in the FPGATrackSimGenScanBinning implementations. There is an internal subclass FPGATrackSimGenScanTool::HitPair to store hit pairs and calculates relevant variables.
- There is internal subclass FPGATrackSimGenScanTool::StoredHit to store a hits with their bin specific phiShifts/etaShifts
- There is internal subclass FPGATrackSimGenScanTool::BinEntry to store set of StoredHits for a bin and calculates some relevant local quantities
- The tool then groups the pairs of hits into pairsets that are consistent (e.g. match translationally and in slope).
- This code has detailed monitoring implemented in FPGATrackSimGenScanMonitoring to plot all the variables that are cut on and uses truth information to make histograms for these variables only in the bin which the track should be reconstructed. This allows for: semi-automatic cut tuning, detailed internal dataflow numbers for firmware planning, and produces event displays using internal values for low-level debugging and investigations.
References:
Definition in file FPGATrackSimGenScanTool.h.