ATLAS Offline Software
Loading...
Searching...
No Matches
RPC_CondCabling::EvenPhiCMA Class Reference

#include <EvenPhiCMA.h>

Inheritance diagram for RPC_CondCabling::EvenPhiCMA:
Collaboration diagram for RPC_CondCabling::EvenPhiCMA:

Public Types

enum  CMAconfiguration { Simulation , Atlas }
typedef std::list< const CMAparameters * > CMAlist

Public Member Functions

 EvenPhiCMA (const parseParams &parse)
 EvenPhiCMA (const EvenPhiCMA &)
virtual ~EvenPhiCMA ()
EvenPhiCMAoperator= (const EvenPhiCMA &)
const WORlinkpivot_WORs () const
const WORlinklowPt_WORs () const
const WORlinkhighPt_WORs () const
bool inversion () const
bool setup (SectorLogicSetup &, MsgStream &)
bool operator== (const CMAparameters &) const
bool operator== (const CMAidentity &) const
CMAparametersoperator+= (const CMAparameters &)
const CMAidentityid () const
const CMAprogramlowPt_program () const
const CMAprogramhighPt_program () const
int pivot_start_ch () const
int pivot_start_st () const
int pivot_stop_ch () const
int pivot_stop_st () const
int lowPt_start_co () const
int lowPt_stop_co () const
int lowPt_number_co () const
int highPt_start_co () const
int highPt_stop_co () const
int highPt_number_co () const
int lowPt_start_st () const
int lowPt_start_ch () const
int lowPt_stop_st () const
int lowPt_stop_ch () const
int highPt_start_st () const
int highPt_start_ch () const
int highPt_stop_st () const
int highPt_stop_ch () const
int active_pivot_chs () const
int active_lowPt_chs () const
int active_highPt_chs () const
int pivot_station () const
int lowPt_station () const
int highPt_station () const
int pivot_rpc_read () const
int lowPt_rpc_read () const
int highPt_rpc_read () const
unsigned int first_pivot_code () const
unsigned int last_pivot_code () const
unsigned int first_lowPt_code () const
unsigned int last_lowPt_code () const
unsigned int first_highPt_code () const
unsigned int last_highPt_code () const
CMAconfiguration conf_type () const
unsigned int first_pivot_channel () const
unsigned int last_pivot_channel () const
unsigned int first_lowPt_channel () const
unsigned int last_lowPt_channel () const
unsigned int first_highPt_channel () const
unsigned int last_highPt_channel () const
virtual void Print (std::ostream &, bool) const override
void Print (std::ostream &, bool, int layer) const
bool isAtlas () const
bool give_connection (int, int, CMAinput &, int &, int &) const
bool get_channel (CMAinput, int, int &, int &) const
bool get_cabling (CMAinput, int, int, int, unsigned int &) const
const CMAparameterstest (CMAinput, int) const
CMAinput whichCMAinput (int) const
int whichCMAstation (CMAinput input) const
bool correct (L1RPCcabCorrection type, CMAinput it, unsigned int layer, unsigned short int Ch1, unsigned short int Ch2, short int num) const
void give_strip_code (unsigned int logic_sector, unsigned short int lh, unsigned short int ijk, unsigned short int Channel, std::list< unsigned int > &StripCodes) const
int number () const
int station () const
int sector_type () const
std::string error_header () const
std::string no_connection_error (const std::string &, int) const
ObjectType tag () const
const std::string & name () const

Static Public Attributes

static constexpr int pivot_channels = 32
static constexpr int confirm_channels = 64

Protected Member Functions

void create_pivot_map (int)
void create_lowPt_map (int)
void create_highPt_map (int)
std::string noMoreChannels (const std::string &stat)
std::string two_obj_error_message (const std::string &, CMAparameters *)
std::string no_confirm_error (int)
std::string no_wor_readout (int, int)
std::string error (const std::string &)

Protected Attributes

std::unique_ptr< CMAidentitym_id
int m_lowPt_start_st {-1}
int m_lowPt_start_ch {-1}
int m_lowPt_stop_st {-1}
int m_lowPt_stop_ch {-1}
int m_highPt_start_st {-1}
int m_highPt_start_ch {-1}
int m_highPt_stop_st {-1}
int m_highPt_stop_ch {-1}
int m_active_pivot_chs {0}
int m_active_lowPt_chs {0}
int m_active_highPt_chs {0}
int m_pivot_rpc_read {0}
int m_lowPt_rpc_read {0}
int m_highPt_rpc_read {0}
unsigned int m_first_pivot_code {0}
unsigned int m_last_pivot_code {0}
unsigned int m_first_lowPt_code {0}
unsigned int m_last_lowPt_code {0}
unsigned int m_first_highPt_code {0}
unsigned int m_last_highPt_code {0}
int(* m_pivot )[2][pivot_channels] {}
int(* m_lowPt )[2][confirm_channels] {}
int(* m_highPt )[2][confirm_channels] {}
std::unique_ptr< CMAprogramm_lowPt_program
std::unique_ptr< CMAprogramm_highPt_program
CMAconfiguration m_conf_type {CMAparameters::Atlas}

Private Types

typedef std::map< int, WiredOR *, std::less< int > > WORlink

Private Member Functions

bool cable_CMA_channels (void)
bool connect (SectorLogicSetup &)
bool doInversion (SectorLogicSetup &)
void get_confirm_strip_boundaries (int, int)
int get_max_strip_readout (int)
void showDt (std::ostream &, int layer) const
void showMt (char[][90], int, TrigType, int layer) const
void reset_pivot_cabling ()
void reset_lowPt_cabling ()
void reset_highPt_cabling ()

Private Attributes

WORlink m_pivot_WORs
WORlink m_lowPt_WORs
WORlink m_highPt_WORs
bool m_inversion {false}
defineParams m_params {}
int m_number {0}
int m_station {0}
int m_sector_type {0}
ObjectType m_tag
std::string m_name

Detailed Description

Definition at line 20 of file EvenPhiCMA.h.

Member Typedef Documentation

◆ CMAlist

typedef std::list<const CMAparameters*> CMAparameters::CMAlist
inherited

Definition at line 25 of file CMAparameters.h.

◆ WORlink

typedef std::map<int, WiredOR*, std::less<int> > RPC_CondCabling::EvenPhiCMA::WORlink
private

Definition at line 22 of file EvenPhiCMA.h.

Member Enumeration Documentation

◆ CMAconfiguration

Enumerator
Simulation 
Atlas 

Definition at line 24 of file CMAparameters.h.

Constructor & Destructor Documentation

◆ EvenPhiCMA() [1/2]

EvenPhiCMA::EvenPhiCMA ( const parseParams & parse)

Definition at line 24 of file EvenPhiCMA.cxx.

24 : CMAparameters(pars) {
25 m_inversion = false;
27
28 // Set the memory for storing the cabling data
29 if (!pivot_station()) {
32 }
33 if (!lowPt_station()) {
36 }
37 if (!highPt_station()) {
40 }
41}
CMAconfiguration m_conf_type
int pivot_station() const
int highPt_station() const
int lowPt_station() const
void create_highPt_map(int)
void create_pivot_map(int)
void create_lowPt_map(int)
CMAparameters(const parseParams &parse)

◆ EvenPhiCMA() [2/2]

EvenPhiCMA::EvenPhiCMA ( const EvenPhiCMA & cma)

Definition at line 43 of file EvenPhiCMA.cxx.

44 : CMAparameters(cma),
49{
51}
const WORlink & pivot_WORs() const
const WORlink & lowPt_WORs() const
const WORlink & highPt_WORs() const

◆ ~EvenPhiCMA()

EvenPhiCMA::~EvenPhiCMA ( )
virtualdefault

Member Function Documentation

◆ active_highPt_chs()

int CMAparameters::active_highPt_chs ( ) const
inherited

Definition at line 46 of file CMAparameters.cxx.

46{ return m_active_highPt_chs; }

◆ active_lowPt_chs()

int CMAparameters::active_lowPt_chs ( ) const
inherited

Definition at line 45 of file CMAparameters.cxx.

45{ return m_active_lowPt_chs; }

◆ active_pivot_chs()

int CMAparameters::active_pivot_chs ( ) const
inherited

Definition at line 44 of file CMAparameters.cxx.

44{ return m_active_pivot_chs; }

◆ cable_CMA_channels()

bool EvenPhiCMA::cable_CMA_channels ( void )
private

Definition at line 70 of file EvenPhiCMA.cxx.

