ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimRegionMap.h
Go to the documentation of this file.
1// Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
39
40#ifndef FPGATrackSimREGIONMAP_H
41#define FPGATrackSimREGIONMAP_H
42
44
45#include <vector>
46#include <map>
47#include <fstream>
48
49class FPGATrackSimHit;
50
51
53{
54 int phi_min{}; // minimum phi ID
55 int phi_max{}; // maximum phi ID
56 int eta_min{}; // minimum eta ID
57 int eta_max{}; // minimum eta ID
58};
59
60
62{
63 public:
64
66 // Constructors/Initialization
67 // See doc on m_layerOverrides for info on argument layerOverrides
68
69 FPGATrackSimRegionMap(const std::vector<std::unique_ptr<FPGATrackSimPlaneMap>> & pmaps, std::string const & filepath, bool m_inclusive);
70
71 void loadModuleIDLUT(std::string const & filepath);
72
73 void loadRadiiFile(std::string const& radii_file, unsigned layer_offset, unsigned layer_max);
74
76 // Simple Getters/Setters
77
78 const FPGATrackSimPlaneMap* getPlaneMap(int iRegion) const { return m_pmaps.at(iRegion).get(); }
79
80 int getNRegions() const { return m_nregions; }
81
82 bool isModuleIDLUTloaded() const { return !m_global_local_map.empty(); }
83
85 // Main Interface Functions
86
87 const FPGATrackSimRegionBoundaries & getRegionBoundaries(int region, int layer, int section) const
88 { return m_map.at(region).at(layer).at(section); }
89
90 bool isInRegion(uint32_t region, const FPGATrackSimHit &hit) const;
91 bool isInRegion(uint32_t region, uint32_t plane, uint32_t section, int eta, int phi) const;
92
93 // Returns a list of regions that hit belongs to
94 std::vector<uint32_t> getRegions(const FPGATrackSimHit &hit) const;
95
96 uint32_t getUnmappedID(uint32_t region, const FPGATrackSimHit &hit) const;
97
98 // These require the module LUT file to be loaded
99 uint32_t getLocalID(uint32_t region, uint32_t layer, uint32_t globalModuleID) const;
100 uint32_t getGlobalID(uint32_t region, uint32_t layer, uint32_t localModuleID) const;
101
102 // These require the radii file to be loaded.
103 double getAvgRadius(unsigned region, unsigned layer) const;
104 const std::vector<double>& getAvgRadii(unsigned region) const { return m_radii_map.at(region); };
105
106 private:
107 std::string m_filepath;
108 std::vector<std::unique_ptr<FPGATrackSimPlaneMap>> const & m_pmaps ;
109 int m_nregions = 0;
110
111 std::vector<std::vector<std::vector<FPGATrackSimRegionBoundaries>>> m_map;
112 // Index by region, logical layer, section
113
114 std::vector<std::vector<std::map<uint32_t, uint32_t>>> m_global_local_map;
115 // Index by region, logical layer, globalID. Returns a local id.
116
117 std::vector<std::vector<double>> m_radii_map;
118 // Index by region, logical layer. Assume we DON'T have separate radii per section.
119
120 // If set, this means that we don't actually try to read the region map.
121 bool m_inclusive = false;
122
124 // Helper Functions
125 void allocateMap(std::ifstream & fin);
126 void readRegion(std::ifstream & fin, int expected_region);
127};
128
129#endif // FPGATrackSimREGIONMAP_H
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Maps physical layers to logical layers.
void section(const std::string &sec)
const FPGATrackSimPlaneMap * getPlaneMap(int iRegion) const
double getAvgRadius(unsigned region, unsigned layer) const
std::vector< std::vector< std::vector< FPGATrackSimRegionBoundaries > > > m_map
std::vector< std::unique_ptr< FPGATrackSimPlaneMap > > const & m_pmaps
std::vector< std::vector< double > > m_radii_map
uint32_t getLocalID(uint32_t region, uint32_t layer, uint32_t globalModuleID) const
const std::vector< double > & getAvgRadii(unsigned region) const
uint32_t getUnmappedID(uint32_t region, const FPGATrackSimHit &hit) const
void loadRadiiFile(std::string const &radii_file, unsigned layer_offset, unsigned layer_max)
void allocateMap(std::ifstream &fin)
uint32_t getGlobalID(uint32_t region, uint32_t layer, uint32_t localModuleID) const
const FPGATrackSimRegionBoundaries & getRegionBoundaries(int region, int layer, int section) const
FPGATrackSimRegionMap(const std::vector< std::unique_ptr< FPGATrackSimPlaneMap > > &pmaps, std::string const &filepath, bool m_inclusive)
std::vector< uint32_t > getRegions(const FPGATrackSimHit &hit) const
void readRegion(std::ifstream &fin, int expected_region)
bool isInRegion(uint32_t region, const FPGATrackSimHit &hit) const
void loadModuleIDLUT(std::string const &filepath)
std::vector< std::vector< std::map< uint32_t, uint32_t > > > m_global_local_map