ATLAS Offline Software
FPGATrackSimGenScanTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 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 
72 
73 class FPGATrackSimGenScanTool : public extends<AthAlgTool, IFPGATrackSimRoadFinderTool>
74 {
75 public:
77  // AthAlgTool
78 
79  FPGATrackSimGenScanTool(const std::string &, const std::string &, const IInterface *);
80 
81  virtual StatusCode initialize() override;
82 
84  // IFPGATrackSimRoadFinderTool virtual method for interface
85  virtual StatusCode getRoads(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits,
86  std::vector<std::shared_ptr<const FPGATrackSimRoad>> &road) override;
87  virtual int getSubRegion() const override {return 0;}
88 
90 
91 protected:
93  // Handles
94 
95  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel{this, "FPGATrackSimEventSelectionSvc", "FPGATrackSimEventSelectionSvc"};
96  ServiceHandle<IFPGATrackSimBankSvc> m_FPGATrackSimBankSvc{this, "FPGATrackSimBankSvc", "FPGATrackSimBankSvc"};
97  ServiceHandle<IFPGATrackSimMappingSvc> m_FPGATrackSimMapping{this, "FPGATrackSimMappingSvc", "FPGATrackSimMappingSvc"};
98  ToolHandle<FPGATrackSimGenScanMonitoring> m_monitoring {this, "Monitoring", "FPGATrackSimGenScanMonitoring", "Monitoring Tool"};
99  ToolHandle<FPGATrackSimGenScanBinningBase> m_binning {this, "Binning", "FPGATrackSimGenScanBinningBase", "Gen Scan Binning Tool"};
100 
102  // Properties
103  Gaudi::Property<std::string> m_parSet{this, "parSet", {}, "String name of parameter set"};
104  Gaudi::Property<std::vector<float>> m_parMin{this, "parMin", {}, "Vector of minimum bounds of parameters (expect 5"};
105  Gaudi::Property<std::vector<float>> m_parMax{this, "parMax", {}, "Vector of maximum bounds of parameters (expect 5"};
106  Gaudi::Property<std::vector<unsigned>> m_parBins{this, "parBins", {}, "Vector of number of bins for each parameter (expect 5)"};
107 
108  Gaudi::Property<double> m_rin{this, "rin", {-1.0}, "Radius of inner layer for extrapolations and keylayer definition"};
109  Gaudi::Property<double> m_rout{this, "rout", {-1.0}, "Radius of outer layer for extrapolations and keylayer definition"};
110 
111  Gaudi::Property<double> m_d0FractionalPadding{this, "d0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
112  Gaudi::Property<double> m_z0FractionalPadding{this, "z0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
113  Gaudi::Property<double> m_etaFractionalPadding{this, "etaFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
114  Gaudi::Property<double> m_phiFractionalPadding{this, "phiFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
115  Gaudi::Property<double> m_qOverPtFractionalPadding{this, "qOverPtFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
116 
117  Gaudi::Property<unsigned> m_threshold{this, "threshold", {}, "Minimum value to accept as a road (inclusive)"};
118 
119  Gaudi::Property<std::string> m_binFilter{this, "binFilter", {"PairThenGroup"}, "which bin filter to run, current options: PairThenGroup, IncrementalBuild"};
120 
121  Gaudi::Property<bool> m_applyPairFilter{this, "applyPairFilter", {}, "Apply Pair Filter"};
122  Gaudi::Property<bool> m_reversePairDir{this, "reversePairDir", {}, "Build Pairs starting at last layer and work in"};
123  Gaudi::Property<std::vector<double>> m_pairFilterDeltaPhiCut{this, "pairFilterDeltaPhiCut", {}, "Pair Filter Delta Phi Cut Value (list one per layer)"};
124  Gaudi::Property<std::vector<double>> m_pairFilterDeltaEtaCut{this, "pairFilterDeltaEtaCut", {}, "Pair Filter Delta Eta Cut Value (list one per layer)"};
125  Gaudi::Property<std::vector<double>> m_pairFilterPhiExtrapCut{this, "pairFilterPhiExtrapCut", {}, "Pair Filter Phi Extrap Cut Value (in/out pair)"};
126  Gaudi::Property<std::vector<double>> m_pairFilterEtaExtrapCut{this, "pairFilterEtaExtrapCut", {}, "Pair Filter Eta Extrap Cut Value(in/out pair)"};
127 
128  Gaudi::Property<bool> m_applyPairSetFilter{this, "applyPairSetFilter", {}, "Apply PairSet Filter"};
129  Gaudi::Property<double> m_pairSetMatchPhiCut{this, "pairSetMatchPhiCut", {}, "Pair Set Match Phi Cut Value"};
130  Gaudi::Property<double> m_pairSetMatchEtaCut{this, "pairSetMatchEtaCut", {}, "Pair Set Match Eta Cut Value"};
131  Gaudi::Property<double> m_pairSetDeltaDeltaPhiCut{this, "pairSetDeltaDeltaPhiCut", {}, "Pair Set Delta Delta Phi Cut Value"};
132  Gaudi::Property<double> m_pairSetDeltaDeltaEtaCut{this, "pairSetDeltaDeltaEtaCut", {}, "Pair Set Delta Eta Cut Value"};
133  Gaudi::Property<double> m_pairSetPhiCurvatureCut{this, "pairSetPhiCurvatureCut", {}, "Pair Set Phi Cut Value"};
134  Gaudi::Property<double> m_pairSetEtaCurvatureCut{this, "pairSetEtaCurvatureCut", {}, "Pair Set Eta Cut Value"};
135  Gaudi::Property<double> m_pairSetDeltaPhiCurvatureCut{this, "pairSetDeltaPhiCurvatureCut", {}, "Pair Set Delta Phi Curvature Cut Value"};
136  Gaudi::Property<double> m_pairSetDeltaEtaCurvatureCut{this, "pairSetDeltaEtaCurvatureCut", {}, "Pair Set Delta Eta Curvature Cut Value"};
137  Gaudi::Property<std::vector<double>> m_pairSetPhiExtrapCurvedCut{this, "pairSetPhiExtrapCurvedCut", {}, "Pair Set Phi Extrap Curved Cut Value(in/out pair)"};
138 
140  // Core
141 
142  // These are forwards for the internal data storage so you can read
143  // the core elements before getting the clutter of details
144  struct StoredHit; // stores hit, plus offsets from nominal bin trajectory
145  struct BinEntry; // stores list of StoredHit for a bin
146  class HitPair; // pair of StoredHit with methods to make variables to cut on
147  struct HitPairSet; // group of HitPair with methods to make variables to cut on
148 
149  // Compute which bins are consistent with the (pT, eta, pho, d0, z0)
150  // ranges given by the region definition defined by the eventselection
151  // service
152  void computeValidBins();
153 
154  // Put hits in all track parameter bins they could be a part of (binning is defined
155  // by m_binning object)
156  StatusCode fillImage(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits);
157 
158  // Filter the bins above threshold into pairsets which output roads (2 options)
159  //
160  // Option 1) Originl version described here: https://indico.cern.ch/event/1469103/contributions/6187259/attachments/2952665/5190800/InsideOut_241010.pdf
162  std::vector<HitPairSet> &output_pairset);
163  // Option 2) New version (no external documentation as of now)
164  struct IntermediateState;
165  void updateState(const IntermediateState &inputstate,
166  IntermediateState &outputstate,
167  unsigned lyridx, const std::vector<const StoredHit *>& newhits);
169  std::vector<HitPairSet> &output_pairset);
170 
171  // 1st step of filter: sort hits by layer
172  StatusCode sortHitsByLayer(const BinEntry &bindata, std::vector<std::vector<const StoredHit *>> &hitsByLayer);
173 
174  // 2nd step of filter: make pairs of hits from adjacent and next-to-adjacent layers
175  StatusCode makePairs(const std::vector<std::vector<const StoredHit *>>& hitsByLayer, HitPairSet &pairs);
176 
177  // 3rd step of filter: make cuts on the pairs to ensure that are consisten
178  // with the bin they are in
179  bool pairPassesFilter(const HitPair &pair);
180  StatusCode filterPairs(HitPairSet &pairs, HitPairSet &filteredpairs);
181 
182  // 4th step of filter: group pairs into sets where they are all consistent with being from the same track
183  StatusCode groupPairs(HitPairSet &filteredpairs, std::vector<HitPairSet> &clusters, bool verbose);
184 
185  // used to determine if a pair is consistend with a pairset
186  bool pairMatchesPairSet(const HitPairSet &pairset, const HitPair &pair, bool verbose);
187 
188  // format final pairsets into expected output of getRoads
189  void addRoad(std::vector<const StoredHit *> const &hits, const FPGATrackSimGenScanBinningBase::IdxSet &idx);
190 
192  // Internal Storage Classes
193 
194  // Stores hit plus the phi/etashift from the nominal bin center
195  struct StoredHit
196  {
197  std::shared_ptr<const FPGATrackSimHit> hitptr;
198  double phiShift;
199  double etaShift; // note this might be eta or z depending on m_binning
200  int layer;
201  };
202  friend std::ostream &operator<<(std::ostream &os, const StoredHit &hit);
203 
204  // each bin contains a list of StoredHit objects
205  struct BinEntry
206  {
207  BinEntry() {}
208  void reset();
209  void addHit(StoredHit hit);
210  unsigned int lyrCnt() { return __builtin_popcount(lyrhit); };
211  unsigned int hitCnt = 0;
213  std::vector<StoredHit> hits{};
214  };
215 
217  // HitPair and HitPairSet Storage Classes
218 
219  // Pair of hits, methods gives variable you might want to cut on
220  class HitPair : public std::pair<const StoredHit *, const StoredHit *>
221  {
222  public:
224  double dPhi() const { return this->second->phiShift - this->first->phiShift; }
225  double dEta() const { return this->second->etaShift - this->first->etaShift; }
226  double dR() const { return this->second->hitptr->getR() - this->first->hitptr->getR(); }
227 
228  // Eta/PhiExtrapolation methods below assume pair is radially ordered
229  // this enables flipping them if working in reverse
230  const HitPair Reversed() const {
231  return HitPair(this->second, this->first, false);
232  }
233 
234  double PhiOutExtrap(double r_out) const {
235  if (m_reverse)
236  return Reversed().PhiOutExtrap(r_out);
237  return this->second->phiShift + this->dPhi() / this->dR() * (r_out - this->second->hitptr->getR()); }
238  double PhiInExtrap(double r_in) const {
239  if (m_reverse) return Reversed().PhiInExtrap(r_in);
240  return this->first->phiShift + this->dPhi() / this->dR() * (r_in - this->first->hitptr->getR()); }
241  double EtaOutExtrap(double r_out) const {
242  if (m_reverse) return Reversed().EtaOutExtrap(r_out);
243  return this->second->etaShift + this->dEta() / this->dR() * (r_out - this->second->hitptr->getR()); }
244  double EtaInExtrap(double r_in) const {
245  if (m_reverse) return Reversed().EtaInExtrap(r_in);
246  return this->first->etaShift + this->dEta() / this->dR() * (r_in - this->first->hitptr->getR()); }
247 
248  private:
249  bool m_reverse;
250  };
251 
252  // Pair of hits, methods gives variable you might want to cut on
253  struct HitPairSet
254  {
256  // Data
257 
258  // list of hit pairs
259  std::vector<HitPair> pairList{};
260 
261  // bit mask of layers hit
263 
264  // list of hits in all included pairs
265  std::vector<const StoredHit *> hitlist{};
266 
267  // saves curvatures from last pair added so change in curvature can be calculated
268  double LastPhiCurvature = 0.;
269  double LastEtaCurvature = 0.;
270 
272  // Methods - name are hopefully clear
273  int addPair(const HitPair &pair);
274  const HitPair &lastpair() const { return pairList.back(); }
275  const HitPair &secondtolastpair() const { return *std::prev(pairList.end(), 2); }
276 
277  bool hasHit(const StoredHit *hit) const;
278  bool hasLayer(int layer) const { return ((hitLayers & (0x1 << layer)) != 0); }
279  unsigned int lyrCnt() const { return __builtin_popcount(hitLayers); }
280 
281  // variable to check if new pair is consistent with last pair added to pairset
282  double MatchPhi(const HitPair &pair) const;
283  double MatchEta(const HitPair &pair) const;
284 
285  double DeltaDeltaPhi(const HitPair &pair) const;
286 
287  double DeltaDeltaEta(const HitPair &pair) const;
288 
289  double PhiCurvature(const HitPair &pair) const;
290  double EtaCurvature(const HitPair &pair) const;
291 
292  double DeltaPhiCurvature(const HitPair &pair) const;
293  double DeltaEtaCurvature(const HitPair &pair) const;
294  double PhiInExtrapCurved(const HitPair &pair, double r_in) const;
295  double PhiOutExtrapCurved(const HitPair &pair, double r_out) const;
296  };
297 
298  // state structure used by buildGroupsWithPairs method
300  std::vector<const StoredHit *> unpairedHits{};
301  std::vector<HitPairSet> pairsets{};
302  };
303 
305  // Event Storage
307  unsigned m_nLayers = 0; // copy of m_FPGATrackSimMapping->PlaneMap1stStage()->getNLogiLayers();
308  std::vector<unsigned int> m_pairingLayers;
309 
310  // The implementation of the binning base class that defines the binning to be used
311  // FPGATrackSimGenScanBinningBase *m_binning{nullptr};
312 
313  // Main image (up to 5d) with the hits binned according to m_binning
315 
316  // Tells which bins/slices/scans actually correspond to track parameters in the specified region
321 
322  // output roads
323  std::vector<FPGATrackSimRoad> m_roads{};
324 };
325 
326 #endif // FPGATrackSimGenScanTool_H
FPGATrackSimGenScanTool::BinEntry::lyrhit
layer_bitmask_t lyrhit
Definition: FPGATrackSimGenScanTool.h:212
FPGATrackSimGenScanTool::HitPairSet::LastEtaCurvature
double LastEtaCurvature
Definition: FPGATrackSimGenScanTool.h:269
FPGATrackSimGenScanTool::m_pairFilterEtaExtrapCut
Gaudi::Property< std::vector< double > > m_pairFilterEtaExtrapCut
Definition: FPGATrackSimGenScanTool.h:126
FPGATrackSimGenScanTool::m_parMin
Gaudi::Property< std::vector< float > > m_parMin
Definition: FPGATrackSimGenScanTool.h:104
FPGATrackSimGenScanTool::IntermediateState::unpairedHits
std::vector< const StoredHit * > unpairedHits
Definition: FPGATrackSimGenScanTool.h:300
FPGATrackSimGenScanTool::HitPairSet::secondtolastpair
const HitPair & secondtolastpair() const
Definition: FPGATrackSimGenScanTool.h:275
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:615
FPGATrackSimGenScanBinningBase::IdxSet
Definition: FPGATrackSimGenScanBinning.h:100
FPGATrackSimGenScanTool::m_pairSetPhiCurvatureCut
Gaudi::Property< double > m_pairSetPhiCurvatureCut
Definition: FPGATrackSimGenScanTool.h:133
FPGATrackSimGenScanTool::HitPair::PhiInExtrap
double PhiInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:238
FPGATrackSimGenScanTool::HitPairSet::hasLayer
bool hasLayer(int layer) const
Definition: FPGATrackSimGenScanTool.h:278
FPGATrackSimGenScanTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimGenScanTool.cxx:62
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimGenScanTool::filterPairs
StatusCode filterPairs(HitPairSet &pairs, HitPairSet &filteredpairs)
Definition: FPGATrackSimGenScanTool.cxx:553
FPGATrackSimGenScanTool::m_binFilter
Gaudi::Property< std::string > m_binFilter
Definition: FPGATrackSimGenScanTool.h:119
FPGATrackSimGenScanTool::updateState
void updateState(const IntermediateState &inputstate, IntermediateState &outputstate, unsigned lyridx, const std::vector< const StoredHit * > &newhits)
Definition: FPGATrackSimGenScanTool.cxx:378
FPGATrackSimGenScanTool::BinEntry::BinEntry
BinEntry()
Definition: FPGATrackSimGenScanTool.h:207
FPGATrackSimGenScanTool::m_rin
Gaudi::Property< double > m_rin
Definition: FPGATrackSimGenScanTool.h:108
FPGATrackSimGenScanTool::HitPair::m_reverse
bool m_reverse
Definition: FPGATrackSimGenScanTool.h:249
FPGATrackSimGenScanTool::addRoad
void addRoad(std::vector< const StoredHit * > const &hits, const FPGATrackSimGenScanBinningBase::IdxSet &idx)
Definition: FPGATrackSimGenScanTool.cxx:702
FPGATrackSimGenScanTool::pairThenGroupFilter
StatusCode pairThenGroupFilter(const BinEntry &bindata, const FPGATrackSimGenScanBinningBase::IdxSet &bin, std::vector< HitPairSet > &output_pairset)
Definition: FPGATrackSimGenScanTool.cxx:316
FPGATrackSimGenScanTool::m_roads
std::vector< FPGATrackSimRoad > m_roads
Definition: FPGATrackSimGenScanTool.h:323
IFPGATrackSimMappingSvc.h
FPGATrackSimGenScanTool::fillImage
StatusCode fillImage(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimGenScanTool.cxx:242
FPGATrackSimGenScanTool::StoredHit
Definition: FPGATrackSimGenScanTool.h:196
FPGATrackSimGenScanTool::HitPairSet::PhiOutExtrapCurved
double PhiOutExtrapCurved(const HitPair &pair, double r_out) const
Definition: FPGATrackSimGenScanTool.cxx:823
FPGATrackSimGenScanTool::BinEntry::addHit
void addHit(StoredHit hit)
Definition: FPGATrackSimGenScanTool.cxx:159
FPGATrackSimGenScanTool::m_z0FractionalPadding
Gaudi::Property< double > m_z0FractionalPadding
Definition: FPGATrackSimGenScanTool.h:112
FPGATrackSimGenScanTool::makePairs
StatusCode makePairs(const std::vector< std::vector< const StoredHit * >> &hitsByLayer, HitPairSet &pairs)
Definition: FPGATrackSimGenScanTool.cxx:507
FPGATrackSimGenScanTool::FPGATrackSimGenScanTool
FPGATrackSimGenScanTool(const std::string &, const std::string &, const IInterface *)
Definition: FPGATrackSimGenScanTool.cxx:55
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimGenScanTool::HitPairSet::MatchEta
double MatchEta(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:778
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:489
FPGATrackSimGenScanTool::StoredHit::etaShift
double etaShift
Definition: FPGATrackSimGenScanTool.h:199
FPGATrackSimGenScanTool::HitPairSet::DeltaDeltaPhi
double DeltaDeltaPhi(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:793
FPGATrackSimGenScanTool::HitPairSet::hitLayers
layer_bitmask_t hitLayers
Definition: FPGATrackSimGenScanTool.h:262
FPGATrackSimGenScanTool::HitPair::EtaOutExtrap
double EtaOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:241
FPGATrackSimGenScanTool::m_image
FPGATrackSimGenScanArray< BinEntry > m_image
Definition: FPGATrackSimGenScanTool.h:314
FPGATrackSimGenScanTool::m_qOverPtFractionalPadding
Gaudi::Property< double > m_qOverPtFractionalPadding
Definition: FPGATrackSimGenScanTool.h:115
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
FPGATrackSimGenScanTool::m_evtsProcessed
int m_evtsProcessed
Definition: FPGATrackSimGenScanTool.h:306
FPGATrackSimGenScanTool::HitPairSet::hasHit
bool hasHit(const StoredHit *hit) const
Definition: FPGATrackSimGenScanTool.cxx:734
FPGATrackSimGenScanTool::IntermediateState
Definition: FPGATrackSimGenScanTool.h:299
FPGATrackSimGenScanTool::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimGenScanTool.h:95
FPGATrackSimGenScanTool::StoredHit::layer
int layer
Definition: FPGATrackSimGenScanTool.h:200
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:226
FPGATrackSimGenScanTool::operator<<
friend std::ostream & operator<<(std::ostream &os, const StoredHit &hit)
Definition: FPGATrackSimGenScanTool.cxx:43
FPGATrackSimGenScanTool::m_pairFilterPhiExtrapCut
Gaudi::Property< std::vector< double > > m_pairFilterPhiExtrapCut
Definition: FPGATrackSimGenScanTool.h:125
FPGATrackSimGenScanTool::m_binning
ToolHandle< FPGATrackSimGenScanBinningBase > m_binning
Definition: FPGATrackSimGenScanTool.h:99
FPGATrackSimGenScanTool::getSubRegion
virtual int getSubRegion() const override
Definition: FPGATrackSimGenScanTool.h:87
FPGATrackSimGenScanTool::m_validScan
FPGATrackSimGenScanArray< int > m_validScan
Definition: FPGATrackSimGenScanTool.h:319
FPGATrackSimGenScanTool::IntermediateState::pairsets
std::vector< HitPairSet > pairsets
Definition: FPGATrackSimGenScanTool.h:301
FPGATrackSimGenScanTool::m_parBins
Gaudi::Property< std::vector< unsigned > > m_parBins
Definition: FPGATrackSimGenScanTool.h:106
FPGATrackSimGenScanTool::m_pairSetDeltaDeltaEtaCut
Gaudi::Property< double > m_pairSetDeltaDeltaEtaCut
Definition: FPGATrackSimGenScanTool.h:132
FPGATrackSimGenScanTool::m_pairSetDeltaEtaCurvatureCut
Gaudi::Property< double > m_pairSetDeltaEtaCurvatureCut
Definition: FPGATrackSimGenScanTool.h:136
FPGATrackSimGenScanTool::HitPairSet::LastPhiCurvature
double LastPhiCurvature
Definition: FPGATrackSimGenScanTool.h:268
FPGATrackSimGenScanTool::m_FPGATrackSimBankSvc
ServiceHandle< IFPGATrackSimBankSvc > m_FPGATrackSimBankSvc
Definition: FPGATrackSimGenScanTool.h:96
FPGATrackSimGenScanTool::m_validSlice
FPGATrackSimGenScanArray< int > m_validSlice
Definition: FPGATrackSimGenScanTool.h:318
FPGATrackSimGenScanMonitoring
Definition: FPGATrackSimGenScanMonitoring.h:37
FPGATrackSimGenScanTool::HitPairSet::PhiCurvature
double PhiCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:802
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
FPGATrackSimGenScanTool::m_threshold
Gaudi::Property< unsigned > m_threshold
Definition: FPGATrackSimGenScanTool.h:117
AthAlgTool.h
FPGATrackSimGenScanTool::incrementalBuildFilter
StatusCode incrementalBuildFilter(const BinEntry &bindata, const FPGATrackSimGenScanBinningBase::IdxSet &bin, std::vector< HitPairSet > &output_pairset)
Definition: FPGATrackSimGenScanTool.cxx:459
FPGATrackSimGenScanTool::HitPairSet
Definition: FPGATrackSimGenScanTool.h:254
FPGATrackSimGenScanTool::HitPairSet::DeltaDeltaEta
double DeltaDeltaEta(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:797
FPGATrackSimGenScanTool::HitPair::Reversed
const HitPair Reversed() const
Definition: FPGATrackSimGenScanTool.h:230
FPGATrackSimGenScanTool::m_pairSetDeltaPhiCurvatureCut
Gaudi::Property< double > m_pairSetDeltaPhiCurvatureCut
Definition: FPGATrackSimGenScanTool.h:135
FPGATrackSimGenScanTool::m_pairSetEtaCurvatureCut
Gaudi::Property< double > m_pairSetEtaCurvatureCut
Definition: FPGATrackSimGenScanTool.h:134
FPGATrackSimGenScanTool::HitPairSet::DeltaPhiCurvature
double DeltaPhiCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:810
FPGATrackSimGenScanTool::m_d0FractionalPadding
Gaudi::Property< double > m_d0FractionalPadding
Definition: FPGATrackSimGenScanTool.h:111
FPGATrackSimGenScanTool::HitPairSet::addPair
int addPair(const HitPair &pair)
Definition: FPGATrackSimGenScanTool.cxx:743
FPGATrackSimGenScanTool::m_monitoring
ToolHandle< FPGATrackSimGenScanMonitoring > m_monitoring
Definition: FPGATrackSimGenScanTool.h:98
FPGATrackSimGenScanTool::BinEntry::hitCnt
unsigned int hitCnt
Definition: FPGATrackSimGenScanTool.h:211
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
FPGATrackSimGenScanTool::computeValidBins
void computeValidBins()
Definition: FPGATrackSimGenScanTool.cxx:833
FPGATrackSimGenScanTool::m_pairSetDeltaDeltaPhiCut
Gaudi::Property< double > m_pairSetDeltaDeltaPhiCut
Definition: FPGATrackSimGenScanTool.h:131
FPGATrackSimGenScanTool::pairPassesFilter
bool pairPassesFilter(const HitPair &pair)
Definition: FPGATrackSimGenScanTool.cxx:542
FPGATrackSimGenScanTool::BinEntry::reset
void reset()
Definition: FPGATrackSimGenScanTool.cxx:152
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:172
FPGATrackSimGenScanTool::groupPairs
StatusCode groupPairs(HitPairSet &filteredpairs, std::vector< HitPairSet > &clusters, bool verbose)
Definition: FPGATrackSimGenScanTool.cxx:567
FPGATrackSimGenScanTool::m_pairSetMatchPhiCut
Gaudi::Property< double > m_pairSetMatchPhiCut
Definition: FPGATrackSimGenScanTool.h:129
FPGATrackSimGenScanTool::HitPair::dPhi
double dPhi() const
Definition: FPGATrackSimGenScanTool.h:224
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimGenScanTool::HitPairSet::DeltaEtaCurvature
double DeltaEtaCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:814
FPGATrackSimGenScanTool::m_pairFilterDeltaEtaCut
Gaudi::Property< std::vector< double > > m_pairFilterDeltaEtaCut
Definition: FPGATrackSimGenScanTool.h:124
FPGATrackSimGenScanTool::m_parSet
Gaudi::Property< std::string > m_parSet
Definition: FPGATrackSimGenScanTool.h:103
FPGATrackSimGenScanTool::HitPair::HitPair
HitPair(const StoredHit *first, const StoredHit *second, bool reverse)
Definition: FPGATrackSimGenScanTool.h:223
FPGATrackSimGenScanTool::HitPairSet::pairList
std::vector< HitPair > pairList
Definition: FPGATrackSimGenScanTool.h:259
FPGATrackSimGenScanTool::m_applyPairSetFilter
Gaudi::Property< bool > m_applyPairSetFilter
Definition: FPGATrackSimGenScanTool.h:128
FPGATrackSimGenScanTool::StoredHit::phiShift
double phiShift
Definition: FPGATrackSimGenScanTool.h:198
FPGATrackSimGenScanTool::HitPair::dEta
double dEta() const
Definition: FPGATrackSimGenScanTool.h:225
FPGATrackSimGenScanTool::m_phiFractionalPadding
Gaudi::Property< double > m_phiFractionalPadding
Definition: FPGATrackSimGenScanTool.h:114
FPGATrackSimGenScanTool::HitPair
Definition: FPGATrackSimGenScanTool.h:221
IFPGATrackSimEventSelectionSvc.h
FPGATrackSimGenScanTool
Definition: FPGATrackSimGenScanTool.h:74
FPGATrackSimGenScanTool::HitPairSet::lastpair
const HitPair & lastpair() const
Definition: FPGATrackSimGenScanTool.h:274
FPGATrackSimGenScanTool::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimGenScanTool.h:307
FPGATrackSimGenScanTool::StoredHit::hitptr
std::shared_ptr< const FPGATrackSimHit > hitptr
Definition: FPGATrackSimGenScanTool.h:197
FPGATrackSimGenScanTool::HitPairSet::EtaCurvature
double EtaCurvature(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:806
FPGATrackSimGenScanTool::m_FPGATrackSimMapping
ServiceHandle< IFPGATrackSimMappingSvc > m_FPGATrackSimMapping
Definition: FPGATrackSimGenScanTool.h:97
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimGenScanTool::m_applyPairFilter
Gaudi::Property< bool > m_applyPairFilter
Definition: FPGATrackSimGenScanTool.h:121
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:279
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:213
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimGenScanTool::HitPairSet::hitlist
std::vector< const StoredHit * > hitlist
Definition: FPGATrackSimGenScanTool.h:265
FPGATrackSimGenScanTool::m_rout
Gaudi::Property< double > m_rout
Definition: FPGATrackSimGenScanTool.h:109
FPGATrackSimGenScanTool::m_pairSetPhiExtrapCurvedCut
Gaudi::Property< std::vector< double > > m_pairSetPhiExtrapCurvedCut
Definition: FPGATrackSimGenScanTool.h:137
FPGATrackSimGenScanTool::HitPairSet::PhiInExtrapCurved
double PhiInExtrapCurved(const HitPair &pair, double r_in) const
Definition: FPGATrackSimGenScanTool.cxx:818
FPGATrackSimRoad.h
Defines a class for roads.
FPGATrackSimGenScanTool::HitPairSet::MatchPhi
double MatchPhi(const HitPair &pair) const
Definition: FPGATrackSimGenScanTool.cxx:764
FPGATrackSimGenScanTool::m_validSliceAndScan
FPGATrackSimGenScanArray< int > m_validSliceAndScan
Definition: FPGATrackSimGenScanTool.h:320
FPGATrackSimGenScanTool::BinEntry
Definition: FPGATrackSimGenScanTool.h:206
FPGATrackSimGenScanTool::m_reversePairDir
Gaudi::Property< bool > m_reversePairDir
Definition: FPGATrackSimGenScanTool.h:122
FPGATrackSimGenScanTool::m_pairFilterDeltaPhiCut
Gaudi::Property< std::vector< double > > m_pairFilterDeltaPhiCut
Definition: FPGATrackSimGenScanTool.h:123
FPGATrackSimGenScanTool::m_pairSetMatchEtaCut
Gaudi::Property< double > m_pairSetMatchEtaCut
Definition: FPGATrackSimGenScanTool.h:130
FPGATrackSimTypes.h
FPGATrackSimGenScanTool::m_pairingLayers
std::vector< unsigned int > m_pairingLayers
Definition: FPGATrackSimGenScanTool.h:308
FPGATrackSimGenScanTool::m_etaFractionalPadding
Gaudi::Property< double > m_etaFractionalPadding
Definition: FPGATrackSimGenScanTool.h:113
FPGATrackSimGenScanTool::m_validBin
FPGATrackSimGenScanArray< int > m_validBin
Definition: FPGATrackSimGenScanTool.h:317
FPGATrackSimGenScanTool::m_parMax
Gaudi::Property< std::vector< float > > m_parMax
Definition: FPGATrackSimGenScanTool.h:105
FPGATrackSimGenScanTool::HitPair::EtaInExtrap
double EtaInExtrap(double r_in) const
Definition: FPGATrackSimGenScanTool.h:244
FPGATrackSimGenScanTool::HitPair::PhiOutExtrap
double PhiOutExtrap(double r_out) const
Definition: FPGATrackSimGenScanTool.h:234
FPGATrackSimGenScanTool::BinEntry::lyrCnt
unsigned int lyrCnt()
Definition: FPGATrackSimGenScanTool.h:210
ServiceHandle< IFPGATrackSimEventSelectionSvc >