70 {
71 if (pivot_station()) // Check and connect strips with Pivot matrix channels
72 {
73 WORlink::iterator found = m_pivot_WORs.find(pivot_start_ch());
74 if (found == m_pivot_WORs.end()) return false;
75 WiredOR* wor = (*found).second;
78
79 int start = pivot_start_st();
80 int stop = pivot_stop_st();
81 int max_st = wor->give_max_phi_strips();
82
83 int first_ch_cabled = 32;
84 int last_ch_cabled = -1;
85
86 std::vector<int> multiplicity(max_st);
87
88 for (int i = 0; i < m_pivot_rpc_read; ++i) {
89 const RPCchamber* rpc = wor->connected_rpc(i);
90 int rpc_st = rpc->phi_strips();
91 int cham = rpc->number();
92 int local_strip = start - (max_st - rpc_st);
93 int final_strip = stop - (max_st - rpc_st);
94
95 int chs = (id().Ixx_index() == 0) ? pivot_channels - abs(stop - start) - 1 : 0;
96 chs += (local_strip >= 0) ? 0 : abs(local_strip) + 1;
97 if (chs >= pivot_channels) {
98 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << noMoreChannels("Pivot");
99 return false;
100 }
101 if (chs <= first_ch_cabled) first_ch_cabled = chs;
102
103 if (local_strip <= 0) local_strip = 1;
104 do {
105 if (chs == pivot_channels) {
106 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << noMoreChannels("Pivot");
107 return false;
108 }
109 if (local_strip > 0 && local_strip <= rpc_st) {
110 if (rpc->ijk_phiReadout() == 1) {
111 m_pivot[i][0][chs] = cham * 100 + local_strip - 1;
112 m_pivot[i][1][chs] = 10000 + cham * 100 + local_strip - 1;
113 } else {
114 m_pivot[i][1][chs] = cham * 100 + local_strip - 1;
115 m_pivot[i][0][chs] = 10000 + cham * 100 + local_strip - 1;
116 }
117 multiplicity[local_strip - 1 + (max_st - rpc_st)] = 1;
118 }
119 ++chs;
120 } while (++local_strip <= final_strip);
121
122 if (chs - 1 >= last_ch_cabled) last_ch_cabled = chs - 1;
123 if (chs > m_active_pivot_chs) m_active_pivot_chs = chs;
124 }
125 wor->add_even_read_mul(multiplicity);
126
127 // Set first and last connectors code
128 int code = pivot_station() * 100000 + 1 * 100000000;
129 int ch = 0;
130
131 // first_ch_cabled and last_ch_cabled are initialized with "out-of-bound" values
132 // of the m_pivot array; proper values should be assigned during the loop;
133 // the init values though are "misused" for certain conditions, too, therefore
134 // they cannot be changed; but the following if should NEVER fire.
135 if (first_ch_cabled >= pivot_channels || last_ch_cabled < 0) {
136 std::ostringstream disp;
137 disp << "EvenPhiCMA::cable_CMA_channels - out of bound array indices (m_pivot)! Values:"
138 << first_ch_cabled << ", " << last_ch_cabled
139 << " at " << __FILE__ << ":" << __LINE__ ;
140 throw std::runtime_error(disp.str());
141 }
142
143 for (ch = 0; ch < m_pivot_rpc_read; ++ch)
144 if (m_pivot[ch][0][first_ch_cabled] >= 0) break;
145 if (ch == m_pivot_rpc_read) --ch;
146 m_first_pivot_code = code + m_pivot[ch][0][first_ch_cabled];
147
148 for (ch = 0; ch < m_pivot_rpc_read; ++ch)
149 if (m_pivot[ch][0][last_ch_cabled] >= 0) break;
150 if (ch == m_pivot_rpc_read) --ch;
151 m_last_pivot_code = code + m_pivot[ch][0][last_ch_cabled];
152 }
153
154 if (lowPt_station() && lowPt_start_ch() != -1) { // Check and connect strips with Low Pt matrix channels
155 for (int i = lowPt_start_ch(); i <= lowPt_stop_ch(); ++i) {
156 WORlink::iterator found = m_lowPt_WORs.find(i);
157 if (found == m_lowPt_WORs.end()) continue;
158 m_lowPt_rpc_read += (*found).second->RPCacquired();
159 }
160
162
163 int start = lowPt_start_st();
164 int stop = lowPt_stop_st();
165 int max_st = get_max_strip_readout(lowPt_station());
166
167 int first_ch_cabled = 64;
168 int last_ch_cabled = -1;
169
170 int r = 0;
171
172 for (int w = lowPt_start_ch(); w <= lowPt_stop_ch(); ++w) {
173 WORlink::iterator found = m_lowPt_WORs.find(w);
174 if (found == m_lowPt_WORs.end()) continue;
175 WiredOR* wor = (*found).second;
176 std::vector<int> multiplicity(wor->give_max_phi_strips(),0);
177
178 for (int i = 0; i < wor->RPCacquired(); ++i) {
179 const RPCchamber* rpc = wor->connected_rpc(i);
180
181 int rpc_st = rpc->phi_strips();
182 int cham = rpc->number();
183 int local_strip = start - (max_st - rpc_st);
184 int final_strip = stop - (max_st - rpc_st);
185
186 int chs = (id().Ixx_index() == 0) ? 40 - max_st / 2 : 0;
187
188 bool isBME = false;
189 char E = rpc->chamber_name()[2];
190 // E='A';
191 if (E == 'E') isBME = true;
192
193 if (isBME && id().Ixx_index() == 1) {
194 // ok for sector 24 (side C [and side A], cm1, ijk=2 and 3)
195 chs = 8;
196 local_strip = 1;
197 final_strip = 32;
198 }
199 if (isBME && id().Ixx_index() == 0) {
200 // ok for sector 24 (side C [and side A], cm0, ijk=2 and 3)
201 chs = 24;
202 local_strip = 1;
203 final_strip = 32;
204 }
205
206 chs += (local_strip >= 0) ? 0 : abs(local_strip) + 1;
207
208 if (chs >= confirm_channels) {
209 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << noMoreChannels("Low Pt");
210 return false;
211 }
212 if (chs <= first_ch_cabled) first_ch_cabled = chs;
213
214 if (local_strip <= 0) local_strip = 1;
215 do {
216 if (chs == confirm_channels) {
217 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << noMoreChannels("Low Pt");
218 return false;
219 }
220 if (local_strip > 0 && local_strip <= rpc_st) {
221 if (rpc->ijk_phiReadout() == 1) {
222 m_lowPt[r][0][chs] = cham * 100 + local_strip - 1;
223 m_lowPt[r][1][chs] = 10000 + cham * 100 + local_strip - 1;
224 } else {
225 m_lowPt[r][1][chs] = cham * 100 + local_strip - 1;
226 m_lowPt[r][0][chs] = 10000 + cham * 100 + local_strip - 1;
227 }
228 if (max_st > wor->give_max_phi_strips()) {
229 multiplicity[local_strip - 1] = 1;
230 } else {
231 multiplicity[local_strip - 1 + (max_st - rpc_st)] = 1;
232 }
233 }
234 ++chs;
235 } while (++local_strip <= final_strip);
236
237 ++r;
238 if (chs - 1 >= last_ch_cabled) last_ch_cabled = chs - 1;
239 if (chs > m_active_lowPt_chs) m_active_lowPt_chs = chs;
240 }
241
242 wor->add_even_read_mul(multiplicity);
243
244 // Set first and last connectors code
245 int code = lowPt_station() * 100000 + 1 * 100000000;
246 int ch = 0;
247
248 // first_ch_cabled and last_ch_cabled are initialized with "out-of-bound" values
249 // of the m_lowPt array; proper values should be assigned during the loop;
250 // the init values though are "misused" for certain conditions, too, therefore
251 // they cannot be changed; but the following if should NEVER fire.
252 if (first_ch_cabled >= confirm_channels || last_ch_cabled < 0) {
253 std::ostringstream disp;
254 disp << "EvenPhiCMA::cable_CMA_channels - out of bound array indices (m_lowPt)! Values:"
255 << first_ch_cabled << ", " << last_ch_cabled
256 << " at " << __FILE__ << ":" << __LINE__ ;
257 throw std::runtime_error(disp.str());
258 }
259
260 for (ch = 0; ch < m_lowPt_rpc_read; ++ch)
261 if (m_lowPt[ch][0][first_ch_cabled] >= 0) break;
262 if (ch == m_lowPt_rpc_read) --ch;
263 m_first_lowPt_code = code + m_lowPt[ch][0][first_ch_cabled];
264
265 for (ch = 0; ch < m_lowPt_rpc_read; ++ch)
266 if (m_lowPt[ch][0][last_ch_cabled] >= 0) break;
267 if (ch == m_lowPt_rpc_read) --ch;
268 m_last_lowPt_code = code + m_lowPt[ch][0][last_ch_cabled];
269 }
270 }
271
272 if (highPt_station() && highPt_start_ch() != -1) { // Check and connect strips with High Pt matrix channels
273 for (int i = highPt_start_ch(); i <= highPt_stop_ch(); ++i) {
274 WORlink::iterator found = m_highPt_WORs.find(i);
275 if (found == m_highPt_WORs.end()) continue;
276 m_highPt_rpc_read += (*found).second->RPCacquired();
277 }
278
280
281 int start = highPt_start_st();
282 int stop = highPt_stop_st();
284
285 int first_ch_cabled = 64;
286 int last_ch_cabled = -1;
287
288 int r = 0;
289
290 for (int w = highPt_start_ch(); w <= highPt_stop_ch(); ++w) {
291 WORlink::iterator found = m_highPt_WORs.find(w);
292 if (found == m_highPt_WORs.end()) continue;
293 WiredOR* wor = (*found).second;
294 std::vector<int> multiplicity(wor->give_max_phi_strips(),0);
295
296
297 for (int i = 0; i < wor->RPCacquired(); ++i) {
298 const RPCchamber* rpc = wor->connected_rpc(i);
299
300 int rpc_st = rpc->phi_strips();
301 int cham = rpc->number();
302 int local_strip = start - (max_st - rpc_st);
303 int final_strip = stop - (max_st - rpc_st);
304
305 int chs = (id().Ixx_index() == 0) ? 40 - max_st / 2 : 0;
306
307 char L = rpc->chamber_name()[2];
308 int sEta = rpc->stationEta();
309
310 bool isBOE = false;
311 if (abs(sEta) == 8 && L == 'L') isBOE = true;
312 if (isBOE && id().Ixx_index() == 1) {
313 chs = 0;
314 local_strip = 13;
315 final_strip = 64;
316 }
317
318 if (isBOE && id().Ixx_index() == 0) {
319 chs = 4;
320 final_strip = 52;
321 local_strip = 1;
322 }
323
324 chs += (local_strip >= 0) ? 0 : abs(local_strip) + 1;
325 if (chs >= confirm_channels) {
326 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << noMoreChannels("High Pt");
327 return false;
328 }
329 if (chs <= first_ch_cabled) first_ch_cabled = chs;
330
331 if (local_strip <= 0) local_strip = 1;
332 do {
333 if (chs == confirm_channels) {
334 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << noMoreChannels("High Pt");
335 return false;
336 }
337 bool skipChannel = false;
338 if (isBOE && id().Ixx_index() == 1 && ((chs > 3 && chs < 8) || (chs > 39 && chs < 44))) skipChannel = true;
339 if (isBOE && id().Ixx_index() == 0 && ((chs > 19 && chs < 24) || (chs > 55 && chs < 60))) skipChannel = true;
340 if (skipChannel) {
341 --local_strip;
342 } else {
343 if (local_strip > 0 && local_strip <= rpc_st) {
344 if (rpc->ijk_phiReadout() == 1) {
345 m_highPt[r][0][chs] = cham * 100 + local_strip - 1;
346 m_highPt[r][1][chs] = 10000 + cham * 100 + local_strip - 1;
347 } else {
348 m_highPt[r][1][chs] = cham * 100 + local_strip - 1;
349 m_highPt[r][0][chs] = 10000 + cham * 100 + local_strip - 1;
350 }
351 }
352 if (max_st > wor->give_max_phi_strips()) {
353 multiplicity[local_strip - 1] = 1;
354 } else {
355 multiplicity[local_strip - 1 + (max_st - rpc_st)] = 1;
356 }
357 }
358 ++chs;
359 } while (++local_strip <= final_strip);
360
361 ++r;
362 if (chs - 1 >= last_ch_cabled) last_ch_cabled = chs - 1;
364 }
365
366 wor->add_even_read_mul(multiplicity);
367
368 // Set first and last connectors code
369 int code = highPt_station() * 100000 + 1 * 100000000;
370 int ch = 0;
371
372 // first_ch_cabled and last_ch_cabled are initialized with "out-of-bound" values
373 // of the m_highPt array; proper values should be assigned during the loop;
374 // the init values though are "misused" for certain conditions, too, therefore
375 // they cannot be changed; but the following if should NEVER fire.
376 if (first_ch_cabled >= confirm_channels || last_ch_cabled < 0) {
377 std::ostringstream disp;
378 disp << "EvenPhiCMA::cable_CMA_channels - out of bound array indices (m_highPt)! Values:"
379 << first_ch_cabled << ", " << last_ch_cabled
380 << " at " << __FILE__ << ":" << __LINE__ ;
381 throw std::runtime_error(disp.str());
382 }
383
384 for (ch = 0; ch < m_highPt_rpc_read; ++ch)
385 if (m_highPt[ch][0][first_ch_cabled] >= 0) break;
386 if (ch == m_highPt_rpc_read) --ch;
387 m_first_highPt_code = code + m_highPt[ch][0][first_ch_cabled];
388
389 for (ch = 0; ch < m_highPt_rpc_read; ++ch)
390 if (m_highPt[ch][0][last_ch_cabled] >= 0) break;
391 if (ch == m_highPt_rpc_read) --ch;
392 m_last_highPt_code = code + m_highPt[ch][0][last_ch_cabled];
393 }
394 }
395
396 return true;
397}
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
int Ixx_index() const
int pivot_stop_st() const
int highPt_stop_st() const
static constexpr int confirm_channels
int(* m_lowPt)[2][confirm_channels]
int(* m_pivot)[2][pivot_channels]
int pivot_start_st() const
int highPt_start_st() const
unsigned int m_last_pivot_code
unsigned int m_last_lowPt_code
int lowPt_stop_st() const
const CMAidentity & id() const
int lowPt_start_st() const
unsigned int m_first_pivot_code
int lowPt_stop_ch() const
std::string noMoreChannels(const std::string &stat)
unsigned int m_first_highPt_code
int highPt_stop_ch() const
int highPt_start_ch() const
unsigned int m_last_highPt_code
int lowPt_start_ch() const
unsigned int m_first_lowPt_code
int(* m_highPt)[2][confirm_channels]
int pivot_start_ch() const
static constexpr int pivot_channels
int number() const
const std::string & chamber_name() const
void add_even_read_mul(ReadoutCh &)
Definition WiredOR.cxx:60
int RPCacquired() const
Definition WiredOR.h:89
const RPCchamber * connected_rpc(int) const
Definition WiredOR.cxx:48
int give_max_phi_strips() const
Definition WiredOR.cxx:34
int r
Definition globals.cxx:22

