Skip to content

FPGATrackSimGenScanTool: inside-out (pixel-only) pattern recognition

Elliot Lipeles requested to merge lipeles/athena:lipeles_dev2 into main

This is the final merge request to get the FPGATrackSimGenScanTool inside-out (pixel-only) pattern recognition in.

It includes two large classes (with some sub-classes): FGPATrackSimGenScanTool and FGPATrackSimGenScanMonitoring There are too inter-connected to be easily separated into different merge requests because the Tool needs to call the monitoring at appropriate points, and the monitoring needs access to the tool internal classes to interpret the data passes to it.

Also includes: -- adding access to Truth tracks for pattern recognition performance monitoring (default behavior is unchanged) -- configuration GenScanTool in FGPATrackSimAlgorithmConfig.py -- configuration of the GenScanTool cuts with a new python file: FGPATrackSimGenScanCut.py -- flag to turn-off overlap removal (was needed for development tests, default behavior is unchanged)

The summary below (copied from the top of FPGATrackSimGenScanTool.h) explains the general structure of the code. The FPGATrackSimGenScanBinningBase and FPGATrackSimGenScanArray classes have already been merged.

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 separate corresponding .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). - There is an internal subclass FPGATrackSimGenScanTool::HitPairSet to store sets of hit pairs and calculate relevan variables. - 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.

@jahreda @brosser

Merge request reports

Loading