ATLAS Offline Software
FPGATrackSimRoad.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2023 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 
21 #include "TObject.h"
22 
26 
27 
28 class FPGATrackSimRoad : public TObject
29 {
30 public:
31 
33  // Constructors
34 
35  FPGATrackSimRoad() = default;
36 
37  FPGATrackSimRoad(unsigned nLayers) : m_hits(nLayers) { }
38 
39  FPGATrackSimRoad(int roadID, pid_t pid, sector_t sector, layer_bitmask_t hit_layers,
40  layer_bitmask_t wildcard_layers, std::vector<std::vector<const FPGATrackSimHit*>> const& hits)
41  : m_roadID(roadID), m_pid(pid), m_sector(sector), m_hit_layers(hit_layers), m_wildcard_layers(wildcard_layers), m_hits(hits)
42  { }
43 
44 
46  // Setters
47 
48  void setRoadID(int roadID) { m_roadID = roadID; }
49  void setPID(pid_t pid) { m_pid = pid; }
50  void setSector(sector_t sector) { m_sector = sector; }
51  void setSectorBin(int sectorbin) { m_sectorbin = sectorbin; }
52 
53  void setHitLayers(layer_bitmask_t hit_layers) { m_hit_layers = hit_layers; }
54  void setWCLayers(layer_bitmask_t wc_layers) { m_wildcard_layers = wc_layers; }
55 
56  void setNLayers(unsigned layers) { m_hits.resize(layers); }
57  void setHits(std::vector<std::vector<const FPGATrackSimHit*>> const& hits) { m_hits = hits; }
58  void setHits(unsigned layer, std::vector<const FPGATrackSimHit*> const& hits) { m_hits.at(layer) = hits; } // ensure setNLayers is called first
59  void setEtaPatternID(int patternID) { m_etaPatternID = patternID; }
60 
61  void setSubRegion(int v) { m_subRegion = v; }
62  void setXBin(unsigned v) { m_xBin = v; }
63  void setYBin(unsigned v) { m_yBin = v; }
64  void setX(float v) { m_x = v; }
65  void setY(float v) { m_y = v; }
66 
67 
69  // Getters
70 
71  int getSubRegion() const { return m_subRegion; }
72  unsigned getXBin() const { return m_xBin; }
73  unsigned getYBin() const { return m_yBin; }
74  float getX() const { return m_x; }
75  float getY() const { return m_y; }
76 
77  int getRoadID() const { return m_roadID; }
78  pid_t getPID() const { return m_pid; }
79  sector_t getSector() const { return m_sector; }
80  int getSectorBin() const { return m_sectorbin; }
81 
84 
85  int getEtaPatternID() const { return m_etaPatternID; }
86 
87  std::vector<const FPGATrackSimHit*> const& getHits(size_t layer) const { return m_hits.at(layer); }
88  std::unordered_set<const FPGATrackSimHit*> getHits_flat() const
89  {
90  std::unordered_set<const FPGATrackSimHit*> hits;
91  for (const auto& x : m_hits) hits.insert(x.begin(), x.end());
92  return hits;
93  }
94 
96  // Utility
97 
98  size_t getNLayers() const { return m_hits.size(); }
99  size_t getNHitLayers() const { return __builtin_popcount(m_hit_layers); }
100  size_t getNWCLayers() const { return __builtin_popcount(m_wildcard_layers); }
101 
102  size_t getNHits() const;
103  std::vector<size_t> getNHits_layer() const;
104  size_t getNHitCombos() const;
105 
106  // Weight of each barcode is the fraction of layers with corresponding hits
107  // where pixels are weighted twice as much
109 
110 private:
111 
112  int m_roadID = 0; // Currently just a count set by RoadFinder.
113  pid_t m_pid = 0; // the pattern ID that fired this road
114  sector_t m_sector = 0; // Sector this road belongs to / should be fitted with
115  int m_sectorbin = -1; // The bin/ID of the sector that this road belongs to.
116 
117  layer_bitmask_t m_hit_layers = 0; // Layers that had hits match the pattern, not including wildcards
118  layer_bitmask_t m_wildcard_layers = 0; // Layers that matched because of a wildcard in the pattern
119 
120  // Eta pattern associated with the road.
121  int m_etaPatternID = -1;
122 
123  int m_subRegion = 0; // slice that the road came from
124  unsigned m_xBin = 0;
125  unsigned m_yBin = 0;
126  float m_x = 0; // x value of Hough bin
127  float m_y = 0; // y value of Hough bin
128 
129  std::vector<std::vector<const FPGATrackSimHit*>> m_hits; // [layer, hit#]
130  // A list of hits in the road for each layer.
131  // These pointers are not owned by the road.
132 
134  // Misc
135 
136  friend std::ostream& operator<<(std::ostream& os, const FPGATrackSimRoad& road);
138 };
139 
140 #endif // FPGATrackSimROAD_H
141 
pid_t
int32_t pid_t
Definition: FPGATrackSimTypes.h:19
FPGATrackSimRoad::m_subRegion
int m_subRegion
Definition: FPGATrackSimRoad.h:123
FPGATrackSimRoad::getHitLayers
layer_bitmask_t getHitLayers() const
Definition: FPGATrackSimRoad.h:82
FPGATrackSimRoad::getTruth
FPGATrackSimMultiTruth getTruth() const
Definition: FPGATrackSimRoad.cxx:73
FPGATrackSimRoad::getSubRegion
int getSubRegion() const
Definition: FPGATrackSimRoad.h:71
FPGATrackSimRoad::getNWCLayers
size_t getNWCLayers() const
Definition: FPGATrackSimRoad.h:100
FPGATrackSimRoad::getRoadID
int getRoadID() const
Definition: FPGATrackSimRoad.h:77
FPGATrackSimRoad::m_xBin
unsigned m_xBin
Definition: FPGATrackSimRoad.h:124
FPGATrackSimRoad::getEtaPatternID
int getEtaPatternID() const
Definition: FPGATrackSimRoad.h:85
module_driven_slicing.layers
layers
Definition: module_driven_slicing.py:114
FPGATrackSimRoad::m_yBin
unsigned m_yBin
Definition: FPGATrackSimRoad.h:125
FPGATrackSimRoad::getSectorBin
int getSectorBin() const
Definition: FPGATrackSimRoad.h:80
FPGATrackSimRoad::getHits
std::vector< const FPGATrackSimHit * > const & getHits(size_t layer) const
Definition: FPGATrackSimRoad.h:87
FPGATrackSimMultiTruth.h
FPGATrackSimRoad::getNHitLayers
size_t getNHitLayers() const
Definition: FPGATrackSimRoad.h:99
FPGATrackSimRoad::m_pid
pid_t m_pid
Definition: FPGATrackSimRoad.h:113
x
#define x
FPGATrackSimRoad::getHits_flat
std::unordered_set< const FPGATrackSimHit * > getHits_flat() const
Definition: FPGATrackSimRoad.h:88
FPGATrackSimRoad::m_wildcard_layers
layer_bitmask_t m_wildcard_layers
Definition: FPGATrackSimRoad.h:118
FPGATrackSimRoad::getNHits_layer
std::vector< size_t > getNHits_layer() const
Definition: FPGATrackSimRoad.cxx:25
FPGATrackSimRoad::getX
float getX() const
Definition: FPGATrackSimRoad.h:74
FPGATrackSimRoad::getNHits
size_t getNHits() const
Definition: FPGATrackSimRoad.cxx:18
FPGATrackSimRoad::m_x
float m_x
Definition: FPGATrackSimRoad.h:126
FPGATrackSimRoad::m_hit_layers
layer_bitmask_t m_hit_layers
Definition: FPGATrackSimRoad.h:117
FPGATrackSimRoad::m_y
float m_y
Definition: FPGATrackSimRoad.h:127
FPGATrackSimRoad::setPID
void setPID(pid_t pid)
Definition: FPGATrackSimRoad.h:49
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
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:72
FPGATrackSimRoad::setX
void setX(float v)
Definition: FPGATrackSimRoad.h:64
FPGATrackSimRoad::FPGATrackSimRoad
FPGATrackSimRoad()=default
FPGATrackSimRoad::ClassDef
ClassDef(FPGATrackSimRoad, 2)
FPGATrackSimRoad::setNLayers
void setNLayers(unsigned layers)
Definition: FPGATrackSimRoad.h:56
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
FPGATrackSimRoad::getYBin
unsigned getYBin() const
Definition: FPGATrackSimRoad.h:73
FPGATrackSimRoad::setSectorBin
void setSectorBin(int sectorbin)
Definition: FPGATrackSimRoad.h:51
sector_t
int32_t sector_t
Definition: FPGATrackSimTypes.h:21
FPGATrackSimRoad::operator<<
friend std::ostream & operator<<(std::ostream &os, const FPGATrackSimRoad &road)
Definition: FPGATrackSimRoad.cxx:109
FPGATrackSimRoad::setHits
void setHits(unsigned layer, std::vector< const FPGATrackSimHit * > const &hits)
Definition: FPGATrackSimRoad.h:58
FPGATrackSimMultiTruth
Definition: FPGATrackSimMultiTruth.h:46
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
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< const FPGATrackSimHit * >> const &hits)
Definition: FPGATrackSimRoad.h:39
FPGATrackSimRoad::setSubRegion
void setSubRegion(int v)
Definition: FPGATrackSimRoad.h:61
FPGATrackSimRoad::getWCLayers
layer_bitmask_t getWCLayers() const
Definition: FPGATrackSimRoad.h:83
FPGATrackSimRoad::m_roadID
int m_roadID
Definition: FPGATrackSimRoad.h:112
FPGATrackSimRoad::FPGATrackSimRoad
FPGATrackSimRoad(unsigned nLayers)
Definition: FPGATrackSimRoad.h:37
FPGATrackSimRoad::getY
float getY() const
Definition: FPGATrackSimRoad.h:75
python.PyAthena.v
v
Definition: PyAthena.py:157
FPGATrackSimRoad::m_etaPatternID
int m_etaPatternID
Definition: FPGATrackSimRoad.h:121
FPGATrackSimRoad::m_hits
std::vector< std::vector< const FPGATrackSimHit * > > m_hits
Definition: FPGATrackSimRoad.h:129
FPGATrackSimRoad::setSector
void setSector(sector_t sector)
Definition: FPGATrackSimRoad.h:50
FPGATrackSimRoad::getNLayers
size_t getNLayers() const
Definition: FPGATrackSimRoad.h:98
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimRoad::setHits
void setHits(std::vector< std::vector< const FPGATrackSimHit * >> const &hits)
Definition: FPGATrackSimRoad.h:57
FPGATrackSimRoad::setYBin
void setYBin(unsigned v)
Definition: FPGATrackSimRoad.h:63
FPGATrackSimRoad::getNHitCombos
size_t getNHitCombos() const
Definition: FPGATrackSimRoad.cxx:32
FPGATrackSimRoad::getSector
sector_t getSector() const
Definition: FPGATrackSimRoad.h:79
FPGATrackSimRoad::setY
void setY(float v)
Definition: FPGATrackSimRoad.h:65
FPGATrackSimRoad::setRoadID
void setRoadID(int roadID)
Definition: FPGATrackSimRoad.h:48
FPGATrackSimRoad::setEtaPatternID
void setEtaPatternID(int patternID)
Definition: FPGATrackSimRoad.h:59
FPGATrackSimRoad::m_sectorbin
int m_sectorbin
Definition: FPGATrackSimRoad.h:115
FPGATrackSimRoad::getPID
pid_t getPID() const
Definition: FPGATrackSimRoad.h:78
FPGATrackSimRoad::setHitLayers
void setHitLayers(layer_bitmask_t hit_layers)
Definition: FPGATrackSimRoad.h:53
FPGATrackSimRoad::m_sector
sector_t m_sector
Definition: FPGATrackSimRoad.h:114
FPGATrackSimTypes.h
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:29
FPGATrackSimRoad::setWCLayers
void setWCLayers(layer_bitmask_t wc_layers)
Definition: FPGATrackSimRoad.h:54
FPGATrackSimRoad::setXBin
void setXBin(unsigned v)
Definition: FPGATrackSimRoad.h:62