◆ conf_type()

CMAparameters::CMAconfiguration CMAparameters::conf_type ( ) const
inherited

Definition at line 63 of file CMAparameters.cxx.

63{ return m_conf_type; }

◆ connect()

bool EvenPhiCMA::connect ( SectorLogicSetup & setup)
private

Definition at line 399 of file EvenPhiCMA.cxx.

399 {
400 if (pivot_station()) // Check and connect Pivot plane chambers
401 {
402 for (int i = pivot_start_ch(); i <= pivot_stop_ch(); ++i) {
403 WiredOR* wor = setup.find_wor(pivot_station(), i);
404 if (wor) {
405 wor->add_cma(this);
406 m_pivot_WORs.insert(WORlink::value_type(i, wor));
407 } else {
408 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_connection_error("WOR", i);
409 return false;
410 }
411 }
412 }
413 if (lowPt_station()) // Check and connect Low Pt plane chambers
414 {
415 std::list<const EtaCMA*> CMAs = setup.find_eta_CMAs_in_PAD(id().PAD_index());
416 if (CMAs.empty()) {
417 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << "have no Eta matrix into PAD!";
418 return false;
419 }
420
421 // get last CMA fake
422 const EtaCMA* cmaFake = CMAs.back();
423
424 // remove fake CMAs
425 std::list<const EtaCMA*>::iterator cm = CMAs.begin();
426 while (cm != CMAs.end()) {
427 if (!(*cm)->pivot_station() || (*cm)->lowPt_start_ch() == -1) cm = CMAs.erase(cm);
428 ++cm;
429 }
430
431 int start_ch = (CMAs.size()) ? CMAs.front()->lowPt_start_ch() : cmaFake->lowPt_start_ch();
432 int stop_ch = (CMAs.size()) ? CMAs.back()->lowPt_stop_ch() : cmaFake->lowPt_stop_ch();
433
434 if (start_ch != -1 && stop_ch != -1) {
435 RPCchamber* start = setup.find_chamber(lowPt_station(), start_ch);
436 RPCchamber* stop = setup.find_chamber(lowPt_station(), stop_ch);
437
438 if (start->readoutWORs().empty()) {
439 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_wor_readout(start->number(), lowPt_station());
440 return false;
441 }
442 if (stop->readoutWORs().empty()) {
443 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_wor_readout(stop->number(), lowPt_station());
444 return false;
445 }
446
447 m_lowPt_start_ch = start->readoutWORs().front()->number();
448 m_lowPt_stop_ch = stop->readoutWORs().front()->number();
449 int max = 0;
450
451 for (int i = lowPt_start_ch(); i <= lowPt_stop_ch(); ++i) {
452 WiredOR* wor = setup.find_wor(lowPt_station(), i);
453 if (wor) {
454 wor->add_cma(this);
455 m_lowPt_WORs.insert(WORlink::value_type(i, wor));
456 if (wor->give_max_phi_strips() > max) max = wor->give_max_phi_strips();
457 } else {
458 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_connection_error("WOR", i);
459 return false;
460 }
461 }
462
464 }
465 }
466 if (highPt_station()) // Check and connect High Pt plane chambers
467 {
468 std::list<const EtaCMA*> CMAs = setup.find_eta_CMAs_in_PAD(id().PAD_index());
469 if (CMAs.empty()) {
470 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << "have no Eta matrix into PAD!";
471 return false;
472 }
473
474 // get last CMA fake
475 const EtaCMA* cmaFake = CMAs.back();
476
477 // remove fake CMAs
478 std::list<const EtaCMA*>::iterator cm = CMAs.begin();
479 while (cm != CMAs.end()) {
480 if (!(*cm)->pivot_station() || (*cm)->highPt_start_ch() == -1) cm = CMAs.erase(cm);
481 ++cm;
482 }
483
484 int start_ch = (CMAs.size()) ? CMAs.front()->highPt_start_ch() : cmaFake->highPt_start_ch();
485 int stop_ch = (CMAs.size()) ? CMAs.back()->highPt_stop_ch() : cmaFake->highPt_stop_ch();
486
487 if (start_ch != -1 && stop_ch != -1) {
488 RPCchamber* start = setup.find_chamber(highPt_station(), start_ch);
489 RPCchamber* stop = setup.find_chamber(highPt_station(), stop_ch);
490
491 if (start->readoutWORs().empty()) {
492 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_wor_readout(start->number(), highPt_station());
493 return false;
494 }
495 if (stop->readoutWORs().empty()) {
496 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_wor_readout(stop->number(), highPt_station());
497 return false;
498 }
499
500 m_highPt_start_ch = start->readoutWORs().front()->number();
501 m_highPt_stop_ch = stop->readoutWORs().front()->number();
502 int max = 0;
503
504 for (int i = highPt_start_ch(); i <= highPt_stop_ch(); ++i) {
505 WiredOR* wor = setup.find_wor(highPt_station(), i);
506 if (wor) {
507 wor->add_cma(this);
508 m_highPt_WORs.insert(WORlink::value_type(i, wor));
509 if (wor->give_max_phi_strips() > max) max = wor->give_max_phi_strips();
510 } else {
511 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << no_connection_error("WOR", i);
512 return false;
513 }
514 }
516 }
517 }
518 return true;
519}
#define max(a, b)
Definition cfImp.cxx:41
std::string no_wor_readout(int, int)
int pivot_stop_ch() const
std::string no_connection_error(const std::string &, int) const
bool setup(SectorLogicSetup &, MsgStream &)
void get_confirm_strip_boundaries(int, int)
void add_cma(const CMAparameters *)
Definition WiredOR.cxx:58

◆ correct()

bool CMAparameters::correct ( L1RPCcabCorrection type,
CMAinput it,
unsigned int layer,
unsigned short int Ch1,
unsigned short int Ch2,
short int num ) const
inherited

Definition at line 646 of file CMAparameters.cxx.

647 {
648 if (Ch1 > Ch2) return false;
649
650 int worlo = 0;
651 int maxch = 0;
652 int* map = nullptr;
653
654 switch (it) {
655 case Pivot:
656 map = reinterpret_cast<int*>(m_pivot);
657 maxch = pivot_channels;
658 worlo = m_pivot_rpc_read;
659 break;
660
661 case LowPt:
662 map = reinterpret_cast<int*>(m_lowPt);
663 maxch = confirm_channels;
664 worlo = m_lowPt_rpc_read;
665 break;
666
667 case HighPt:
668 map = reinterpret_cast<int*>(m_highPt);
669 maxch = confirm_channels;
670 worlo = m_highPt_rpc_read;
671 break;
672
673 default: return false;
674 }
675
676 switch (type) {
677 case Inversion:
678
679 num = Ch2 - Ch1 + 1;
680 for (int i = 0; i < worlo; ++i) {
681 for (unsigned short int j = 0; j < num / 2; ++j) {
682 int pos1 = i * 2 * maxch + layer * maxch + Ch1 + j;
683 int pos2 = i * 2 * maxch + layer * maxch + Ch2 - j;
684 int tmp = *(map + pos1);
685 *(map + pos1) = *(map + pos2);
686 *(map + pos2) = tmp;
687 }
688 }
689
690 break;
691
692 case Swap:
693
694 if (Ch1 + num - 1 >= Ch2) return false;
695 for (int i = 0; i < worlo; ++i) {
696 for (unsigned short int j = 0; j < num; ++j) {
697 int pos1 = i * 2 * maxch + layer * maxch + Ch1 + j;
698 int pos2 = i * 2 * maxch + layer * maxch + Ch2 + j;
699 int tmp = *(map + pos1);
700 *(map + pos1) = *(map + pos2);
701 *(map + pos2) = tmp;
702 }
703 }
704
705 break;
706
707 case Suppression:
708
709 num = Ch2 - Ch1 + 1;
710 for (int i = 0; i < worlo; ++i) {
711 for (unsigned short int j = 0; j < num; ++j) {
712 int pos = i * 2 * maxch + layer * maxch + Ch1 + j;
713 *(map + pos) = -1;
714 }
715 }
716
717 break;
718
719 case Shift:
720 for (int i = 0; i < worlo; ++i) {
721 if (num / abs(num) == 1) {
722 unsigned short int piv = Ch1 + num;
723
724 for (unsigned short int j = Ch1; j < piv; ++j) {
725 int pos = i * 2 * maxch + layer * maxch + j;
726 *(map + pos) = -1;
727 }
728
729 for (unsigned short int j = piv; j <= Ch2; ++j) {
730 int pos = i * 2 * maxch + layer * maxch + j;
731
732 *(map + pos - num) = *(map + pos);
733 *(map + pos) = -1;
734 }
735 }
736 if (num / abs(num) == -1) {
737 unsigned short int ch = Ch2;
738 short int piv = Ch2 - abs(num) + 1;
739 short int stop = Ch1 + num;
740 if (stop < 0) stop = 0;
741 do {
742 int pos = i * 2 * maxch + layer * maxch + ch;
743 *(map + pos) = -1;
744 --ch;
745 } while (ch > piv);
746
747 do {
748 int pos = i * 2 * maxch + layer * maxch + piv - 1;
749
750 *(map + pos + (int)abs(num)) = *(map + pos);
751 *(map + pos) = -1;
752 --piv;
753 } while (piv > stop);
754 }
755 }
756
757 break;
758
759 default: return false;
760 }
761
762 return true;
763}
@ LowPt
@ HighPt
@ Pivot
@ Suppression
@ Swap
@ Inversion
@ Shift
@ layer
Definition HitInfo.h:79
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ create_highPt_map()

void CMAparameters::create_highPt_map ( int rpc_to_read)
protectedinherited

Definition at line 245 of file CMAparameters.cxx.

245 {
246 if (!m_highPt) {
247 m_highPt = new int[rpc_to_read][2][confirm_channels];
248 for (int i = 0; i < rpc_to_read; ++i)
249 for (int j = 0; j < 2; ++j)
250 for (int k = 0; k < confirm_channels; ++k) m_highPt[i][j][k] = -1;
251 }
252}

◆ create_lowPt_map()

void CMAparameters::create_lowPt_map ( int rpc_to_read)
protectedinherited

Definition at line 236 of file CMAparameters.cxx.

236 {
237 if (!m_lowPt) {
238 m_lowPt = new int[rpc_to_read][2][confirm_channels];
239 for (int i = 0; i < rpc_to_read; ++i)
240 for (int j = 0; j < 2; ++j)
241 for (int k = 0; k < confirm_channels; ++k) m_lowPt[i][j][k] = -1;
242 }
243}

◆ create_pivot_map()

void CMAparameters::create_pivot_map ( int rpc_to_read)
protectedinherited

