ATLAS Offline Software
FPGATrackSimHoughTransformTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimHOUGHTRANSFORMTOOL_H
4 #define FPGATrackSimHOUGHTRANSFORMTOOL_H
5 
47 #include "GaudiKernel/ServiceHandle.h"
49 
61 
62 #include "TFile.h"
63 
64 #include <string>
65 #include <vector>
66 #include <utility>
67 #include <unordered_set>
68 
69 
70 /* I adopt the following nomenclature within this class:
71  * image: The 'graph' in q/pT vs phi_track space, filled with a line calculated as above for each hit.
72  * point: A specific q/pT and phi_track bin in the above image; i.e. what is normally called a pixel
73  * but I don't want to confuse this with the detector type. A point's value is the number of
74  * lines that go through it.
75  *
76  * For the first iteration, x refers to phi_track, and y refers to q/pT, although
77  * this should remain flexible. These are set via the variables m_par_x and m_par_y.
78  *
79  * NOTE: We store the image in graph sense and not computer-science sense. That is,
80  * the row-index is y. The y-axis still points downwards, so that y=0 represents the
81  * lowest bin.
82  * image[y=0][x=0] : lowest q/pT and lowest phi_track bin
83  * image[y=size-1][x=0] : highest q/pT and lowest phi_track bin
84  *
85  * I use the following units for relevant variables:
86  * x,y,z,r : mm
87  * q : e
88  * pT : GeV / c
89  */
90 class FPGATrackSimHoughTransformTool : public extends <AthAlgTool, IFPGATrackSimRoadFinderTool>
91 {
92  public:
94  using base_class::base_class;
95 
96  virtual StatusCode initialize() override;
97 
99  // IFPGATrackSimRoadFinderTool
100 
101  virtual StatusCode getRoads(const std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits, std::vector<std::shared_ptr<const FPGATrackSimRoad>> & roads) override;
102 
104  // FPGATrackSimHoughTransformTool
105 
106  double getMinX() const { return m_parMin[m_par_x]; }
107  double getMaxX() const { return m_parMax[m_par_x]; }
108  double getMinY() const { return m_parMin[m_par_y]; }
109  double getMaxY() const { return m_parMax[m_par_y]; }
110  unsigned getThreshold() const { return m_threshold[m_threshold.size() / 2]; }
111  virtual int getSubRegion() const override{return m_subRegion;}
112 
113  double yToX(double y, const std::shared_ptr<const FPGATrackSimHit> &hit) const;
114 
115 
117  // An image is a 2d array of points, where each point has a value.
118  // The value starts as the number of hit layers, but can change with effects
119  // like a convolution. Also stored are all hits that contributed to each bin.
120  // Size m_imageSize_y * m_imageSize_x. (NOTE y is row coordinate)
121  Image const & getImage() const { return m_image; } // Returns the image generated from the last call of getRoads
122 
123  //used for FPGA emulation
124  struct pos
125  {
126  int x;
127  int y;
128  int layer;
129  };
130 
131  struct LUT
132  {
135  int layer;
136  std::vector<pos> output;
137  };
138  int m_bitlength = 16;
139 
140  private:
141 
143  // Handles
144 
145  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel {this, "FPGATrackSimEventSelectionSvc", ""};
146  ServiceHandle<IFPGATrackSimBankSvc> m_FPGATrackSimBankSvc {this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"};
147  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
149  // Properties
150 
151 
152  // === Image ===
153  FPGATrackSimTrackPars m_parMin; // These are the bounds of the image, i.e. the region of interest
154  FPGATrackSimTrackPars m_parMax; // Only the two parameters chosen above are used for the image, however others may be used for slicing
155 
158 
159  Gaudi::Property <int> m_subRegion { this, "subRegion", 0," -1 for entire region (no slicing)"};
160  Gaudi::Property <float> m_tempMin_phi { this, "phi_min", 0, "min phi"};
161  Gaudi::Property <float> m_tempMax_phi { this, "phi_max", 0, "max phi"};
162  Gaudi::Property <float> m_tempMin_qOverPt { this, "qpT_min", 0, "min q/pt"};
163  Gaudi::Property <float> m_tempMax_qOverPt { this, "qpT_max", 0, "max q/pt"};
164  Gaudi::Property <float> m_tempMin_d0 { this, "d0_min", 0, "min q/pt"};
165  Gaudi::Property <float> m_tempMax_d0 { this, "d0_max", 0, "max q/pt"};
166  Gaudi::Property<std::vector<int> > m_threshold { this, "threshold", {},"Minimum number of hit layers to fire a road"};
167  Gaudi::Property <unsigned> m_imageSize_x { this, "nBins_x", 0, ""};
168  Gaudi::Property <unsigned> m_imageSize_y { this, "nBins_y", 0, ""};
169  Gaudi::Property<std::vector<int> > m_conv { this, "convolution", {}, "Convolution filter, with size m_convSize_y * m_convSize_x"};
170  Gaudi::Property<std::vector<unsigned> > m_combineLayers { this, "combine_layers", {}, ""};
171  Gaudi::Property<std::vector<unsigned> > m_binScale { this, "scale", {}, "Vector containing the scales for each layers"};
172  Gaudi::Property <unsigned> m_convSize_x { this, "convSize_x", 0, ""};
173  Gaudi::Property <unsigned> m_convSize_y { this, "convSize_y", 0, ""};
174  Gaudi::Property<std::vector<unsigned> > m_hitExtend_x { this, "hitExtend_x", {}, "Hit lines will fill extra bins in x by this amount on each side, size == nLayers"};
175  Gaudi::Property <bool> m_traceHits { this, "traceHits", true, "Trace each hit that goes in a bin. Disabling this will save memory/time since each bin doesn't have to store all its hits but the roads created won't have hits from convolution, etc."};
176  Gaudi::Property <bool> m_localMaxWindowSize { this, "localMaxWindowSize", 0, "Only create roads that are a local maximum within this window size. Set this to 0 to turn off local max filtering"};
177  Gaudi::Property <bool> m_fieldCorrection { this, "fieldCorrection", true, "Apply corrections to hough equation due to field nonuniformity"};
178  Gaudi::Property <bool> m_useSectors { this, "useSectors", false, "Will reverse calculate the sector for track-fitting purposes"};
179  Gaudi::Property <bool> m_idealGeoRoads { this, "IdealGeoRoads", true, "Set sectors to use ideal geometry fit constants"};
180  Gaudi::Property <bool> m_doRegionalMapping { this, "RegionalMapping", false, "Use the sub-region maps to define the sector"};
181  Gaudi::Property <bool> m_doEtaPatternConsts { this, "doEtaPatternConsts", false, "Whether to use the eta pattern tool for constant generation"};
182  Gaudi::Property <bool> m_useSpacePoints { this, "useSpacePoints", false, "Whether we are using spacepoints."};
183  Gaudi::Property <std::string> m_houghType { this, "houghType", "Original", "Switch Hough strategy. Original: close to mathematical HT, LowResource: emulate pre calculated LUTs base FPGA performance, Flexible: emulate culculation on FPGA performance"};
184  Gaudi::Property <bool> m_roadMerge { this, "roadMerge", false};
185  Gaudi::Property <std::string> m_requirements { this, "requirements", "", "path of the requirements file"};
186 
187  //Parameters generally used by Hough Transform 2D Flexible
188  Gaudi::Property <int> m_r_max { this, "r_max", 2047," - maximum -"};
189  Gaudi::Property <int> m_phi_coord_max { this, "phi_coord_max", 65535," - maximum - phi"};
190  Gaudi::Property <double> m_phi_range { this, "phi_range", 6.399609375,"range of phi in rad, customized ofr the algo"};
191  Gaudi::Property <double> m_r_max_mm { this, "r_max_mm", 1137.5,"r value maximum used in the mm-to-bits conversion"};
192  Gaudi::Property <int> m_bitwise_qApt_conv { this, "bitwise_qApt_conv", 16384, "exponential of 2 to multiply with qA/pt in case the latter in < 1"};
193  Gaudi::Property <int> m_bitwise_phi0_conv { this, "bitwise_phi0_conv", 1, "exponential of 2 to multiply with phi0 in case the latter in < 1"};
194  Gaudi::Property <int> m_phi0_sectors { this, "phi0_sectors", 1,"firmware method to draw monotonic lines. separation alongside phi0"};
195  Gaudi::Property <int> m_qApt_sectors { this, "qApt_sectors", 7,"firmware method to draw monotonic lines. separation alongside qA/pt"};
196  Gaudi::Property <int> m_pipes_qApt { this, "pipes_qApt", 8,"!!!!!!MAX 32 !!!!!!clock domains separation alongside qA/pt bins"};
197  Gaudi::Property <int> m_pipes_phi0 { this, "pipes_phi0", 1," !!!!!!MAX 32 !!!!!!clock domains separation alongside phi0 bins"};
198 
199  std::vector<std::vector<unsigned>> m_combineLayer2D; // 2d array of combined layers i.e. [[1,2,3],[0,4,5],[6,7]] will combine (L1, L2, L3), (L0, L4, L5), (L6, L7)
200 
202  // Convenience
203 
204  unsigned m_nLayers = 0U; // alias to m_FPGATrackSimMapping->PlaneMap1stStage()->getNLogiLayers();
205  unsigned m_nCombineLayers = 0U; // number of layers after combined
206 
207  double m_step_x = 0; // step size of the bin boundaries in x
208  double m_step_y = 0; // step size of the bin boundaries in y
209  std::vector<double> m_bins_x; // size == m_imageSize_x + 1.
210  std::vector<double> m_bins_y; // size == m_imageSize_y + 1
211  // Bin boundaries, where m_bins_x[i] is the lower bound of bin i.
212  // These are calculated from m_parMin/Max.
213 
215  // Conistants for HT2D Flex
216  int m_HT_sel = 0;
217  long int m_one_r_const_twoexp = 0;
218  double m_phi0_min_bit = 0;
219  double m_qApt_min_bit = 0;
220  long int m_DBinQApt_bit_int = 0;
221  long int m_DBinPhi0_bit_int = 0;
222  long int m_qAptBins_bit = 0;
223  long int m_phi0Bins_bit = 0;
226  long int m_tot_bitwise_conv = 0;
228  long int m_qApt_min_post_conv = 0;
229 
231  // Event Storage
232 
234  std::vector<FPGATrackSimRoad> m_roads;
235 
236 
238  // Core
239 
240  // std::vector<FPGATrackSimHit const *> filterHits(std::vector<FPGATrackSimHit const *> const & hits) const;
241  Image createLayerImage(std::vector<unsigned> const & combine_layers, const std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits, unsigned const scale) const;
242  Image createImage(const std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits) const;
243  std::vector<std::vector<int>> lineGenLay(const std::shared_ptr<const FPGATrackSimHit> &hit) const;
244  Image convolute(Image const & image) const;
245 
247  // Helpers
248 
249  std::pair<unsigned, unsigned> yToXBins(size_t yBin_min, size_t yBin_max, const std::shared_ptr<const FPGATrackSimHit> &hit) const;
250  unsigned getExtension(unsigned y, unsigned layer) const;
251  bool passThreshold(Image const & image, unsigned x, unsigned y) const;
252  void addRoad(const std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>> & hits, layer_bitmask_t hitLayers, unsigned x, unsigned y);
253  void addRoad(const std::unordered_set<std::shared_ptr<const FPGATrackSimHit>> & hits, unsigned x, unsigned y);
254  void addRoad(const std::vector<std::shared_ptr<const FPGATrackSimHit>> & hits, unsigned x, unsigned y);
255  int conv(unsigned y, unsigned x) { return m_conv[y * m_convSize_x + x]; } // NOTE: y index is first
256  void drawImage(Image const & image, std::string const & name);
258  // FPGA emulation functions
259  std::vector<std::vector<std::vector<LUT>>> m_LUT;
260  std::vector<TH1D*> m_h_rfix;
261  void makeLUT(std::vector<std::vector<std::vector<LUT>>> &v_LUT,std::vector<TH1D*> &v_h, const std::string& tag="");
263 };
264 
265 
266 
267 #endif // FPGATrackSimHOUGHTRANSFORMTOOL_H
FPGATrackSimHoughTransformTool::m_one_r_const_twoexp_post_conv
long int m_one_r_const_twoexp_post_conv
Definition: FPGATrackSimHoughTransformTool.h:227
FPGATrackSimHoughTransformTool::m_bins_y
std::vector< double > m_bins_y
Definition: FPGATrackSimHoughTransformTool.h:210
FPGATrackSimHoughTransformTool::m_tempMax_qOverPt
Gaudi::Property< float > m_tempMax_qOverPt
Definition: FPGATrackSimHoughTransformTool.h:163
FPGATrackSimHoughTransformTool::pos::x
int x
Definition: FPGATrackSimHoughTransformTool.h:126
FPGATrackSimHoughTransformTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimHoughTransformTool.h:146
FPGATrackSimTrackPars::IHIP
@ IHIP
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimHoughTransformTool::m_phi_range
Gaudi::Property< double > m_phi_range
Definition: FPGATrackSimHoughTransformTool.h:190
FPGATrackSimHoughTransformTool::LUT::output
std::vector< pos > output
Definition: FPGATrackSimHoughTransformTool.h:136
FPGATrackSimHoughTransformTool::m_phi0_min_bit
double m_phi0_min_bit
Definition: FPGATrackSimHoughTransformTool.h:218
FPGATrackSimHoughTransformTool
Definition: FPGATrackSimHoughTransformTool.h:91
FPGATrackSimHoughTransformTool::lineGenLay
std::vector< std::vector< int > > lineGenLay(const std::shared_ptr< const FPGATrackSimHit > &hit) const
Definition: FPGATrackSimHoughTransformTool.cxx:462
FPGATrackSimHoughTransformTool::m_qApt_sectors
Gaudi::Property< int > m_qApt_sectors
Definition: FPGATrackSimHoughTransformTool.h:195
FPGATrackSimHoughTransformTool::m_LUT
std::vector< std::vector< std::vector< LUT > > > m_LUT
Definition: FPGATrackSimHoughTransformTool.h:259
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimHoughTransformTool::LUT::input_begin
int input_begin
Definition: FPGATrackSimHoughTransformTool.h:133
FPGATrackSimHoughTransformTool::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimHoughTransformTool.h:204
FPGATrackSimHoughTransformTool::m_useSectors
Gaudi::Property< bool > m_useSectors
Definition: FPGATrackSimHoughTransformTool.h:178
FPGATrackSimHoughTransformTool::m_nCombineLayers
unsigned m_nCombineLayers
Definition: FPGATrackSimHoughTransformTool.h:205
FPGATrackSimHoughTransformTool::m_fieldCorrection
Gaudi::Property< bool > m_fieldCorrection
Definition: FPGATrackSimHoughTransformTool.h:177
FPGATrackSimHoughTransformTool::addRoad
void addRoad(const std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit >>> &hits, layer_bitmask_t hitLayers, unsigned x, unsigned y)
Definition: FPGATrackSimHoughTransformTool.cxx:724
FPGATrackSimHoughTransformTool::pos::y
int y
Definition: FPGATrackSimHoughTransformTool.h:127
FPGATrackSimHoughTransformTool::m_traceHits
Gaudi::Property< bool > m_traceHits
Definition: FPGATrackSimHoughTransformTool.h:175
FPGATrackSimHoughTransformTool::m_pipes_qApt
Gaudi::Property< int > m_pipes_qApt
Definition: FPGATrackSimHoughTransformTool.h:196
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimHoughTransformTool::LUT::layer
int layer
Definition: FPGATrackSimHoughTransformTool.h:135
FPGATrackSimHoughTransformTool::m_qAptBins_bit
long int m_qAptBins_bit
Definition: FPGATrackSimHoughTransformTool.h:222
FPGATrackSimHoughTransformTool::m_r_max
Gaudi::Property< int > m_r_max
Definition: FPGATrackSimHoughTransformTool.h:188
IFPGATrackSimMappingSvc.h
FPGATrackSimHoughTransformTool::m_binScale
Gaudi::Property< std::vector< unsigned > > m_binScale
Definition: FPGATrackSimHoughTransformTool.h:171
FPGATrackSimHoughTransformTool::drawImage
void drawImage(Image const &image, std::string const &name)
FPGATrackSimHoughTransformTool::m_parMin
FPGATrackSimTrackPars m_parMin
Definition: FPGATrackSimHoughTransformTool.h:153
FPGATrackSimHoughTransformTool::m_combineLayers
Gaudi::Property< std::vector< unsigned > > m_combineLayers
Definition: FPGATrackSimHoughTransformTool.h:170
FPGATrackSimHoughTransformTool::m_phi_coord_max
Gaudi::Property< int > m_phi_coord_max
Definition: FPGATrackSimHoughTransformTool.h:189
FPGATrackSimHoughTransformTool::m_idealGeoRoads
Gaudi::Property< bool > m_idealGeoRoads
Definition: FPGATrackSimHoughTransformTool.h:179
FPGATrackSimHoughTransformTool::LUT
Definition: FPGATrackSimHoughTransformTool.h:132
FPGATrackSimHoughTransformTool::m_tempMin_phi
Gaudi::Property< float > m_tempMin_phi
Definition: FPGATrackSimHoughTransformTool.h:160
FPGATrackSimHoughTransformTool::createImage
Image createImage(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits) const
Definition: FPGATrackSimHoughTransformTool.cxx:342
FPGATrackSimHoughTransformTool::m_convSize_x
Gaudi::Property< unsigned > m_convSize_x
Definition: FPGATrackSimHoughTransformTool.h:172
FPGATrackSimHoughTransformTool::m_conv
Gaudi::Property< std::vector< int > > m_conv
Definition: FPGATrackSimHoughTransformTool.h:169
IFPGATrackSimRoadFinderTool.h
Interface declaration for road finder tools.
FPGATrackSimHoughTransformTool::m_imageSize_y
Gaudi::Property< unsigned > m_imageSize_y
Definition: FPGATrackSimHoughTransformTool.h:168
FPGATrackSimHoughTransformTool::m_qApt_bins_first_sector
long int m_qApt_bins_first_sector
Definition: FPGATrackSimHoughTransformTool.h:225
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
x
#define x
FPGATrackSimHoughTransformTool::getMinY
double getMinY() const
Definition: FPGATrackSimHoughTransformTool.h:108
FPGATrackSimHoughTransformTool::makeLUT
void makeLUT(std::vector< std::vector< std::vector< LUT >>> &v_LUT, std::vector< TH1D * > &v_h, const std::string &tag="")
Definition: FPGATrackSimHoughTransformTool.cxx:787
FPGATrackSimHoughTransformTool::m_par_y
FPGATrackSimTrackPars::pars_index m_par_y
Definition: FPGATrackSimHoughTransformTool.h:157
FPGATrackSimHoughTransformTool::m_bins_x
std::vector< double > m_bins_x
Definition: FPGATrackSimHoughTransformTool.h:209
FPGATrackSimHoughTransformTool::m_tempMax_phi
Gaudi::Property< float > m_tempMax_phi
Definition: FPGATrackSimHoughTransformTool.h:161
FPGATrackSimHoughTransformTool::m_tempMax_d0
Gaudi::Property< float > m_tempMax_d0
Definition: FPGATrackSimHoughTransformTool.h:165
FPGATrackSimHoughTransformTool::m_qApt_min_bit
double m_qApt_min_bit
Definition: FPGATrackSimHoughTransformTool.h:219
FPGATrackSimHoughTransformTool::m_tempMin_qOverPt
Gaudi::Property< float > m_tempMin_qOverPt
Definition: FPGATrackSimHoughTransformTool.h:162
FPGATrackSimHoughTransformTool::m_par_x
FPGATrackSimTrackPars::pars_index m_par_x
Definition: FPGATrackSimHoughTransformTool.h:156
FPGATrackSimHoughTransformTool::conv
int conv(unsigned y, unsigned x)
Definition: FPGATrackSimHoughTransformTool.h:255
FPGATrackSimHoughTransformTool::m_localMaxWindowSize
Gaudi::Property< bool > m_localMaxWindowSize
Definition: FPGATrackSimHoughTransformTool.h:176
FPGATrackSimHoughTransformTool::pos::layer
int layer
Definition: FPGATrackSimHoughTransformTool.h:128
FPGATrackSimHoughTransformTool::m_phi0Bins_bit
long int m_phi0Bins_bit
Definition: FPGATrackSimHoughTransformTool.h:223
FPGATrackSimHoughTransformTool::m_step_y
double m_step_y
Definition: FPGATrackSimHoughTransformTool.h:208
FPGATrackSimVectors.h
Defines several vector wrappers for homogenous multi-dimensional vectors, declared as 1D arrays for l...
vector2D
Definition: FPGATrackSimVectors.h:28
FPGATrackSimHoughTransformTool::m_bitwise_phi0_conv
Gaudi::Property< int > m_bitwise_phi0_conv
Definition: FPGATrackSimHoughTransformTool.h:193
FPGATrackSimHoughTransformTool::yToXBins
std::pair< unsigned, unsigned > yToXBins(size_t yBin_min, size_t yBin_max, const std::shared_ptr< const FPGATrackSimHit > &hit) const
Definition: FPGATrackSimHoughTransformTool.cxx:684
FPGATrackSimHoughTransformTool::getThreshold
unsigned getThreshold() const
Definition: FPGATrackSimHoughTransformTool.h:110
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimHoughTransformTool::getMinX
double getMinX() const
Definition: FPGATrackSimHoughTransformTool.h:106
FPGATrackSimHoughTransformTool::convolute
Image convolute(Image const &image) const
Definition: FPGATrackSimHoughTransformTool.cxx:360
AthAlgTool.h
FPGATrackSimHoughTransformTool::getSubRegion
virtual int getSubRegion() const override
Definition: FPGATrackSimHoughTransformTool.h:111
FPGATrackSimHoughTransformTool::LUT::input_end
int input_end
Definition: FPGATrackSimHoughTransformTool.h:134
FPGATrackSimHoughTransformTool::getExtension
unsigned getExtension(unsigned y, unsigned layer) const
Definition: FPGATrackSimHoughTransformTool.cxx:710
FPGATrackSimHoughTransformTool::getMaxX
double getMaxX() const
Definition: FPGATrackSimHoughTransformTool.h:107
FPGATrackSimHoughTransformTool::m_convSize_y
Gaudi::Property< unsigned > m_convSize_y
Definition: FPGATrackSimHoughTransformTool.h:173
FPGATrackSimHoughTransformTool::m_step_x
double m_step_x
Definition: FPGATrackSimHoughTransformTool.h:207
FPGATrackSimHoughTransformTool::pos
Definition: FPGATrackSimHoughTransformTool.h:125
FPGATrackSimHoughTransformTool::m_roads
std::vector< FPGATrackSimRoad > m_roads
Definition: FPGATrackSimHoughTransformTool.h:234
FPGATrackSimHoughTransformTool::m_useSpacePoints
Gaudi::Property< bool > m_useSpacePoints
Definition: FPGATrackSimHoughTransformTool.h:182
FPGATrackSimHoughTransformTool::m_tot_bitwise_conv
long int m_tot_bitwise_conv
Definition: FPGATrackSimHoughTransformTool.h:226
FPGATrackSimHoughTransformTool::m_subRegion
Gaudi::Property< int > m_subRegion
Definition: FPGATrackSimHoughTransformTool.h:159
FPGATrackSimHoughTransformTool::m_phi0_sectors
Gaudi::Property< int > m_phi0_sectors
Definition: FPGATrackSimHoughTransformTool.h:194
FPGATrackSimHoughTransformTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimHoughTransformTool.cxx:32
FPGATrackSimHoughTransformTool::m_doRegionalMapping
Gaudi::Property< bool > m_doRegionalMapping
Definition: FPGATrackSimHoughTransformTool.h:180
IFPGATrackSimRoadFilterTool.h
Interface declaration for road filter tools.
FPGATrackSimHoughTransformTool::m_DBinQApt_bit_int
long int m_DBinQApt_bit_int
Definition: FPGATrackSimHoughTransformTool.h:220
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
FPGATrackSimTrackPars::pars_index
pars_index
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimHoughTransformTool::m_h_rfix
std::vector< TH1D * > m_h_rfix
Definition: FPGATrackSimHoughTransformTool.h:260
FPGATrackSimHoughTransformTool::m_DBinPhi0_bit_int
long int m_DBinPhi0_bit_int
Definition: FPGATrackSimHoughTransformTool.h:221
FPGATrackSimFunctions.h
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimHoughTransformTool::m_r_max_mm
Gaudi::Property< double > m_r_max_mm
Definition: FPGATrackSimHoughTransformTool.h:191
FPGATrackSimHoughTransformTool::m_imageSize_x
Gaudi::Property< unsigned > m_imageSize_x
Definition: FPGATrackSimHoughTransformTool.h:167
FPGATrackSimHoughTransformTool::m_qApt_min_post_conv
long int m_qApt_min_post_conv
Definition: FPGATrackSimHoughTransformTool.h:228
MyPlots.image
string image
Definition: MyPlots.py:42
FPGATrackSimHoughTransformTool::yToX
double yToX(double y, const std::shared_ptr< const FPGATrackSimHit > &hit) const
Definition: FPGATrackSimHoughTransformTool.cxx:439
FPGATrackSimTrackPars::IPHI
@ IPHI
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimHoughTransformTool::Image
vector2D< std::pair< int, std::unordered_set< std::shared_ptr< const FPGATrackSimHit > > > > Image
Definition: FPGATrackSimHoughTransformTool.h:116
FPGATrackSimHoughTransformTool::createLayerImage
Image createLayerImage(std::vector< unsigned > const &combine_layers, const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits, unsigned const scale) const
Definition: FPGATrackSimHoughTransformTool.cxx:249
FPGATrackSimHoughTransformTool::m_one_r_const_twoexp
long int m_one_r_const_twoexp
Definition: FPGATrackSimHoughTransformTool.h:217
FPGATrackSimHoughTransformTool::getRoads
virtual StatusCode getRoads(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits, std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads) override
Definition: FPGATrackSimHoughTransformTool.cxx:155
y
#define y
FPGATrackSimHoughTransformTool::passThreshold
bool passThreshold(Image const &image, unsigned x, unsigned y) const
Definition: FPGATrackSimHoughTransformTool.cxx:382
IFPGATrackSimEventSelectionSvc.h
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimHoughTransformTool::m_HT_sel
int m_HT_sel
Definition: FPGATrackSimHoughTransformTool.h:216
IFPGATrackSimBankSvc.h
FPGATrackSimHoughTransformTool::m_pipes_phi0
Gaudi::Property< int > m_pipes_phi0
Definition: FPGATrackSimHoughTransformTool.h:197
FPGATrackSimHoughTransformTool::getMaxY
double getMaxY() const
Definition: FPGATrackSimHoughTransformTool.h:109
FPGATrackSimHoughTransformTool::m_requirements
Gaudi::Property< std::string > m_requirements
Definition: FPGATrackSimHoughTransformTool.h:185
FPGATrackSimHoughTransformTool::m_roadMerge
Gaudi::Property< bool > m_roadMerge
Definition: FPGATrackSimHoughTransformTool.h:184
FPGATrackSimHoughTransformTool::m_bitlength
int m_bitlength
Definition: FPGATrackSimHoughTransformTool.h:138
FPGATrackSimHoughTransformTool::m_hitExtend_x
Gaudi::Property< std::vector< unsigned > > m_hitExtend_x
Definition: FPGATrackSimHoughTransformTool.h:174
FPGATrackSimHoughTransformTool::m_bitwise_qApt_conv
Gaudi::Property< int > m_bitwise_qApt_conv
Definition: FPGATrackSimHoughTransformTool.h:192
FPGATrackSimHoughTransformTool::getImage
Image const & getImage() const
Definition: FPGATrackSimHoughTransformTool.h:121
FPGATrackSimHoughTransformTool::m_doEtaPatternConsts
Gaudi::Property< bool > m_doEtaPatternConsts
Definition: FPGATrackSimHoughTransformTool.h:181
FPGATrackSimHoughTransformTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimHoughTransformTool.h:147
FPGATrackSimRoad.h
Defines a class for roads.
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
FPGATrackSimHoughTransformTool::m_phi0_bins_first_sector
long int m_phi0_bins_first_sector
Definition: FPGATrackSimHoughTransformTool.h:224
FPGATrackSimHoughTransformTool::m_tempMin_d0
Gaudi::Property< float > m_tempMin_d0
Definition: FPGATrackSimHoughTransformTool.h:164
FPGATrackSimHoughTransformTool::m_parMax
FPGATrackSimTrackPars m_parMax
Definition: FPGATrackSimHoughTransformTool.h:154
FPGATrackSimHoughTransformTool::m_combineLayer2D
std::vector< std::vector< unsigned > > m_combineLayer2D
Definition: FPGATrackSimHoughTransformTool.h:199
FPGATrackSimTypes.h
FPGATrackSimHoughTransformTool::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimHoughTransformTool.h:145
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimHoughTransformTool::m_houghType
Gaudi::Property< std::string > m_houghType
Definition: FPGATrackSimHoughTransformTool.h:183
FPGATrackSimHoughTransformTool::m_threshold
Gaudi::Property< std::vector< int > > m_threshold
Definition: FPGATrackSimHoughTransformTool.h:166
ServiceHandle< IFPGATrackSimEventSelectionSvc >
FPGATrackSimHoughTransformTool::m_image
Image m_image
Definition: FPGATrackSimHoughTransformTool.h:233