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  // structure is list of hits
96  void readLayerRadii(const std::string & filename);
98 
99  // Number of layers
100  void setNLayers(const unsigned &nLayers) { m_nLayers = nLayers; }
101  unsigned getNLayers() const {return m_nLayers;}
102 
103 private:
104  Gaudi::Property<std::string> m_lyrmapFile{this, "layerMapFile",{""}, "use externally defined layer map"};
105  Gaudi::Property<std::string> m_lyrradiiFile{this, "layerRadiiFile",{""}, "define layers in terms of rz radius instead of modules"};
106  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel{this, "FPGATrackSimEventSelectionSvc", ""};
107 
108  // Vector of BinEntry for each step
109  std::vector<FPGATrackSimBinArray<BinEntry>> m_binnedHitsStep;
110 
111  // The tool where the steps are defined
112  ToolHandle<FPGATrackSimBinTool> m_bintool {
113  this, "BinTool", "FPGATrackSimBinTool",
114  "FPGATrackSimBinTool: contains tools describe which parameters are used and each step of binning"};
115 
116  // The number of layers, either set externally from pmap or set by the layerMap
117  unsigned m_nLayers{0};
118 };
119 
120 #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:109
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:117
FPGATrackSimBinnedHits::setNLayers
void setNLayers(const unsigned &nLayers)
Definition: FPGATrackSimBinnedHits.h:100
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:106
FPGATrackSimBinArray.h
Iterable Multidimensional Array Class for FPGATrackSimBinTool.
FPGATrackSimBinnedHits::fill
StatusCode fill(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimBinnedHits.cxx:82
FPGATrackSimBinnedHits::BinEntry::lyrhit
layer_bitmask_t lyrhit
Definition: FPGATrackSimBinnedHits.h:77
FPGATrackSimBinnedHits::BinEntry::hitsInLyr
unsigned int hitsInLyr(unsigned lyr) const
Definition: FPGATrackSimBinnedHits.cxx:197
FPGATrackSimBinnedHits::readLayerRadii
void readLayerRadii(const std::string &filename)
Definition: FPGATrackSimBinnedHits.cxx:256
FPGATrackSimBinnedHits::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinnedHits.cxx:22
FPGATrackSimBinnedHits::BinEntry::reset
void reset()
Definition: FPGATrackSimBinnedHits.cxx:180
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:40
FPGATrackSimBinnedHits::m_bintool
ToolHandle< FPGATrackSimBinTool > m_bintool
Definition: FPGATrackSimBinnedHits.h:112
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:72
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:187
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
FPGATrackSimBinnedHits::m_lyrradiiFile
Gaudi::Property< std::string > m_lyrradiiFile
Definition: FPGATrackSimBinnedHits.h:105
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:23
FPGATrackSimBinnedHits::getNLayers
unsigned getNLayers() const
Definition: FPGATrackSimBinnedHits.h:101
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimBinnedHits::readLayerMap
void readLayerMap(const std::string &filename)
Definition: FPGATrackSimBinnedHits.cxx:208
FPGATrackSimBinnedHits::m_lyrmapFile
Gaudi::Property< std::string > m_lyrmapFile
Definition: FPGATrackSimBinnedHits.h:104
FPGATrackSimBinnedHits::initBinnedDataArrays
void initBinnedDataArrays()
Definition: FPGATrackSimBinnedHits.cxx:60
FPGATrackSimBinnedHits::m_lyr_radii
FPGATrackSimBinArray< std::vector< std::pair< double, double > > > m_lyr_radii
Definition: FPGATrackSimBinnedHits.h:97
FPGATrackSimBinnedHits::BinEntry::hits
std::vector< FPGATrackSimBinUtil::StoredHit > hits
Definition: FPGATrackSimBinnedHits.h:78
FPGATrackSimBinnedHits
Definition: FPGATrackSimBinnedHits.h:50
ServiceHandle< IFPGATrackSimEventSelectionSvc >