Definition at line 227 of file CMAparameters.cxx.

227 {
228 if (!m_pivot) {
229 m_pivot = new int[rpc_to_read][2][pivot_channels];
230 for (int i = 0; i < rpc_to_read; ++i)
231 for (int j = 0; j < 2; ++j)
232 for (int k = 0; k < pivot_channels; ++k) m_pivot[i][j][k] = -1;
233 }
234}

◆ doInversion()

bool EvenPhiCMA::doInversion ( SectorLogicSetup & setup)
private

Definition at line 815 of file EvenPhiCMA.cxx.

815 {
816 SectorLogicSetup::SECTORlist Sectors = setup.sectors();
817 SectorLogicSetup::SECTORlist::const_iterator it = Sectors.begin();
818 int sector = *it;
819
820 WORlink::const_iterator wor;
821 if (lowPt_station() && lowPt_number_co() != -1) {
822 wor = m_lowPt_WORs.begin();
823 WiredOR::RPClink Linked = (*wor).second->RPCread();
824 WiredOR::RPClink::const_iterator link = Linked.begin();
825 if ((*link).second->inversion(sector)) { m_inversion = true; }
826 }
827
828 if (pivot_station()) {
829 wor = m_pivot_WORs.begin();
830 WiredOR::RPClink Linked = (*wor).second->RPCread();
831 WiredOR::RPClink::const_iterator link = Linked.begin();
832 if ((*link).second->inversion(sector)) { m_inversion = true; }
833 }
834
835 if (highPt_station() && highPt_number_co() != -1) {
836 wor = m_highPt_WORs.begin();
837 WiredOR::RPClink Linked = (*wor).second->RPCread();
838 WiredOR::RPClink::const_iterator link = Linked.begin();
839 if ((*link).second->inversion(sector)) { m_inversion = true; }
840 }
841
842 if (m_inversion) m_id->inversion();
843
844 return true;
845}
int highPt_number_co() const
int lowPt_number_co() const
std::unique_ptr< CMAidentity > m_id
std::map< int, const RPCchamber *, std::less< int > > RPClink
Definition WiredOR.h:28
pointer & link(pointer p) const
Return a reference to the link for an element.

◆ error()

std::string CMAparameters::error ( const std::string & str)
nodiscardprotectedinherited

Definition at line 549 of file CMAparameters.cxx.

549 {
550 std::ostringstream disp;
551 disp << this->error_header()
552 << this->id() << str;
553 return disp.str();
554}
std::string error_header() const

◆ error_header()

std::string CablingObject::error_header ( ) const
nodiscardinherited

Definition at line 22 of file CablingObject.cxx.

22 {
23 std::ostringstream disp;
24 disp << "Error in Sector Type " << m_sector_type;
25 if (m_station > 0) disp << ", station " << m_station;
26 disp << ":" << std::endl;
27 return disp.str();
28}

◆ first_highPt_channel()

unsigned int CMAparameters::first_highPt_channel ( ) const
inherited

Definition at line 894 of file CMAparameters.cxx.

894 {
895 for (int ch = 0; ch < confirm_channels; ++ch) {
896 for (int i = 0; i < m_highPt_rpc_read; ++i) {
897 int CabCode = m_highPt[i][0][ch];
898 if (CabCode != -1) return ch;
899 }
900 }
901 return 999;
902}

◆ first_highPt_code()

unsigned int CMAparameters::first_highPt_code ( ) const
inherited

Definition at line 60 of file CMAparameters.cxx.

60{ return m_first_highPt_code; }

◆ first_lowPt_channel()

unsigned int CMAparameters::first_lowPt_channel ( ) const
inherited

Definition at line 874 of file CMAparameters.cxx.

874 {
875 for (int ch = 0; ch < confirm_channels; ++ch) {
876 for (int i = 0; i < m_lowPt_rpc_read; ++i) {
877 int CabCode = m_lowPt[i][0][ch];
878 if (CabCode != -1) return ch;
879 }
880 }
881 return 999;
882}

◆ first_lowPt_code()

unsigned int CMAparameters::first_lowPt_code ( ) const
inherited

Definition at line 58 of file CMAparameters.cxx.

58{ return m_first_lowPt_code; }

◆ first_pivot_channel()

unsigned int CMAparameters::first_pivot_channel ( ) const
inherited

Definition at line 854 of file CMAparameters.cxx.

854 {
855 for (int ch = 0; ch < pivot_channels; ++ch) {
856 for (int i = 0; i < m_pivot_rpc_read; ++i) {
857 int CabCode = m_pivot[i][0][ch];
858 if (CabCode != -1) return ch;
859 }
860 }
861 return 999;
862}

◆ first_pivot_code()

unsigned int CMAparameters::first_pivot_code ( ) const
inherited

Definition at line 56 of file CMAparameters.cxx.

56{ return m_first_pivot_code; }

◆ get_cabling()

bool CMAparameters::get_cabling ( CMAinput IO,
int WOR,
int ly,
int ch,
unsigned int & code ) const
inherited

Definition at line 614 of file CMAparameters.cxx.

614 {
615 int* strips = nullptr;
616 int channels = 0;
617
618 if (ly >= 2) return false;
619
620 if (IO == Pivot && m_pivot) {
622 if (WOR >= m_pivot_rpc_read) return false;
623 strips = reinterpret_cast<int*>(m_pivot);
624 } else if (IO == LowPt && m_lowPt) {
626 if (WOR >= m_lowPt_rpc_read) return false;
627 strips = reinterpret_cast<int*>(m_lowPt);
628 } else if (IO == HighPt && m_highPt) {
630 if (WOR >= m_highPt_rpc_read) return false;
631 strips = reinterpret_cast<int*>(m_highPt);
632 } else
633 return false;
634
635 if (ch >= channels) return false;
636
637 int position = WOR * (2 * channels) + ly * (channels) + ch;
638
639 if (*(strips + position) < 0) return false;
640
641 code = *(strips + position);
642
643 return true;
644}
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.

◆ get_channel()

bool CMAparameters::get_channel ( CMAinput IO,
int cab_code,
int & ly,
int & ch ) const
inherited

Definition at line 583 of file CMAparameters.cxx.

583 {
584 int* strips = nullptr;
585 int nstrips = 0;
586 int channels = 0;
587
588 if (IO == Pivot && m_pivot) {
590 nstrips = pivot_channels * m_pivot_rpc_read * 2;
591 strips = reinterpret_cast<int*>(m_pivot);
592 } else if (IO == LowPt && m_lowPt) {
594 nstrips = confirm_channels * m_lowPt_rpc_read * 2;
595 strips = reinterpret_cast<int*>(m_lowPt);
596 } else if (IO == HighPt && m_highPt) {
598 nstrips = confirm_channels * m_highPt_rpc_read * 2;
599 strips = reinterpret_cast<int*>(m_highPt);
600 } else
601 return false;
602
603 for (int i = 0; i < nstrips; ++i) {
604 if (strips[i] == cab_code) {
605 ch = i % channels;
606 ly = (i / channels) % 2;
607 return true;
608 }
609 }
610
611 return false;
612}

◆ get_confirm_strip_boundaries()

void EvenPhiCMA::get_confirm_strip_boundaries ( int stat,
int max )
private

Definition at line 521 of file EvenPhiCMA.cxx.

521 {
522 if (stat == lowPt_station()) {
523 if (id().Ixx_index() == 0) {
525 m_lowPt_stop_st = confirm_channels - (40 - max / 2);
527 } else if (id().Ixx_index() == 1) {
529 m_lowPt_start_st = max - confirm_channels + 1 + (40 - max / 2);
531 }
532
533 } else if (stat == highPt_station()) {
534 if (id().Ixx_index() == 0) {
538 } else if (id().Ixx_index() == 1) {
540 m_highPt_start_st = max - confirm_channels + 1 + (40 - max / 2);
542 }
543 }
544}

◆ get_max_strip_readout()

int EvenPhiCMA::get_max_strip_readout ( int stat)
private

Definition at line 546 of file EvenPhiCMA.cxx.

546 {
547 int max = 0;
548 if (stat == pivot_station()) {
549 EvenPhiCMA::WORlink::const_iterator it = m_pivot_WORs.begin();
550 while (it != m_pivot_WORs.end()) {
551 max = (max > (*it).second->give_max_phi_strips()) ? max : (*it).second->give_max_phi_strips();
552 ++it;
553 }
554 } else if (stat == lowPt_station()) {
555 EvenPhiCMA::WORlink::const_iterator it = m_lowPt_WORs.begin();
556 while (it != m_lowPt_WORs.end()) {
557 max = (max > (*it).second->give_max_phi_strips()) ? max : (*it).second->give_max_phi_strips();
558 ++it;
559 }
560 } else if (stat == highPt_station()) {
561 EvenPhiCMA::WORlink::const_iterator it = m_highPt_WORs.begin();
562 while (it != m_highPt_WORs.end()) {
563 max = (max > (*it).second->give_max_phi_strips()) ? max : (*it).second->give_max_phi_strips();
564 ++it;
565 }
566 }
567 return max;
568}

◆ give_connection()

bool CMAparameters::give_connection ( int station,
int cab_code,
CMAinput & IO,
int & ly,
int & ch ) const
inherited

Definition at line 578 of file CMAparameters.cxx.

578 {
580 return get_channel(IO, cab_code, ly, ch);
581}
CMAinput whichCMAinput(int) const
bool get_channel(CMAinput, int, int &, int &) const
int station() const

◆ give_strip_code()

void CMAparameters::give_strip_code ( unsigned int logic_sector,
unsigned short int lh,
unsigned short int ijk,
unsigned short int Channel,
std::list< unsigned int > & StripCodes ) const
inherited

Definition at line 765 of file CMAparameters.cxx.

