ATLAS Offline Software
Loading...
Searching...
No Matches
TTOnlineID.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
9#include "IdDict/IdDictMgr.h"
10#include "IdDict/IdDictRegion.h"
14#include <algorithm>
15#include <cassert>
16#include <cmath>
17#include <cstdio>
18#include <iostream>
19#include <set>
20#include <string>
21
22
24 AtlasDetectorID("TTOnlineID", "PPM_Modules"),
25 m_calo_index(999),
28 m_crate_index(999),
29 m_module_index(999),
31 m_channel_index(999),
32 m_dict(nullptr),
38{
39
40}
41
43
44
46{
48 return {id, 0, m_crate_index};
49}
50
52{
54 return {id, 0, m_module_index};
55}
56
62
68
69
70
71//==========================================================================
73//==========================================================================
74{
75 ATH_MSG_INFO("initialize_from_dictionary");
76
77 // Check whether this helper should be reinitialized
78 // -------------------------------------------------
79 if (!reinitialize(dict_mgr)) {
80 ATH_MSG_DEBUG("Request to reinitialize not satisfied - tags have not changed");
81 return (0);
82 }
83 else {
84 ATH_MSG_DEBUG("(Re)initialize");
85 }
86
87 // init base object
88 // ----------------
90 return (1);
91 }
92
93 m_dict = dict_mgr.find_dictionary("Calorimeter");
94
95 ATH_MSG_DEBUG(" => defined m_dict from find_dictionary(Calorimeter) = " << m_dict);
96 if(!m_dict)
97 {
98 // initialize_from_dictionary - cannot access Calorimeter dictionary
99 return 1;
100 }
101
102 // Register version of the dictionary used
103 // ---------------------------------------
104 if (register_dict_tag(dict_mgr, "Calorimeter")) return(1);
105
106 // initialize dictionary version
107 // -----------------------------
108 AtlasDetectorID::setDictVersion(dict_mgr, "Calorimeter");
109
110
111 // Initialize the field indices
112 // --------------------------------------
113 if(initLevelsFromDict()) return (1);
114
115 /* Find value for the field Calorimeter */
116 // ---------------------------------------
117 const IdDictDictionary* atlasDict = dict_mgr.find_dictionary ("ATLAS");
118 int caloValue = -1;
119 if (atlasDict->get_label_value("subdet", "Calorimeter", caloValue)) {
120 ATH_MSG_ERROR(" Could not get value for label 'Calorimeter' of field 'subdet' in dictionary " << atlasDict->name());
121 return (1);
122 }
123 ATH_MSG_DEBUG("[init_from_dictionary] > caloValue = " << caloValue);
124
125 /* Find values for the fake field DetZside */
126 // --------------------------------------
127
128 // retrieve the calo tag from the DB
129 std::string tag = m_dict->dict_tag();
130 bool oldTag = ( tag.empty() || tag == "CaloIdentifier-DC3-05" || tag == "CaloIdentifier-LVL1-01");
131 ATH_MSG_DEBUG("Calorimeter dict. DB tag= " << tag);
132
133 //int detzsideValue = -1;
134 //if (m_dict->get_label_value("DetZside", "no_side", detzsideValue)) {
135 if (m_dict->get_label_value("DetZside", "no_side", m_iDetZSideFieldValue)) {
136 if (!oldTag) {
137 ATH_MSG_WARNING("Could not get value for label 'DetZside' in dictionary " << m_dict->name());
138 }
139 return (0);
140 }
141 ATH_MSG_DEBUG("[init_from_dictionary] > detzsideValue = " << detzside_field_value());
142
143
144 // Set up id for tower and layer's range prefix
145 // ---------------------------------------------
146 // Note: negative value is good enough to get multirange since the
147 // regions are symmetric in +/-eta
148
149 ExpandedIdentifier reg_id;
150 reg_id.add(caloValue);
151 reg_id.add(detzside_field_value());
152
153 Range prefix;
154 m_full_crate_range = m_dict->build_multirange(reg_id, prefix, "crate");
155 m_full_module_range = m_dict->build_multirange(reg_id, prefix, "module");
156 m_full_submodule_range = m_dict->build_multirange(reg_id, prefix, "submodule");
157 m_full_channel_range = m_dict->build_multirange(reg_id, prefix, "channel");
158
159 ATH_MSG_DEBUG("[initialize_from_dictionary] > Crate range -> " << (std::string)m_full_crate_range);
160 ATH_MSG_DEBUG("[initialize_from_dictionary] > Module range -> " << (std::string)m_full_module_range);
161 ATH_MSG_DEBUG("[initialize_from_dictionary] > SubModule range -> " << (std::string)m_full_submodule_range);
162 ATH_MSG_DEBUG("[initialize_from_dictionary] > Channel range -> " << (std::string)m_full_channel_range);
163
164
165 // Setup the hash tables
166 // --------------------------------------
167 if(init_hashes()) return (1);
168 return 0;
169}
170
171
172//=====================================================================================
174 const IdContext* context) const
175//=====================================================================================
176{
177 // We assume that the context is >= region
178 exp_id.clear();
179 exp_id << calo_field_value();
180 exp_id << detzside_field_value();
181 if(context && context->end_index() >= m_crate_index) {
182 exp_id << crate(id);
183 if(context->end_index() >= m_module_index) {
184 exp_id << module(id);
185 if(context->end_index() >= m_submodule_index) {
186 exp_id << submodule(id);
187 if(context->end_index() >= m_channel_index)
188 exp_id << channel(id);
189 }
190 }
191 }
192 return (0);
193}
194
195
196//=====================================================================================
198//=====================================================================================
199{
200 // Fill expanded id
203 if (!m_full_channel_range.match(id)) {
204 std::string errorMessage = "[TTOnlineID]::channnelId() result is not OK: ID, range = "
205 + std::string(id) + " , " + (std::string)m_full_channel_range;
206 throw CaloID_Exception(errorMessage , 2);
207 }
208}
209
210/* ================================================================*/
212/* ================================================================*/
213{
214 // Check that id is within allowed range
215 // Fill expanded id
216 ExpandedIdentifier expId;
217 IdContext context = submoduleContext();
218 if (get_expanded_id(submoduleId, expId, &context)) {
219 std::string errorMessage = "TTOnlineID::channel_Id_checks(submoduleId) result is not OK: ID = "
221 throw CaloID_Exception(errorMessage , 99);
222 }
223
224 expId << channel;
225 if (!m_full_channel_range.match(expId)) {
226 std::string errorMessage = "TTOnlineID::channel_Id_checks(submoduleId) result is not OK: ID, range = "
227 + std::string(expId) + " , " + (std::string)m_full_channel_range;
228 throw CaloID_Exception(errorMessage , 99);
229 }
230}
231
232/* ================================================================*/
234/* ================================================================*/
235{
236 // Check that id is within allowed range
237 // Fill expanded id
238 ExpandedIdentifier expId;
239 IdContext context = moduleContext();
240 if (get_expanded_id(moduleId, expId, &context)) {
241 std::string errorMessage = "TTOnlineID::channel_Id_checks(moduleId) result is not OK: ID = "
243 throw CaloID_Exception(errorMessage , 99);
244 }
245
246 expId << submodule << channel;
247 if (!m_full_channel_range.match(expId)) {
248 std::string errorMessage = "TTOnlineID::channel_Id_checks(submoduleId) result is not OK: ID, range = "
249 + std::string(expId) + " , " + (std::string)m_full_channel_range;
250 throw CaloID_Exception(errorMessage , 99);
251 }
252}
253
254/* ================================================================*/
256/* ================================================================*/
257{
258 // Check that id is within allowed range
259 // Fill expanded id
260 ExpandedIdentifier expId;
261 IdContext context = crateContext();
262 if (get_expanded_id(crateId, expId, &context)) {
263 std::string errorMessage = "TTOnlineID::channel_Id_checks(crateId) result is not OK: ID = "
265 throw CaloID_Exception(errorMessage , 99);
266 }
267
268 expId << module << submodule << channel;
269 if (!m_full_channel_range.match(expId)) {
270 std::string errorMessage = "TTOnlineID::channel_Id_checks(crateId) result is not OK: ID, range = "
271 + std::string(expId) + " , " + (std::string)m_full_channel_range;
272 throw CaloID_Exception(errorMessage , 99);
273 }
274}
275
276/* ================================================================*/
278/* ================================================================*/
279{
280 // Check that id is within allowed range
281 // Fill expanded id
283 expId << detzside_field_value() << crate << module << submodule;
284
285 if (!m_full_submodule_range.match(expId)) { std::string errorMessage = "TTOnlineID::submodule_Id_checks() result is not OK: ID, range = "
286 + std::string(expId) + " , " + (std::string)m_full_submodule_range;
287 throw CaloID_Exception(errorMessage , 99);
288 }
289}
290
291/* ================================================================*/
293/* ================================================================*/
294{
295 // Check that id is within allowed range
296 // Fill expanded id
298 expId << detzside_field_value() << crate << module;
299
300 if (!m_full_module_range.match(expId)) { std::string errorMessage = "TTOnlineID::module_Id_checks() result is not OK: ID, range = "
301 + std::string(expId) + " , " + (std::string)m_full_module_range;
302 throw CaloID_Exception(errorMessage , 99);
303 }
304}
305
306/* ================================================================*/
308/* ================================================================*/
309{
310 // Check that id is within allowed range
311 // Fill expanded id
313 expId << detzside_field_value() << crate;
314
315 if (!m_full_crate_range.match(expId)) { std::string errorMessage = "TTOnlineID::crate_Id_checks() result is not OK: ID, range = "
316 + std::string(expId) + " , " + (std::string)m_full_crate_range;
317 throw CaloID_Exception(errorMessage , 99);
318 }
319}
320
321
322//=========================================================
324//=========================================================
325{
326 ATH_MSG_DEBUG("[initLevelsFromDict] (0) Entering routine... ");
327
328 if(!m_dict) {
329 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - dictionary NOT initialized ");
330 return (1);
331 }
332
333 ATH_MSG_DEBUG("[initLevelsFromDict] (1) m_dict OK ... ");
334
335 // Find out which identifier field corresponds to each level.
336 // ----------------------------------------------------------
337 m_calo_index = 999 ;
338 m_detzside_index = 999 ;
339 m_crate_index = 999 ;
340 m_module_index = 999 ;
341 m_submodule_index = 999 ;
342 m_channel_index = 999 ;
343
344 ATH_MSG_DEBUG("[initLevelsFromDict] (2) data member initialization OK ... ");
345
346 // retrieve the calo tag from the DB
347 std::string tag = m_dict->dict_tag();
348 bool oldTag = ( tag.empty() || tag == "CaloIdentifier-DC3-05" || tag == "CaloIdentifier-LVL1-01");
349 ATH_MSG_DEBUG("Calorimeter dict. DB tag= " << tag);
350
351 // Save index to a Online LVL1 region for unpacking - search with region name
352 const IdDictRegion* reg = m_dict->find_region("PPM_Crate-00");
353 if (reg) {
354 m_l1online_regions_index = reg->index();}
355 else {
356 if(!oldTag) ATH_MSG_WARNING("TTOnlineID::initLevelsFromDict - unable to find 'PPM_Crate-00' region");
357 return (0);
358 }
359 ATH_MSG_DEBUG("[initLevelsFromDict] (3) region 'PPM_Crate-00' found OK ... " << m_l1online_regions_index);
360
361 // Look for Fields...
362 // ------------------
363 const IdDictField* field = m_dict->find_field("subdet") ;
364 if (field) {
365 m_calo_index = field->index();}
366 else {
367 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - unable to find 'Calo' field ");
368 return (1);
369 }
370 ATH_MSG_DEBUG("[initLevelsFromDict] (4) field 'Calo' found OK ");
371
372
373 field = m_dict->find_field("DetZside") ;
374 if (field) {
375 m_detzside_index = field->index();}
376 else {
377 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - unable to find 'DetZside' field ");
378 return (1);
379 }
380 ATH_MSG_DEBUG("[initLevelsFromDict] (5) field 'DetZside' found OK ");
381
382
383 field = m_dict->find_field("crate") ;
384 if (field) {
385 m_crate_index = field->index();}
386 else {
387 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - unable to find 'crate' field ");
388 return (1);
389 }
390 ATH_MSG_DEBUG("[initLevelsFromDict] (6) field 'crate' found OK ");
391
392 field = m_dict->find_field("module") ;
393 if (field) {
394 m_module_index = field->index();
395 }
396 else {
397 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - unable to find 'module' field ");
398 return (1);
399 }
400 ATH_MSG_DEBUG("[initLevelsFromDict] (7) field 'module' found OK ");
401
402 field = m_dict->find_field("submodule") ;
403 if (field) {
404 m_submodule_index = field->index();
405 }
406 else {
407 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - unable to find 'submodule' field ");
408 return (1);
409 }
410 ATH_MSG_DEBUG("[initLevelsFromDict] (8) field 'submodule' found OK ");
411
412 field = m_dict->find_field("channel") ;
413 if (field) {
414 m_channel_index = field->index();
415 }
416 else {
417 ATH_MSG_INFO("TTOnlineID::initLevelsFromDict - unable to find 'channel' field ");
418 return (1);
419 }
420 ATH_MSG_DEBUG("[initLevelsFromDict] (9) field 'channel' found OK ");
421
422
423 // Set the field implementation
424 // ------------------------------
425 const IdDictRegion& region = m_dict->region(m_l1online_regions_index);
426 ATH_MSG_DEBUG("[initLevelsFromDict] (10) found levels: ");
427 ATH_MSG_DEBUG("[initLevelsFromDict] > subdet " << m_calo_index);
428 ATH_MSG_DEBUG("[initLevelsFromDict] > detzside " << m_detzside_index);
429 ATH_MSG_DEBUG("[initLevelsFromDict] > crate " << m_crate_index);
430 ATH_MSG_DEBUG("[initLevelsFromDict] > module " << m_module_index);
431 ATH_MSG_DEBUG("[initLevelsFromDict] > submodule " << m_submodule_index);
432 ATH_MSG_DEBUG("[initLevelsFromDict] > channel " << m_channel_index);
433
434 ATH_MSG_DEBUG("[initLevelsFromDict] > ...fields implementation... ");
435 ATH_MSG_DEBUG("[initLevelsFromDict] > ...implementation: m_calo_index ");
437
438 ATH_MSG_DEBUG("[initLevelsFromDict] > ...implementation: m_det_side_index ");
440
441 ATH_MSG_DEBUG("[initLevelsFromDict] > ...implementation: m_crate_index ");
443
444 ATH_MSG_DEBUG("[initLevelsFromDict] > ...implementation: m_module_index ");
446 ATH_MSG_DEBUG("[initLevelsFromDict] > ...implementation: m_submodule_index ");
448 ATH_MSG_DEBUG("[initLevelsFromDict] > ...implementation: m_channel_index ");
450
451 ATH_MSG_DEBUG("[initLevelsFromDict] (11) decode index and bit fields for each level: ");
452 ATH_MSG_DEBUG("[initLevelsFromDict] > calo " << m_calo_impl);
453 ATH_MSG_DEBUG("[initLevelsFromDict] > detzside " << m_calo_detzside_impl);
454 ATH_MSG_DEBUG("[initLevelsFromDict] > crate " << m_crate_impl);
455 ATH_MSG_DEBUG("[initLevelsFromDict] > module " << m_module_impl);
456 ATH_MSG_DEBUG("[initLevelsFromDict] > submodule " << m_submodule_impl);
457 ATH_MSG_DEBUG("[initLevelsFromDict] > channel " << m_channel_impl);
458
459 return(0) ;
460}
461
462
463//=====================================================
465//=====================================================
466{
467 // Crate hash
468 // -----------
469 {
470 m_crateHashMax = m_full_crate_range.cardinality();
472 unsigned int nids = 0;
473 std::set<HWIdentifier> ids;
474 for (unsigned int i = 0; i < m_full_crate_range.size(); ++i) {
475 const Range& range = m_full_crate_range[i];
476 ConstRangeIterator rit(range);
477 auto first = rit.begin();
478 auto last = rit.end();
479 for (; first != last; ++first) {
480 const ExpandedIdentifier& exp_id = (*first);
481 HWIdentifier cra_id = crateId( exp_id[m_crate_index] ) ;
482
483 if(!(ids.insert(cra_id)).second){
484 ATH_MSG_ERROR("[init_hashes] > duplicated id for channel nb = " << nids);
485 ATH_MSG_ERROR(" expanded Id= " << show_to_string(cra_id));
486 }
487 nids++;
488 }
489 }
490 if(ids.size() != m_crateHashMax) {
491 ATH_MSG_ERROR("[init_hashes] >");
492 ATH_MSG_ERROR(" set size NOT EQUAL to hash max. size " << ids.size());
493 ATH_MSG_ERROR(" hash max " << m_crateHashMax);
494 return (1);
495 }
496
497 nids=0;
498 std::set<HWIdentifier>::const_iterator first = ids.begin();
499 std::set<HWIdentifier>::const_iterator last = ids.end();
500 for (;first != last && nids < m_crate_vec.size(); ++first) {
501 m_crate_vec[nids] = (*first) ;
502 nids++;
503 }
504 ATH_MSG_DEBUG("[init_hashes()] > Crate_size= " << m_crate_vec.size());
505 }
506
507 // Module hash
508 // -----------
509 {
510 m_moduleHashMax = m_full_module_range.cardinality();
512 unsigned int nids = 0;
513 std::set<HWIdentifier> ids;
514 for (unsigned int i = 0; i < m_full_module_range.size(); ++i) {
515 const Range& range = m_full_module_range[i];
516 ConstRangeIterator rit(range);
517 auto first = rit.begin();
518 auto last = rit.end();
519 for (; first != last; ++first) {
520 const ExpandedIdentifier& exp_id = (*first);
521 HWIdentifier mod_id = moduleId(exp_id[m_crate_index], exp_id[m_module_index] ) ;
522
523 if(!(ids.insert(mod_id)).second){
524 ATH_MSG_ERROR("[init_hashes] > duplicated id for channel nb = " << nids);
525 ATH_MSG_ERROR(" expanded Id= " << show_to_string(mod_id));
526 }
527 nids++;
528 }
529 }
530 if(ids.size() != m_moduleHashMax) {
531 ATH_MSG_ERROR("[init_hashes] >");
532 ATH_MSG_ERROR(" set size NOT EQUAL to hash max. size " << ids.size());
533 ATH_MSG_ERROR(" hash max " << m_moduleHashMax);
534 return (1);
535 }
536
537 nids=0;
538 std::set<HWIdentifier>::const_iterator first = ids.begin();
539 std::set<HWIdentifier>::const_iterator last = ids.end();
540 for (;first != last && nids < m_module_vec.size(); ++first) {
541 m_module_vec[nids] = (*first) ;
542 nids++;
543 }
544 ATH_MSG_DEBUG("[init_hashes()] > Module_size= " << m_module_vec.size());
545 }
546
547 // SubModule hash
548 // -----------
549 {
552 unsigned int nids = 0;
553 std::set<HWIdentifier> ids;
554 for (unsigned int i = 0; i < m_full_submodule_range.size(); ++i) {
555 const Range& range = m_full_submodule_range[i];
556 ConstRangeIterator rit(range);
557 auto first = rit.begin();
558 auto last = rit.end();
559 for (; first != last; ++first) {
560 const ExpandedIdentifier& exp_id = (*first);
561 HWIdentifier submod_id = submoduleId(exp_id[m_crate_index], exp_id[m_module_index], exp_id[m_submodule_index] ) ;
562
563 if(!(ids.insert(submod_id)).second){
564 ATH_MSG_ERROR("[init_hashes] > duplicated id for channel nb = " << nids);
565 ATH_MSG_ERROR(" expanded Id= " << show_to_string(submod_id));
566 }
567 nids++;
568 }
569 }
570 if(ids.size() != m_submoduleHashMax) {
571 ATH_MSG_ERROR("[init_hashes] >");
572 ATH_MSG_ERROR(" set size NOT EQUAL to hash max. size " << ids.size());
573 ATH_MSG_ERROR(" hash max " << m_submoduleHashMax);
574 return (1);
575 }
576
577 nids=0;
578 std::set<HWIdentifier>::const_iterator first = ids.begin();
579 std::set<HWIdentifier>::const_iterator last = ids.end();
580 for (;first != last && nids < m_submodule_vec.size(); ++first) {
581 m_submodule_vec[nids] = (*first) ;
582 nids++;
583 }
584 ATH_MSG_DEBUG("[init_hashes()] > Submodule_size= " << m_submodule_vec.size());
585 }
586
587 // Channel hash
588 // -----------
589 {
592 unsigned int nids = 0;
593 std::set<HWIdentifier> ids;
594 for (unsigned int i = 0; i < m_full_channel_range.size(); ++i) {
595 const Range& range = m_full_channel_range[i];
596 ConstRangeIterator rit(range);
597 auto first = rit.begin();
598 auto last = rit.end();
599 for (; first != last; ++first) {
600 const ExpandedIdentifier& exp_id = (*first);
601 HWIdentifier chan_id = channelId(exp_id[m_crate_index], exp_id[m_module_index], exp_id[m_submodule_index], exp_id[m_channel_index]) ;
602
603 if(!(ids.insert(chan_id)).second){
604 ATH_MSG_ERROR("[init_hashes] > duplicated id for channel nb = " << nids);
605 ATH_MSG_ERROR(" expanded Id= " << show_to_string(chan_id));
606 }
607 nids++;
608 }
609 }
610 if(ids.size() != m_channelHashMax) {
611 ATH_MSG_ERROR("[init_hashes] >");
612 ATH_MSG_ERROR(" set size NOT EQUAL to hash max. size " << ids.size());
613 ATH_MSG_ERROR(" hash max " << m_channelHashMax);
614 return (1);
615 }
616
617 nids=0;
618 std::set<HWIdentifier>::const_iterator first = ids.begin();
619 std::set<HWIdentifier>::const_iterator last = ids.end();
620 for (;first != last && nids < m_channel_vec.size(); ++first) {
621 m_channel_vec[nids] = (*first) ;
622 nids++;
623 }
624 ATH_MSG_DEBUG("[init_hashes()] > Channel_size= " << m_channel_vec.size());
625 }
626 return (0);
627}
628
629
630
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_INFO(x,...)
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
bool reinitialize(const IdDictMgr &dict_mgr)
Test whether an idhelper should be reinitialized based on the change of tags.
virtual void setDictVersion(const IdDictMgr &dict_mgr, const std::string &name) override
int register_dict_tag(const IdDictMgr &dict_mgr, const std::string &dict_name)
Register the file and tag names for a particular IdDict dictionary.
int calo_field_value() const
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
ExpandedIdentifier calo_exp(void) const
AtlasDetectorID(const std::string &name, const std::string &group)
Exception class for Calo Identifiers.
ConstRangeIterator end() const
ConstRangeIterator begin() const
void add(element_type value)
Append a value into a new field.
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition IdContext.h:26
int get_label_value(const std::string &field, const std::string &label, int &value) const
const std::string & name() const
Dictionary name.
const IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
const IdDictFieldImplementation & implementation(size_t i) const
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
HWIdentifier moduleId(int crate, int module) const
(1) create towerId from fields
Definition TTOnlineID.h:279
size_type m_crateHashMax
Definition TTOnlineID.h:162
size_type m_submodule_index
Definition TTOnlineID.h:153
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr)
Initialization from the identifier dictionary.
int initLevelsFromDict()
init() hashes
size_type m_l1online_regions_index
Definition TTOnlineID.h:150
std::vector< HWIdentifier > m_channel_vec
Definition TTOnlineID.h:170
IdDictFieldImplementation m_channel_impl
Definition TTOnlineID.h:196
IdDictFieldImplementation m_submodule_impl
Definition TTOnlineID.h:195
MultiRange m_full_submodule_range
Definition TTOnlineID.h:159
size_type m_submoduleHashMax
Definition TTOnlineID.h:164
HWIdentifier channelId(int crate, int module, int submodule, int channel) const
(1) create towerId from fields
Definition TTOnlineID.h:390
int get_expanded_id(const HWIdentifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
create expanded HWIdentifier from HWIdentifier (return == 0 for OK)
HWIdentifier crateId(int crate) const
(1) create towerId from fields
Definition TTOnlineID.h:226
IdDictFieldImplementation m_calo_detzside_impl
Definition TTOnlineID.h:192
int module(const HWIdentifier id) const
Definition TTOnlineID.h:457
int detzside_field_value() const
return the value of the detzside field (initialized in initialize_from_dictionary())
Definition TTOnlineID.h:475
void channel_Id_checks(int crate, int module, int submodule, int channel) const
void module_Id_checks(int crate, int module) const
IdContext crateContext() const
context for feedthroughs, feb & channels
std::vector< HWIdentifier > m_module_vec
Definition TTOnlineID.h:168
IdDictFieldImplementation m_crate_impl
Definition TTOnlineID.h:193
size_type m_channel_index
Definition TTOnlineID.h:154
const IdDictDictionary * m_dict
Definition TTOnlineID.h:156
void crate_Id_checks(int crate) const
IdContext moduleContext() const
MultiRange m_full_crate_range
Definition TTOnlineID.h:157
int m_iDetZSideFieldValue
Definition TTOnlineID.h:172
IdDictFieldImplementation m_calo_impl
Field Implementation.
Definition TTOnlineID.h:191
MultiRange m_full_module_range
Definition TTOnlineID.h:158
size_type m_module_index
Definition TTOnlineID.h:152
size_type m_moduleHashMax
Definition TTOnlineID.h:163
int init_hashes()
std::vector< HWIdentifier > m_crate_vec
Definition TTOnlineID.h:167
size_type m_calo_index
Member Data index.
Definition TTOnlineID.h:148
void submodule_Id_checks(int crate, int module, int submodule) const
HWIdentifier submoduleId(int crate, int module, int submodule) const
(1) create towerId from fields
Definition TTOnlineID.h:333
int submodule(const HWIdentifier id) const
Definition TTOnlineID.h:463
IdContext submoduleContext() const
size_type m_crate_index
Definition TTOnlineID.h:151
MultiRange m_full_channel_range
Definition TTOnlineID.h:160
size_type m_channelHashMax
Definition TTOnlineID.h:165
size_type m_detzside_index
Definition TTOnlineID.h:149
int crate(const HWIdentifier id) const
Definition TTOnlineID.h:451
std::vector< HWIdentifier > m_submodule_vec
Definition TTOnlineID.h:169
IdContext channelContext() const
int channel(const HWIdentifier id) const
Definition TTOnlineID.h:469
IdDictFieldImplementation m_module_impl
Definition TTOnlineID.h:194