Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FPGATrackSimRoad.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef TRIGFPGATrackSimOBJECTS_FPGATrackSimROAD_H
4 #define TRIGFPGATrackSimOBJECTS_FPGATrackSimROAD_H
5 
17 #include <vector>
18 #include <unordered_set>
19 #include <ostream>
20 #include <memory>
21 #include <bit>
22 
23 #include "TObject.h"
24 
28 
29 
31 {
32 public:
33 
35  // Constructors
36 
37  FPGATrackSimRoad() = default;
38 
39  FPGATrackSimRoad(unsigned nLayers) : m_hits_trans(nLayers) { }
40 
41  FPGATrackSimRoad(int roadID, pid_t pid, sector_t sector, layer_bitmask_t hit_layers,
42  layer_bitmask_t wildcard_layers, std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>> && hits)
43  : m_roadID(roadID), m_pid(pid), m_sector(sector), m_hit_layers(hit_layers), m_wildcard_layers(wildcard_layers)/* , m_hits_trans(hits) */
44  {
45  setHits(std::move(hits));
46  }
47  //Move operators
49  FPGATrackSimRoad& operator=(FPGATrackSimRoad&&) noexcept = default;
50  //Copy operators
53  virtual ~FPGATrackSimRoad() = default;
54 
56  // Setters
57 
58  void setRoadID(int roadID) { m_roadID = roadID; }
59  void setPID(pid_t pid) { m_pid = pid; }
60  void setSector(sector_t sector) { m_sector = sector; }
61  void setSectorBin(int sectorbin) { m_sectorbin = sectorbin; }
62 
63  void setHitLayers(layer_bitmask_t hit_layers) { m_hit_layers = hit_layers; }
64  void setWCLayers(layer_bitmask_t wc_layers) { m_wildcard_layers = wc_layers; }
65 
66  void setNLayers(unsigned layers) { m_hits_trans.resize(layers); m_hits.resize(layers); }
67  void setHits(std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>> &&hits);
68  void setHits(unsigned layer, std::vector<std::shared_ptr<const FPGATrackSimHit>> && hits);
69 
70  void repopulateTransHits();
71 
72  void setEtaPatternID(int patternID) { m_etaPatternID = patternID; }
73 
74  void setSubRegion(int v) { m_subRegion = v; }
75  void setXBin(unsigned v) { m_xBin = v; }
76  void setYBin(unsigned v) { m_yBin = v; }
77  void setX(float v) { m_x = v; }
78  void setY(float v) { m_y = v; }
79 
80 
82  // Getters
83 
84  int getSubRegion() const { return m_subRegion; }
85  unsigned getXBin() const { return m_xBin; }
86  unsigned getYBin() const { return m_yBin; }
87  float getX() const { return m_x; }
88  float getY() const { return m_y; }
89 
90  int getRoadID() const { return m_roadID; }
91  pid_t getPID() const { return m_pid; }
92  sector_t getSector() const { return m_sector; }
93  int getSectorBin() const { return m_sectorbin; }
94 
97 
98  int getEtaPatternID() const { return m_etaPatternID; }
99 
100  const std::vector<std::shared_ptr<const FPGATrackSimHit>> &getHits(size_t layer) const { return m_hits_trans.at(layer); }
101  const std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>> &getAllHits() const { return m_hits_trans; }
102  std::unordered_set<std::shared_ptr<const FPGATrackSimHit>> getHits_flat() const;
103 
105  // Utility
106 
107  size_t getNLayers() const { return m_hits_trans.size(); }
108  size_t getNHitLayers() const { return std::popcount(m_hit_layers); }
109  size_t getNWCLayers() const { return std::popcount(m_wildcard_layers); }
110 
111  size_t getNHits() const;
112  std::vector<size_t> getNHits_layer() const;
113  size_t getNHitCombos() const;
114 
115  // Weight of each barcode is the fraction of layers with corresponding hits
116  // where pixels are weighted twice as much
118 
119 private:
120 
121  int m_roadID = 0; // Currently just a count set by RoadFinder.
122  pid_t m_pid = 0; // the pattern ID that fired this road
123  sector_t m_sector = 0; // Sector this road belongs to / should be fitted with
124  int m_sectorbin = -1; // The bin/ID of the sector that this road belongs to.
125 
126  layer_bitmask_t m_hit_layers = 0; // Layers that had hits match the pattern, not including wildcards
127  layer_bitmask_t m_wildcard_layers = 0; // Layers that matched because of a wildcard in the pattern
128 
129  // Eta pattern associated with the road.
130  int m_etaPatternID = -1;
131 
132  int m_subRegion = 0; // slice that the road came from
133  unsigned m_xBin = 0;
134  unsigned m_yBin = 0;
135  float m_x = 0; // x value of Hough bin
136  float m_y = 0; // y value of Hough bin
137 
138  std::vector<std::vector<FPGATrackSimHit>> m_hits; // [layer, hit#] (used for ROOT storing)
139  std::vector<std::vector<std::shared_ptr<const FPGATrackSimHit>>> m_hits_trans;
140  // A list of hits in the road for each layer.
141  // These pointers are not owned by the road.
142 
143 
145  // Misc
146  friend std::ostream& operator<<(std::ostream& os, const FPGATrackSimRoad& road);
148 };
149 
150 #endif // FPGATrackSimROAD_H
151 
pid_t
int32_t pid_t
Definition: FPGATrackSimTypes.h:19
FPGATrackSimRoad::m_subRegion
int m_subRegion
Definition: FPGATrackSimRoad.h:132
FPGATrackSimRoad::getHitLayers
layer_bitmask_t getHitLayers() const
Definition: FPGATrackSimRoad.h:95
FPGATrackSimRoad::repopulateTransHits
void repopulateTransHits()
Definition: FPGATrackSimRoad.cxx:123
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimRoad::getTruth
FPGATrackSimMultiTruth getTruth() const
Definition: FPGATrackSimRoad.cxx:76
FPGATrackSimRoad::m_hits_trans
std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit > > > m_hits_trans
Definition: FPGATrackSimRoad.h:139
FPGATrackSimRoad::getSubRegion
int getSubRegion() const
Definition: FPGATrackSimRoad.h:84
FPGATrackSimRoad::getNWCLayers
size_t getNWCLayers() const
Definition: FPGATrackSimRoad.h:109
FPGATrackSimRoad::FPGATrackSimRoad
FPGATrackSimRoad(FPGATrackSimRoad &&) noexcept=default
FPGATrackSimRoad::getHits
const std::vector< std::shared_ptr< const FPGATrackSimHit > > & getHits(size_t layer) const
Definition: FPGATrackSimRoad.h:100
FPGATrackSimRoad::getRoadID
int getRoadID() const
Definition: FPGATrackSimRoad.h:90
FPGATrackSimRoad::m_xBin
unsigned m_xBin
Definition: FPGATrackSimRoad.h:133
FPGATrackSimRoad::getEtaPatternID
int getEtaPatternID() const
Definition: FPGATrackSimRoad.h:98
module_driven_slicing.layers
layers
Definition: module_driven_slicing.py:114
FPGATrackSimRoad::m_yBin
unsigned m_yBin
Definition: FPGATrackSimRoad.h:134
FPGATrackSimRoad::getSectorBin
int getSectorBin() const
Definition: FPGATrackSimRoad.h:93
FPGATrackSimMultiTruth.h
FPGATrackSimRoad::getNHitLayers
size_t getNHitLayers() const
Definition: FPGATrackSimRoad.h:108
FPGATrackSimRoad::m_pid
pid_t m_pid
Definition: FPGATrackSimRoad.h:122
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
FPGATrackSimRoad::m_wildcard_layers
layer_bitmask_t m_wildcard_layers
Definition: FPGATrackSimRoad.h:127
FPGATrackSimRoad::getNHits_layer
std::vector< size_t > getNHits_layer() const
Definition: FPGATrackSimRoad.cxx:27
FPGATrackSimRoad::getX
float getX() const
Definition: FPGATrackSimRoad.h:87
FPGATrackSimRoad::getNHits
size_t getNHits() const
Definition: FPGATrackSimRoad.cxx:20
FPGATrackSimRoad::m_x
float m_x
Definition: FPGATrackSimRoad.h:135
FPGATrackSimRoad::m_hit_layers
layer_bitmask_t m_hit_layers
Definition: FPGATrackSimRoad.h:126
FPGATrackSimRoad::m_y
float m_y
Definition: FPGATrackSimRoad.h:136
FPGATrackSimRoad::getHits_flat
std::unordered_set< std::shared_ptr< const FPGATrackSimHit > > getHits_flat() const
Definition: FPGATrackSimRoad.cxx:113
FPGATrackSimRoad::m_hits
std::vector< std::vector< FPGATrackSimHit > > m_hits
Definition: FPGATrackSimRoad.h:138
FPGATrackSimRoad::setPID
void setPID(pid_t pid)
Definition: FPGATrackSimRoad.h:59
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
FPGATrackSimRoad::getXBin
unsigned getXBin() const
Definition: FPGATrackSimRoad.h:85
FPGATrackSimRoad::setX
void setX(float v)
Definition: FPGATrackSimRoad.h:77
FPGATrackSimRoad::FPGATrackSimRoad
FPGATrackSimRoad()=default
FPGATrackSimRoad::setNLayers
void setNLayers(unsigned layers)
Definition: FPGATrackSimRoad.h:66
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
FPGATrackSimRoad::getYBin
unsigned getYBin() const
Definition: FPGATrackSimRoad.h:86
FPGATrackSimRoad::setSectorBin
void setSectorBin(int sectorbin)
Definition: FPGATrackSimRoad.h:61
sector_t
int32_t sector_t
Definition: FPGATrackSimTypes.h:21
FPGATrackSimRoad::operator<<
friend std::ostream & operator<<(std::ostream &os, const FPGATrackSimRoad &road)
(transient) [layer, hit#]
Definition: FPGATrackSimRoad.cxx:149
FPGATrackSimMultiTruth
Definition: FPGATrackSimMultiTruth.h:46
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimRoad::ClassDefNV
ClassDefNV(FPGATrackSimRoad, 6)
FPGATrackSimRoad::setSubRegion
void setSubRegion(int v)
Definition: FPGATrackSimRoad.h:74
FPGATrackSimRoad::getWCLayers
layer_bitmask_t getWCLayers() const
Definition: FPGATrackSimRoad.h:96
FPGATrackSimRoad::m_roadID
int m_roadID
Definition: FPGATrackSimRoad.h:121
FPGATrackSimRoad::FPGATrackSimRoad
FPGATrackSimRoad(unsigned nLayers)
Definition: FPGATrackSimRoad.h:39
FPGATrackSimRoad::getY
float getY() const
Definition: FPGATrackSimRoad.h:88
python.PyAthena.v
v
Definition: PyAthena.py:154
FPGATrackSimRoad::m_etaPatternID
int m_etaPatternID
Definition: FPGATrackSimRoad.h:130
python.CaloAddPedShiftConfig.default
default
Definition: CaloAddPedShiftConfig.py:43
FPGATrackSimRoad::setSector
void setSector(sector_t sector)
Definition: FPGATrackSimRoad.h:60
FPGATrackSimRoad::getNLayers
size_t getNLayers() const
Definition: FPGATrackSimRoad.h:107
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimRoad::setYBin
void setYBin(unsigned v)
Definition: FPGATrackSimRoad.h:76
FPGATrackSimRoad::getNHitCombos
size_t getNHitCombos() const
Definition: FPGATrackSimRoad.cxx:35
FPGATrackSimRoad::getSector
sector_t getSector() const
Definition: FPGATrackSimRoad.h:92
FPGATrackSimRoad::setY
void setY(float v)
Definition: FPGATrackSimRoad.h:78
FPGATrackSimRoad::setRoadID
void setRoadID(int roadID)
Definition: FPGATrackSimRoad.h:58
FPGATrackSimRoad::setEtaPatternID
void setEtaPatternID(int patternID)
Definition: FPGATrackSimRoad.h:72
FPGATrackSimRoad::m_sectorbin
int m_sectorbin
Definition: FPGATrackSimRoad.h:124
FPGATrackSimRoad::getPID
pid_t getPID() const
Definition: FPGATrackSimRoad.h:91
FPGATrackSimRoad::setHitLayers
void setHitLayers(layer_bitmask_t hit_layers)
Definition: FPGATrackSimRoad.h:63
FPGATrackSimRoad::getAllHits
const std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit > > > & getAllHits() const
Definition: FPGATrackSimRoad.h:101
FPGATrackSimRoad::m_sector
sector_t m_sector
Definition: FPGATrackSimRoad.h:123
FPGATrackSimTypes.h
FPGATrackSimRoad::setHits
void setHits(std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit >>> &&hits)
Definition: FPGATrackSimRoad.cxx:141
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:31
FPGATrackSimRoad::setWCLayers
void setWCLayers(layer_bitmask_t wc_layers)
Definition: FPGATrackSimRoad.h:64
FPGATrackSimRoad::setXBin
void setXBin(unsigned v)
Definition: FPGATrackSimRoad.h:75
FPGATrackSimRoad::FPGATrackSimRoad
FPGATrackSimRoad(int roadID, pid_t pid, sector_t sector, layer_bitmask_t hit_layers, layer_bitmask_t wildcard_layers, std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit >>> &&hits)
Definition: FPGATrackSimRoad.h:41