766 {
767 RPCdecoder deco;
768
769 if (ijk == 0 || ijk == 1) {
770 for (int i = 0; i < m_pivot_rpc_read; ++i) {
771 int CabCode = m_pivot[i][ijk][Channel];
772 if (CabCode >= 0) {
773 int strip_number = CabCode % 100;
774 int rpc_z_index = (CabCode / 100) % 100;
775 int rpc_layer = (CabCode / 10000) % 10;
776 if (deco(this->id().type(), logic_sector, this->whichCMAstation(Pivot), rpc_layer, rpc_z_index, strip_number)) {
777 StripCodes.push_back(deco.code());
778 }
779 }
780 }
781 }
782
783 if (ijk == 2 || ijk == 3) {
784 if (lh == 1) {
785 for (int i = 0; i < m_highPt_rpc_read; ++i) {
786 int CabCode = m_highPt[i][0][Channel + 32 * (ijk % 2)];
787 if (CabCode >= 0) {
788 int strip_number = CabCode % 100;
789 int rpc_z_index = (CabCode / 100) % 100;
790 int rpc_layer = (CabCode / 10000) % 10;
791 if (deco(this->id().type(), logic_sector, this->whichCMAstation(HighPt), rpc_layer, rpc_z_index, strip_number)) {
792 StripCodes.push_back(deco.code());
793 }
794 }
795 }
796 } else {
797 for (int i = 0; i < m_lowPt_rpc_read; ++i) {
798 int CabCode = m_lowPt[i][0][Channel + 32 * (ijk % 2)];
799 if (CabCode >= 0) {
800 int strip_number = CabCode % 100;
801 int rpc_z_index = (CabCode / 100) % 100;
802 int rpc_layer = (CabCode / 10000) % 10;
803 if (deco(this->id().type(), logic_sector, this->whichCMAstation(LowPt), rpc_layer, rpc_z_index, strip_number)) {
804 StripCodes.push_back(deco.code());
805 }
806 }
807 }
808 }
809 }
810
811 if (ijk == 4 || ijk == 5) {
812 if (lh == 1) {
813 for (int i = 0; i < m_highPt_rpc_read; ++i) {
814 int CabCode = m_highPt[i][1][Channel + 32 * (ijk % 2)];
815 if (CabCode >= 0) {
816 int strip_number = CabCode % 100;
817 int rpc_z_index = (CabCode / 100) % 100;
818 int rpc_layer = (CabCode / 10000) % 10;
819 if (deco(this->id().type(), logic_sector, this->whichCMAstation(HighPt), rpc_layer, rpc_z_index, strip_number)) {
820 StripCodes.push_back(deco.code());
821 }
822 }
823 }
824 } else {
825 for (int i = 0; i < m_lowPt_rpc_read; ++i) {
826 int CabCode = m_lowPt[i][1][Channel + 32 * (ijk % 2)];
827 if (CabCode >= 0) {
828 int strip_number = CabCode % 100;
829 int rpc_z_index = (CabCode / 100) % 100;
830 int rpc_layer = (CabCode / 10000) % 10;
831 if (deco(this->id().type(), logic_sector, this->whichCMAstation(LowPt), rpc_layer, rpc_z_index, strip_number)) {
832 StripCodes.push_back(deco.code());
833 }
834 }
835 }
836 }
837 }
838
839 if (ijk == 6) {
840 for (int i = 0; i < m_pivot_rpc_read; ++i) {
841 int CabCode = m_pivot[i][0][Channel];
842 if (CabCode >= 0) {
843 int strip_number = CabCode % 100;
844 int rpc_z_index = (CabCode / 100) % 100;
845 int rpc_layer = (CabCode / 10000) % 10;
846 if (deco(this->id().type(), logic_sector, this->whichCMAstation(Pivot), rpc_layer, rpc_z_index, strip_number)) {
847 StripCodes.push_back(deco.code());
848 }
849 }
850 }
851 }
852}
int whichCMAstation(CMAinput input) const
unsigned int code(void) const
Definition RPCdecoder.h:64
Identifier32::value_type Channel

◆ highPt_number_co()

int CMAparameters::highPt_number_co ( ) const
inherited

Definition at line 32 of file CMAparameters.cxx.

32{ return m_params.highPtNumCo; }
defineParams m_params

◆ highPt_program()

const CMAprogram * CMAparameters::highPt_program ( ) const
inherited

Definition at line 19 of file CMAparameters.cxx.

19{ return m_highPt_program.get(); }
std::unique_ptr< CMAprogram > m_highPt_program

◆ highPt_rpc_read()

int CMAparameters::highPt_rpc_read ( ) const
inherited

Definition at line 54 of file CMAparameters.cxx.

54{ return m_highPt_rpc_read; }

◆ highPt_start_ch()

int CMAparameters::highPt_start_ch ( ) const
inherited

Definition at line 40 of file CMAparameters.cxx.

40{ return m_highPt_start_ch; }

◆ highPt_start_co()

int CMAparameters::highPt_start_co ( ) const
inherited

Definition at line 30 of file CMAparameters.cxx.

30{ return m_params.highPtStartCo; }

◆ highPt_start_st()

int CMAparameters::highPt_start_st ( ) const
inherited

Definition at line 39 of file CMAparameters.cxx.

39{ return m_highPt_start_st; }

◆ highPt_station()

int CMAparameters::highPt_station ( ) const
inherited

Definition at line 50 of file CMAparameters.cxx.

50{ return m_params.highPtStation; }

◆ highPt_stop_ch()

int CMAparameters::highPt_stop_ch ( ) const
inherited

Definition at line 42 of file CMAparameters.cxx.

42{ return m_highPt_stop_ch; }

◆ highPt_stop_co()

int CMAparameters::highPt_stop_co ( ) const
inherited

Definition at line 31 of file CMAparameters.cxx.

31{ return m_params.highPtStopCo; }

◆ highPt_stop_st()

int CMAparameters::highPt_stop_st ( ) const
inherited

Definition at line 41 of file CMAparameters.cxx.

41{ return m_highPt_stop_st; }

◆ highPt_WORs()

const EvenPhiCMA::WORlink & EvenPhiCMA::highPt_WORs ( ) const

Definition at line 20 of file EvenPhiCMA.cxx.

20{ return m_highPt_WORs; }

◆ id()

const CMAidentity & CMAparameters::id ( ) const
inherited

Definition at line 17 of file CMAparameters.cxx.

17{ return *m_id; }

◆ inversion()

bool EvenPhiCMA::inversion ( ) const

Definition at line 22 of file EvenPhiCMA.cxx.

22{ return m_inversion; }

◆ isAtlas()

bool CMAparameters::isAtlas ( ) const
inherited

Definition at line 15 of file CMAparameters.cxx.

15{ return m_conf_type == Atlas; }

◆ last_highPt_channel()

unsigned int CMAparameters::last_highPt_channel ( ) const
inherited

Definition at line 904 of file CMAparameters.cxx.

904 {
905 for (int ch = confirm_channels - 1; ch >= 0; --ch) {
906 for (int i = 0; i < m_highPt_rpc_read; ++i) {
907 int CabCode = m_highPt[i][0][ch];
908 if (CabCode != -1) return ch;
909 }
910 }
911 return 999;
912}

◆ last_highPt_code()

unsigned int CMAparameters::last_highPt_code ( ) const
inherited

Definition at line 61 of file CMAparameters.cxx.

61{ return m_last_highPt_code; }

◆ last_lowPt_channel()

unsigned int CMAparameters::last_lowPt_channel ( ) const
inherited

Definition at line 884 of file CMAparameters.cxx.

884 {
885 for (int ch = confirm_channels - 1; ch >= 0; --ch) {
886 for (int i = 0; i < m_lowPt_rpc_read; ++i) {
887 int CabCode = m_lowPt[i][0][ch];
888 if (CabCode != -1) return ch;
889 }
890 }
891 return 999;
892}

◆ last_lowPt_code()

unsigned int CMAparameters::last_lowPt_code ( ) const
inherited

Definition at line 59 of file CMAparameters.cxx.

59{ return m_last_lowPt_code; }

◆ last_pivot_channel()

unsigned int CMAparameters::last_pivot_channel ( ) const
inherited

Definition at line 864 of file CMAparameters.cxx.

864 {
865 for (int ch = pivot_channels - 1; ch >= 0; --ch) {
866 for (int i = 0; i < m_pivot_rpc_read; ++i) {
867 int CabCode = m_pivot[i][0][ch];
868 if (CabCode != -1) return ch;
869 }
870 }
871 return 999;
872}

◆ last_pivot_code()

unsigned int CMAparameters::last_pivot_code ( ) const
inherited

Definition at line 57 of file CMAparameters.cxx.

57{ return m_last_pivot_code; }

◆ lowPt_number_co()

int CMAparameters::lowPt_number_co ( ) const
inherited

Definition at line 28 of file CMAparameters.cxx.

28{ return m_params.lowPtNumCo; }

◆ lowPt_program()

const CMAprogram * CMAparameters::lowPt_program ( ) const
inherited

Definition at line 18 of file CMAparameters.cxx.

18{ return m_lowPt_program.get(); }
std::unique_ptr< CMAprogram > m_lowPt_program

◆ lowPt_rpc_read()

int CMAparameters::lowPt_rpc_read ( ) const
inherited

Definition at line 53 of file CMAparameters.cxx.

53{ return m_lowPt_rpc_read; }

◆ lowPt_start_ch()

int CMAparameters::lowPt_start_ch ( ) const
inherited

Definition at line 35 of file CMAparameters.cxx.

35{ return m_lowPt_start_ch; }

◆ lowPt_start_co()

int CMAparameters::lowPt_start_co ( ) const
inherited

Definition at line 26 of file CMAparameters.cxx.

26{ return m_params.lowPtStartCo; }

◆ lowPt_start_st()

int CMAparameters::lowPt_start_st ( ) const
inherited

Definition at line 34 of file CMAparameters.cxx.

34{ return m_lowPt_start_st; }

◆ lowPt_station()

int CMAparameters::lowPt_station ( ) const
inherited

Definition at line 49 of file CMAparameters.cxx.

49{ return m_params.lowPtStation; }

◆ lowPt_stop_ch()

int CMAparameters::lowPt_stop_ch ( ) const
inherited

Definition at line 37 of file CMAparameters.cxx.

37{ return m_lowPt_stop_ch; }

◆ lowPt_stop_co()

int CMAparameters::lowPt_stop_co ( ) const
inherited

Definition at line 27 of file CMAparameters.cxx.

27{ return m_params.lowPtStopCo; }

◆ lowPt_stop_st()

int CMAparameters::lowPt_stop_st ( ) const
inherited

Definition at line 36 of file CMAparameters.cxx.

36{ return m_lowPt_stop_st; }

◆ lowPt_WORs()

const EvenPhiCMA::WORlink & EvenPhiCMA::lowPt_WORs ( ) const

Definition at line 19 of file EvenPhiCMA.cxx.

19{ return m_lowPt_WORs; }

◆ name()

const std::string & BaseObject::name ( ) const
inlineinherited

Definition at line 23 of file BaseObject.h.

23{ return m_name; }
std::string m_name
Definition BaseObject.h:16

◆ no_confirm_error()

std::string CMAparameters::no_confirm_error ( int stat)
nodiscardprotectedinherited

Definition at line 524 of file CMAparameters.cxx.

524 {
525 std::ostringstream disp;
526 disp << this->error_header();
527
528 if (stat == lowPt_station()) {
529 disp << "Low Pt cabling inconsistence (cabling from connector " << m_params.lowPtStartCo << " to connector " << m_params.lowPtStopCo
530 << ") for" << std::endl
531 << *this;
532 } else if (stat == highPt_station()) {
533 disp << "High Pt cabling inconsistence (cabling from connector " << m_params.highPtStartCo << " to connector "
534 << m_params.highPtStopCo << ") for" << std::endl
535 << *this;
536 }
537 return disp.str();
538}

◆ no_connection_error()

std::string CablingObject::no_connection_error ( const std::string & conn_name,
int num ) const
nodiscardinherited

Definition at line 30 of file CablingObject.cxx.

30 {
31 std::ostringstream disp;
32 disp << error_header() << name() << " n. " << number() << " is supposed to receive input from " << conn_name << " n. " << num << " which doesn't exist!";
33 return disp.str();
34}
const std::string & name() const
Definition BaseObject.h:23

◆ no_wor_readout()

std::string CMAparameters::no_wor_readout ( int num,
int stat )
nodiscardprotectedinherited

Definition at line 540 of file CMAparameters.cxx.

540 {
541 std::ostringstream disp;
542 disp << this->error_header();
543
544 disp << this->id() << " receives input from" << std::endl
545 << " RPC chamber n. " << num << " of station " << stat << " which has no Wired OR readout!";
546 return disp.str();
547}

◆ noMoreChannels()

std::string CMAparameters::noMoreChannels ( const std::string & stat)
nodiscardprotectedinherited

Definition at line 481 of file CMAparameters.cxx.

