ATLAS Offline Software
Classes
FPGATrackSimHoughTransformTool.h File Reference

Implements road finding using a Hough transform. More...

#include "GaudiKernel/ServiceHandle.h"
#include "AthenaBaseComps/AthAlgTool.h"
#include "FPGATrackSimObjects/FPGATrackSimTypes.h"
#include "FPGATrackSimObjects/FPGATrackSimVectors.h"
#include "FPGATrackSimObjects/FPGATrackSimRoad.h"
#include "FPGATrackSimObjects/FPGATrackSimHit.h"
#include "FPGATrackSimObjects/FPGATrackSimTrackPars.h"
#include "FPGATrackSimHough/IFPGATrackSimRoadFinderTool.h"
#include "FPGATrackSimHough/IFPGATrackSimRoadFilterTool.h"
#include "FPGATrackSimBanks/IFPGATrackSimBankSvc.h"
#include "FPGATrackSimMaps/IFPGATrackSimMappingSvc.h"
#include "FPGATrackSimConfTools/IFPGATrackSimEventSelectionSvc.h"
#include "TFile.h"
#include <string>
#include <vector>
#include <utility>
#include <unordered_set>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  FPGATrackSimHoughTransformTool
 

Detailed Description

Implements road finding using a Hough transform.

Author
Riley Xu - riley.nosp@m..xu@.nosp@m.cern..nosp@m.ch
Date
October 31st, 2020 Declarations in this file: class FPGATrackSimHoughTransformTool : public AthAlgTool, virtual public IFPGATrackSimRoadFinderTool

Using the Lorentz force equation, one can relate the phi of a track and the coordinate of a single hit:

 A * q / pT = sin(phi_track - phi_hit) / r

where A : 3 * 10^-4 GeV / (c*mm*e) q : charge of the particle pT : transverse momentum r : cylindrical radius of the hit from the beamline phi : in radians

Here, q/pT and phi_track are unknown. This equation forms a line in q/pT vs phi_track space. Each hit will have its own line based on its phi and r. However, note that hits belonging to the same track will have lines that intersect at the track's q/pT and phi. In this manner, we can conduct pattern -matching by looking for intersections of these pT-phi lines.

To easily find intersections, we first pixelate (equivalently, we make a 2d histogram from) the graph of all the hit's lines in q/pT vs phi_track space. We then apply a convolution (i.e. a scanning window) to pick out points with multiple lines going through them. These points become our roads.

In principle the Hough transform can be used for an entire region (i.e. .2 phi x .2 eta) or larger. However this can lead to an excessive number of hits/lines in the transform image, leading to spurious intersections. Instead, we can use multiple transforms that each cover a slice in z0, and simply combine all the roads found.

References: Martensson Thesis: http://uu.diva-portal.org/smash/get/diva2:1341509/FULLTEXT01.pdf

Definition in file FPGATrackSimHoughTransformTool.h.