ATLAS Offline Software
Loading...
Searching...
No Matches
TGCSSCControllerOut.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TGCSSCControllerOut_hh
6#define TGCSSCControllerOut_hh
8#include <iostream>
9
10namespace LVL1TGCTrigger {
11
13{
14 public:
17
18 public:
20
21 bool hasChamberBoundary(int ssc) const;
22 bool hasUpperChamber(int ssc) const;
23 int getOredChamberNumber(int ssc) const;
24
25 int getR(int ssc) const;
26 int getDR(int ssc) const;
27 int getPtR(int ssc) const;
28
29 int getPhi(int ssc, int phipos, bool ored=false) const;
30 int getDPhi(int ssc, int phipos, bool ored=false) const;
31 int getPtPhi(int ssc, int phipos, bool ored=false) const;
32
33 void setR(unsigned int ssc, int rIn);
34 void setDR(unsigned int ssc, int dRIn);
35 void setPtR(unsigned int ssc, int ptLvl);
36 void setHitR(unsigned int ssc, bool hit);
37
38 void setPhi(int chamberNo, int phiPos, int phiIn);
39 void setDPhi(int chamberNo, int phiPos, int dPhiIn);
40 void setPtPhi(int chamberNo, int phiPos, int ptLvl);
41 void setHitPhi(int chamberNo, int phiPos, bool hit);
42
43 bool hasHit(int ssc, bool ored=false) const;
44 bool hasHit(int ssc, int phiposInSSC, bool ored=false) const;
45 bool hasHitPhi(int chamberNo, int phiPos) const;
46
47 void clear();
48 void print() const;
49
50protected:
51 int getChamberNumber(int ssc) const;
52 int getNumberOfChamberInR() const;
54private:
56
58
63
68};
69
70inline
72{
74 if(ssc==2||ssc==4||ssc==6||ssc==12) return true;
75
76 return false;
77}
78
79inline
81{
82 if(hasChamberBoundary(ssc)){
83 if(ssc==4||ssc==6) return true;
84 else return false;
85 } else {
86 std::cerr << "internal error: ssc " << ssc
87 << " don't has chamber boundary" << std::endl;
88 return false;
89 }
90}
91
92inline
94{
95 if(hasChamberBoundary(ssc)){
96 if(hasUpperChamber(ssc)) return getChamberNumber(ssc)-1;
97 else return getChamberNumber(ssc)+1;
98 } else {
99 std::cerr << "internal error: ssc " << ssc
100 << " don't has chamber boundary" << std::endl;
101 return -1;
102 }
103}
104
105inline
107{
108 if (m_regionType == TGCRegionType::FORWARD) return s_chamber[0][ssc];
109 else return s_chamber[1][ssc];
110}
111inline
113{
114 if (m_regionType == TGCRegionType::FORWARD) return 1;
115 else return 5;
116}
117inline
122inline
123 int TGCSSCControllerOut::getR(int ssc) const
124{
125 return m_r[ssc];
126}
127
128inline
129 int TGCSSCControllerOut::getDR(int ssc) const
130{
131 return m_dR[ssc];
132}
133
134inline
135 int TGCSSCControllerOut::getPtR(int ssc) const
136{
137 return m_ptR[ssc];
138}
139
140
141inline
142 int TGCSSCControllerOut::getPhi(int ssc, int phipos, bool ored) const
143{
144 if(!ored) {
145 return m_phi[getChamberNumber(ssc)][phipos];
146 } else {
147 int idx =getOredChamberNumber(ssc);
148 if (idx>=0 ) return m_phi[idx][phipos];
149 else {
150 std::cerr << "internal error in TGCSSCControllerOut::getPhi()"
151 << std::endl;
152 return 0;
153 }
154 }
155 return 0;
156}
157
158inline
159 int TGCSSCControllerOut::getDPhi(int ssc, int phipos, bool ored) const
160{
161 if(!ored) {
162 return m_dPhi[getChamberNumber(ssc)][phipos];
163 } else {
164 int idx =getOredChamberNumber(ssc);
165 if (idx>=0 ) return m_dPhi[idx][phipos];
166 else {
167 std::cerr << "internal error in TGCSSCControllerOut::getDPhi()"
168 << std::endl;
169 return 0;
170 }
171 }
172 return 0;
173}
174
175
176inline
177 int TGCSSCControllerOut::getPtPhi(int ssc, int phipos, bool ored) const
178{
179 if(!ored) {
180 return m_ptPhi[getChamberNumber(ssc)][phipos];
181 } else {
182 int idx =getOredChamberNumber(ssc);
183 if (idx>=0 ) return m_ptPhi[idx][phipos];
184 else {
185 std::cerr << "internal error in TGCSSCControllerOut::getPtPhi()"
186 << std::endl;
187 return 0;
188 }
189 }
190 return 0;
191}
192
193inline
194 void TGCSSCControllerOut::setR(unsigned int ssc, int rIn)
195{
196 if (ssc < LVL1TGC::kNMaxSSC){
197 m_r[ssc]=rIn;
198 }else{
199 std::cerr << "internal error in TGCSSCControllerOut::setR() sscid:" << ssc << " 0 < SSCId < " << LVL1TGC::kNMaxSSC << std::endl;
200 }
201}
202
203inline
204 void TGCSSCControllerOut::setDR(unsigned int ssc, int dRIn)
205{
206 if (ssc < LVL1TGC::kNMaxSSC) {
207 m_dR[ssc]=dRIn;
208 } else {
209 std::cerr << "internal error in TGCSSCControllerOut::setDR() sscid:" << ssc << " 0 < SSCId < " << LVL1TGC::kNMaxSSC << std::endl;
210 }
211}
212
213inline
214 void TGCSSCControllerOut::setPtR(unsigned int ssc, int ptLvl)
215{
216 if (ssc < LVL1TGC::kNMaxSSC) {
217 m_ptR[ssc] = ptLvl;
218 } else{
219 std::cerr << "internal error in TGCSSCControllerOut::setPtR() sscid:" << ssc << " 0 < SSCId < " << LVL1TGC::kNMaxSSC << std::endl;
220 }
221}
222
223inline
224 void TGCSSCControllerOut::setHitR(unsigned int ssc, bool hit)
225{
226 if (ssc < LVL1TGC::kNMaxSSC) {
227 m_hitR[ssc]=hit;
228 } else {
229 std::cerr << "internal error in TGCSSCControllerOut::setHitR() sscid:" << ssc << " 0 < SSCId < " << LVL1TGC::kNMaxSSC << std::endl;
230 }
231}
232
233inline
234 void TGCSSCControllerOut::setPhi(int chamberNo, int phiPos, int phiIn)
235{
236 if((0 <= chamberNo)&&(chamberNo < MaxNumberOfChamberInR)&&(0 <= phiPos)&&(phiPos < MaxNumberOfPhiInSSC)){
237 m_phi[chamberNo][phiPos]=phiIn;
238 }else{
239 std::cerr << "internal error in TGCSSCControllerOut::setPhi() chamberNo:" << chamberNo << " phiPos:" << phiPos << " phiIn:" << phiIn << std::endl;
240 }
241}
242
243inline
244 void TGCSSCControllerOut::setDPhi(int chamberNo, int phiPos, int dPhiIn)
245{
246 if((0 <= chamberNo)&&(chamberNo < MaxNumberOfChamberInR)&&(0 <= phiPos)&&(phiPos < MaxNumberOfPhiInSSC)){
247 m_dPhi[chamberNo][phiPos]=dPhiIn;
248 }else{
249 std::cerr << "internal error in TGCSSCControllerOut::setDPhi() chamberNo:" << chamberNo << " phiPos:" << phiPos << " dPhiIn:" << dPhiIn << std::endl;
250 }
251}
252
253inline
254 void TGCSSCControllerOut::setPtPhi(int chamberNo, int phiPos, int ptLvl)
255{
256 if((0 <= chamberNo)&&(chamberNo < MaxNumberOfChamberInR)&&(0 <= phiPos)&&(phiPos < MaxNumberOfPhiInSSC)){
257 m_ptPhi[chamberNo][phiPos]=ptLvl;
258 }else{
259 std::cerr << "internal error in TGCSSCControllerOut::setPtPhi() chamberNo:" << chamberNo << " phiPos:" << phiPos << " ptLvl:" << ptLvl << std::endl;
260 }
261}
262
263inline
264 void TGCSSCControllerOut::setHitPhi(int chamberNo, int phiPos, bool hit)
265{
266 if((0 <= chamberNo)&&(chamberNo < MaxNumberOfChamberInR)&&(0 <= phiPos)&&(phiPos < MaxNumberOfPhiInSSC)){
267 m_hitPhi[chamberNo][phiPos]=hit;
268 }else{
269 std::cerr << "internal error in TGCSSCControllerOut::setHitPhi() chamberNo:" << chamberNo << " phiPos:" << phiPos << " hit:" << hit << std::endl;
270 }
271}
272
273inline
274 bool TGCSSCControllerOut::hasHitPhi(int chamberNo, int phiPos) const
275{
276 if((0 <= chamberNo)&&(chamberNo < MaxNumberOfChamberInR)&&(0 <= phiPos)&&(phiPos < MaxNumberOfPhiInSSC)){
277 return m_hitPhi[chamberNo][phiPos];
278 }
279 return false;
280}
281
282
283} //end of namespace bracket
284
285#endif
286
int getPhi(int ssc, int phipos, bool ored=false) const
int getPtPhi(int ssc, int phipos, bool ored=false) const
int getDPhi(int ssc, int phipos, bool ored=false) const
void setHitR(unsigned int ssc, bool hit)
int m_phi[MaxNumberOfChamberInR][MaxNumberOfPhiInSSC]
void setR(unsigned int ssc, int rIn)
void setPtR(unsigned int ssc, int ptLvl)
bool hasHitPhi(int chamberNo, int phiPos) const
bool hasHit(int ssc, bool ored=false) const
void setDPhi(int chamberNo, int phiPos, int dPhiIn)
int m_ptPhi[MaxNumberOfChamberInR][MaxNumberOfPhiInSSC]
TGCSSCControllerOut(TGCRegionType region=TGCRegionType::ENDCAP)
bool m_hitPhi[MaxNumberOfChamberInR][MaxNumberOfPhiInSSC]
void setPtPhi(int chamberNo, int phiPos, int ptLvl)
void setHitPhi(int chamberNo, int phiPos, bool hit)
void setDR(unsigned int ssc, int dRIn)
int m_dPhi[MaxNumberOfChamberInR][MaxNumberOfPhiInSSC]
static const int s_chamber[NumberOfRegionType][LVL1TGC::kNMaxSSC]
void setPhi(int chamberNo, int phiPos, int phiIn)
const int NumberOfRegionType
static constexpr unsigned int kNMaxSSC
The maximim number of SubSector-Clusters (SSC) (i.e.