481 {
482 int max_channels = 0;
483 if (stat == "Pivot")
484 max_channels = pivot_channels;
485 else
486 max_channels = confirm_channels;
487
488 std::ostringstream disp;
489 disp << "Error in Sector Type " << this->sector_type() << ":" << std::endl
490 << this->id() << " attempted to receive more than " << max_channels << " channels for " << stat << " side";
491 return disp.str();
492}
int sector_type() const

◆ number()

int CablingObject::number ( ) const
inherited

Definition at line 12 of file CablingObject.cxx.

12{ return m_number; }

◆ operator+=()

CMAparameters & CMAparameters::operator+= ( const CMAparameters & cma)
inherited

Definition at line 262 of file CMAparameters.cxx.

262 {
263 if (m_params.pivotStartChan == -1) m_params.pivotStartChan = cma.pivot_start_ch();
264 if (m_params.pivotStartStation == -1) m_params.pivotStartStation = cma.pivot_start_st();
265 if (m_params.pivotStopChan == -1) m_params.pivotStopChan = cma.pivot_stop_ch();
266 if (m_params.pivotStopStation == -1) m_params.pivotStopStation = cma.pivot_stop_st();
267
268 if (m_params.lowPtStartCo == -1) m_params.lowPtStartCo = cma.lowPt_start_co();
269 if (m_params.lowPtStopCo == -1) m_params.lowPtStopCo = cma.lowPt_stop_co();
270 if (m_params.lowPtNumCo == -1) m_params.lowPtNumCo = cma.lowPt_number_co();
271
272 if (m_params.highPtStartCo == -1) m_params.highPtStartCo = cma.highPt_start_co();
273 if (m_params.highPtStopCo == -1) m_params.highPtStopCo = cma.highPt_stop_co();
274 if (m_params.highPtNumCo == -1) m_params.highPtNumCo = cma.highPt_number_co();
275
276 if (m_params.lowPtStation == 0) m_params.lowPtStation = cma.lowPt_station();
277 if (m_params.pivotStation == 0) m_params.pivotStation = cma.pivot_station();
278 if (m_params.highPtStation == 0) m_params.highPtStation = cma.highPt_station();
279
284
289
290 return *this;
291}
int lowPt_start_co() const
int highPt_stop_co() const
int highPt_start_co() const
int lowPt_stop_co() const

◆ operator=()

EvenPhiCMA & EvenPhiCMA::operator= ( const EvenPhiCMA & cma)

Definition at line 55 of file EvenPhiCMA.cxx.

55 {
56 if (this != &cma) {
58 m_pivot_WORs.clear();
60 m_lowPt_WORs.clear();
62 m_highPt_WORs.clear();
64
65 m_inversion = cma.inversion();
66 }
67 return *this;
68}
CMAparameters & operator=(const CMAparameters &)

◆ operator==() [1/2]

bool CMAparameters::operator== ( const CMAidentity & id) const
inherited

Definition at line 258 of file CMAparameters.cxx.

258 {
259 return this->id() == id;
260}

◆ operator==() [2/2]

bool CMAparameters::operator== ( const CMAparameters & cma) const
inherited

Definition at line 254 of file CMAparameters.cxx.

254 {
255 return this->id() == cma.id();
256}

◆ pivot_rpc_read()

int CMAparameters::pivot_rpc_read ( ) const
inherited

Definition at line 52 of file CMAparameters.cxx.

52{ return m_pivot_rpc_read; }

◆ pivot_start_ch()

int CMAparameters::pivot_start_ch ( ) const
inherited

Definition at line 21 of file CMAparameters.cxx.

21{ return m_params.pivotStartChan; }

◆ pivot_start_st()

int CMAparameters::pivot_start_st ( ) const
inherited

Definition at line 22 of file CMAparameters.cxx.

22{ return m_params.pivotStartStation; }

◆ pivot_station()

int CMAparameters::pivot_station ( ) const
inherited

Definition at line 48 of file CMAparameters.cxx.

48{ return m_params.pivotStation; }

◆ pivot_stop_ch()

int CMAparameters::pivot_stop_ch ( ) const
inherited

Definition at line 23 of file CMAparameters.cxx.

23{ return m_params.pivotStopChan; }

◆ pivot_stop_st()

int CMAparameters::pivot_stop_st ( ) const
inherited

Definition at line 24 of file CMAparameters.cxx.

24{ return m_params.pivotStopStation; }

◆ pivot_WORs()

const EvenPhiCMA::WORlink & EvenPhiCMA::pivot_WORs ( ) const

Definition at line 18 of file EvenPhiCMA.cxx.

18{ return m_pivot_WORs; }

◆ Print() [1/2]

void CMAparameters::Print ( std::ostream & stream,
bool detail ) const
overridevirtualinherited

Reimplemented from BaseObject.

Definition at line 476 of file CMAparameters.cxx.

477{
478 Print (stream, detail, 0);
479}
virtual void Print(std::ostream &, bool) const override

◆ Print() [2/2]

void CMAparameters::Print ( std::ostream & stream,
bool detail,
int layer ) const
inherited

Definition at line 449 of file CMAparameters.cxx.

450{
451 stream << id();
452
453 stream << " I/O " << m_params.pivotStation << ",";
454 stream << m_params.lowPtStation << "," << m_params.highPtStation << " pivot ";
455 stream.fill(48);
456 stream << "<" << std::setw(2) << pivot_start_ch();
457 stream << ":" << std::setw(2) << pivot_start_st();
458 stream << " " << std::setw(2) << pivot_stop_ch() << ":";
459 stream << std::setw(2) << pivot_stop_st() << ">" << std::endl;
460 stream << " ";
461 stream << "lowPt <" << std::setw(2);
462
463 stream << lowPt_start_ch() << ":" << std::setw(2) << lowPt_start_st();
464 stream << " " << std::setw(2) << lowPt_stop_ch() << ":";
465 stream << std::setw(2) << lowPt_stop_st() << ">" << std::endl;
466 stream << " ";
467 stream << "highPt<" << std::setw(2);
468
469 stream << highPt_start_ch() << ":" << std::setw(2) << highPt_start_st();
470 stream << " " << std::setw(2) << highPt_stop_ch() << ":";
471 stream << std::setw(2) << highPt_stop_st() << ">" << std::endl;
472 stream.fill(32);
473 if (detail) showDt(stream, layer);
474}
void showDt(std::ostream &, int layer) const

◆ reset_highPt_cabling()

void CMAparameters::reset_highPt_cabling ( )
privateinherited

Definition at line 221 of file CMAparameters.cxx.

221 {
223 if (m_highPt) delete[] m_highPt;
224 m_highPt = nullptr;
225}

◆ reset_lowPt_cabling()

void CMAparameters::reset_lowPt_cabling ( )
privateinherited

Definition at line 215 of file CMAparameters.cxx.

215 {
217 if (m_lowPt) delete[] m_lowPt;
218 m_lowPt = nullptr;
219}

◆ reset_pivot_cabling()

void CMAparameters::reset_pivot_cabling ( )
privateinherited

Definition at line 209 of file CMAparameters.cxx.

209 {
211 if (m_pivot) delete[] m_pivot;
212 m_pivot = nullptr;
213}

◆ sector_type()

int CablingObject::sector_type ( ) const
inherited

Definition at line 14 of file CablingObject.cxx.

14{ return m_sector_type; }

◆ setup()

bool EvenPhiCMA::setup ( SectorLogicSetup & setup,
MsgStream & log )

Definition at line 570 of file EvenPhiCMA.cxx.

