ATLAS Offline Software
eFEXFPGATowerIdProvider.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
16 #ifndef EFEXFPGATOWERIDPROVIDER_H
17 #define EFEXFPGATOWERIDPROVIDER_H
18 
19 
21 #include <memory>
22 #include <string>
23 #include <unordered_map>
24 #include <vector>
25 
26 namespace LVL1 {
33  static const InterfaceID IID_IIeFEXFPGATowerIdProvider("LVL1::eFEXFPGATowerIdProvider", 1 , 0);
34 
36 
40  struct towerinfo {
41  int eTowerID;
42  int eTowerEta;
43  int eTowerPhi;
44  };
45 
46 
47  public:
48  static const InterfaceID& interfaceID() { return IID_IIeFEXFPGATowerIdProvider; };
50  eFEXFPGATowerIdProvider(const std::string& type,const std::string& name,const IInterface* parent);
51 
54 
57 
59  StatusCode setAddress(const std::string& inputaddress);
60 
71  StatusCode getRankedTowerIDinFPGA(int eFEXID, int FPGAID, int(&towerlist)[10][6]) const;
72 
82  StatusCode getRankedTowerIDineFEX(int eFEXID, int(&towerlist)[10][18]) const;
83  bool ifhaveinputfile() const;
84 
85  private:
86  bool m_hascsvfile{false};
87 
101  StatusCode rankTowerinFPGA(int FPGAindex);
102 
104  std::vector<std::unique_ptr<std::vector<int>>> m_towerrankingcache;
105 
107  std::unordered_map<int, std::unique_ptr<std::vector<towerinfo>> > m_alltowers;
108 
110  bool hasFPGA(int) const;
111 
114 
124  int getFPGAIndex(int eFEXid, int FPGAid) const;
125 
126  std::string m_csvaddress;
127 
128  // Gaudi::Property<std::string> m_csvaddress_setting { this, "path", "xxx", "path to csv" };
129  };
130 }
131 
132 #endif
LVL1::eFEXFPGATowerIdProvider::setAddress
StatusCode setAddress(const std::string &inputaddress)
set path to the csv file and load
Definition: eFEXFPGATowerIdProvider.cxx:33
LVL1::eFEXFPGATowerIdProvider::rankTowerinFPGA
StatusCode rankTowerinFPGA(int FPGAindex)
rank the tower ids in an FPGA This function determines the order of towers in an FPGA.
Definition: eFEXFPGATowerIdProvider.cxx:148
LVL1::eFEXFPGATowerIdProvider::~eFEXFPGATowerIdProvider
~eFEXFPGATowerIdProvider()
Destructor.
Definition: eFEXFPGATowerIdProvider.cxx:27
LVL1::eFEXFPGATowerIdProvider::m_alltowers
std::unordered_map< int, std::unique_ptr< std::vector< towerinfo > > > m_alltowers
Unordered tower Ids in each FPGAs. The index is the index of the FPGA.
Definition: eFEXFPGATowerIdProvider.h:107
LVL1::eFEXFPGATowerIdProvider::towerinfo
Sturcture defines the id, eta and phi position of a tower.
Definition: eFEXFPGATowerIdProvider.h:40
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
LVL1::eFEXFPGATowerIdProvider
Provide tower-FPGA mapping Load information stored in a .csv file and provide the IDs of all towers i...
Definition: eFEXFPGATowerIdProvider.h:35
LVL1::eFEXFPGATowerIdProvider::getRankedTowerIDineFEX
StatusCode getRankedTowerIDineFEX(int eFEXID, int(&towerlist)[10][18]) const
obtain ordered tower IDs in an eFEX
Definition: eFEXFPGATowerIdProvider.cxx:84
LVL1::eFEXFPGATowerIdProvider::m_towerrankingcache
std::vector< std::unique_ptr< std::vector< int > > > m_towerrankingcache
Ordered tower Ids in each FPGAs. The index is the index of the FPGA.
Definition: eFEXFPGATowerIdProvider.h:104
LVL1::eFEXFPGATowerIdProvider::hasFPGA
bool hasFPGA(int) const
check if an FPGA exists in the csv file
Definition: eFEXFPGATowerIdProvider.cxx:190
LVL1::eFEXFPGATowerIdProvider::towerinfo::eTowerPhi
int eTowerPhi
tower Phi index
Definition: eFEXFPGATowerIdProvider.h:43
LVL1::eFEXFPGATowerIdProvider::towerinfo::eTowerEta
int eTowerEta
tower Eta index
Definition: eFEXFPGATowerIdProvider.h:42
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LVL1::eFEXFPGATowerIdProvider::ifhaveinputfile
bool ifhaveinputfile() const
Definition: eFEXFPGATowerIdProvider.cxx:144
LVL1::eFEXFPGATowerIdProvider::getRankedTowerIDinFPGA
StatusCode getRankedTowerIDinFPGA(int eFEXID, int FPGAID, int(&towerlist)[10][6]) const
obtain ordered tower IDs in an FPGA
Definition: eFEXFPGATowerIdProvider.cxx:59
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
TrigConf::name
Definition: HLTChainList.h:35
LVL1::eFEXFPGATowerIdProvider::towerinfo::eTowerID
int eTowerID
tower ID
Definition: eFEXFPGATowerIdProvider.h:41
LVL1::eFEXFPGATowerIdProvider::getFPGAIndex
int getFPGAIndex(int eFEXid, int FPGAid) const
determine the index of an FPGA
Definition: eFEXFPGATowerIdProvider.cxx:283
LVL1::eFEXFPGATowerIdProvider::m_csvaddress
std::string m_csvaddress
path to the input csv file
Definition: eFEXFPGATowerIdProvider.h:126
LVL1::eFEXFPGATowerIdProvider::m_hascsvfile
bool m_hascsvfile
if the csv file is valid
Definition: eFEXFPGATowerIdProvider.h:86
LVL1::eFEXFPGATowerIdProvider::eFEXFPGATowerIdProvider
eFEXFPGATowerIdProvider(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
Definition: eFEXFPGATowerIdProvider.cxx:12
AthAlgTool
Definition: AthAlgTool.h:26
LVL1::eFEXFPGATowerIdProvider::loadcsv
StatusCode loadcsv()
load the mapping info in the csv file
Definition: eFEXFPGATowerIdProvider.cxx:196
LVL1::eFEXFPGATowerIdProvider::initialize
StatusCode initialize()
initialize the tool
Definition: eFEXFPGATowerIdProvider.cxx:18
LVL1::eFEXFPGATowerIdProvider::interfaceID
static const InterfaceID & interfaceID()
Definition: eFEXFPGATowerIdProvider.h:48