ATLAS Offline Software
FPGATrackSimBinnedHits.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimBinnedHits_H
4 #define FPGATrackSimBinnedHits_H
5 
25 
30 
31 #include "GaudiKernel/StatusCode.h"
32 
33 #include <GaudiKernel/ToolHandle.h>
34 
35 #include <string>
36 #include <vector>
37 #include <bit>
38 
39 //-------------------------------------------------------------------------------------------------------
40 // BinnedHits
41 // Nomenclature:
42 // parameter = parameter of track e.g. (pT,eta,phi,d0,z0) but could be
43 // in different coordinates
44 // such at in the keylayer format where its
45 // (z_in,z_out,phi_in,phi_out,x_m)
46 // bin = a bin in the full parameters space (upto 5-d)
47 // subbin = a binning used as part of the total binning e.g. only in
48 // (pT,phi) or only in (z_in,z_out)
49 //-------------------------------------------------------------------------------------------------------
51 public:
52  FPGATrackSimBinnedHits(const std::string &algname, const std::string &name,
53  const IInterface *ifc)
54  : AthAlgTool(algname, name, ifc) {}
55 
56  virtual StatusCode initialize() override;
57  void initBinnedDataArrays();
58 
59  StatusCode fill(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits);
60  void resetBins();
61 
62  // access to tool
63  const FPGATrackSimBinTool& getBinTool() const { return *m_bintool.get();}
65 
67  // Internal Storage Classes
68 
69  // each bin contains a list of StoredHit objects
70  struct BinEntry {
71  BinEntry() {}
72  void reset();
73  void addHit(const FPGATrackSimBinUtil::StoredHit& hit);
74  unsigned int lyrCnt() const { return std::popcount(lyrhit); };
75  unsigned int hitsInLyr(unsigned lyr) const;
76  unsigned int hitCnt = 0;
78  std::vector<FPGATrackSimBinUtil::StoredHit> hits{};
79  };
80 
81  // access to binned hits..
82  const std::vector<FPGATrackSimBinArray<BinEntry>> &binnedHits() const {
83  return m_binnedHitsStep;
84  }
86  return m_binnedHitsStep.back();
87  }
88 
89  // Layer Map
90  // structure is indexed on bin, then layer, then a set of modules
91  void readLayerMap(const std::string & filename);
94 
95  // Number of layers
96  void setNLayers(const unsigned &nLayers) { m_nLayers = nLayers; }
97  unsigned getNLayers() const {return m_nLayers;}
98 
99 private:
100  Gaudi::Property<std::string> m_lyrmapFile{this, "layerMapFile",{""}, "use externally defined layer map"};
101  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel{this, "FPGATrackSimEventSelectionSvc", ""};
102 
103  // Vector of BinEntry for each step
104  std::vector<FPGATrackSimBinArray<BinEntry>> m_binnedHitsStep;
105 
106  // The tool where the steps are defined
107  ToolHandle<FPGATrackSimBinTool> m_bintool {
108  this, "BinTool", "FPGATrackSimBinTool",
109  "FPGATrackSimBinTool: contains tools describe which parameters are used and each step of binning"};
110 
111  // The number of layers, either set externally from pmap or set by the layerMap
112  unsigned m_nLayers{0};
113 };
114 
115 #endif // FPGATrackSimBinnedHits_H
FPGATrackSimBinnedHits::m_lyr_to_mod_map
FPGATrackSimBinArray< std::vector< std::set< unsigned > > > m_lyr_to_mod_map
Definition: FPGATrackSimBinnedHits.h:92
FPGATrackSimBinnedHits::m_binnedHitsStep
std::vector< FPGATrackSimBinArray< BinEntry > > m_binnedHitsStep
Definition: FPGATrackSimBinnedHits.h:104
getMenu.algname
algname
Definition: getMenu.py:54
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
FPGATrackSimBinnedHits::FPGATrackSimBinnedHits
FPGATrackSimBinnedHits(const std::string &algname, const std::string &name, const IInterface *ifc)
Definition: FPGATrackSimBinnedHits.h:52
FPGATrackSimBinnedHits::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimBinnedHits.h:112
FPGATrackSimBinnedHits::setNLayers
void setNLayers(const unsigned &nLayers)
Definition: FPGATrackSimBinnedHits.h:96
FPGATrackSimBinnedHits::BinEntry::hitCnt
unsigned int hitCnt
Definition: FPGATrackSimBinnedHits.h:76
FPGATrackSimBinTool.h
Binning Classes for BinTool.
FPGATrackSimBinnedHits::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimBinnedHits.h:101
FPGATrackSimBinArray.h
Iterable Multidimensional Array Class for FPGATrackSimBinTool.
FPGATrackSimBinnedHits::fill
StatusCode fill(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimBinnedHits.cxx:74
FPGATrackSimBinnedHits::BinEntry::lyrhit
layer_bitmask_t lyrhit
Definition: FPGATrackSimBinnedHits.h:77
FPGATrackSimBinnedHits::BinEntry::hitsInLyr
unsigned int hitsInLyr(unsigned lyr) const
Definition: FPGATrackSimBinnedHits.cxx:172
FPGATrackSimBinnedHits::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinnedHits.cxx:22
FPGATrackSimBinnedHits::BinEntry::reset
void reset()
Definition: FPGATrackSimBinnedHits.cxx:155
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:40
FPGATrackSimBinnedHits::m_bintool
ToolHandle< FPGATrackSimBinTool > m_bintool
Definition: FPGATrackSimBinnedHits.h:107
FPGATrackSimBinnedHits::getBinTool
FPGATrackSimBinTool & getBinTool()
Definition: FPGATrackSimBinnedHits.h:64
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimBinUtil.h
Binning Utilities for GenScanTool.
FPGATrackSimBinnedHits::resetBins
void resetBins()
Definition: FPGATrackSimBinnedHits.cxx:64
AthAlgTool.h
FPGATrackSimBinnedHits::BinEntry::lyrCnt
unsigned int lyrCnt() const
Definition: FPGATrackSimBinnedHits.h:74
FPGATrackSimBinnedHits::lastStepBinnedHits
const FPGATrackSimBinArray< BinEntry > & lastStepBinnedHits() const
Definition: FPGATrackSimBinnedHits.h:85
FPGATrackSimBinnedHits::m_mod_to_lyr_map
FPGATrackSimBinArray< std::map< unsigned, unsigned > > m_mod_to_lyr_map
Definition: FPGATrackSimBinnedHits.h:93
FPGATrackSimBinArray
Definition: FPGATrackSimBinArray.h:41
FPGATrackSimBinnedHits::BinEntry::addHit
void addHit(const FPGATrackSimBinUtil::StoredHit &hit)
Definition: FPGATrackSimBinnedHits.cxx:162
FPGATrackSimBinnedHits::BinEntry::BinEntry
BinEntry()
Definition: FPGATrackSimBinnedHits.h:71
FPGATrackSimBinnedHits::BinEntry
Definition: FPGATrackSimBinnedHits.h:70
FPGATrackSimBinUtil::StoredHit
Definition: FPGATrackSimBinUtil.h:101
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimBinnedHits::getBinTool
const FPGATrackSimBinTool & getBinTool() const
Definition: FPGATrackSimBinnedHits.h:63
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimBinnedHits::binnedHits
const std::vector< FPGATrackSimBinArray< BinEntry > > & binnedHits() const
Definition: FPGATrackSimBinnedHits.h:82
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:23
FPGATrackSimBinnedHits::getNLayers
unsigned getNLayers() const
Definition: FPGATrackSimBinnedHits.h:97
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimBinnedHits::readLayerMap
void readLayerMap(const std::string &filename)
Definition: FPGATrackSimBinnedHits.cxx:183
FPGATrackSimBinnedHits::m_lyrmapFile
Gaudi::Property< std::string > m_lyrmapFile
Definition: FPGATrackSimBinnedHits.h:100
FPGATrackSimBinnedHits::initBinnedDataArrays
void initBinnedDataArrays()
Definition: FPGATrackSimBinnedHits.cxx:52
FPGATrackSimBinnedHits::BinEntry::hits
std::vector< FPGATrackSimBinUtil::StoredHit > hits
Definition: FPGATrackSimBinnedHits.h:78
FPGATrackSimBinnedHits
Definition: FPGATrackSimBinnedHits.h:50
ServiceHandle< IFPGATrackSimEventSelectionSvc >