570 {
571 EvenPhiCMA* prev = setup.previousCMA(*this);
572 if (prev && pivot_station()) {
573 if (pivot_start_ch() == prev->pivot_stop_ch()) {
574 if (!(pivot_start_st() == prev->pivot_stop_st() + 1)) {
575 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << two_obj_error_message("strips mismatch", prev);
576 return false;
577 }
578
579 } else if (!(pivot_start_ch() == prev->pivot_stop_ch() + 1)) {
580 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "EvenPhiCMA") << two_obj_error_message("chambers mismatch", prev);
581 return false;
582 } else {
583 }
584 } else {
585 }
586
587 if (!connect(setup)) return false;
588 if (!cable_CMA_channels()) return false;
589
590 // invert the strip cabling if needed
591 // if( !doInversion(setup) ) return false;
592
593 // olny 1 repository allowed so far
594 std::string LVL1_configuration_repository;
595 LVL1_configuration_repository = "ATLAS.data";
596
597 // Read the program file if exist
598 SectorLogicSetup::SECTORlist sectors = setup.sectors();
599 SectorLogicSetup::SECTORlist::const_iterator it = sectors.begin();
600
601 char s_tag[4];
602 sprintf(s_tag, "s%02d", *it);
603
604 char t_tag[3];
605 sprintf(t_tag, "t%1d", id().PAD_index());
606
607 char c_tag[4] = {'_', 'c', '0', '\0'};
608 if (id().phi_index() == 1) c_tag[2] = '1';
609
610 std::ifstream CMAprogLow;
611 std::istringstream CMAprogLow_COOL;
612 char name[200];
613 for (int i = 0; i < 200; ++i) name[i] = '\0';
614
615 // LB retrieve pointer to the map of the trigger roads
616 const TrigRoadsMap * p_trigroads = setup.GetPtoTrigRoads();
617
618 // Read trigger configurations from files
619 if (p_trigroads == nullptr) {
620 while (!CMAprogLow.is_open() && it != sectors.end()) {
621 std::ostringstream namestr;
622 for (int i = 0; i < 200; ++i) name[i] = '\0';
623
624 if ((*it) % 2 == 0) // load only the Phi program of the Even sectors
625 {
626 std::string dir;
627 dir = setup.online_database();
628 namestr << dir << "/" << s_tag << "_" << t_tag << "_pl" << c_tag << ".txt" << std::ends; // M.C. search for local files
629
630 namestr.str().copy(name, namestr.str().length(), 0);
631 name[namestr.str().length()] = 0;
632
633 CMAprogLow.open(name);
634 if (!CMAprogLow.is_open()) CMAprogLow.clear();
635 namestr.clear();
636 }
637 ++it;
638 }
639 }
640 // Trigger configuration loaded from COOL
641 else {
642 while (CMAprogLow_COOL.str().empty() && it != sectors.end()) {
643 std::ostringstream namestr;
644 for (int i = 0; i < 200; ++i) name[i] = '\0';
645
646 if ((*it) % 2 == 0) // load only the Phi program of the Even sectors
647 {
648 namestr << s_tag << "_" << t_tag << "_pl" << c_tag << ".txt" << std::ends;
649 namestr.str().copy(name, namestr.str().length(), 0);
650 name[namestr.str().length()] = 0;
651 TrigRoadsMap::const_iterator itc;
652 itc = p_trigroads->find(name);
653 if (itc != p_trigroads->end()) {
654 if (log.level() <= MSG::VERBOSE) {
655 log << MSG::VERBOSE << "EvenPhiCMA low: key " << name << "found in the Trigger Road Map --> OK"
656 << ", EvenPhiCMA low: key " << itc->second.c_str() << endmsg;
657 }
658 CMAprogLow_COOL.str(itc->second.c_str());
659 if (log.level() <= MSG::VERBOSE) {
660 log << MSG::VERBOSE << "LBTAG-CMAPROGLOWO " << CMAprogLow_COOL.str() << endmsg;
661 }
662 }
663 }
664 ++it;
665 namestr.clear();
666 }
667 }
668 if (CMAprogLow.is_open()) {
669 std::unique_ptr<CMAprogram> program = std::make_unique<CMAprogram>(CMAprogLow, true);
670 if (program->check()) {
671 m_lowPt_program = std::move(program);
672 if (setup.cosmic()) {
673 m_lowPt_program->open_threshold(0);
674 m_lowPt_program->open_threshold(1);
675 }
676 for (unsigned int i = 0; i < 3; ++i) {
677 if (!m_lowPt_program->hasProgrammed(i)) {
678 if (log.level() <= MSG::DEBUG) {
679 log << MSG::DEBUG << s_tag << ": " << id() << ": low-pt: has threshold " << i
680 << " not programmed." << endmsg;
681 }
682 }
683 }
684 }
685 CMAprogLow.close();
686 } else if (!CMAprogLow_COOL.str().empty()) {
687 std::unique_ptr<CMAprogram> program = std::make_unique<CMAprogram>(CMAprogLow_COOL, true);
688 if (program->check()) {
689 m_lowPt_program = std::move(program);
690 if (setup.cosmic()) {
691 m_lowPt_program->open_threshold(0);
692 m_lowPt_program->open_threshold(1);
693 }
694 for (unsigned int i = 0; i < 3; ++i) {
695 if (!m_lowPt_program->hasProgrammed(i)) {
696 if (log.level() <= MSG::DEBUG) {
697 log << MSG::DEBUG << s_tag << ": " << id() << ": low-pt: has threshold " << i
698 << " not programmed." << endmsg;
699 }
700 }
701 }
702 }
703 CMAprogLow_COOL.str("");
704 } else if (name[0] != '\0') {
705 if (log.level() <= MSG::DEBUG) {
706 log << MSG::DEBUG << name << " not found! Putting a dummy configuration" << endmsg;
707 }
708 m_lowPt_program = std::make_unique<CMAprogram>();
709 m_lowPt_program->open_threshold(0);
710 }
711
712 std::ifstream CMAprogHigh;
713 std::istringstream CMAprogHigh_COOL;
714
715 it = sectors.begin();
716
717 if (p_trigroads == nullptr) {
718 while (!CMAprogHigh.is_open() && it != sectors.end()) {
719 std::ostringstream namestr;
720 for (int i = 0; i < 200; ++i) name[i] = '\0';
721
722 if ((*it) % 2 == 0) // load only the Phi program of the Even sectors
723 {
724 std::string dir;
725 dir = setup.online_database();
726 namestr << dir << "/" << s_tag << "_" << t_tag << "_ph" << c_tag << ".txt" << std::ends;
727
728 namestr.str().copy(name, namestr.str().length(), 0);
729 name[namestr.str().length()] = 0;
730
731 CMAprogHigh.open(name);
732 if (!CMAprogHigh.is_open()) CMAprogHigh.clear();
733 namestr.clear();
734 }
735 ++it;
736 }
737 }
738 // Trigger configuration loaded from COOL
739 else {
740 it = sectors.begin();
741 while (CMAprogHigh_COOL.str().empty() && it != sectors.end()) {
742 std::ostringstream namestr;
743 for (int i = 0; i < 200; ++i) name[i] = '\0';
744
745 if ((*it) % 2 == 0) // load only the Phi program of the Even sectors
746 {
747 namestr << s_tag << "_" << t_tag << "_ph" << c_tag << ".txt" << std::ends;
748 namestr.str().copy(name, namestr.str().length(), 0);
749 name[namestr.str().length()] = 0;
750 TrigRoadsMap::const_iterator itc;
751 itc = p_trigroads->find(name);
752 if (itc != p_trigroads->end()) {
753 if (log.level() <= MSG::VERBOSE) {
754 log << MSG::VERBOSE << "EvenPhiCMA high: key " << name << "found in the Trigger Road Map --> OK"
755 << ", EvenPhiCMA high: key " << itc->second.c_str() << endmsg;
756 }
757 CMAprogHigh_COOL.str(itc->second.c_str());
758 if (log.level() <= MSG::DEBUG) {
759 log << MSG::DEBUG << "CMAPROGHIGH " << CMAprogHigh_COOL.str() << endmsg;
760 }
761 }
762 }
763 ++it;
764 namestr.clear();
765 }
766 }
767
768 if (CMAprogHigh.is_open()) {
769 std::unique_ptr<CMAprogram> program = std::make_unique<CMAprogram>(CMAprogHigh, true);
770 if (program->check()) {
771 m_highPt_program = std::move(program);
772 if (setup.cosmic()) {
773 m_highPt_program->open_threshold(0);
774 m_highPt_program->open_threshold(1);
775 }
776 for (unsigned int i = 0; i < 3; ++i) {
777 if (!m_highPt_program->hasProgrammed(i)) {
778 if (log.level() <= MSG::DEBUG) {
779 log << MSG::DEBUG << s_tag << ": " << id() << ": high-pt: has threshold " << i
780 << " not programmed." << endmsg;
781 }
782 }
783 }
784 }
785 CMAprogHigh.close();
786 } else if (!CMAprogHigh_COOL.str().empty()) {
787 std::unique_ptr<CMAprogram> program = std::make_unique<CMAprogram>(CMAprogHigh_COOL, true);
788 if (program->check()) {
789 m_highPt_program = std::move(program);
790 if (setup.cosmic()) {
791 m_highPt_program->open_threshold(0);
792 m_highPt_program->open_threshold(1);
793 }
794 for (unsigned int i = 0; i < 3; ++i) {
795 if (!m_highPt_program->hasProgrammed(i)) {
796 if (log.level() <= MSG::DEBUG) {
797 log << MSG::DEBUG << s_tag << ": " << id() << ": high-pt: has threshold " << i
798 << " not programmed." << endmsg;
799 }
800 }
801 }
802 }
803 CMAprogHigh_COOL.str("");
804 } else if (name[0] != '\0') {
805 if (log.level() <= MSG::DEBUG) {
806 log << MSG::DEBUG << name << " not found! Putting a dummy configuration" << endmsg;
807 }
808 m_highPt_program = std::make_unique<CMAprogram>();
809 m_highPt_program->open_threshold(0);
810 }
811
812 return true;
813}
#define endmsg
RPC_CondCabling::SectorLogicSetup::TrigRoadsMap TrigRoadsMap
Definition EtaCMA.cxx:22
std::string two_obj_error_message(const std::string &, CMAparameters *)
bool connect(SectorLogicSetup &)
EvenPhiCMA(const parseParams &parse)

◆ showDt()

void CMAparameters::showDt ( std::ostream & stream,
int layer ) const
privateinherited

Definition at line 293 of file CMAparameters.cxx.

293 {
294 // Set the chracters used for matrix display
295 unsigned int finish = 164;
296
297 if (!m_pivot) {
298 stream << std::endl << "Low Pt and Hi Pt not yet connected!" << std::endl;
299 for (int i = 0; i < 80; ++i) stream << (char)finish;
300 stream << std::endl;
301 return;
302 }
303
304 // Set memory for the display
305 int ln = (m_lowPt_rpc_read > 0) ? (m_lowPt_rpc_read - 1) * 6 + 39 : 39;
306
307 char(*displow)[90] = new char[ln][90];
308
309 // Show Low Pt connections
310 stream << std::endl << "Low Pt matrix connections:" << std::endl << std::endl;
311 showMt(displow, ln, Low, layer);
312
313 // Dumping memory on output stream
314 for (int i = 0; i < ln; ++i)
315 if (displow[i][0] != '\0') stream << displow[i] << std::endl;
316
317 delete[] displow;
318
319 // Show Hi Pt connections
320 stream << std::endl << std::endl << "Hi Pt matrix connections:" << std::endl << std::endl;
321
322 ln = (m_highPt_rpc_read > 0) ? (m_highPt_rpc_read - 1) * 6 + 39 : 39;
323
324 char(*disphi)[90] = new char[ln][90];
325
326 showMt(disphi, ln, High, layer);
327
328 // Dumping memory on output stream
329 for (int i = 0; i < ln; ++i)
330 if (disphi[i][0] != '\0') stream << disphi[i] << std::endl;
331
332 delete[] disphi;
333
334 stream << std::endl;
335 for (int i = 0; i < 80; ++i) stream << (char)finish;
336 stream << std::endl;
337}
@ High
@ Low
void showMt(char[][90], int, TrigType, int layer) const

◆ showMt()

void CMAparameters::showMt ( char display[][90],
int ln,
TrigType type,
int layer ) const
privateinherited

Definition at line 339 of file CMAparameters.cxx.

339 {
340 // Set the chracters used for matrix display
341 unsigned int up = 19;
342 unsigned int left = 22;
343 unsigned int right = 25;
344 unsigned int middle = 18;
345 unsigned int down = 24;
346
347 // overwritting character using pipe and minus
348 left = 124;
349 right = 124;
350 up = 45;
351 down = 45;
352
353 // Set input for the display
354 std::ostringstream** disp = new std::ostringstream*[ln];
355
356 for (int i = 0; i < ln; ++i) disp[i] = new std::ostringstream;
357
358 int pivot_loop = (m_pivot_rpc_read < 4) ? m_pivot_rpc_read : 3;
359 int conf_loop = 0;
360 int(*conf)[2][confirm_channels] = nullptr;
361
362 const CMAprogram* program = nullptr;
363
364 if (type == Low) {
365 conf_loop = m_lowPt_rpc_read;
366 conf = m_lowPt;
367 program = this->lowPt_program();
368 } else {
369 conf_loop = m_highPt_rpc_read;
370 conf = m_highPt;
371 program = this->highPt_program();
372 }
373
374 int shift = 6 * pivot_loop;
375
376 for (int i = 0; i < shift; ++i) *disp[0] << " ";
377 for (int i = 0; i < confirm_channels; ++i) *disp[0] << static_cast<char>(up);
378
379 for (int i = 1; i <= pivot_channels; ++i) {
380 // Display the cabling for the pivot plane
381 for (int j = 0; j < pivot_loop; ++j) {
382 if (j) *disp[i] << "|";
383 (*disp[i]).fill(48);
384 if (m_pivot[j][layer][pivot_channels - i] >= 0) {
385 *disp[i] << std::setw(5) << m_pivot[j][layer][pivot_channels - i];
386 } else
387 *disp[i] << "*****";
388 }
389
390 // Display the trigger window for all tresholds
391 *disp[i] << static_cast<char>(left);
392 for (int j = 0; j < confirm_channels; ++j) {
393 unsigned int no_coincidence = ':';
394 if (program) {
395 const bool* registers = program->registers();
396 int third = 2 * (pivot_channels * confirm_channels) + (pivot_channels - i) * confirm_channels + j;
397 int second = third - pivot_channels * confirm_channels;
399
400 if (registers[third])
401 *disp[i] << "3";
402 else if (registers[second])
403 *disp[i] << "2";
404 else if (registers[first])
405 *disp[i] << "1";
406 else
407 *disp[i] << static_cast<char>(no_coincidence);
408
409 } else
410 *disp[i] << " ";
411 }
412 *disp[i] << static_cast<char>(right);
413 }
414
415 // Display the cabling for the confirm plane
416 int start_confirm = pivot_channels + 1;
417 for (int j = 0; j < shift; ++j) *disp[start_confirm] << " ";
418 for (int i = start_confirm + 1; i < start_confirm + conf_loop * 6; ++i)
419 for (int j = 0; j < shift; ++j) *disp[i] << " ";
420
421 for (int i = 0; i < confirm_channels; ++i) *disp[start_confirm] << static_cast<char>(down);
422
423 for (int i = 0; i < conf_loop; ++i) {
424 int start = (i) ? start_confirm + i * 6 : start_confirm + 1;
425 if (i) {
426 for (int ch = 1; ch <= confirm_channels; ++ch) *disp[start] << static_cast<char>(middle);
427 ++start;
428 }
429
430 for (int j = 0; j < 5; ++j)
431 for (int ch = 0; ch < confirm_channels; ++ch) {
432 if (conf[i][layer][ch] >= 0) {
433 *disp[start + j] << (conf[i][layer][ch] / static_cast<int>(pow(10., j))) % 10;
434 } else
435 *disp[start + j] << "*";
436 }
437 }
438
439 for (int i = 0; i < ln; ++i) {
440 std::string tmp = (*disp[i]).str();
441 tmp.copy(display[i], tmp.length(), 0);
442 display[i][tmp.length()] = 0;
443 delete disp[i];
444 }
445
446 delete[] disp;
447}
const CMAprogram * lowPt_program() const
const CMAprogram * highPt_program() const
const bool * registers(void) const
Definition CMAprogram.h:123
bool first
Definition DeMoScan.py:534
virtual void shift(size_t pos, ptrdiff_t offs) override
Shift the elements of the container.
constexpr int pow(int x)
Definition conifer.h:27
display
Definition pyroot.py:42
void fill(H5::Group &out_file, size_t iterations)

