ATLAS Offline Software
Loading...
Searching...
No Matches
RegSelectorHashMap.h
Go to the documentation of this file.
1// emacs: this is -*- c++ -*-
2/*
3 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
4*/
5
6#ifndef REGSELECTORHASHMAP_H
7#define REGSELECTORHASHMAP_H
8
9// Includes --------------------------------------------------------------
11#include "RegionSelectorLUT.h"
13#include "GaudiKernel/StatusCode.h"
14
16
17#include <vector>
18#include <list>
19#include <set>
20#include <cstdint>
21
23
24#define INITHASH 30000 // nonexistent hashID number (init value)
25
27 bool operator() (uint32_t i, uint32_t j) const{
28 return i==j;
29 }
30};
31
32struct equals{
33 bool operator() (int i, int j) const{
34 return i==j;
35 }
36};
37
38
39// Class RegSelectorHashMap ----------------------------------------------------
40class RegSelectorHashMap : virtual public IRegSelLUT {
41
42public:
43
45
47
48 virtual void HashIDList( const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const override;
49
50 virtual void HashIDList( long layer, const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const override;
51
53
54 virtual void ROBIDList( const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const override;
55
56 virtual void ROBIDList( long layer, const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const override;
57
58 virtual ~RegSelectorHashMap() override = default;
59
60public:
61
62 double etaminValue() const ;
63 double etamaxValue() const ;
64 double phiminValue() const ;
65 double phimaxValue() const ;
66
67 const std::vector<double>& etaMinOut(void) const ;
68 const std::vector<double>& etaMaxOut(void) const ;
69 const std::vector<double>& phiMinOut(void) const ;
70 const std::vector<double>& phiMaxOut(void) const ;
71
72 void mountDataStruct(void);
73
74 const std::vector<IdentifierHash>& hashIdOut(void) const ;
75 const std::vector<std::vector<uint32_t> >& robIdOut(void) const ;
76 const std::vector<int>& sampleOut(void) const ;
77 const std::vector<int>& layerOut(void) const ;
78
79 void regionSelectorRobIdUint(double etaminIn, double etamaxIn,
80 double phiminIn, double phimaxIn,
81 std::vector<uint32_t>& outRobIDList) const;
82
83 void regionSelectorRobIdUint(int sampling,
84 double etaminIn, double etamaxIn,
85 double phiminIn, double phimaxIn,
86 std::vector<uint32_t>& outRobIDList) const;
87
88 void regionSelector(double etaminIn, double etamaxIn,
89 double phiminIn, double phimaxIn,
90 std::vector<IdentifierHash> & outList) const;
91
92 void regionSelector(int sampling,
93 double etaminIn, double etamaxIn,
94 double phiminIn, double phimaxIn,
95 std::vector<IdentifierHash> & outList) const;
96
97 void initvar(void);
98 StatusCode read(const char *filename);
99 void addLut(const RegionSelectorLUT *detLut);
100 void summaryDataFile(std::list<RegSelectorMapElement> &dataList);
101 void verifyInputs(double &etaminIn, double &etamaxIn,double &phiminIn, double &phimaxIn) const;
102
103 void verifyROBIDOutput(double etaminIn, double etamaxIn,
104 double phiminIn, double phimaxIn,
105 std::vector<uint32_t>& outputIdlist) const ;
106
107 void verifyROBIDOutput(int sampling,
108 double etaminIn, double etamaxIn,
109 double phiminIn, double phimaxIn,
110 std::vector<uint32_t>& outputIdlist) const;
111
112 void verifyOutput(double etaminIn, double etamaxIn,
113 double phiminIn, double phimaxIn,
114 std::vector<IdentifierHash>* outputIdlist) const;
115
116 void verifyOutput(int sampling, double etaminIn, double etamaxIn,
117 double phiminIn, double phimaxIn,
118 std::vector<IdentifierHash>* outputIdlist) const;
119
120 void getEtaPhi(IdentifierHash hashId,
121 double *etaMin, double *etaMax,
122 double *phiMin, double *phiMax) const;
123
124 void DisableMissingROBs(const std::vector<uint32_t>& vec);
125
126
127 private:
128
130
131 std::list<RegSelectorMapElement> m_dataList;
132 std::vector<int> m_sample, m_layer;
133 std::vector<IdentifierHash> m_hashId;
134 std::vector<double> m_etamin, m_etamax;
135 std::vector<double> m_phimin, m_phimax;
136 std::vector<std::vector<uint32_t> > m_robId;
142 std::vector<std::vector<uint32_t> > m_robIDMap;
143 std::vector<IdentifierHash> m_hashIDMap;
144
145 void populateMatrix(int iPage,IdentifierHash value);
146 void populateMatrixRobId(int iPage, uint32_t value);
147 void initMatrix(void);
148 void writeLine(const int& layer, const IdentifierHash& hashId, const std::vector<uint32_t>& robId, const double& emin,
149 const double& emax, const double& pmin, const double& pmax, const int& samp);
150 int MyRound(double pdValue);
151 void regionSelectorIN(const int& sampling, const double& etaminIn,
152 const double& etamaxIn, const double& phiminIn, const double& phimaxIn,
153 std::vector<IdentifierHash>* outListIH ) const;
154
155 void regionSelectorINROB(const int& sampling, const double& etaminIn,
156 const double& etamaxIn, const double& phiminIn, const double& phimaxIn,
157 std::vector<uint32_t>* outList) const;
158
159 void phiCondition(const std::vector<IdentifierHash>& identifier, int i,
160 double etaminIn, double etamaxIn,
161 double phiminIn, double phimaxIn,
162 double etamin, double etamax,
163 std::set<IdentifierHash>* outset) const;
164
165 void phiConditionRobId(const std::vector<std::vector<uint32_t> >& identifier, int i,
166 double etaminIn, double etamaxIn,
167 double phiminIn, double phimaxIn,
168 double etamin, double etamax,
169 std::set<uint32_t>* outset) const;
170
171 //LRSIdentHash
172 void findIdentifier(std::vector<IdentifierHash> &auxsetIH,
173 const int iXBeg, const int iXEnd,
174 const int iYBeg, const int iYEnd,
175 const int iPage) const;
176
177 //LRSUint
178 void findIdentifierROB(std::vector<uint32_t> &auxset,
179 const int iXBeg, const int iXEnd,
180 const int iYBeg, const int iYEnd,
181 const int iPage) const;
182
183
184protected:
185
187
189
190 virtual void HashIDList_internal( const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const;
191
192 virtual void HashIDList_internal( long layer, const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const;
193
195
196 virtual void ROBIDList_internal( const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const;
197
198 virtual void ROBIDList_internal( long layer, const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const;
199
200
201};
202#endif
203
204
205
206
std::vector< size_t > vec
Describes the API of the Region of Ineterest geometry.
This is a "hash" representation of an Identifier.
double etaminValue() const
rest of the class implementation
virtual void HashIDList_internal(const IRoiDescriptor &roi, std::vector< IdentifierHash > &idlist) const
internal implementation of the IRegSelUT interface
const std::vector< int > & layerOut(void) const
std::vector< IdentifierHash > m_hashId
void addLut(const RegionSelectorLUT *detLut)
std::vector< std::vector< uint32_t > > m_robId
virtual ~RegSelectorHashMap() override=default
std::vector< IdentifierHash > m_hashIDMap
virtual void HashIDList(const IRoiDescriptor &roi, std::vector< IdentifierHash > &idlist) const override
implementation of the IRegSelUT interface
void verifyROBIDOutput(double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, std::vector< uint32_t > &outputIdlist) const
std::vector< double > m_phimin
void populateMatrix(int iPage, IdentifierHash value)
void getEtaPhi(IdentifierHash hashId, double *etaMin, double *etaMax, double *phiMin, double *phiMax) const
int MyRound(double pdValue)
const std::vector< int > & sampleOut(void) const
std::vector< std::vector< uint32_t > > m_robIDMap
void DisableMissingROBs(const std::vector< uint32_t > &vec)
const std::vector< double > & phiMinOut(void) const
std::vector< double > m_etamax
virtual void ROBIDList_internal(const IRoiDescriptor &roi, std::vector< uint32_t > &roblist) const
rob methods
void populateMatrixRobId(int iPage, uint32_t value)
void verifyOutput(double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, std::vector< IdentifierHash > *outputIdlist) const
const std::vector< double > & phiMaxOut(void) const
void regionSelector(double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, std::vector< IdentifierHash > &outList) const
void phiConditionRobId(const std::vector< std::vector< uint32_t > > &identifier, int i, double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, double etamin, double etamax, std::set< uint32_t > *outset) const
std::list< RegSelectorMapElement > m_dataList
void findIdentifier(std::vector< IdentifierHash > &auxsetIH, const int iXBeg, const int iXEnd, const int iYBeg, const int iYEnd, const int iPage) const
void phiCondition(const std::vector< IdentifierHash > &identifier, int i, double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, double etamin, double etamax, std::set< IdentifierHash > *outset) const
std::vector< double > m_phimax
std::vector< double > m_etamin
const std::vector< double > & etaMaxOut(void) const
void regionSelectorINROB(const int &sampling, const double &etaminIn, const double &etamaxIn, const double &phiminIn, const double &phimaxIn, std::vector< uint32_t > *outList) const
virtual void ROBIDList(const IRoiDescriptor &roi, std::vector< uint32_t > &roblist) const override
rob methods
StatusCode read(const char *filename)
void writeLine(const int &layer, const IdentifierHash &hashId, const std::vector< uint32_t > &robId, const double &emin, const double &emax, const double &pmin, const double &pmax, const int &samp)
void findIdentifierROB(std::vector< uint32_t > &auxset, const int iXBeg, const int iXEnd, const int iYBeg, const int iYEnd, const int iPage) const
void regionSelectorRobIdUint(double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, std::vector< uint32_t > &outRobIDList) const
const std::vector< IdentifierHash > & hashIdOut(void) const
const std::vector< std::vector< uint32_t > > & robIdOut(void) const
std::vector< int > m_layer
void summaryDataFile(std::list< RegSelectorMapElement > &dataList)
void regionSelectorIN(const int &sampling, const double &etaminIn, const double &etamaxIn, const double &phiminIn, const double &phimaxIn, std::vector< IdentifierHash > *outListIH) const
const std::vector< double > & etaMinOut(void) const
std::vector< int > m_sample
void verifyInputs(double &etaminIn, double &etamaxIn, double &phiminIn, double &phimaxIn) const
bool operator()(uint32_t i, uint32_t j) const
bool operator()(int i, int j) const