ATLAS Offline Software
FPGATrackSimHough1DShiftTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATRACKSIMHOUGH1DSHIFTTOOL_H
4 #define FPGATRACKSIMHOUGH1DSHIFTTOOL_H
5 
40 #include "GaudiKernel/ServiceHandle.h"
42 
52 
53 #include "TFile.h"
54 
55 #include <string>
56 #include <vector>
57 #include <map>
58 #include <boost/dynamic_bitset_fwd.hpp>
59 
60 
61 
62 /*
63  * The hits of an event are stored in a bit vector for each layer, with the number
64  * of bits being the number of phi bins. A hit sets a bit (or a range of bits to
65  * account for resolution effects) in the respective layer's bit vector.
66  *
67  * Shifting phi is now simply a bit shift of the bit vectors. Roads are created
68  * whenever a threshold number of layers have the same phi bin set after the shift.
69  *
70  * Shifts are precalculated in the initialize routine. Instead of iterating over
71  * q/pt, we can iterate over n-bin shift increments in the outer layer. Each shift
72  * in the outer layer uniquely determines a q/pt and the corresponding shifts in
73  * the other layers. This is better than a q/pt scan by taking into account the
74  * quantization in the binning. Actually, we can optimize even better by iterating
75  * over n-bin shifts in the difference between the inner and outer layer, to help
76  * account also for the hit extension.
77  *
78  * I use the following units for relevant variables:
79  * x,y,z,r : mm
80  * q : e
81  * pT : GeV / c
82  */
83 class FPGATrackSimHough1DShiftTool : public extends <AthAlgTool, IFPGATrackSimRoadFinderTool>
84 {
85  public:
86 
88  // AthAlgTool
89 
90  FPGATrackSimHough1DShiftTool(const std::string&, const std::string&, const IInterface*);
91 
92  virtual StatusCode initialize() override;
93  virtual StatusCode finalize() override;
94 
96  // FPGATrackSimRoadFinderToolI
97 
98  virtual StatusCode getRoads(const std::vector<const FPGATrackSimHit*> & hits, std::vector<FPGATrackSimRoad*> & roads) override;
99 
100  private:
101 
103  // Handles
104  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel {this, "FPGATrackSimEventSelectionSvc", "FPGATrackSimEventSelectionSvc"};
105  ServiceHandle<IFPGATrackSimBankSvc> m_FPGATrackSimBankSvc {this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"};
106  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping {this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
107 
109  // Properties
110 
111  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."};
112 
113  Gaudi::Property<bool> m_doEtaPatternConsts { this, "doEtaPatternConsts", false, "Whether to use the eta pattern tool for constant generation"};
114  Gaudi::Property<bool> m_useSpacePoints { this, "useSpacePoints", false, "Whether we are using spacepoints." };
115  Gaudi::Property<bool> m_useSectors { this, "useSectors", false, "Will reverse calculate the sector for track-fitting purposes" };
116  Gaudi::Property<bool> m_idealGeoRoads { this, "IdealGeoRoads", false, "Set sectors to use ideal geometry fit constants" };
117  Gaudi::Property<bool> m_doRegionalMapping { this, "RegionalMapping", false, "Use the sub-region maps to define the sector" };
118  Gaudi::Property<bool> m_drawHitMasks { this, "drawHitMasks", false, "Draws hit masks if true"};
119 
120  Gaudi::Property<int> m_subRegion { this, "subRegion", 0, "Sub region of this transform, or -1 for full region" };
121  Gaudi::Property<float> m_phiMin { this, "phiMin", 0, "Minimum phi of transform" };
122  Gaudi::Property<float> m_phiMax { this, "phiMax", 0, "Maximum phi of transform" };
123  Gaudi::Property<float> m_qptMin { this, "qptMin", 0, "Minimum q/pT of transform" };
124  Gaudi::Property<float> m_qptMax { this, "qptMax", 0, "Maximum q/pT of transform" };
125 
126  Gaudi::Property<unsigned> m_phiBins { this, "nBins", 0, "Number of phi bins used by transform." };
127  Gaudi::Property<unsigned> m_threshold { this, "threshold", 0, "Minimum number of layers hit to accept as a road (inclusive)" };
128  Gaudi::Property<unsigned> m_iterStep { this, "iterStep", 0, "Instead of iterating over steps in pT, we iterate over iterStep-bin shifts in iterLayer" };
129  Gaudi::Property<unsigned> m_iterLayer { this, "iterLayer", 0, "Instead of iterating over steps in pT, we iterate over iterStep-bin shifts in iterLayer" };
130 
131  Gaudi::Property<bool> m_useDiff { this, "useDiff", false, "Use the diff of inner and outer layer" };
132  Gaudi::Property<bool> m_variableExtend { this, "variableExtend", false, "Do variable extension based off of hit delta R" };
133  Gaudi::Property<bool> m_phiRangeCut {this, "phiRangeCut", false, "Require tracks to be in phi range to avoid counting minbias roads for larger region" };
134 
135  Gaudi::Property<float> m_d0spread {this, "d0spread", -1.0, "Make patterns with a d0spread as given, negative value turns it off" };
136  Gaudi::Property<std::vector<float>> m_hitExtendProperty {this, "hitExtend", {}, "Number of adjacent bins that a hit triggers" };
137  Gaudi::Property<std::string> m_bitShift_path { this, "bitShifts", "", "Instead of calculating bit shifts, input a list of shifts via a text file" };
138  Gaudi::Property<bool> m_applyDropable { this, "applyDropable", false, "Enable logic that prevents redundant patterns with dropped hits" };
139  Gaudi::Property<int> m_neighborWindow { this, "neighborWindow", 0, "Supress if neighbors have higher number of hit layers" };
140  Gaudi::Property<unsigned> m_historyWindow {this, "historyWindow", 0, "Suppress if previous N bit shifts have neighbors with higher nubmer of hit layers" };
141  Gaudi::Property<bool> m_fieldCorrection {this, "fieldCorrection", true, "Apply corrections to hough equation due to field nonuniformity" };
142  Gaudi::Property<float> m_enhanceHighPt {this, "enhanceHighPt", -1.0, "if positive, double number of patterns for region with qpT below value" };
143 
144 
145  std::vector<float> m_hitExtend; // need second copy because property is "const" and can't be changed to default
146  std::vector<float> m_r; // will be filled from m_radii_file (now loaded through region map class).
147 
149  // Convenience
150 
151  unsigned m_nLayers; // alias to m_FPGATrackSimMapping->PlaneMap1stStage()->getNLogiLayers();
152 
153  float m_phiStep; // width of one phi bin
154  std::vector<double> m_bins; // size == m_phiBins + 1.
155  // Bin boundaries, where m_bins[i] is the lower bound of bin i.
156  // These are calculated from m_phiMin/Max.
157 
158  FPGATrackSimTrackPars m_regionMin; // alias to m_EvtSel->getRegions()->getMin(m_EvtSel->getReginID())
159  FPGATrackSimTrackPars m_regionMax; // alias to m_EvtSel->getRegions()->getMax(m_EvtSel->getReginID())
160 
161  std::vector<std::vector<int>> m_shifts; // size (nShifts, nLayers)
162  std::vector<boost::dynamic_bitset<>> m_dropable; // size (nShifts, nLayers)
163  // for shift patterns, we can cut duplication by only allowing some layers to be missed when doing 7/8
164 
165  std::vector<float> m_qpt; // size (nShifts)
166  std::vector<std::vector<float>> m_phivals; // size (nShifts, nLayers)
167  std::vector<std::vector<int>> m_d0shifts; // size (nShifts, nLayers), optional subshifts by d0
168  std::vector<unsigned> m_currentcounts; // just here so we don't reallocate every call
169  std::deque<std::vector<unsigned>> m_vetolist; // last N events, bit string of hit layers per bin
170 
171 
173  // Event Storage
174 
175  std::vector<FPGATrackSimRoad> m_roads;
176 
178  // Metadata and Monitoring
179 
180  unsigned m_event = 0;
181  std::string m_name; // Gets the instance name from the full gaudi name
183 
185  // Helpers
186 
187  void calculateShifts();
188  float getPtFromShiftDiff(int shift) const;
189  void readShifts(std::string const & filepath);
190  std::vector<boost::dynamic_bitset<>> makeHitMasks(const std::vector<const FPGATrackSimHit*> & hits);
191 
192  FPGATrackSimRoad makeRoad(const std::vector<const FPGATrackSimHit*>& hits, int bin_track, size_t iShift);
193  void matchIdealGeoSector(FPGATrackSimRoad & r) const;
194  bool passThreshold(std::vector<boost::dynamic_bitset<>>& binHits, int bin ) const;
195  void printHitMasks(std::vector<boost::dynamic_bitset<>> const & hitMasks) const;
196 
197  void drawHitMasks(std::vector<boost::dynamic_bitset<>> const & hitMasks, std::string const & name);
198  void drawHitMasks(std::vector<boost::dynamic_bitset<>> const & hitMasks, std::string const & name, std::vector<int> const & shifts);
199  void printShifts() const;
200 
201  std::pair<int, int> getBins(const FPGATrackSimHit*) const;
202  float phitrkDiff(float r1, float phi1, float r2, float phi2) const;
203  std::pair<float, bool> phitrk(int bin, std::vector<int> const & shifts ) const; // returns phi of track and a bool if the
204  // value is invalid because at the edge
205  float qPt(float r, float deltaPhi) const;
206  float deltaPhi(float r, float qPt) const;
207 
208  void calculated0Shifts();
209  std::vector<int> applyVariation(const std::vector<int>& base, const std::vector<int>& var, int sign) const;
210  void calculateDropable();
211  std::vector<int> shiftWithDrop(std::vector<int>& shift,unsigned droplayer) const;
212 
213 
214 };
215 
216 
217 #endif // FPGATRACKSIMHOUGH1DSHIFTTOOL_H
FPGATrackSimHough1DShiftTool::printHitMasks
void printHitMasks(std::vector< boost::dynamic_bitset<>> const &hitMasks) const
Definition: FPGATrackSimHough1DShiftTool.cxx:665
FPGATrackSimHough1DShiftTool::deltaPhi
float deltaPhi(float r, float qPt) const
Definition: FPGATrackSimHough1DShiftTool.cxx:618
base
std::string base
Definition: hcg.cxx:78
FPGATrackSimHough1DShiftTool::m_traceHits
Gaudi::Property< bool > m_traceHits
Definition: FPGATrackSimHough1DShiftTool.h:111
beamspotman.r
def r
Definition: beamspotman.py:676
FPGATrackSimHough1DShiftTool::calculated0Shifts
void calculated0Shifts()
Definition: FPGATrackSimHough1DShiftTool.cxx:723
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
FPGATrackSimHough1DShiftTool::m_doEtaPatternConsts
Gaudi::Property< bool > m_doEtaPatternConsts
Definition: FPGATrackSimHough1DShiftTool.h:113
FPGATrackSimHough1DShiftTool::m_fieldCorrection
Gaudi::Property< bool > m_fieldCorrection
Definition: FPGATrackSimHough1DShiftTool.h:141
FPGATrackSimHough1DShiftTool::m_regionMax
FPGATrackSimTrackPars m_regionMax
Definition: FPGATrackSimHough1DShiftTool.h:159
FPGATrackSimHough1DShiftTool::m_phiStep
float m_phiStep
Definition: FPGATrackSimHough1DShiftTool.h:153
FPGATrackSimHough1DShiftTool::calculateShifts
void calculateShifts()
Definition: FPGATrackSimHough1DShiftTool.cxx:124
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimHough1DShiftTool::m_threshold
Gaudi::Property< unsigned > m_threshold
Definition: FPGATrackSimHough1DShiftTool.h:127
FPGATrackSimHough1DShiftTool::phitrk
std::pair< float, bool > phitrk(int bin, std::vector< int > const &shifts) const
Definition: FPGATrackSimHough1DShiftTool.cxx:605
FPGATrackSimHough1DShiftTool::m_qpt
std::vector< float > m_qpt
Definition: FPGATrackSimHough1DShiftTool.h:165
IFPGATrackSimMappingSvc.h
FPGATrackSimHough1DShiftTool::m_regionMin
FPGATrackSimTrackPars m_regionMin
Definition: FPGATrackSimHough1DShiftTool.h:158
FPGATrackSimHough1DShiftTool::getBins
std::pair< int, int > getBins(const FPGATrackSimHit *) const
Definition: FPGATrackSimHough1DShiftTool.cxx:564
FPGATrackSimHough1DShiftTool::m_phiMax
Gaudi::Property< float > m_phiMax
Definition: FPGATrackSimHough1DShiftTool.h:122
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimHough1DShiftTool::m_phiRangeCut
Gaudi::Property< bool > m_phiRangeCut
Definition: FPGATrackSimHough1DShiftTool.h:133
FPGATrackSimHough1DShiftTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimHough1DShiftTool.h:106
IFPGATrackSimRoadFinderTool.h
Interface declaration for road finder tools.
FPGATrackSimHough1DShiftTool::m_vetolist
std::deque< std::vector< unsigned > > m_vetolist
Definition: FPGATrackSimHough1DShiftTool.h:169
FPGATrackSimHough1DShiftTool::makeHitMasks
std::vector< boost::dynamic_bitset<> > makeHitMasks(const std::vector< const FPGATrackSimHit * > &hits)
Definition: FPGATrackSimHough1DShiftTool.cxx:418
FPGATrackSimHough1DShiftTool::m_doRegionalMapping
Gaudi::Property< bool > m_doRegionalMapping
Definition: FPGATrackSimHough1DShiftTool.h:117
FPGATrackSimHough1DShiftTool::m_subRegion
Gaudi::Property< int > m_subRegion
Definition: FPGATrackSimHough1DShiftTool.h:120
FPGATrackSimHough1DShiftTool::m_bins
std::vector< double > m_bins
Definition: FPGATrackSimHough1DShiftTool.h:154
FPGATrackSimHough1DShiftTool::m_applyDropable
Gaudi::Property< bool > m_applyDropable
Definition: FPGATrackSimHough1DShiftTool.h:138
FPGATrackSimHough1DShiftTool::m_currentcounts
std::vector< unsigned > m_currentcounts
Definition: FPGATrackSimHough1DShiftTool.h:168
FPGATrackSimHough1DShiftTool::shiftWithDrop
std::vector< int > shiftWithDrop(std::vector< int > &shift, unsigned droplayer) const
Definition: FPGATrackSimHough1DShiftTool.cxx:756
FPGATrackSimHit
Definition: FPGATrackSimHit.h:38
FPGATrackSimHough1DShiftTool::m_event
unsigned m_event
Definition: FPGATrackSimHough1DShiftTool.h:180
FPGATrackSimHough1DShiftTool::m_neighborWindow
Gaudi::Property< int > m_neighborWindow
Definition: FPGATrackSimHough1DShiftTool.h:139
FPGATrackSimHough1DShiftTool::m_dropable
std::vector< boost::dynamic_bitset<> > m_dropable
Definition: FPGATrackSimHough1DShiftTool.h:162
FPGATrackSimHough1DShiftTool::drawHitMasks
void drawHitMasks(std::vector< boost::dynamic_bitset<>> const &hitMasks, std::string const &name)
Definition: FPGATrackSimHough1DShiftTool.cxx:682
FPGATrackSimHough1DShiftTool::finalize
virtual StatusCode finalize() override
Definition: FPGATrackSimHough1DShiftTool.cxx:307
FPGATrackSimVectors.h
Defines several vector wrappers for homogenous multi-dimensional vectors, declared as 1D arrays for l...
FPGATrackSimHough1DShiftTool::m_variableExtend
Gaudi::Property< bool > m_variableExtend
Definition: FPGATrackSimHough1DShiftTool.h:132
FPGATrackSimHough1DShiftTool::m_shifts
std::vector< std::vector< int > > m_shifts
Definition: FPGATrackSimHough1DShiftTool.h:161
FPGATrackSimHough1DShiftTool::m_useSectors
Gaudi::Property< bool > m_useSectors
Definition: FPGATrackSimHough1DShiftTool.h:115
FPGATrackSimHough1DShiftTool::qPt
float qPt(float r, float deltaPhi) const
Definition: FPGATrackSimHough1DShiftTool.cxx:587
FPGATrackSimHough1DShiftTool::m_d0spread
Gaudi::Property< float > m_d0spread
Definition: FPGATrackSimHough1DShiftTool.h:135
FPGATrackSimHough1DShiftTool::m_hitExtendProperty
Gaudi::Property< std::vector< float > > m_hitExtendProperty
Definition: FPGATrackSimHough1DShiftTool.h:136
FPGATrackSimHough1DShiftTool::getRoads
virtual StatusCode getRoads(const std::vector< const FPGATrackSimHit * > &hits, std::vector< FPGATrackSimRoad * > &roads) override
Definition: FPGATrackSimHough1DShiftTool.cxx:316
FPGATrackSimHough1DShiftTool::m_historyWindow
Gaudi::Property< unsigned > m_historyWindow
Definition: FPGATrackSimHough1DShiftTool.h:140
FPGATrackSimHough1DShiftTool::FPGATrackSimHough1DShiftTool
FPGATrackSimHough1DShiftTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimHough1DShiftTool.cxx:39
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
FPGATrackSimHough1DShiftTool::m_useDiff
Gaudi::Property< bool > m_useDiff
Definition: FPGATrackSimHough1DShiftTool.h:131
FPGATrackSimHough1DShiftTool::m_idealGeoRoads
Gaudi::Property< bool > m_idealGeoRoads
Definition: FPGATrackSimHough1DShiftTool.h:116
AthAlgTool.h
FPGATrackSimHough1DShiftTool::m_qptMin
Gaudi::Property< float > m_qptMin
Definition: FPGATrackSimHough1DShiftTool.h:123
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
FPGATrackSimHough1DShiftTool::matchIdealGeoSector
void matchIdealGeoSector(FPGATrackSimRoad &r) const
Definition: FPGATrackSimHough1DShiftTool.cxx:489
FPGATrackSimHough1DShiftTool::phitrkDiff
float phitrkDiff(float r1, float phi1, float r2, float phi2) const
Definition: FPGATrackSimHough1DShiftTool.cxx:598
FPGATrackSimHough1DShiftTool::readShifts
void readShifts(std::string const &filepath)
Definition: FPGATrackSimHough1DShiftTool.cxx:190
FPGATrackSimHough1DShiftTool::m_qptMax
Gaudi::Property< float > m_qptMax
Definition: FPGATrackSimHough1DShiftTool.h:124
FPGATrackSimHough1DShiftTool::m_bitShift_path
Gaudi::Property< std::string > m_bitShift_path
Definition: FPGATrackSimHough1DShiftTool.h:137
FPGATrackSimHough1DShiftTool::m_iterLayer
Gaudi::Property< unsigned > m_iterLayer
Definition: FPGATrackSimHough1DShiftTool.h:129
FPGATrackSimHough1DShiftTool::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimHough1DShiftTool.h:104
FPGATrackSimHough1DShiftTool::m_drawHitMasks
Gaudi::Property< bool > m_drawHitMasks
Definition: FPGATrackSimHough1DShiftTool.h:118
FPGATrackSimHough1DShiftTool::m_phivals
std::vector< std::vector< float > > m_phivals
Definition: FPGATrackSimHough1DShiftTool.h:166
FPGATrackSimHough1DShiftTool::m_useSpacePoints
Gaudi::Property< bool > m_useSpacePoints
Definition: FPGATrackSimHough1DShiftTool.h:114
FPGATrackSimHough1DShiftTool::m_monitorFile
TFile m_monitorFile
Definition: FPGATrackSimHough1DShiftTool.h:182
FPGATrackSimHough1DShiftTool::calculateDropable
void calculateDropable()
Definition: FPGATrackSimHough1DShiftTool.cxx:765
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimHough1DShiftTool::m_r
std::vector< float > m_r
Definition: FPGATrackSimHough1DShiftTool.h:146
FPGATrackSimHough1DShiftTool::getPtFromShiftDiff
float getPtFromShiftDiff(int shift) const
Definition: FPGATrackSimHough1DShiftTool.cxx:556
IFPGATrackSimEventSelectionSvc.h
FPGATrackSimHough1DShiftTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimHough1DShiftTool.cxx:46
FPGATrackSimHough1DShiftTool::m_iterStep
Gaudi::Property< unsigned > m_iterStep
Definition: FPGATrackSimHough1DShiftTool.h:128
IFPGATrackSimBankSvc.h
FPGATrackSimHough1DShiftTool
Definition: FPGATrackSimHough1DShiftTool.h:84
FPGATrackSimHough1DShiftTool::m_roads
std::vector< FPGATrackSimRoad > m_roads
Definition: FPGATrackSimHough1DShiftTool.h:175
FPGATrackSimHough1DShiftTool::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimHough1DShiftTool.h:151
FPGATrackSimHough1DShiftTool::printShifts
void printShifts() const
Definition: FPGATrackSimHough1DShiftTool.cxx:707
FPGATrackSimHough1DShiftTool::m_phiBins
Gaudi::Property< unsigned > m_phiBins
Definition: FPGATrackSimHough1DShiftTool.h:126
FPGATrackSimHough1DShiftTool::applyVariation
std::vector< int > applyVariation(const std::vector< int > &base, const std::vector< int > &var, int sign) const
Definition: FPGATrackSimHough1DShiftTool.cxx:742
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimHough1DShiftTool::m_d0shifts
std::vector< std::vector< int > > m_d0shifts
Definition: FPGATrackSimHough1DShiftTool.h:167
FPGATrackSimHough1DShiftTool::passThreshold
bool passThreshold(std::vector< boost::dynamic_bitset<>> &binHits, int bin) const
Definition: FPGATrackSimHough1DShiftTool.cxx:382
FPGATrackSimTypes.h
FPGATrackSimHough1DShiftTool::m_phiMin
Gaudi::Property< float > m_phiMin
Definition: FPGATrackSimHough1DShiftTool.h:121
FPGATrackSimHough1DShiftTool::m_enhanceHighPt
Gaudi::Property< float > m_enhanceHighPt
Definition: FPGATrackSimHough1DShiftTool.h:142
FPGATrackSimHough1DShiftTool::m_hitExtend
std::vector< float > m_hitExtend
Definition: FPGATrackSimHough1DShiftTool.h:145
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:29
FPGATrackSimHough1DShiftTool::m_name
std::string m_name
Definition: FPGATrackSimHough1DShiftTool.h:181
FPGATrackSimHough1DShiftTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimHough1DShiftTool.h:105
ServiceHandle< IFPGATrackSimEventSelectionSvc >
FPGATrackSimHough1DShiftTool::makeRoad
FPGATrackSimRoad makeRoad(const std::vector< const FPGATrackSimHit * > &hits, int bin_track, size_t iShift)
Definition: FPGATrackSimHough1DShiftTool.cxx:435