◆ station()

int CablingObject::station ( ) const
inherited

Definition at line 13 of file CablingObject.cxx.

13{ return m_station; }

◆ tag()

ObjectType BaseObject::tag ( ) const
inlineinherited

Definition at line 22 of file BaseObject.h.

22{ return m_tag; }
ObjectType m_tag
Definition BaseObject.h:15

◆ test()

const CMAparameters * CMAparameters::test ( CMAinput input,
int cabling_code ) const
inherited

Definition at line 494 of file CMAparameters.cxx.

494 {
495 int* strips = nullptr;
496 int nstrips = 0;
497
498 if (input == Pivot && m_pivot) {
499 nstrips = pivot_channels * m_pivot_rpc_read * 2;
500 strips = reinterpret_cast<int*>(m_pivot);
501 } else if (input == LowPt && m_lowPt) {
502 nstrips = confirm_channels * m_lowPt_rpc_read * 2;
503 strips = reinterpret_cast<int*>(m_lowPt);
504 } else if (input == HighPt && m_highPt) {
505 nstrips = confirm_channels * m_highPt_rpc_read * 2;
506 strips = reinterpret_cast<int*>(m_highPt);
507 } else
508 return nullptr;
509
510 for (int i = 0; i < nstrips; ++i)
511 if (strips[i] == cabling_code) return this;
512
513 return nullptr;
514}

◆ two_obj_error_message()

std::string CMAparameters::two_obj_error_message ( const std::string & msg,
CMAparameters * cma )
nodiscardprotectedinherited

Definition at line 516 of file CMAparameters.cxx.

516 {
517 std::ostringstream disp;
518 disp << this->error_header()
519 << " " << msg << " between " << name() << " n. " << number() << " and " << cma->name() << " n. " << cma->number() << std::endl
520 << *this << *cma;
521 return disp.str();
522}
MsgStream & msg
Definition testRead.cxx:32

◆ whichCMAinput()

CMAinput CMAparameters::whichCMAinput ( int stat) const
inherited

Definition at line 556 of file CMAparameters.cxx.

556 {
557 if (stat == m_params.pivotStation)
558 return Pivot;
559 else if (stat == m_params.lowPtStation)
560 return LowPt;
561 else if (stat == m_params.highPtStation)
562 return HighPt;
563 else
564 return NoInput;
565}
@ NoInput

◆ whichCMAstation()

int CMAparameters::whichCMAstation ( CMAinput input) const
inherited

Definition at line 567 of file CMAparameters.cxx.

567 {
568 if (input == CMAinput::Pivot)
569 return m_params.pivotStation;
570 else if (input == CMAinput::LowPt)
571 return m_params.lowPtStation;
572 else if (input == CMAinput::HighPt)
573 return m_params.highPtStation;
574 else
575 return 0;
576}

Member Data Documentation

◆ confirm_channels

int CMAparameters::confirm_channels = 64
staticconstexprinherited

Definition at line 71 of file CMAparameters.h.

◆ m_active_highPt_chs

int CMAparameters::m_active_highPt_chs {0}
protectedinherited

Definition at line 88 of file CMAparameters.h.

88{0}; // Number of active matrix channels for HiPT side

◆ m_active_lowPt_chs

int CMAparameters::m_active_lowPt_chs {0}
protectedinherited

Definition at line 87 of file CMAparameters.h.

87{0}; // Number of active matrix channels for LowPt side

◆ m_active_pivot_chs

int CMAparameters::m_active_pivot_chs {0}
protectedinherited

Definition at line 86 of file CMAparameters.h.

86{0}; // Number of active matrix channels for Pivot side

◆ m_conf_type

CMAconfiguration CMAparameters::m_conf_type {CMAparameters::Atlas}
protectedinherited

Definition at line 108 of file CMAparameters.h.

◆ m_first_highPt_code

unsigned int CMAparameters::m_first_highPt_code {0}
protectedinherited

Definition at line 98 of file CMAparameters.h.

98{0}; // first highPt cabled strip (code)

◆ m_first_lowPt_code

unsigned int CMAparameters::m_first_lowPt_code {0}
protectedinherited

Definition at line 96 of file CMAparameters.h.

96{0}; // first lowPt cabled strip (code)

◆ m_first_pivot_code

unsigned int CMAparameters::m_first_pivot_code {0}
protectedinherited

Definition at line 94 of file CMAparameters.h.

94{0}; // first pivot cabled strip (code)

◆ m_highPt

int(* CMAparameters::m_highPt)[2][confirm_channels] {}
protectedinherited

Definition at line 103 of file CMAparameters.h.

103{}; // Channel coding for High Pt input

◆ m_highPt_program

std::unique_ptr<CMAprogram> CMAparameters::m_highPt_program
protectedinherited

Definition at line 106 of file CMAparameters.h.

◆ m_highPt_rpc_read

int CMAparameters::m_highPt_rpc_read {0}
protectedinherited

Definition at line 92 of file CMAparameters.h.

92{0}; // Number of strips put in wired OR on HiPt plane

◆ m_highPt_start_ch

int CMAparameters::m_highPt_start_ch {-1}
protectedinherited

Definition at line 82 of file CMAparameters.h.

82{-1}; // RPC chamber to which the RPC strip belongs

◆ m_highPt_start_st

int CMAparameters::m_highPt_start_st {-1}
protectedinherited

Definition at line 81 of file CMAparameters.h.

81{-1}; // RPC strips num giving input to the 1st matrix ch

◆ m_highPt_stop_ch

int CMAparameters::m_highPt_stop_ch {-1}
protectedinherited

Definition at line 84 of file CMAparameters.h.

84{-1}; // RPC chamber to which the RPC strip belongs

◆ m_highPt_stop_st

int CMAparameters::m_highPt_stop_st {-1}
protectedinherited

Definition at line 83 of file CMAparameters.h.

83{-1}; // RPC strips num giving input to the Last matrix ch

◆ m_highPt_WORs

WORlink RPC_CondCabling::EvenPhiCMA::m_highPt_WORs
private

Definition at line 26 of file EvenPhiCMA.h.

◆ m_id

std::unique_ptr<CMAidentity> CMAparameters::m_id
protectedinherited

Definition at line 74 of file CMAparameters.h.

◆ m_inversion

bool RPC_CondCabling::EvenPhiCMA::m_inversion {false}
private

Definition at line 28 of file EvenPhiCMA.h.

28{false};

◆ m_last_highPt_code

unsigned int CMAparameters::m_last_highPt_code {0}
protectedinherited

Definition at line 99 of file CMAparameters.h.

99{0}; // last highPt cabled strip (code)

◆ m_last_lowPt_code

unsigned int CMAparameters::m_last_lowPt_code {0}
protectedinherited

Definition at line 97 of file CMAparameters.h.

97{0}; // last lowPt cabled strip (code)

◆ m_last_pivot_code

unsigned int CMAparameters::m_last_pivot_code {0}
protectedinherited

Definition at line 95 of file CMAparameters.h.

95{0}; // last pivot cabled strip (code)

◆ m_lowPt

int(* CMAparameters::m_lowPt)[2][confirm_channels] {}
protectedinherited

Definition at line 102 of file CMAparameters.h.

102{}; // Channel coding for Low Pt input

◆ m_lowPt_program

std::unique_ptr<CMAprogram> CMAparameters::m_lowPt_program
protectedinherited

Definition at line 105 of file CMAparameters.h.

◆ m_lowPt_rpc_read

int CMAparameters::m_lowPt_rpc_read {0}
protectedinherited

Definition at line 91 of file CMAparameters.h.

91{0}; // Number of strips put in wired OR on LowPt plane

◆ m_lowPt_start_ch

int CMAparameters::m_lowPt_start_ch {-1}
protectedinherited

Definition at line 77 of file CMAparameters.h.

77{-1}; // RPC chamber to which the RPC strip belongs

◆ m_lowPt_start_st

int CMAparameters::m_lowPt_start_st {-1}
protectedinherited

Definition at line 76 of file CMAparameters.h.

76{-1}; // RPC strips num giving input to the 1st matrix ch

◆ m_lowPt_stop_ch

int CMAparameters::m_lowPt_stop_ch {-1}
protectedinherited

Definition at line 79 of file CMAparameters.h.

79{-1}; // RPC chamber to which the RPC strip belongs

◆ m_lowPt_stop_st

int CMAparameters::m_lowPt_stop_st {-1}
protectedinherited

Definition at line 78 of file CMAparameters.h.

78{-1}; // RPC strips num giving input to the Last matrix ch

◆ m_lowPt_WORs

WORlink RPC_CondCabling::EvenPhiCMA::m_lowPt_WORs
private

Definition at line 25 of file EvenPhiCMA.h.

◆ m_name

std::string BaseObject::m_name
privateinherited

Definition at line 16 of file BaseObject.h.

◆ m_number

int CablingObject::m_number {0}
privateinherited

Definition at line 12 of file CablingObject.h.

12{0};

◆ m_params

defineParams CMAparameters::m_params {}
privateinherited

Definition at line 60 of file CMAparameters.h.

60{};

◆ m_pivot

int(* CMAparameters::m_pivot)[2][pivot_channels] {}
protectedinherited

Definition at line 101 of file CMAparameters.h.

101{}; // Channel coding for Pivot input

◆ m_pivot_rpc_read

int CMAparameters::m_pivot_rpc_read {0}
protectedinherited

Definition at line 90 of file CMAparameters.h.

90{0}; // Number of strips put in wired OR on Pivot plane

◆ m_pivot_WORs

WORlink RPC_CondCabling::EvenPhiCMA::m_pivot_WORs
private

Definition at line 24 of file EvenPhiCMA.h.

◆ m_sector_type

int CablingObject::m_sector_type {0}
privateinherited

Definition at line 14 of file CablingObject.h.

14{0};

◆ m_station

int CablingObject::m_station {0}
privateinherited

Definition at line 13 of file CablingObject.h.

13{0};

◆ m_tag

ObjectType BaseObject::m_tag
privateinherited

Definition at line 15 of file BaseObject.h.

◆ pivot_channels

int CMAparameters::pivot_channels = 32
staticconstexprinherited

Definition at line 70 of file CMAparameters.h.


The documentation for this class was generated from the following files: