Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
39 
40 //-------------------------------------------------------------------------------------------------------
41 // BinnedHits
42 // Nomenclature:
43 // parameter = parameter of track e.g. (pT,eta,phi,d0,z0) but could be
44 // in different coordinates
45 // such at in the keylayer format where its
46 // (z_in,z_out,phi_in,phi_out,x_m)
47 // bin = a bin in the full parameters space (upto 5-d)
48 // subbin = a binning used as part of the total binning e.g. only in
49 // (pT,phi) or only in (z_in,z_out)
50 //-------------------------------------------------------------------------------------------------------
52 public:
53  FPGATrackSimBinnedHits(const std::string &algname, const std::string &name,
54  const IInterface *ifc)
55  : AthAlgTool(algname, name, ifc) {}
56 
57  virtual StatusCode initialize() override;
58  void initBinnedDataArrays();
59 
60  StatusCode fill(const std::vector<std::shared_ptr<const FPGATrackSimHit>> &hits);
61  void resetBins();
62 
63  // access to tool
64  const FPGATrackSimBinTool& getBinTool() const { return *m_bintool.get();}
66 
68  // Internal Storage Classes
69 
70  // each bin contains a list of StoredHit objects
71  struct BinEntry {
72  BinEntry() {}
73  void reset();
74  void addHit(const StoredHit& hit);
75  unsigned int lyrCnt() const { return __builtin_popcount(lyrhit); };
76  unsigned int hitsInLyr(unsigned lyr) const;
77  unsigned int hitCnt = 0;
79  std::vector<StoredHit> hits{};
80  };
81 
82  // access to binned hits..
83  const std::vector<FPGATrackSimBinArray<BinEntry>> &binnedHits() const {
84  return m_binnedHitsStep;
85  }
87  return m_binnedHitsStep.back();
88  }
89 
90  // Layer Map
91  // structure is indexed on bin, then layer, then a set of modules
92  void readLayerMap(const std::string & filename);
95 
96  // Number of layers
97  void setNLayers(const unsigned &nLayers) { m_nLayers = nLayers; }
98  unsigned getNLayers() const {return m_nLayers;}
99 
100 private:
101  Gaudi::Property<std::string> m_lyrmapFile{this, "layerMapFile",{""}, "use externally defined layer map"};
102  ServiceHandle<IFPGATrackSimEventSelectionSvc> m_EvtSel{this, "FPGATrackSimEventSelectionSvc", "FPGATrackSimEventSelectionSvc"};
103 
104  // Vector of BinEntry for each step
105  std::vector<FPGATrackSimBinArray<BinEntry>> m_binnedHitsStep;
106 
107  // The tool where the steps are defined
108  ToolHandle<FPGATrackSimBinTool> m_bintool {
109  this, "BinTool", "FPGATrackSimBinTool",
110  "FPGATrackSimBinTool: contains tools describe which parameters are used and each step of binning"};
111 
112  // The number of layers, either set externally from pmap or set by the layerMap
113  unsigned m_nLayers{0};
114 };
115 
116 #endif // FPGATrackSimBinnedHits_H
FPGATrackSimBinnedHits::m_lyr_to_mod_map
FPGATrackSimBinArray< std::vector< std::set< unsigned > > > m_lyr_to_mod_map
Definition: FPGATrackSimBinnedHits.h:93
FPGATrackSimBinnedHits::m_binnedHitsStep
std::vector< FPGATrackSimBinArray< BinEntry > > m_binnedHitsStep
Definition: FPGATrackSimBinnedHits.h:105
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:53
FPGATrackSimBinnedHits::m_nLayers
unsigned m_nLayers
Definition: FPGATrackSimBinnedHits.h:113
FPGATrackSimBinnedHits::setNLayers
void setNLayers(const unsigned &nLayers)
Definition: FPGATrackSimBinnedHits.h:97
FPGATrackSimBinnedHits::BinEntry::hitCnt
unsigned int hitCnt
Definition: FPGATrackSimBinnedHits.h:77
FPGATrackSimBinnedHits::BinEntry::addHit
void addHit(const StoredHit &hit)
Definition: FPGATrackSimBinnedHits.cxx:143
FPGATrackSimBinTool.h
Binning Classes for BinTool.
FPGATrackSimBinnedHits::m_EvtSel
ServiceHandle< IFPGATrackSimEventSelectionSvc > m_EvtSel
Definition: FPGATrackSimBinnedHits.h:102
FPGATrackSimBinArray.h
Iterable Multidimensional Array Class for FPGATrackSimBinTool.
FPGATrackSimBinnedHits::fill
StatusCode fill(const std::vector< std::shared_ptr< const FPGATrackSimHit >> &hits)
Definition: FPGATrackSimBinnedHits.cxx:72
FPGATrackSimBinnedHits::BinEntry::lyrhit
layer_bitmask_t lyrhit
Definition: FPGATrackSimBinnedHits.h:78
FPGATrackSimBinnedHits::BinEntry::hitsInLyr
unsigned int hitsInLyr(unsigned lyr) const
Definition: FPGATrackSimBinnedHits.cxx:153
FPGATrackSimBinnedHits::BinEntry::hits
std::vector< StoredHit > hits
Definition: FPGATrackSimBinnedHits.h:79
FPGATrackSimBinnedHits::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinnedHits.cxx:20
FPGATrackSimBinnedHits::BinEntry::reset
void reset()
Definition: FPGATrackSimBinnedHits.cxx:136
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:44
FPGATrackSimBinnedHits::m_bintool
ToolHandle< FPGATrackSimBinTool > m_bintool
Definition: FPGATrackSimBinnedHits.h:108
FPGATrackSimBinnedHits::getBinTool
FPGATrackSimBinTool & getBinTool()
Definition: FPGATrackSimBinnedHits.h:65
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:62
AthAlgTool.h
FPGATrackSimBinnedHits::BinEntry::lyrCnt
unsigned int lyrCnt() const
Definition: FPGATrackSimBinnedHits.h:75
FPGATrackSimBinnedHits::lastStepBinnedHits
const FPGATrackSimBinArray< BinEntry > & lastStepBinnedHits() const
Definition: FPGATrackSimBinnedHits.h:86
FPGATrackSimBinnedHits::m_mod_to_lyr_map
FPGATrackSimBinArray< std::map< unsigned, unsigned > > m_mod_to_lyr_map
Definition: FPGATrackSimBinnedHits.h:94
FPGATrackSimBinArray
Definition: FPGATrackSimBinArray.h:41
FPGATrackSimBinnedHits::BinEntry::BinEntry
BinEntry()
Definition: FPGATrackSimBinnedHits.h:72
FPGATrackSimBinnedHits::BinEntry
Definition: FPGATrackSimBinnedHits.h:71
FPGATrackSimBinUtil::StoredHit
Definition: FPGATrackSimBinUtil.h:90
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:64
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
FPGATrackSimBinnedHits::binnedHits
const std::vector< FPGATrackSimBinArray< BinEntry > > & binnedHits() const
Definition: FPGATrackSimBinnedHits.h:83
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
FPGATrackSimBinnedHits::getNLayers
unsigned getNLayers() const
Definition: FPGATrackSimBinnedHits.h:98
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimBinnedHits::readLayerMap
void readLayerMap(const std::string &filename)
Definition: FPGATrackSimBinnedHits.cxx:164
FPGATrackSimBinnedHits::m_lyrmapFile
Gaudi::Property< std::string > m_lyrmapFile
Definition: FPGATrackSimBinnedHits.h:101
FPGATrackSimBinnedHits::initBinnedDataArrays
void initBinnedDataArrays()
Definition: FPGATrackSimBinnedHits.cxx:50
FPGATrackSimBinnedHits
Definition: FPGATrackSimBinnedHits.h:51
ServiceHandle< IFPGATrackSimEventSelectionSvc >