ATLAS Offline Software
|
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/FPGATrackSimFunctions.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>
Go to the source code of this file.
Classes | |
class | FPGATrackSimHoughTransformTool |
Implements road finding using a Hough transform.
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.