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