ATLAS Offline Software
FPGATrackSimSectorBank.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimSECTORBANK_H
4 #define FPGATrackSimSECTORBANK_H
5 
20 #include <iostream>
21 #include <map>
22 #include <fstream>
23 #include <vector>
25 
26 class FPGATrackSimHit;
27 
28 
30 {
31  public:
32 
33  FPGATrackSimSectorBank(std::string const & filepath);
34 
35  size_t getNLayers() const { return m_nLayers; }
36  size_t getNSectors() const { return m_s2mMap.size(); }
37 
38  std::vector<module_t> const & getModules(sector_t sector) const { return m_s2mMap[sector]; }
39  std::vector<sector_t> getSectors(unsigned layer, module_t module) const; // TODO rename find?
40 
41  // Returns the sector matching 'modules' exactly (WC must be matched with WC), or -1 if none.
42  sector_t findSector(std::vector<module_t> const & modules) const;
43 
44  // Returns the sector matching 'hits' exactly (WC must be matched with WC), or -1 if none.
45  // If multiple hits have different hashIDs, will prefer most popular, then random.
46  sector_t findSector(std::vector<std::vector<const FPGATrackSimHit*>> const & hits) const;
47 
48 
49  // Helper functions to set and retrieve information about the sector q/pt binning.
50  const std::vector<double>& getQOverPtBins() const { return m_qOverPtBins; }
51  size_t getNQOverPtBins() const {return m_qOverPtBins.size(); }
52  bool isAbsQOverPtBinning() const { return m_absQOverPtBinning; }
53  void storeQOverPtBinning(const std::vector<double>& qOverPtBins, bool absBinning);
54 
55 
56  private:
57 
58  size_t m_nLayers = 0UL;
59  std::vector<std::vector<module_t>> m_s2mMap; // sector to module map. index by (sector, layer)
60  std::vector<std::multimap<module_t, sector_t>> m_m2sMap; // module to sector map. index by (layer, module).
61 
62  // Store these as part of the sector bank.
63  std::vector<double> m_qOverPtBins;
64  bool m_absQOverPtBinning = false;
65 
66  // Helpers
67  void readHeader(std::ifstream & fin);
68  void readSectors(std::ifstream & fin);
69  void makeInverseMap();
70 };
71 
72 
73 
74 #endif // FPGATrackSimSECTORBANK_H
FPGATrackSimSectorBank::getNSectors
size_t getNSectors() const
Definition: FPGATrackSimSectorBank.h:36
FPGATrackSimSectorBank::readSectors
void readSectors(std::ifstream &fin)
Definition: FPGATrackSimSectorBank.cxx:64
FPGATrackSimSectorBank::getNLayers
size_t getNLayers() const
Definition: FPGATrackSimSectorBank.h:35
FPGATrackSimSectorBank::m_qOverPtBins
std::vector< double > m_qOverPtBins
Definition: FPGATrackSimSectorBank.h:63
FPGATrackSimSectorBank::readHeader
void readHeader(std::ifstream &fin)
Definition: FPGATrackSimSectorBank.cxx:46
FPGATrackSimSectorBank::getQOverPtBins
const std::vector< double > & getQOverPtBins() const
Definition: FPGATrackSimSectorBank.h:50
FPGATrackSimHit
Definition: FPGATrackSimHit.h:38
FPGATrackSimSectorBank::m_m2sMap
std::vector< std::multimap< module_t, sector_t > > m_m2sMap
Definition: FPGATrackSimSectorBank.h:60
python.PyAthena.module
module
Definition: PyAthena.py:134
FPGATrackSimSectorBank::getModules
std::vector< module_t > const & getModules(sector_t sector) const
Definition: FPGATrackSimSectorBank.h:38
FPGATrackSimSectorBank::findSector
sector_t findSector(std::vector< module_t > const &modules) const
Definition: FPGATrackSimSectorBank.cxx:121
module_t
int32_t module_t
Definition: FPGATrackSimTypes.h:20
FPGATrackSimSectorBank::storeQOverPtBinning
void storeQOverPtBinning(const std::vector< double > &qOverPtBins, bool absBinning)
Definition: FPGATrackSimSectorBank.cxx:173
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
FPGATrackSimSectorBank::getNQOverPtBins
size_t getNQOverPtBins() const
Definition: FPGATrackSimSectorBank.h:51
FPGATrackSimSectorBank
Definition: FPGATrackSimSectorBank.h:30
sector_t
int32_t sector_t
Definition: FPGATrackSimTypes.h:21
FPGATrackSimSectorBank::getSectors
std::vector< sector_t > getSectors(unsigned layer, module_t module) const
Definition: FPGATrackSimSectorBank.cxx:110
FPGATrackSimSectorBank::m_absQOverPtBinning
bool m_absQOverPtBinning
Definition: FPGATrackSimSectorBank.h:64
FPGATrackSimSectorBank::m_nLayers
size_t m_nLayers
Definition: FPGATrackSimSectorBank.h:58
FPGATrackSimSectorBank::m_s2mMap
std::vector< std::vector< module_t > > m_s2mMap
Definition: FPGATrackSimSectorBank.h:59
FPGATrackSimSectorBank::FPGATrackSimSectorBank
FPGATrackSimSectorBank(std::string const &filepath)
Definition: FPGATrackSimSectorBank.cxx:23
FPGATrackSimSectorBank::makeInverseMap
void makeInverseMap()
Definition: FPGATrackSimSectorBank.cxx:96
FPGATrackSimSectorBank::isAbsQOverPtBinning
bool isAbsQOverPtBinning() const
Definition: FPGATrackSimSectorBank.h:52
compute_lumi.fin
fin
Definition: compute_lumi.py:19
FPGATrackSimTypes.h