ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::detail::HitSummaryData Class Reference

Helper class to gather hit summary information for e.g. More...

#include <HitSummaryDataUtils.h>

Collaboration diagram for ActsTrk::detail::HitSummaryData:

Public Types

enum  DetectorRegion {
  pixelBarrelFlat = 0 , pixelBarrelInclined = 1 , pixelEndcap = 2 , stripBarrel = 3 ,
  stripEndcap = 4 , unknown = 5 , pixelTotal = 6 , stripTotal = 7 ,
  unknownTotal = 8 , Total = 9
}
 Regions for which hit counts are computed. More...
enum  EHitSelection { Hit = 1 , Outlier = 2 , HitAndOutlier = 3 , SharedHit = 4 }

Public Member Functions

void reset ()
 reset all summary counters to zero.
bool addHit (const InDetDD::SiDetectorElement *detEl, EHitSelection hit_selection)
 update summaries to take the given hit into account.
void computeSummaries ()
 Compute the varius summaries.
uint8_t contributingLayers (DetectorRegion region) const
 return the number of layers contributing to the hit collection in the given detector region.
uint8_t contributingHits (DetectorRegion region) const
 return the number of hits in a certain detector region.
uint8_t contributingOutlierHits (DetectorRegion region) const
 return the number of outliers in a certain detector region.
uint8_t contributingSharedHits (DetectorRegion region) const
 return the number of shared hits in a certain detector region.
template<unsigned short HIT_SELECTION>
uint8_t sum (DetectorRegion region, uint8_t layer) const
 return the total number of hits, outliers, and/or shared hits in the givrn detector region and layer.

Static Public Member Functions

static constexpr unsigned short makeKey (unsigned short region, unsigned short layer, int eta_mod)
 Compute a counter key for the given region, layer and module eta module index.
static constexpr DetectorRegion regionFromKey (unsigned short key)
 extract the region index from the given key.
static constexpr uint8_t layerFromKey (unsigned short key)
 extract the layer index from the given key.

Static Public Attributes

static constexpr unsigned short LAYER_REGION_MASK = 0x1FF
static constexpr unsigned short REGION_BITS = 3
static constexpr unsigned short REGION_MASK = 0x7
static constexpr unsigned short LAYER_BITS = 6
static constexpr unsigned short LAYER_MASK = 0x3F
static constexpr unsigned short SIGNED_ETA_MOD_BITS = 7
static constexpr unsigned short SIGNED_ETA_MOD_MASK = 0x7F

Private Attributes

std::vector< std::tuple< unsigned short, uint8_t, uint8_t, uint8_t > > m_stat
std::array< uint8_t, Total+1 > m_hits
std::array< uint8_t, Total+1 > m_outlierHits
std::array< uint8_t, Total+1 > m_sharedHits
std::array< uint8_t, Total+1 > m_layers

Static Private Attributes

static constexpr std::array< uint8_t, unknown+1 > s_type { pixelTotal, pixelTotal, pixelTotal, stripTotal, stripTotal, unknownTotal}

Detailed Description

Helper class to gather hit summary information for e.g.

tracks.

Definition at line 29 of file HitSummaryDataUtils.h.

Member Enumeration Documentation

◆ DetectorRegion

Regions for which hit counts are computed.

Enumerator
pixelBarrelFlat 
pixelBarrelInclined 
pixelEndcap 
stripBarrel 
stripEndcap 
unknown 
pixelTotal 
stripTotal 
unknownTotal 
Total 

Definition at line 33 of file HitSummaryDataUtils.h.

◆ EHitSelection

Member Function Documentation

◆ addHit()

bool ActsTrk::detail::HitSummaryData::addHit ( const InDetDD::SiDetectorElement * detEl,
EHitSelection hit_selection )
inline

update summaries to take the given hit into account.

Parameters
detector_elementsdetector element collection relevant for the given hit.
id_hashthe id_hash of the hit
hit_selectionshould be set to bit mask for Hit, Outlier, SharedHit.
returnsfalse in case the hit was not considered. The hit is not considered if the given id_hash is not valid for the given detector element collectio.

Definition at line 110 of file HitSummaryDataUtils.h.

111 {
112 if (!detEl) {
113 return false;
114 }
115 DetectorRegion region = unknown;
116 uint8_t layer = 255;
117 int eta_module = 0;
118 if (detEl->isPixel()) {
121 else if(type==InDetDD::PixelBarrel) region = pixelBarrelFlat;
122 else region = pixelEndcap;
123
124 const PixelID* pixel_id = static_cast<const PixelID *>(detEl->getIdHelper());
125 layer = pixel_id->layer_disk(detEl->identify());
126 eta_module = pixel_id->eta_module(detEl->identify());
127 }
128 else if (detEl->isSCT()) {
129 region = (detEl->isBarrel() ? stripBarrel : stripEndcap);
130
131 const SCT_ID* sct_id = static_cast<const SCT_ID *>(detEl->getIdHelper());
132 layer = sct_id->layer_disk(detEl->identify());
133 eta_module = sct_id->eta_module(detEl->identify());
134 }
135
136 unsigned short key = makeKey(region, layer, eta_module);
137 for (auto &[stat_key, stat_hits, stat_outlier_hits, stat_shared_hits] : m_stat) {
138 if (stat_key == key) {
139 stat_hits += ((hit_selection & HitSummaryData::Hit)!=0);
140 stat_outlier_hits += ((hit_selection & HitSummaryData::Outlier)!=0);
141 stat_shared_hits += ((hit_selection & HitSummaryData::SharedHit)!=0);
142 return true;
143 }
144 }
145 m_stat.emplace_back( std::make_tuple(key,
146 ((hit_selection & HitSummaryData::Hit)!=0),
147 ((hit_selection & HitSummaryData::Outlier)!=0),
148 ((hit_selection & HitSummaryData::SharedHit)!=0)) );
149 return true;
150 }
DetectorRegion
Regions for which hit counts are computed.
static constexpr unsigned short makeKey(unsigned short region, unsigned short layer, int eta_mod)
Compute a counter key for the given region, layer and module eta module index.
std::vector< std::tuple< unsigned short, uint8_t, uint8_t, uint8_t > > m_stat
virtual DetectorType type() const
Type of element.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
virtual Identifier identify() const override final
identifier of this detector element (inline)
const AtlasDetectorID * getIdHelper() const
Returns the id helper (inline).
int layer_disk(const Identifier &id) const
Definition PixelID.h:602
int eta_module(const Identifier &id) const
Definition PixelID.h:627
int layer_disk(const Identifier &id) const
Definition SCT_ID.h:687
int eta_module(const Identifier &id) const
Definition SCT_ID.h:699
@ layer
Definition HitInfo.h:79

◆ computeSummaries()

void ActsTrk::detail::HitSummaryData::computeSummaries ( )
inline

Compute the varius summaries.

Must be called only after all hits have been gathered, and must not be called more than once.

Definition at line 155 of file HitSummaryDataUtils.h.

155 {
156 for (const auto &[stat_key, stat_hits, stat_outlier_hits, stat_shared_hits] : m_stat) {
157 unsigned short region=regionFromKey(stat_key);
158 m_hits.at(region) += stat_hits;
159 m_outlierHits.at(region) += stat_outlier_hits;
160 m_sharedHits.at(region) += stat_shared_hits;
161 ++m_layers.at(region);
162 }
163 for (unsigned int region_i=0; region_i<unknown+1; ++region_i) {
164 m_hits.at(s_type.at(region_i)) += m_hits[region_i];
165 m_outlierHits.at(s_type.at(region_i)) += m_outlierHits[region_i];
166 m_sharedHits.at(s_type.at(region_i)) += m_sharedHits[region_i];
167 m_layers.at(s_type.at(region_i)) += m_layers[region_i];
168 m_hits.at(Total) += m_hits[region_i];
169 m_outlierHits.at(Total) += m_outlierHits[region_i];
170 m_sharedHits.at(Total) += m_sharedHits[region_i];
171 m_layers.at(Total) += m_layers[region_i];
172 }
173 }
std::array< uint8_t, Total+1 > m_layers
static constexpr DetectorRegion regionFromKey(unsigned short key)
extract the region index from the given key.
static constexpr std::array< uint8_t, unknown+1 > s_type
std::array< uint8_t, Total+1 > m_hits
std::array< uint8_t, Total+1 > m_outlierHits
std::array< uint8_t, Total+1 > m_sharedHits

