ATLAS Offline Software
Loading...
Searching...
No Matches
RegSelectorMap.h
Go to the documentation of this file.
1// emacs: this is -*- c++ -*-
2/*
3 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4*/
5
6#ifndef REGSELECTORMAP_H
7#define REGSELECTORMAP_H
8
9
11#include "RegionSelectorLUT.h"
12
15
16#include "GaudiKernel/StatusCode.h"
17#include <vector>
18#include <list>
19#include <set>
20#include <fstream>
21#include <iostream>
22#include <stdio.h>
23#include <stdint.h>
24#include <cstdio>
25
26
27
28class RegSelectorMap : virtual public IRegSelLUT {
29
30public:
31
32
34
36
37 virtual void HashIDList( const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const override;
38
39 virtual void HashIDList( long layer, const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const override;
40
42
43 virtual void ROBIDList( const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const override;
44
45 virtual void ROBIDList( long layer, const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const override;
46
47 virtual ~RegSelectorMap() override = default;
48
49public:
50
51 double etaminValue(void) const;
52 double etamaxValue(void) const;
53 double phiminValue(void) const;
54 double phimaxValue(void) const;
55
56 const std::vector<IdentifierHash>& hashIdOut(void) const;
57 const std::vector<uint32_t>& robIdOut(void) const;
58
59 const std::vector<int>& barORendOut(void) const;
60 const std::vector<int>& layORdskOut(void) const;
61 const std::vector<double>& etaMinOut(void) const;
62 const std::vector<double>& etaMaxOut(void) const;
63 const std::vector<double>& phiMinOut(void) const;
64 const std::vector<double>& phiMaxOut(void) const;
65
66 void mountDataStruct(void);
67
69 double etaminIn, double etamaxIn,
70 double phiminIn, double phimaxIn,
71 std::vector<uint32_t>& outList ) const;
72
73 void regionSelectorRobIdUint( double etaminIn, double etamaxIn,
74 double phiminIn, double phimaxIn,
75 std::vector<uint32_t>& outList ) const;
76
77 void regionSelectorRobIdUint( long layNumber,
78 double etaminIn, double etamaxIn,
79 double phiminIn, double phimaxIn,
80 std::vector<uint32_t>& outList ) const;
81
82 void addLut( const RegionSelectorLUT* detLut );
83 void addLut( const RegionSelectorLUT& detLut ) { addLut(&detLut); }
84
86 double etaminIn, double etamaxIn,
87 double phiminIn, double phimaxIn,
88 std::vector<IdentifierHash>& outList) const;
89
90 void regionSelector( TYPEID typeinID,
91 double etaminIn, double etamaxIn,
92 double phiminIn, double phimaxIn,
93 std::vector<IdentifierHash>& outList ) const;
94
95 void regionSelector( long layNumber,
96 double etaminIn, double etamaxIn,
97 double phiminIn, double phimaxIn,
98 std::vector<IdentifierHash>& outList ) const;
99
100 StatusCode read(const char *filename, DETID type);
101
102 void summaryDataFile( std::list<RegSelectorMapElement> &dataList );
103
104 void verifyInputsInternal( double &etaminIn, double &etamaxIn,
105 double &phiminIn, double &phimaxIn ) const;
106
107 StatusCode verifyInputs( double &etaminIn, double &etamaxIn,
108 double &phiminIn, double &phimaxIn ) const;
109
110 StatusCode verifyInputsMinusPi( double &etaminIn, double &etamaxIn,
111 double &phiminIn, double &phimaxIn ) const;
112
113 void verifyOutput( double etaminIn, double etamaxIn,
114 double phiminIn, double phimaxIn,
115 const std::vector<IdentifierHash>& outputIdlist ) const;
116
117 void getEtaPhi( IdentifierHash hashId,
118 double *etaMin, double *etaMax,
119 double *phiMin, double *phiMax ) const;
120
121private:
122
123 void findPosition( TYPEID typeinID, bool posORneg, std::list<RegSelectorMapElement>::const_iterator& it ) const;
124
125 void findPosition( long layNumber, bool posORneg, std::list<RegSelectorMapElement>::const_iterator& it ) const;
126
127 void findMaxMinValues( std::list<RegSelectorMapElement>& dataList );
128
129 RegSelectorMapElement creatingElement( int& positionIn, int& numberIn,
130 double& etaminIn, double& etamaxIn,
131 double& phiminIn, double& phimaxIn, IdentifierHash& hashIdIn, uint32_t& robId);
132
133 void insertList( std::list<RegSelectorMapElement> &dataList,
134 int positionIn, int numberIn,
135 double etaminIn, double etamaxIn,
136 double phiminIn, double phimaxIn,
137 IdentifierHash hashIdIn,
138 uint32_t& robIdIn);
139
140 void insertDataElement(int& positionIn, int& numberIn, double& etaminIn, double& etamaxIn,
141 double& phiminIn, double& phimaxIn, IdentifierHash& hashIdIn, uint32_t& robIdIn);
142
143 void writeLine(int barORend, int layORdsk, IdentifierHash hashId, uint32_t robId, double emin, double emax,
144 double pmin, double pmax);
145
146 StatusCode readTILE(const char *filename);
147
148private:
149
150 std::list<RegSelectorMapElement> m_barreldataList, m_posdataList, m_negdataList;
151
152 std::vector<int> m_barORend, m_layORdsk;
153
154 std::vector<IdentifierHash> m_hashId;
155
156 std::vector<uint32_t> m_robId;
157
158 std::vector<double> m_etamin, m_etamax;
159
160 std::vector<double> m_phimin, m_phimax;
161
163
165
166
167protected:
168
170
171 virtual void HashIDList_internal( const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const;
172
173 virtual void HashIDList_internal( long layer, const IRoiDescriptor& roi, std::vector<IdentifierHash>& idlist ) const;
174
176
177 virtual void ROBIDList_internal( const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const;
178
179 virtual void ROBIDList_internal( long layer, const IRoiDescriptor& roi, std::vector<uint32_t>& roblist ) const;
180
181
182
183
184};
185
186#endif
187
188
189
190
TYPEID
An enum to define Muon chambers names.
Definition RegSelEnums.h:9
DETID
An enum to define subdetector names.
Definition RegSelEnums.h:23
#define TYPE(CODE, TYP, IOTYP)
Describes the API of the Region of Ineterest geometry.
This is a "hash" representation of an Identifier.
std::vector< double > m_etamax
void summaryDataFile(std::list< RegSelectorMapElement > &dataList)
std::vector< double > m_phimax
void findPosition(TYPEID typeinID, bool posORneg, std::list< RegSelectorMapElement >::const_iterator &it) const
std::vector< double > m_phimin
void regionSelector(DETID TYPE, double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, std::vector< IdentifierHash > &outList) const
std::list< RegSelectorMapElement > m_posdataList
virtual ~RegSelectorMap() override=default
const std::vector< double > & phiMinOut(void) const
void insertDataElement(int &positionIn, int &numberIn, double &etaminIn, double &etamaxIn, double &phiminIn, double &phimaxIn, IdentifierHash &hashIdIn, uint32_t &robIdIn)
virtual void ROBIDList_internal(const IRoiDescriptor &roi, std::vector< uint32_t > &roblist) const
Rob identifier methods.
void verifyInputsInternal(double &etaminIn, double &etamaxIn, double &phiminIn, double &phimaxIn) const
double phiminValue(void) const
const std::vector< int > & layORdskOut(void) const
std::vector< uint32_t > m_robId
std::vector< IdentifierHash > m_hashId
double etaminValue(void) const
the rest of the class starts here
void getEtaPhi(IdentifierHash hashId, double *etaMin, double *etaMax, double *phiMin, double *phiMax) const
double phimaxValue(void) const
StatusCode read(const char *filename, DETID type)
void verifyOutput(double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, const std::vector< IdentifierHash > &outputIdlist) const
const std::vector< uint32_t > & robIdOut(void) const
const std::vector< IdentifierHash > & hashIdOut(void) const
void regionSelectorRobIdUint(DETID TYPE, double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, std::vector< uint32_t > &outList) const
const std::vector< int > & barORendOut(void) const
void insertList(std::list< RegSelectorMapElement > &dataList, int positionIn, int numberIn, double etaminIn, double etamaxIn, double phiminIn, double phimaxIn, IdentifierHash hashIdIn, uint32_t &robIdIn)
std::list< RegSelectorMapElement > m_barreldataList
std::vector< int > m_layORdsk
const std::vector< double > & etaMaxOut(void) const
const std::vector< double > & etaMinOut(void) const
const std::vector< double > & phiMaxOut(void) const
void writeLine(int barORend, int layORdsk, IdentifierHash hashId, uint32_t robId, double emin, double emax, double pmin, double pmax)
void findMaxMinValues(std::list< RegSelectorMapElement > &dataList)
virtual void HashIDList_internal(const IRoiDescriptor &roi, std::vector< IdentifierHash > &idlist) const
internal lookup table access for full interface ...
StatusCode verifyInputs(double &etaminIn, double &etamaxIn, double &phiminIn, double &phimaxIn) const
std::list< RegSelectorMapElement > m_negdataList
RegSelectorMapElement creatingElement(int &positionIn, int &numberIn, double &etaminIn, double &etamaxIn, double &phiminIn, double &phimaxIn, IdentifierHash &hashIdIn, uint32_t &robId)
virtual void ROBIDList(const IRoiDescriptor &roi, std::vector< uint32_t > &roblist) const override
Rob identifier methods.
std::vector< int > m_barORend
std::vector< double > m_etamin
StatusCode verifyInputsMinusPi(double &etaminIn, double &etamaxIn, double &phiminIn, double &phimaxIn) const
double etamaxValue(void) const
StatusCode readTILE(const char *filename)
void mountDataStruct(void)
virtual void HashIDList(const IRoiDescriptor &roi, std::vector< IdentifierHash > &idlist) const override
implementation of the IRegSelUT interface - intentionally inlined
void addLut(const RegionSelectorLUT *detLut)
void addLut(const RegionSelectorLUT &detLut)