5#ifndef ACTSTRK_HITSUMMARYDATAUTILS_H
6#define ACTSTRK_HITSUMMARYDATAUTILS_H
23 template <
typename T_EnumClass >
24 constexpr typename std::underlying_type<T_EnumClass>::type
to_underlying(T_EnumClass an_enum) {
25 return static_cast<typename std::underlying_type<T_EnumClass>::type
>(an_enum);
68 constexpr static unsigned short makeKey(
unsigned short region,
unsigned short layer,
int eta_mod) {
79 return static_cast<uint8_t
>(region) | (layer<<
REGION_BITS);
120 if (!detector_elements || id_hash>=detector_elements->
size() || !(*detector_elements)[id_hash]) {
137 else if (detEl->
isSCT()) {
145 unsigned short key =
makeKey(region, layer, eta_module);
146 for (
auto &[stat_key, stat_hits, stat_outlier_hits, stat_shared_hits] :
m_stat) {
147 if (stat_key == key) {
154 m_stat.emplace_back( std::make_tuple(key,
165 for (
const auto &[stat_key, stat_hits, stat_outlier_hits, stat_shared_hits] :
m_stat) {
167 m_hits.at(region) += stat_hits;
172 for (
unsigned int region_i=0; region_i<
unknown+1; ++region_i) {
221 template <
unsigned short HIT_
SELECTION>
224 unsigned short key =
makeKey(region, layer, 0);
225 for (
const auto &[stat_key, stat_hits, stat_outlier_hits, stat_shared_hits] :
m_stat) {
231 total += stat_outlier_hits;
234 total += stat_shared_hits;
242 std::vector< std::tuple<unsigned short, uint8_t, uint8_t, uint8_t> >
m_stat;
247 static constexpr std::array<uint8_t, unknown+1>
s_type
270 double inv_n =
m_n>0 ? 1/
m_n : 0 ;
275 double inv_n =
m_n>0 ? 1./
m_n : 0 ;
291 const typename ActsTrk::TrackContainer::ConstTrackProxy &track,
295 &measurement_to_summary_type,
296 SumOfValues &chi2_stat_out,
297 HitSummaryData &hit_info_out,
298 std::vector<ActsTrk::TrackStateBackend::ConstTrackStateProxy::IndexType > ¶m_state_idx_out,
This is an Identifier helper class for the Pixel subdetector.
This is an Identifier helper class for the SCT subdetector.
Helper class to gather hit summary information for e.g.
void reset()
reset all summary counters to zero.
static constexpr unsigned short REGION_MASK
std::array< uint8_t, Total+1 > m_layers
static constexpr DetectorRegion regionFromKey(unsigned short key)
extract the region index from the given key.
DetectorRegion
Regions for which hit counts are computed.
static constexpr unsigned short LAYER_BITS
static constexpr std::array< uint8_t, unknown+1 > s_type
uint8_t contributingSharedHits(DetectorRegion region) const
return the number of shared hits in a certain detector region.
static constexpr unsigned short SIGNED_ETA_MOD_MASK
bool addHit(const InDetDD::SiDetectorElementCollection *detector_elements, unsigned int id_hash, EHitSelection hit_selection)
update summaries to take the given hit into account.
std::array< uint8_t, Total+1 > m_hits
void computeSummaries()
Compute the varius summaries.
static constexpr unsigned short REGION_BITS
static constexpr unsigned short LAYER_MASK
static constexpr uint8_t layerFromKey(unsigned short key)
extract the layer index from the given key.
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.
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.
uint8_t contributingOutlierHits(DetectorRegion region) const
return the number of outliers in a certain detector region.
uint8_t contributingHits(DetectorRegion region) const
return the number of hits in a certain detector region.
std::vector< std::tuple< unsigned short, uint8_t, uint8_t, uint8_t > > m_stat
std::array< uint8_t, Total+1 > m_outlierHits
static constexpr unsigned short LAYER_REGION_MASK
static constexpr unsigned short SIGNED_ETA_MOD_BITS
std::array< uint8_t, Total+1 > m_sharedHits
uint8_t contributingLayers(DetectorRegion region) const
return the number of layers contributing to the hit collection in the given detector region.
Helper class to gather statistics and compute the biased variance.
std::array< double, 2 > meanAndBiasedVariance() const
double biasedVariance() const
size_type size() const noexcept
Returns the number of elements in the collection.
virtual DetectorType type() const
Type of element.
Class to hold the SiDetectorElement objects to be put in the detector store.
Class to hold geometrical description of a silicon detector 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)
This is an Identifier helper class for the Pixel subdetector.
int layer_disk(const Identifier &id) const
int eta_module(const Identifier &id) const
This is an Identifier helper class for the SCT subdetector.
int layer_disk(const Identifier &id) const
int eta_module(const Identifier &id) const
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Athena definition of the Eigen plugin.
void gatherTrackSummaryData(const ActsTrk::TrackContainer &tracksContainer, const typename ActsTrk::TrackContainer::ConstTrackProxy &track, const std::array< const InDetDD::SiDetectorElementCollection *, to_underlying(xAOD::UncalibMeasType::nTypes)> &siDetEleColl, const std::array< unsigned short, to_underlying(xAOD::UncalibMeasType::nTypes)> &measurement_to_summary_type, SumOfValues &chi2_stat_out, HitSummaryData &hit_info_out, std::vector< ActsTrk::TrackStateBackend::ConstTrackStateProxy::IndexType > ¶m_state_idx_out, std::array< std::array< uint8_t, to_underlying(HitCategory::N)>, to_underlying(xAOD::UncalibMeasType::nTypes)> &special_hit_counts_out)
Helper to gather track summary information from the track states of the specified track.
constexpr std::underlying_type< T_EnumClass >::type to_underlying(T_EnumClass an_enum)
Helper to convert class enum into an integer.