ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FPGATrackSimGenScanTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimGenScanTool_H
4 #define FPGATrackSimGenScanTool_H
5 
53 #include "GaudiKernel/ServiceHandle.h"
55 
63 
66 
67 #include <string>
68 #include <vector>
69 #include <utility>
70 #include <bit>
71 
73 
74 class FPGATrackSimGenScanTool : public extends<AthAlgTool, IFPGATrackSimRoadFinderTool>
75 {
76 public:
78  // AthAlgTool
79 
80  FPGATrackSimGenScanTool(const std::string &, const std::string &, const IInterface *);
81 
82  virtual StatusCode initialize() override;
83 
85  // IFPGATrackSimRoadFinderTool virtual method for interface
86  virtual StatusCode getRoads(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits,
87  std::vector<std::shared_ptr<const FPGATrackSimRoad>> &road) override;
88  virtual int getSubRegion() const override {return 0;}
89 
91 
92 protected:
94  // Handles
95 
96  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel{this, "FPGATrackSimEventSelectionSvc", "FPGATrackSimEventSelectionSvc"};
97  ServiceHandle<IFPGATrackSimBankSvc> m_FPGATrackSimBankSvc{this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"};
98  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping{this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
99  ToolHandle<FPGATrackSimGenScanMonitoring> m_monitoring {this, "Monitoring", "FPGATrackSimGenScanMonitoring", "Monitoring Tool"};
100  ToolHandle<FPGATrackSimGenScanBinningBase> m_binning {this, "Binning", "FPGATrackSimGenScanBinningBase", "Gen Scan Binning Tool"};
101 
103  // Properties
104  Gaudi::Property<std::string> m_parSet{this, "parSet", {}, "String name of parameter set"};
105  Gaudi::Property<std::vector<float>> m_parMin{this, "parMin", {}, "Vector of minimum bounds of parameters (expect 5"};
106  Gaudi::Property<std::vector<float>> m_parMax{this, "parMax", {}, "Vector of maximum bounds of parameters (expect 5"};
107  Gaudi::Property<std::vector<unsigned>> m_parBins{this, "parBins", {}, "Vector of number of bins for each parameter (expect 5)"};
108 
109  Gaudi::Property<double> m_rin{this, "rin", {-1.0}, "Radius of inner layer for extrapolations and keylayer definition"};
110  Gaudi::Property<double> m_rout{this, "rout", {-1.0}, "Radius of outer layer for extrapolations and keylayer definition"};
111 
112  Gaudi::Property<std::string> m_lyrmapFile{this, "layerMapFile",{""}, "use externally defined layer map"};
113 
114  Gaudi::Property<double> m_d0FractionalPadding{this, "d0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
115  Gaudi::Property<double> m_z0FractionalPadding{this, "z0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
116  Gaudi::Property<double> m_etaFractionalPadding{this, "etaFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
117  Gaudi::Property<double> m_phiFractionalPadding{this, "phiFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
118  Gaudi::Property<double> m_qOverPtFractionalPadding{this, "qOverPtFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
119 
120 
121 
122  Gaudi::Property<unsigned> m_threshold{this, "threshold", {}, "Minimum value to accept as a road (inclusive)"};
123 
124  Gaudi::Property<std::string> m_binFilter{this, "binFilter", {"PairThenGroup"}, "which bin filter to run, current options: PairThenGroup, IncrementalBuild"};
125 
126  Gaudi::Property<bool> m_binningOnly{this, "binningOnly", {false}, "Turn off road building to test the binning only"};
127  Gaudi::Property<bool> m_applyPairFilter{this, "applyPairFilter", {}, "Apply Pair Filter"};
128  Gaudi::Property<bool> m_reversePairDir{this, "reversePairDir", {}, "Build Pairs starting at last layer and work in"};
129  Gaudi::Property<std::vector<double>> m_pairFilterDeltaPhiCut{this, "pairFilterDeltaPhiCut", {}, "Pair Filter Delta Phi Cut Value (list one per layer)"};
130  Gaudi::Property<std::vector<double>> m_pairFilterDeltaEtaCut{this, "pairFilterDeltaEtaCut", {}, "Pair Filter Delta Eta Cut Value (list one per layer)"};
131  Gaudi::Property<std::vector<double>> m_pairFilterPhiExtrapCut{this, "pairFilterPhiExtrapCut", {}, "Pair Filter Phi Extrap Cut Value (in/out pair)"};
132  Gaudi::Property<std::vector<double>> m_pairFilterEtaExtrapCut{this, "pairFilterEtaExtrapCut", {}, "Pair Filter Eta Extrap Cut Value(in/out pair)"};
133 
134  Gaudi::Property<bool> m_applyPairSetFilter{this, "applyPairSetFilter", {}, "Apply PairSet Filter"};
135  Gaudi::Property<double> m_pairSetMatchPhiCut{this, "pairSetMatchPhiCut", {}, "Pair Set Match Phi Cut Value"};
136  Gaudi::Property<double> m_pairSetMatchEtaCut{this, "pairSetMatchEtaCut", {}, "Pair Set Match Eta Cut Value"};
137  Gaudi::Property<double> m_pairSetDeltaDeltaPhiCut{this, "pairSetDeltaDeltaPhiCut", {}, "Pair Set Delta Delta Phi Cut Value"};
138  Gaudi::Property<double> m_pairSetDeltaDeltaEtaCut{this, "pairSetDeltaDeltaEtaCut", {}, "Pair Set Delta Eta Cut Value"};
139  Gaudi::Property<double> m_pairSetPhiCurvatureCut{this, "pairSetPhiCurvatureCut", {}, "Pair Set Phi Cut Value"};
140  Gaudi::Property<double> m_pairSetEtaCurvatureCut{this, "pairSetEtaCurvatureCut", {}, "Pair Set Eta Cut Value"};
141  Gaudi::Property<double> m_pairSetDeltaPhiCurvatureCut{this, "pairSetDeltaPhiCurvatureCut", {}, "Pair Set Delta Phi Curvature Cut Value"};
142  Gaudi::Property<double> m_pairSetDeltaEtaCurvatureCut{this, "pairSetDeltaEtaCurvatureCut", {}, "Pair Set Delta Eta Curvature Cut Value"};
143  Gaudi::Property<std::vector<double>> m_pairSetPhiExtrapCurvedCut{this, "pairSetPhiExtrapCurvedCut", {}, "Pair Set Phi Extrap Curved Cut Value(in/out pair)"};
144 
146  // Core
147 
148  // These are forwards for the internal data storage so you can read
149  // the core elements before getting the clutter of details
150  struct StoredHit; // stores hit, plus offsets from nominal bin trajectory
151  struct BinEntry; // stores list of StoredHit for a bin
152  class HitPair; // pair of StoredHit with methods to make variables to cut on
153  struct HitPairSet; // group of HitPair with methods to make variables to cut on
154 
155  // Which bins are consistent with the (pT, eta, pho, d0, z0)
156  // ranges computed from region definition defined in the eventselection
157  // service or set by the layer map
158  void initValidBins();
159  void computeValidBins();
160  void setValidBin(std::vector<unsigned> idx);// reuse setting all the different idx types
161  void printValidBin();// dump an output to log for x-checks
162 
163  // Put hits in all track parameter bins they could be a part of (binning is defined
164  // by m_binning object)
165  StatusCode fillImage(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits);
166 
167  // Filter the bins above threshold into pairsets which output roads (2 options)
168  //
169  // Option 1) Originl version described here: https://indico.cern.ch/event/1469103/contributions/6187259/attachments/2952665/5190800/InsideOut_241010.pdf
170  StatusCode pairThenGroupFilter(const BinEntry &bindata, std::vector<HitPairSet> &output_pairset);
171  // Option 2) New version (no external documentation as of now)
172  struct IntermediateState;
173  void updateState(const IntermediateState &inputstate,
174  IntermediateState &outputstate,
175  unsigned lyridx, const std::vector<const StoredHit *>& newhits);
176  StatusCode incrementalBuildFilter(const BinEntry &bindata, std::vector<HitPairSet> &output_pairset);
177 
178  // 1st step of filter: sort hits by layer
179  StatusCode sortHitsByLayer(const BinEntry &bindata, std::vector<std::vector<const StoredHit *>> &hitsByLayer);
180 
181  // 2nd step of filter: make pairs of hits from adjacent and next-to-adjacent layers
182  StatusCode makePairs(const std::vector<std::vector<const StoredHit *>>& hitsByLayer, HitPairSet &pairs);
183 
184  // 3rd step of filter: make cuts on the pairs to ensure that are consisten
185  // with the bin they are in
186  bool pairPassesFilter(const HitPair &pair);
187  StatusCode filterPairs(HitPairSet &pairs, HitPairSet &filteredpairs);
188 
189  // 4th step of filter: group pairs into sets where they are all consistent with being from the same track
190  StatusCode groupPairs(HitPairSet &filteredpairs, std::vector<HitPairSet> &clusters, bool verbose);
191 
192  // used to determine if a pair is consistend with a pairset
193  bool pairMatchesPairSet(const HitPairSet &pairset, const HitPair &pair, bool verbose);
194 
195  // format final pairsets into expected output of getRoads
196  void addRoad(std::vector<const StoredHit *> const &hits, const FPGATrackSimGenScanBinningBase::IdxSet &idx);
197 
199  // Internal Storage Classes
200 
201  // Stores hit plus the phi/etashift from the nominal bin center
202  struct StoredHit
203  {
204  std::shared_ptr<const FPGATrackSimHit> hitptr;
205  double phiShift;
206  double etaShift; // note this might be eta or z depending on m_binning
207  int layer;
208  double rzrad() const { return sqrt(hitptr->getR()*hitptr->getR()+hitptr->getZ()*hitptr->getZ());}
209  };
210  friend std::ostream &operator<<(std::ostream &os, const StoredHit &hit);
211 
212  // each bin contains a list of StoredHit objects
213  struct BinEntry
214  {
215  BinEntry() {}
216  void reset();
217  void addHit(StoredHit hit);
218  unsigned int lyrCnt() { return std::popcount(lyrhit); };
219  unsigned int hitCnt = 0;
221  std::vector<StoredHit> hits{};
222  };
223 
225  // HitPair and HitPairSet Storage Classes
226 
227  // Pair of hits, methods gives variable you might want to cut on
228  class HitPair : public std::pair<const StoredHit *, const StoredHit *>
229  {
230  public:
232  double dPhi() const { return this->second->phiShift - this->first->phiShift; }
233  double dEta() const { return this->second->etaShift - this->first->etaShift; }
234  double dR() const { return this->second->hitptr->getR() - this->first->hitptr->getR(); }
235 
236  // Eta/PhiExtrapolation methods below assume pair is radially ordered
237  // this enables flipping them if working in reverse
238  const HitPair Reversed() const {
239  return HitPair(this->second, this->first, false);
240  }
241 
242  double PhiOutExtrap(double r_out) const {
243  if (m_reverse)
244  return Reversed().PhiOutExtrap(r_out);
245  return this->second->phiShift + this->dPhi() / this->dR() * (r_out - this->second->hitptr->getR()); }
246  double PhiInExtrap(double r_in) const {
247  if (m_reverse) return Reversed().PhiInExtrap(r_in);
248  return this->first->phiShift + this->dPhi() / this->dR() * (r_in - this->first->hitptr->getR()); }
249  double EtaOutExtrap(double r_out) const {
250  if (m_reverse) return Reversed().EtaOutExtrap(r_out);
251  return this->second->etaShift + this->dEta() / this->dR() * (r_out - this->second->hitptr->getR()); }
252  double EtaInExtrap(double r_in) const {
253  if (m_reverse) return Reversed().EtaInExtrap(r_in);
254  return this->first->etaShift + this->dEta() / this->dR() * (r_in - this->first->hitptr->getR()); }
255 
256  private:
257  bool m_reverse;
258  };
259 
260  // Pair of hits, methods gives variable you might want to cut on
261  struct HitPairSet
262  {
264  // Data
265 
266  // list of hit pairs
267  std::vector<HitPair> pairList{};
268 
269  // bit mask of layers hit
271 
272  // list of hits in all included pairs
273  std::vector<const StoredHit *> hitlist{};
274 
275  // saves curvatures from last pair added so change in curvature can be calculated
276  double LastPhiCurvature = 0.;
277  double LastEtaCurvature = 0.;
278 
280  // Methods - name are hopefully clear
281  int addPair(const HitPair &pair);
282  const HitPair &lastpair() const { return pairList.back(); }
283  const HitPair &secondtolastpair() const { return *std::prev(pairList.end(), 2); }
284 
285  bool hasHit(const StoredHit *hit) const;
286  bool hasLayer(int layer) const { return ((hitLayers & (0x1 << layer)) != 0); }
287  unsigned int lyrCnt() const { return __builtin_popcount(hitLayers); }
288 
289  // variable to check if new pair is consistent with last pair added to pairset
290  double MatchPhi(const HitPair &pair) const;
291  double MatchEta(const HitPair &pair) const;
292 
293  double DeltaDeltaPhi(const HitPair &pair) const;
294 
295  double DeltaDeltaEta(const HitPair &pair) const;
296 
297  double PhiCurvature(const HitPair &pair) const;
298  double EtaCurvature(const HitPair &pair) const;
299 
300  double DeltaPhiCurvature(const HitPair &pair) const;
301  double DeltaEtaCurvature(const HitPair &pair) const;
302  double PhiInExtrapCurved(const HitPair &pair, double r_in) const;
303  double PhiOutExtrapCurved(const HitPair &pair, double r_out) const;
304  };
305 
306  // state structure used by buildGroupsWithPairs method
308  std::vector<const StoredHit *> unpairedHits{};
309  std::vector<HitPairSet> pairsets{};
310  };
311 
313  // Event Storage
315  unsigned m_nLayers = 0; // copy of m_FPGATrackSimMapping->PlaneMap1stStage()->getNLogiLayers();
316  std::vector<unsigned int> m_pairingLayers;
317 
318  // The implementation of the binning base class that defines the binning to be used
319  // FPGATrackSimGenScanBinningBase *m_binning{nullptr};
320 
321  // Main image (up to 5d) with the hits binned according to m_binning
323 
324  // Tells which bins/slices/scans actually correspond to track parameters in the specified region
329 
330  // structure is indexed on bin, then layer, then a set of modules
331  void readLayerMap(const std::string & filename);
334 
335  // output roads
336  std::vector<std::unique_ptr<FPGATrackSimRoad>> m_roads{};
337 };
338 
339 #endif // FPGATrackSimGenScanTool_H
FPGATrackSimGenScanTool::BinEntry::lyrhit
layer_bitmask_t lyrhit
Definition: FPGATrackSimGenScanTool.h:220
FPGATrackSimGenScanTool::HitPairSet::LastEtaCurvature
double LastEtaCurvature
Definition: FPGATrackSimGenScanTool.h:277
FPGATrackSimGenScanTool::m_pairFilterEtaExtrapCut
Gaudi::Property< std::vector< double > > m_pairFilterEtaExtrapCut
Definition: FPGATrackSimGenScanTool.h:132
FPGATrackSimGenScanTool::m_parMin
Gaudi::Property< std::vector< float > > m_parMin
Definition: FPGATrackSimGenScanTool.h:105
FPGATrackSimGenScanTool::IntermediateState::unpairedHits
std::vector< const StoredHit * > unpairedHits
Definition: FPGATrackSimGenScanTool.h:308
FPGATrackSimGenScanTool::m_mod_to_lyr_map
FPGATrackSimGenScanArray< std::map< unsigned, unsigned > > m_mod_to_lyr_map
Definition: FPGATrackSimGenScanTool.h:333
FPGATrackSimGenScanTool::HitPairSet::secondtolastpair
const HitPair & secondtolastpair() const
Definition: FPGATrackSimGenScanTool.h:283
FPGATrackSimGenScanArray
Definition: FPGATrackSimGenScanArray.h:41
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
FPGATrackSimGenScanTool::pairMatchesPairSet
bool pairMatchesPairSet(const HitPairSet &pairset, const HitPair &pair, bool verbose)
Definition: FPGATrackSimGenScanTool.cxx:643
FPGATrackSimGenScanBinningBase::IdxSet
Definition: FPGATrackSimGenScanBinning.h:111
FPGATrackSimGenScanTool::m_pairSetPhiCurvatureCut
Gaudi::Property< double > m_pairSetPhiCurvatureCut
Definition: FPGATrackSimGenScanTool.h:139
FPGATrackSimGenScanTool::HitPair::PhiInExtrap
double PhiInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:246
FPGATrackSimGenScanTool::HitPairSet::hasLayer
bool hasLayer(int layer) const
Definition: FPGATrackSimGenScanTool.h:286
FPGATrackSimGenScanTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimGenScanTool.cxx:67
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimGenScanTool::filterPairs
StatusCode filterPairs(HitPairSet &pairs, HitPairSet &filteredpairs)
Definition: FPGATrackSimGenScanTool.cxx:581
FPGATrackSimGenScanTool::m_binFilter
Gaudi::Property< std::string > m_binFilter
Definition: FPGATrackSimGenScanTool.h:124
FPGATrackSimGenScanTool::updateState
void updateState(const IntermediateState &inputstate, IntermediateState &outputstate, unsigned lyridx, const std::vector< const StoredHit * > &newhits)
Definition: FPGATrackSimGenScanTool.cxx:407
FPGATrackSimGenScanTool::BinEntry::BinEntry
BinEntry()
Definition: FPGATrackSimGenScanTool.h:215
FPGATrackSimGenScanTool::m_rin
Gaudi::Property< double > m_rin
Definition: FPGATrackSimGenScanTool.h:109
FPGATrackSimGenScanTool::HitPair::m_reverse
bool m_reverse
Definition: FPGATrackSimGenScanTool.h:257
FPGATrackSimGenScanTool::addRoad
void addRoad(std::vector< const StoredHit * > const &hits, const FPGATrackSimGenScanBinningBase::IdxSet &idx)
Definition: FPGATrackSimGenScanTool.cxx:730
FPGATrackSimGenScanTool::initValidBins
void initValidBins()
Definition: FPGATrackSimGenScanTool.cxx:863
IFPGATrackSimMappingSvc.h
FPGATrackSimGenScanTool::fillImage
StatusCode fillImage(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimGenScanTool.cxx:260
FPGATrackSimGenScanTool::StoredHit
Definition: FPGATrackSimGenScanTool.h:203
FPGATrackSimGenScanTool::HitPairSet::PhiOutExtrapCurved
double PhiOutExtrapCurved(const HitPair &pair, double r_out) const
Definition: FPGATrackSimGenScanTool.cxx:850
FPGATrackSimGenScanTool::BinEntry::addHit
void addHit(StoredHit hit)
Definition: FPGATrackSimGenScanTool.cxx:172
FPGATrackSimGenScanTool::m_z0FractionalPadding
Gaudi::Property< double > m_z0FractionalPadding
Definition: FPGATrackSimGenScanTool.h:115
FPGATrackSimGenScanTool::makePairs
StatusCode makePairs(const std::vector< std::vector< const StoredHit * >> &hitsByLayer, HitPairSet &pairs)
Definition: FPGATrackSimGenScanTool.cxx:535
FPGATrackSimGenScanTool::FPGATrackSimGenScanTool
FPGATrackSimGenScanTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimGenScanTool.cxx:60
FPGATrackSimGenScanTool::HitPairSet::MatchEta
double MatchEta(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:805
FPGATrackSimGenScanTool::setValidBin
void setValidBin(std::vector< unsigned > idx)
Definition: FPGATrackSimGenScanTool.cxx:856
IFPGATrackSimRoadFinderTool.h
Interface declaration for road finder tools.
FPGATrackSimGenScanTool::sortHitsByLayer
StatusCode sortHitsByLayer(const BinEntry &bindata, std::vector< std::vector< const StoredHit * >> &hitsByLayer)
Definition: FPGATrackSimGenScanTool.cxx:517
FPGATrackSimGenScanTool::StoredHit::etaShift
double etaShift
Definition: FPGATrackSimGenScanTool.h:206
FPGATrackSimGenScanTool::HitPairSet::DeltaDeltaPhi
double DeltaDeltaPhi(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:820
FPGATrackSimGenScanTool::HitPairSet::hitLayers
layer_bitmask_t hitLayers
Definition: FPGATrackSimGenScanTool.h:270
FPGATrackSimGenScanTool::HitPair::EtaOutExtrap
double EtaOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:249
FPGATrackSimGenScanTool::m_image
FPGATrackSimGenScanArray< BinEntry > m_image
Definition: FPGATrackSimGenScanTool.h:322
FPGATrackSimGenScanTool::m_qOverPtFractionalPadding
Gaudi::Property< double > m_qOverPtFractionalPadding
Definition: FPGATrackSimGenScanTool.h:118
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
FPGATrackSimGenScanTool::m_evtsProcessed
int m_evtsProcessed
Definition: FPGATrackSimGenScanTool.h:314
FPGATrackSimGenScanTool::HitPairSet::hasHit
bool hasHit(const StoredHit *hit) const
Definition: FPGATrackSimGenScanTool.cxx:761
FPGATrackSimGenScanTool::IntermediateState
Definition: FPGATrackSimGenScanTool.h:307
FPGATrackSimGenScanTool::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimGenScanTool.h:96
FPGATrackSimGenScanTool::StoredHit::layer
int layer
Definition: FPGATrackSimGenScanTool.h:207
DeMoUpdate.reverse
reverse
Definition: DeMoUpdate.py:563
python.CreateTierZeroArgdict.pairs
pairs
Definition: CreateTierZeroArgdict.py:201
FPGATrackSimGenScanBinning.h
Binning Classes for GenScanTool.
FPGATrackSimGenScanTool::HitPair::dR
double dR() const
Definition: FPGATrackSimGenScanTool.h:234
FPGATrackSimGenScanTool::operator<<
friend std::ostream & operator<<(std::ostream &os, const StoredHit &hit)
Definition: FPGATrackSimGenScanTool.cxx:48
FPGATrackSimGenScanTool::m_pairFilterPhiExtrapCut
Gaudi::Property< std::vector< double > > m_pairFilterPhiExtrapCut
Definition: FPGATrackSimGenScanTool.h:131
FPGATrackSimGenScanTool::m_binning
ToolHandle< FPGATrackSimGenScanBinningBase > m_binning
Definition: FPGATrackSimGenScanTool.h:100
FPGATrackSimGenScanTool::getSubRegion
virtual int getSubRegion() const override
Definition: FPGATrackSimGenScanTool.h:88
FPGATrackSimGenScanTool::m_validScan
FPGATrackSimGenScanArray< int > m_validScan
Definition: FPGATrackSimGenScanTool.h:327
FPGATrackSimGenScanTool::IntermediateState::pairsets
std::vector< HitPairSet > pairsets
Definition: FPGATrackSimGenScanTool.h:309
FPGATrackSimGenScanTool::m_parBins
Gaudi::Property< std::vector< unsigned > > m_parBins
Definition: FPGATrackSimGenScanTool.h:107
FPGATrackSimGenScanTool::m_pairSetDeltaDeltaEtaCut
Gaudi::Property< double > m_pairSetDeltaDeltaEtaCut
Definition: FPGATrackSimGenScanTool.h:138
FPGATrackSimGenScanTool::m_pairSetDeltaEtaCurvatureCut
Gaudi::Property< double > m_pairSetDeltaEtaCurvatureCut
Definition: FPGATrackSimGenScanTool.h:142
FPGATrackSimGenScanTool::HitPairSet::LastPhiCurvature
double LastPhiCurvature
Definition: FPGATrackSimGenScanTool.h:276
FPGATrackSimGenScanTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimGenScanTool.h:97
FPGATrackSimGenScanTool::m_validSlice
FPGATrackSimGenScanArray< int > m_validSlice
Definition: FPGATrackSimGenScanTool.h:326
FPGATrackSimGenScanMonitoring
Definition: FPGATrackSimGenScanMonitoring.h:36
FPGATrackSimGenScanTool::HitPairSet::PhiCurvature
double PhiCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:829
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimGenScanTool::m_binningOnly
Gaudi::Property< bool > m_binningOnly
Definition: FPGATrackSimGenScanTool.h:126
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimGenScanTool::m_threshold
Gaudi::Property< unsigned > m_threshold
Definition: FPGATrackSimGenScanTool.h:122
AthAlgTool.h
FPGATrackSimGenScanTool::HitPairSet
Definition: FPGATrackSimGenScanTool.h:262
FPGATrackSimGenScanTool::HitPairSet::DeltaDeltaEta
double DeltaDeltaEta(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:824
FPGATrackSimGenScanTool::HitPair::Reversed
const HitPair Reversed() const
Definition: FPGATrackSimGenScanTool.h:238
FPGATrackSimGenScanTool::m_pairSetDeltaPhiCurvatureCut
Gaudi::Property< double > m_pairSetDeltaPhiCurvatureCut
Definition: FPGATrackSimGenScanTool.h:141
FPGATrackSimGenScanTool::m_pairSetEtaCurvatureCut
Gaudi::Property< double > m_pairSetEtaCurvatureCut
Definition: FPGATrackSimGenScanTool.h:140
FPGATrackSimGenScanTool::HitPairSet::DeltaPhiCurvature
double DeltaPhiCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:837
FPGATrackSimGenScanTool::m_d0FractionalPadding
Gaudi::Property< double > m_d0FractionalPadding
Definition: FPGATrackSimGenScanTool.h:114
FPGATrackSimGenScanTool::HitPairSet::addPair
int addPair(const HitPair &pair)
Definition: FPGATrackSimGenScanTool.cxx:770
FPGATrackSimGenScanTool::m_monitoring
ToolHandle< FPGATrackSimGenScanMonitoring > m_monitoring
Definition: FPGATrackSimGenScanTool.h:99
FPGATrackSimGenScanTool::BinEntry::hitCnt
unsigned int hitCnt
Definition: FPGATrackSimGenScanTool.h:219
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
FPGATrackSimGenScanTool::computeValidBins
void computeValidBins()
Definition: FPGATrackSimGenScanTool.cxx:874
FPGATrackSimGenScanTool::m_pairSetDeltaDeltaPhiCut
Gaudi::Property< double > m_pairSetDeltaDeltaPhiCut
Definition: FPGATrackSimGenScanTool.h:137
FPGATrackSimGenScanTool::pairPassesFilter
bool pairPassesFilter(const HitPair &pair)
Definition: FPGATrackSimGenScanTool.cxx:570
FPGATrackSimGenScanTool::BinEntry::reset
void reset()
Definition: FPGATrackSimGenScanTool.cxx:165
FPGATrackSimGenScanTool::getRoads
virtual StatusCode getRoads(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits, std::vector< std::shared_ptr< const FPGATrackSimRoad >> &road) override
Definition: FPGATrackSimGenScanTool.cxx:185
FPGATrackSimGenScanTool::StoredHit::rzrad
double rzrad() const
Definition: FPGATrackSimGenScanTool.h:208
FPGATrackSimGenScanTool::groupPairs
StatusCode groupPairs(HitPairSet &filteredpairs, std::vector< HitPairSet > &clusters, bool verbose)
Definition: FPGATrackSimGenScanTool.cxx:595
FPGATrackSimGenScanTool::m_roads
std::vector< std::unique_ptr< FPGATrackSimRoad > > m_roads
Definition: FPGATrackSimGenScanTool.h:336
FPGATrackSimGenScanTool::m_pairSetMatchPhiCut
Gaudi::Property< double > m_pairSetMatchPhiCut
Definition: FPGATrackSimGenScanTool.h:135
FPGATrackSimGenScanTool::HitPair::dPhi
double dPhi() const
Definition: FPGATrackSimGenScanTool.h:232
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimGenScanTool::HitPairSet::DeltaEtaCurvature
double DeltaEtaCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:841
FPGATrackSimGenScanTool::readLayerMap
void readLayerMap(const std::string &filename)
Definition: FPGATrackSimGenScanTool.cxx:934
FPGATrackSimGenScanTool::m_lyrmapFile
Gaudi::Property< std::string > m_lyrmapFile
Definition: FPGATrackSimGenScanTool.h:112
FPGATrackSimGenScanTool::m_pairFilterDeltaEtaCut
Gaudi::Property< std::vector< double > > m_pairFilterDeltaEtaCut
Definition: FPGATrackSimGenScanTool.h:130
FPGATrackSimGenScanTool::m_parSet
Gaudi::Property< std::string > m_parSet
Definition: FPGATrackSimGenScanTool.h:104
FPGATrackSimGenScanTool::HitPair::HitPair
HitPair(const StoredHit *first, const StoredHit *second, bool reverse)
Definition: FPGATrackSimGenScanTool.h:231
FPGATrackSimGenScanTool::HitPairSet::pairList
std::vector< HitPair > pairList
Definition: FPGATrackSimGenScanTool.h:267
FPGATrackSimGenScanTool::m_applyPairSetFilter
Gaudi::Property< bool > m_applyPairSetFilter
Definition: FPGATrackSimGenScanTool.h:134
FPGATrackSimGenScanTool::StoredHit::phiShift
double phiShift
Definition: FPGATrackSimGenScanTool.h:205
FPGATrackSimGenScanTool::m_lyr_to_mod_map
FPGATrackSimGenScanArray< std::vector< std::set< unsigned > > > m_lyr_to_mod_map
Definition: FPGATrackSimGenScanTool.h:332
FPGATrackSimGenScanTool::HitPair::dEta
double dEta() const
Definition: FPGATrackSimGenScanTool.h:233
FPGATrackSimGenScanTool::m_phiFractionalPadding
Gaudi::Property< double > m_phiFractionalPadding
Definition: FPGATrackSimGenScanTool.h:117
FPGATrackSimGenScanTool::HitPair
Definition: FPGATrackSimGenScanTool.h:229
IFPGATrackSimEventSelectionSvc.h
FPGATrackSimGenScanTool
Definition: FPGATrackSimGenScanTool.h:75
FPGATrackSimGenScanTool::HitPairSet::lastpair
const HitPair & lastpair() const
Definition: FPGATrackSimGenScanTool.h:282
FPGATrackSimGenScanTool::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimGenScanTool.h:315
FPGATrackSimGenScanTool::StoredHit::hitptr
std::shared_ptr< const FPGATrackSimHit > hitptr
Definition: FPGATrackSimGenScanTool.h:204
FPGATrackSimGenScanTool::HitPairSet::EtaCurvature
double EtaCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:833
FPGATrackSimGenScanTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimGenScanTool.h:98
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimGenScanTool::m_applyPairFilter
Gaudi::Property< bool > m_applyPairFilter
Definition: FPGATrackSimGenScanTool.h:127
python.TriggerHandler.verbose
verbose
Definition: TriggerHandler.py:297
DeMoScan.first
bool first
Definition: DeMoScan.py:536
FPGATrackSimGenScanTool::HitPairSet::lyrCnt
unsigned int lyrCnt() const
Definition: FPGATrackSimGenScanTool.h:287
FPGATrackSimGenScanArray.h
Iterable Multidimensional Array Class for FPGATrackSimGenScanTool.
IFPGATrackSimBankSvc.h
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
FPGATrackSimGenScanTool::BinEntry::hits
std::vector< StoredHit > hits
Definition: FPGATrackSimGenScanTool.h:221
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
FPGATrackSimGenScanTool::HitPairSet::hitlist
std::vector< const StoredHit * > hitlist
Definition: FPGATrackSimGenScanTool.h:273
FPGATrackSimGenScanTool::m_rout
Gaudi::Property< double > m_rout
Definition: FPGATrackSimGenScanTool.h:110
FPGATrackSimGenScanTool::m_pairSetPhiExtrapCurvedCut
Gaudi::Property< std::vector< double > > m_pairSetPhiExtrapCurvedCut
Definition: FPGATrackSimGenScanTool.h:143
FPGATrackSimGenScanTool::HitPairSet::PhiInExtrapCurved
double PhiInExtrapCurved(const HitPair &pair, double r_in) const
Definition: FPGATrackSimGenScanTool.cxx:845
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimGenScanTool::HitPairSet::MatchPhi
double MatchPhi(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:791
FPGATrackSimGenScanTool::m_validSliceAndScan
FPGATrackSimGenScanArray< int > m_validSliceAndScan
Definition: FPGATrackSimGenScanTool.h:328
FPGATrackSimGenScanTool::BinEntry
Definition: FPGATrackSimGenScanTool.h:214
FPGATrackSimGenScanTool::printValidBin
void printValidBin()
Definition: FPGATrackSimGenScanTool.cxx:964
FPGATrackSimGenScanTool::m_reversePairDir
Gaudi::Property< bool > m_reversePairDir
Definition: FPGATrackSimGenScanTool.h:128
FPGATrackSimGenScanTool::incrementalBuildFilter
StatusCode incrementalBuildFilter(const BinEntry &bindata, std::vector< HitPairSet > &output_pairset)
Definition: FPGATrackSimGenScanTool.cxx:488
FPGATrackSimGenScanTool::m_pairFilterDeltaPhiCut
Gaudi::Property< std::vector< double > > m_pairFilterDeltaPhiCut
Definition: FPGATrackSimGenScanTool.h:129
FPGATrackSimGenScanTool::m_pairSetMatchEtaCut
Gaudi::Property< double > m_pairSetMatchEtaCut
Definition: FPGATrackSimGenScanTool.h:136
FPGATrackSimTypes.h
FPGATrackSimGenScanTool::m_pairingLayers
std::vector< unsigned int > m_pairingLayers
Definition: FPGATrackSimGenScanTool.h:316
FPGATrackSimGenScanTool::m_etaFractionalPadding
Gaudi::Property< double > m_etaFractionalPadding
Definition: FPGATrackSimGenScanTool.h:116
FPGATrackSimGenScanTool::pairThenGroupFilter
StatusCode pairThenGroupFilter(const BinEntry &bindata, std::vector< HitPairSet > &output_pairset)
Definition: FPGATrackSimGenScanTool.cxx:347
FPGATrackSimGenScanTool::m_validBin
FPGATrackSimGenScanArray< int > m_validBin
Definition: FPGATrackSimGenScanTool.h:325
FPGATrackSimGenScanTool::m_parMax
Gaudi::Property< std::vector< float > > m_parMax
Definition: FPGATrackSimGenScanTool.h:106
FPGATrackSimGenScanTool::HitPair::EtaInExtrap
double EtaInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:252
FPGATrackSimGenScanTool::HitPair::PhiOutExtrap
double PhiOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:242
FPGATrackSimGenScanTool::BinEntry::lyrCnt
unsigned int lyrCnt()
Definition: FPGATrackSimGenScanTool.h:218
ServiceHandle< IFPGATrackSimEventSelectionSvc >