◆ contributingHits()

uint8_t ActsTrk::detail::HitSummaryData::contributingHits ( DetectorRegion region) const
inline

return the number of hits in a certain detector region.

Parameters
regionthe detector region. Only meaningful after computeSummaries was called.

Definition at line 187 of file HitSummaryDataUtils.h.

187 {
188 return m_hits.at(region);
189 }

◆ contributingLayers()

uint8_t ActsTrk::detail::HitSummaryData::contributingLayers ( DetectorRegion region) const
inline

return the number of layers contributing to the hit collection in the given detector region.

Parameters
regionthe detector region. Only meaningful after computeSummaries was called.

Definition at line 179 of file HitSummaryDataUtils.h.

179 {
180 return m_layers.at(region);
181 }

◆ contributingOutlierHits()

uint8_t ActsTrk::detail::HitSummaryData::contributingOutlierHits ( DetectorRegion region) const
inline

return the number of outliers in a certain detector region.

Parameters
regionthe detector region. Only meaningful after computeSummaries was called.

Definition at line 195 of file HitSummaryDataUtils.h.

195 {
196 return m_outlierHits.at(region);
197 }

◆ contributingSharedHits()

uint8_t ActsTrk::detail::HitSummaryData::contributingSharedHits ( DetectorRegion region) const
inline

return the number of shared hits in a certain detector region.

Parameters
regionthe detector region. Only meaningful after computeSummaries was called.

Definition at line 203 of file HitSummaryDataUtils.h.

203 {
204 return m_sharedHits.at(region);
205 }

◆ layerFromKey()

constexpr uint8_t ActsTrk::detail::HitSummaryData::layerFromKey ( unsigned short key)
inlinestaticconstexpr

extract the layer index from the given key.

Definition at line 81 of file HitSummaryDataUtils.h.

81 {
82 return (key>>REGION_BITS) & LAYER_MASK; // bits 3-8
83 }
static constexpr unsigned short REGION_BITS
static constexpr unsigned short LAYER_MASK

◆ makeKey()

constexpr unsigned short ActsTrk::detail::HitSummaryData::makeKey ( unsigned short region,
unsigned short layer,
int eta_mod )
inlinestaticconstexpr

Compute a counter key for the given region, layer and module eta module index.

Parameters
regionthe detector region index (0..7).
layerthe layer index (0..63).
thesigned eta module index (-63..63).

Definition at line 59 of file HitSummaryDataUtils.h.

59 {
60 // 3 bits region : 0-7 : pixelBarrelFlat - unknown
61 // 6 bits layer : 0-63
62 // 1+6 bits eta_mod : +- 0-63
63 // @TODO endcap side A/C ?
64 assert(region < (1<<REGION_BITS) );
65 assert(layer < (1<<LAYER_BITS));
66 assert( std::abs(eta_mod) < (1<<(SIGNED_ETA_MOD_BITS-1)) );
67 if (region != stripBarrel && region != pixelBarrelFlat) {
68 layer |= (static_cast<uint8_t>(eta_mod) & SIGNED_ETA_MOD_MASK) << LAYER_BITS ;
69 }
70 return static_cast<uint8_t>(region) | (layer<<REGION_BITS);
71 }
static constexpr unsigned short LAYER_BITS
static constexpr unsigned short SIGNED_ETA_MOD_MASK
static constexpr unsigned short SIGNED_ETA_MOD_BITS

◆ regionFromKey()

constexpr DetectorRegion ActsTrk::detail::HitSummaryData::regionFromKey ( unsigned short key)
inlinestaticconstexpr

extract the region index from the given key.

Definition at line 75 of file HitSummaryDataUtils.h.

75 {
76 return static_cast<DetectorRegion>(key & REGION_MASK); // bits 0-2
77 }
static constexpr unsigned short REGION_MASK

◆ reset()

void ActsTrk::detail::HitSummaryData::reset ( )
inline

reset all summary counters to zero.

Definition at line 95 of file HitSummaryDataUtils.h.

95 {
96 m_stat.clear();
97 std::fill(m_hits.begin(),m_hits.end(), 0u);
98 std::fill(m_outlierHits.begin(),m_outlierHits.end(), 0u);
99 std::fill(m_sharedHits.begin(),m_sharedHits.end(), 0u);
100 std::fill(m_layers.begin(),m_layers.end(), 0u);
101 }

◆ sum()

template<unsigned short HIT_SELECTION>
uint8_t ActsTrk::detail::HitSummaryData::sum ( DetectorRegion region,
uint8_t layer ) const
inline

return the total number of hits, outliers, and/or shared hits in the givrn detector region and layer.

Parameters
regionthe detector region.
layerthe detector layer.

Definition at line 213 of file HitSummaryDataUtils.h.

213 {
214 uint8_t total=0u;
215 unsigned short key = makeKey(region, layer, 0);
216 for (const auto &[stat_key, stat_hits, stat_outlier_hits, stat_shared_hits] : m_stat) {
217 if ((stat_key & LAYER_REGION_MASK) == key) {
218 if constexpr(HIT_SELECTION & HitSummaryData::Hit) {
219 total += stat_hits;
220 }
221 if constexpr(HIT_SELECTION & HitSummaryData::Outlier) {
222 total += stat_outlier_hits;
223 }
224 if constexpr(HIT_SELECTION & HitSummaryData::SharedHit) {
225 total += stat_shared_hits;
226 }
227 }
228 }
229 return total;
230 }
static constexpr unsigned short LAYER_REGION_MASK
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77

Member Data Documentation

◆ LAYER_BITS

unsigned short ActsTrk::detail::HitSummaryData::LAYER_BITS = 6
staticconstexpr

Definition at line 49 of file HitSummaryDataUtils.h.

◆ LAYER_MASK

unsigned short ActsTrk::detail::HitSummaryData::LAYER_MASK = 0x3F
staticconstexpr

Definition at line 50 of file HitSummaryDataUtils.h.

◆ LAYER_REGION_MASK

unsigned short ActsTrk::detail::HitSummaryData::LAYER_REGION_MASK = 0x1FF
staticconstexpr

Definition at line 46 of file HitSummaryDataUtils.h.

◆ m_hits

std::array<uint8_t, Total+1> ActsTrk::detail::HitSummaryData::m_hits
private

Definition at line 234 of file HitSummaryDataUtils.h.

◆ m_layers

std::array<uint8_t, Total+1> ActsTrk::detail::HitSummaryData::m_layers
private

Definition at line 237 of file HitSummaryDataUtils.h.

◆ m_outlierHits

std::array<uint8_t, Total+1> ActsTrk::detail::HitSummaryData::m_outlierHits
private

Definition at line 235 of file HitSummaryDataUtils.h.

◆ m_sharedHits

std::array<uint8_t, Total+1> ActsTrk::detail::HitSummaryData::m_sharedHits
private

Definition at line 236 of file HitSummaryDataUtils.h.

◆ m_stat

std::vector< std::tuple<unsigned short, uint8_t, uint8_t, uint8_t> > ActsTrk::detail::HitSummaryData::m_stat
private

Definition at line 233 of file HitSummaryDataUtils.h.

◆ REGION_BITS

unsigned short ActsTrk::detail::HitSummaryData::REGION_BITS = 3
staticconstexpr

Definition at line 47 of file HitSummaryDataUtils.h.

◆ REGION_MASK

unsigned short ActsTrk::detail::HitSummaryData::REGION_MASK = 0x7
staticconstexpr

Definition at line 48 of file HitSummaryDataUtils.h.

◆ s_type

std::array<uint8_t, unknown+1> ActsTrk::detail::HitSummaryData::s_type { pixelTotal, pixelTotal, pixelTotal, stripTotal, stripTotal, unknownTotal}
staticconstexprprivate

◆ SIGNED_ETA_MOD_BITS

unsigned short ActsTrk::detail::HitSummaryData::SIGNED_ETA_MOD_BITS = 7
staticconstexpr

Definition at line 51 of file HitSummaryDataUtils.h.

◆ SIGNED_ETA_MOD_MASK

unsigned short ActsTrk::detail::HitSummaryData::SIGNED_ETA_MOD_MASK = 0x7F
staticconstexpr

Definition at line 52 of file HitSummaryDataUtils.h.


The documentation for this class was generated from the following file: