 |
ATLAS Offline Software
|
Go to the documentation of this file.
11 #include "GaudiKernel/MsgStream.h"
52 const std::string&
group,
55 m_this_is_slar(is_slar),
56 m_laronlineRegion_index(999),
58 m_laronline_index(999),
61 m_feedthrough_index(999),
63 m_channel_in_slot_index(999),
66 m_feedthroughHashMax(0),
69 m_calibModuleHashMax(0),
70 m_calibChannelHashMax(0)
227 std::ostringstream
s1;
230 int Nslot =
slot(
id);
232 std::string det_barrel_endcap =
"NODETE";
233 std::string det_side =
"/X-SIDE";
235 if(
barrel_ec(
id) == 0 ) det_barrel_endcap =
"BARREL";
236 if(
barrel_ec(
id) == 1 ) det_barrel_endcap =
"ENDCAP";
237 if(
pos_neg(
id) == 1 ) det_side =
"/A-SIDE";
238 if(
pos_neg(
id) == 0 ) det_side =
"/C-SIDE";
240 s1 << det_barrel_endcap
244 <<
"/CHAN-" << Nchan;
299 if(!get_expanded_id(
channelId, expId, &context)) {
301 for (
unsigned int i = 0;
i < m_full_laronline_range.size(); ++
i) {
303 if (
range.match(expId)) {
305 if (!channel_in_slot_field.
empty()) {
306 int channel_in_slotmax = channel_in_slot_field.
get_maximum();
307 if (
result < channel_in_slotmax)
result = channel_in_slotmax + 1;
326 std::string strg =
"initialize_from_dictionary";
331 std::cout << strg << std::endl;
349 std::string strg =
" initialize_from_dictionary - cannot access LArCalorimeter dictionary ";
354 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
373 if (atlasDict->
get_label_value(
"subdet",
"LArCalorimeter", larField)) {
374 std::stringstream strm;
375 strm << atlasDict->
name();
376 std::string strg=
" Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary "+strm.str();
381 std::cout <<
"LArOnlineID_Base:" << strg << std::endl;
387 int larOnlineField = -4;
389 std::stringstream strm;
391 std::string strg =
"Could not get value for label 'LArOnline' of field 'part' in dictionary "+strm.str();
396 std::cout << strg << std::endl;
402 int larOnlineCalibField = -5;
404 std::stringstream strm;
406 std::string strg =
"Could not get value for label 'LArOnlineCalib' of field 'part' in dictionary "+strm.str();
411 std::cout << strg << std::endl;
423 region_id2.
add(larField);
424 region_id2.
add(larOnlineCalibField);
432 std::string strg0=
" initialize_from_dictionary :";
434 std::string strg2=
" feedthrough slot range -> " + (std::string)
m_full_feb_range;
443 std::cout << strg0 << std::endl;
444 std::cout << strg1 << std::endl;
445 std::cout << strg2 << std::endl;
446 std::cout << strg3 << std::endl;
455 std::string strg0=
"=> initialize_from_dictionary : ";
464 std::cout << strg0 << std::endl;
465 std::cout << strg2 << std::endl;
466 std::cout << strg3 << std::endl;
476 std::cout <<
"LArOnlineID_Base: " << strg << std::endl;
503 int size = (1 << bits);
530 std::cout << strg << std::endl;
531 std::cout << strg1 << std::endl;
532 std::cout << strg2 << std::endl;
541 strg =
" ***** Error channel ranges, id, hash, i = "+
show_to_string(
id);
550 std::cout << strg << std::endl;
551 std::cout << strg1 << std::endl;
552 std::cout << strg2 << std::endl;
605 std::cout <<
" ***** Warning cannot get ft expanded id for " <<
show_to_string(
min) << std::endl;
608 unsigned int nrangesFound = 0;
623 if (nrangesFound > 1) {
631 for (
unsigned int j = 0; j < nvalues; ++j) {
638 log << MSG::WARNING <<
" ***** Warning feb range slot field is NOT both_bounded - id, slot mode: "
641 std::cout <<
" ***** Error feb range slot field is NOT both_bounded - id, slot mode: "
661 std::cout << strg << std::endl;
670 strg =
" ***** Error feb ranges, id, hash, i = " +
676 std::cout << strg << std::endl;
694 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << slot <<
channel ;
695 if ( m_this_is_slar ) expId << 1;
697 if (!m_full_laronline_range.match(expId)) {
698 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks() result is not OK: ID, range = "
699 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
714 if (get_expanded_id(febId, expId, &context)) {
715 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(febId) result is not OK: ID = "
716 + show_to_string(febId) ;
722 if ( m_this_is_slar ) expId << 1;
723 if (!m_full_laronline_range.match(expId)) {
724 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(febId) result is not OK: ID, range = "
725 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
739 IdContext context = feedthroughContext();
740 if (get_expanded_id(feedthroughId, expId, &context)) {
741 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(feedthroughId) result is not OK: ID = "
742 + show_to_string(feedthroughId) ;
748 if ( m_this_is_slar ) expId << 1;
749 if (!m_full_laronline_range.match(expId)) {
750 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(feedthroughId) result is not OK: ID, range = "
751 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
764 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << slot ;
766 if ( m_this_is_slar ) expId << 0 << 1;
767 if (!m_full_feedthrough_range.match(expId)) { std::string errorMessage =
"LArOnlineID_Base::feb_Id_checks() result is not OK: ID, range = "
768 + std::string(expId) +
" , " + (std::string)m_full_feb_range;
781 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << 0 << 0 << (
int)m_this_is_slar;
784 if (!m_full_feedthrough_range.match(expId)) { std::string errorMessage =
"LArOnlineID_Base::feedthrough_Id_checks() result is not OK: ID, range = "
785 + std::string(expId) +
" , " + (std::string)m_full_feedthrough_range;
800 exp_id << lar_field_value()
801 << s_lar_online_field_value
804 if(context && context->end_index() >= m_feedthrough_index) {
805 exp_id << feedthrough(
id);
806 if(context && context->end_index() >= m_slot_index) {
808 if(context->end_index() >= m_channel_in_slot_index) {
810 if(context->end_index() >= m_slar_index) {
811 exp_id << is_slar(
id);
827 exp_id << lar_field_value()
828 << s_lar_onlineCalib_field_value
832 if(context && context->end_index() >= m_slot_index) {
834 if(context->end_index() >= m_channel_in_slot_index) {
836 if(context->end_index() >= m_slar_index) {
837 exp_id << is_slar(
id);
855 log << MSG::ERROR <<
"initLevelsFromDict - dictionary NOT initialized "
859 std::cout <<
"LArEM_ID::initLevelsFromDict - dictionary NOT initialized "
885 strg =
"initLevelsFromDict - unable to find laronline region ";
892 std::cout <<
"LAronline_ID::" << strg << std::endl;
904 strg=
"initLevelsFromDict - unable to find 'subdet' field ";
911 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
924 strg=
"initLevelsFromDict - unable to find 'part' field ";
931 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
944 strg=
"initLevelsFromDict - unable to find 'barrel-endcap' field ";
951 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
964 strg=
"initLevelsFromDict - unable to find 'barrel-endcap' field ";
971 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
989 strg =
"initLevelsFromDict - unable to find 'feedthrough' field ";
996 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1002 std::string slot_name;
1004 slot_name+=
"slar_slot";
1015 strg =
"initLevelsFromDict - unable to find 'slot' field ";
1022 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1041 strg =
"initLevelsFromDict - unable to find 'channel_in_slot' field ";
1048 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1062 strg =
"initLevelsFromDict - unable to find 'slar' field ";
1069 std::cout <<
"LArOnline_SuperCellID::" << strg << std::endl;
1079 log << MSG::ERROR <<
"initLevelsFromDict - cannot find "
1111 std::cout <<
"decode index and bit fields for each level: " << std::endl;
1141 unsigned int nids = 0;
1142 std::set<HWIdentifier>
ids;
1147 for (
const auto & exp_id : rit)
1154 if(!(
ids.insert(
id)).second)
1156 strg1 =
" init_hashes: duplicated id for channel nb = "+
std::to_string(nids);
1166 std::cout <<
"LArOnlineID_Base::Error" << strg1 << std::endl;
1168 std::cout << strg3 << std::endl;
1176 strg1 =
" init_hashes ";
1187 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1188 std::cout <<
"Error" << strg2 << std::endl;
1189 std::cout << strg3 << std::endl;
1194 std::set<HWIdentifier>::const_iterator
first =
ids.begin();
1195 std::set<HWIdentifier>::const_iterator last =
ids.end();
1211 for (
const auto & exp_id: rit) {
1215 if(!(
ids.insert(feedthroughId)).second){
1216 strg1 =
" init_hashes: duplicated id for feedthrough nb = "+
std::to_string(nids);
1226 std::cout <<
"LArOnlineID_Base:: Error" << strg1 << std::endl;
1228 std::cout << strg3 << std::endl;
1236 strg1 =
" init_hashes ";
1237 strg2 =
" set size NOT EQUAL to feedthrough hash max. size "+
std::to_string(
ids.size());
1247 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1248 std::cout <<
" Error:" << strg2 << std::endl;
1249 std::cout << strg3 << std::endl;
1272 for (
const auto & exp_id :rit)
1278 if(!(
ids.insert(febId)).second)
1280 strg1 =
" init_hashes: duplicated id for FEB nb = "+
std::to_string(nids);
1290 std::cout <<
"LArOnlineID_Base::Error:" << strg1 << std::endl;
1292 std::cout << strg3 << std::endl;
1300 strg1 =
" init_hashes ";
1301 strg2 =
" set size NOT EQUAL to FEB hash max. size "+
std::to_string(
ids.size());
1311 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1312 std::cout <<
"Error:" << strg2 << std::endl;
1313 std::cout << strg3 << std::endl;
1340 if (laronlineid!=s_lar_online_field_value && laronlineid!=s_lar_onlineCalib_field_value)
return false;
1343 if (channel<0 || channel>128)
return false;
1348 if (
slot<1)
return false;
1349 if (
ft<0)
return false;
1351 if (
ft>31)
return false;
1352 if (
slot>14)
return false;
1355 if (
ft>27)
return false;
1356 if (
ft==2 ||
ft==9 ||
ft==15 ||
ft==21){
1357 if (
slot >15)
return false;
1360 if (
slot>15)
return false;
1362 else if (
ft>24 &&
ft<28) {
1363 if (
slot>10)
return false;
1365 else if (
ft==3 ||
ft==10 ||
ft==16 ||
ft==22) {
1369 if (
slot>13)
return false;
1413 return(m_feedthrough_vec[feedthroughHashId]);
1419 std::vector<HWIdentifier>::const_iterator
it = std::lower_bound(m_feedthrough_vec.begin(),m_feedthrough_vec.end(),feedthroughId);
1420 if (
it != m_feedthrough_vec.end() ){
1421 return (
it - m_feedthrough_vec.begin());
1430 m_slot_impl.reset(
result);
1431 m_channel_in_slot_impl.reset(
result);
1459 int feedthrough,
int slot,
1466 m_lar_impl.pack (lar_field_value(),
result);
1467 m_laronline_impl.pack (s_lar_online_field_value,
result);
1468 m_bec_impl.pack (barrel_ec ,
result);
1469 m_side_impl.pack (pos_neg ,
result);
1470 m_feedthrough_impl.pack(feedthrough ,
result);
1471 m_slot_impl.pack (slot ,
result);
1472 if ( m_this_is_slar )
1473 m_slar_impl.pack (1 ,
result);
1477 feb_Id_checks ( barrel_ec, pos_neg, feedthrough, slot );
1484 int feedthrough,
int slot)
const
1494 m_slot_impl.reset (
result);
1495 m_slot_impl.pack (slot ,
result);
1496 if ( m_this_is_slar )
1497 m_slar_impl.pack (1 ,
result);
1506 m_channel_in_slot_impl.reset(
result);
1513 return(m_feb_vec[febHashId]);
1520 const HashCalcFeb& hc = m_feb_hash_calcs[m_bec_ft_impl.unpack(febId)];
1528 int slotValue = slot(febId);
1532 MsgStream
log(m_msgSvc,
"LArOnlineID_Base" );
1534 log << MSG::WARNING <<
"LArOnlineID_Base::feb_Hash - ***** WARNING: could not match slot value for has calculation " <<
endmsg;
1536 std::cout <<
"LArOnlineID_Base::feb_Hash - ***** WARNING: could not match slot value for has calculation " << std::endl;
1539 size_type slotIndex = m_slot_impl.unpackToIndex(febId);
1540 return (hc.
m_hash + slotIndex);
1551 m_lar_impl.pack (lar_field_value() ,
result);
1552 m_laronline_impl.pack (s_lar_online_field_value ,
result);
1553 m_bec_impl.pack (barrel_ec ,
result);
1554 m_side_impl.pack (pos_neg ,
result);
1555 m_feedthrough_impl.pack (feedthrough ,
result);
1556 m_slot_impl.pack (slot ,
result);
1558 if ( m_this_is_slar )
1559 m_slar_impl.pack (1 ,
result);
1563 channel_Id_checks( barrel_ec, pos_neg, feedthrough, slot,
channel );
1579 return(m_channel_vec[channelHashId]);
1590 m_slot_impl.reset (
result);
1591 m_channel_in_slot_impl.reset(
result);
1592 m_slot_impl.pack (slot ,
result);
1594 if ( m_this_is_slar )
1595 m_slar_impl.pack (1 ,
result);
1599 channel_Id_checks( feedthroughId, slot,
channel );
1617 m_channel_in_slot_impl.reset(
result);
1619 if ( m_this_is_slar )
1620 m_slar_impl.pack (1,
result);
1624 channel_Id_checks( febId,
channel );
1655 return (barrel_ec(
id)==0);
1660 return ( barrel_ec(
id)==1 && feedthrough(
id) == 6 );
1668 int bec= barrel_ec(
id);
1678 return (isEMECOW(
id) && slot(
id)==1);
1684 return ( isEMBPS(
id) || isEMECPS(
id));
1691 int ft = feedthrough(
id);
1697 ( (-1 <
ft &&
ft < 32) &&
1699 ( 63 <
ch &&
ch < 128 )
1704 isEMECchannel(
id) && sl == 1 &&
1705 (
ft == 2 ||
ft == 9 ||
ft == 15 ||
ft == 21 ) &&
1706 (63 <
ch &&
ch < 128)
1723 return (isEMBchannel(
id));
1729 return (barrel_ec(
id)==1);
1735 return isFCALchannel(
id);
1740 return isEMECchannel(
id);
1755 int ft = feedthrough(
id);
1756 return ( barrel_ec(
id)==1 &&
1778 int ft = feedthrough(
id);
1779 return ( barrel_ec(
id)==1 &&
1790 int bec= barrel_ec(
id);
1791 int ft = feedthrough(
id);
1793 return ( (
bec==0 && sl==15)
1795 (
bec==1 && sl==15 &&
1814 ( barrel_ec(
id)==1 &&
1815 (sl==3 || sl==4 || sl==12) &&
1822 ( barrel_ec(
id)==1 && sl==16 )
1824 ( barrel_ec(
id)==1 &&
ft==27 && sl==11 )
1847 int ft = feedthrough(
id);
1868 int ft = feedthrough(febId);
1869 return ( barrel_ec(febId)==1 &&
1880 return isEMECIW(
id);
1945 return (m_bec_impl.unpack(
id));
1951 return (m_feedthrough_impl.unpack(
id));
1957 return (m_side_impl.unpack(
id));
1964 return (m_slot_impl.unpack(
id));
1970 return (m_channel_in_slot_impl.unpack(
id));
1976 return (m_slar_impl.unpack(
id));
1985 unsigned int nids=0;
1986 std::set<HWIdentifier>
ids;
1990 for (
const auto & exp_id : rit) {
1996 if(!(
ids.insert(
id)).second) {
1998 log << MSG::WARNING <<
" LArOnlineID_Base::init_calib_Hashes "
1999 <<
" Error: duplicated id for channel id. nids= " << nids
2002 std::cout <<
" LArOnlineID_Base::init_calib_Hashes "
2003 <<
" Error: duplicated id for channel id. nids= " << nids
2012 unsigned int nidtb=0;
2013 std::set<HWIdentifier>::const_iterator
first =
ids.begin();
2014 std::set<HWIdentifier>::const_iterator last =
ids.end();
2015 for (;
first != last && nidtb < nids; ++
first) {
2028 for (
const auto & exp_id : rit) {
2033 if(!(
ids.insert(febId)).second){
2035 log << MSG::WARNING <<
" LArOnlineID_Base::init_calibhashes "
2036 <<
" Warning: duplicated id for feb id. nids= " << nids
2039 std::cout <<
" LArOnlineID_Base::init_calibhashes "
2040 <<
" Error: duplicated id for feb id. nids= " << nids
2044 std::cout << std::endl;
2054 for (;
first != last && nidtb < nids; ++
first)
IdDictRegion * find_region(const std::string ®ion_name) const
std::vector< HWIdentifier >::const_iterator id_iterator
Type for iterators over identifiers.
MultiRange build_multirange() const
Get MultiRange for full dictionary.
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
LArOnlineID_Base(const std::string &name, const std::string &group, bool is_slar)
Default constructor.
id_range feedthrough_range() const
IdDictFieldImplementation m_slar_impl
Identifier::size_type size_type
std::string feedthrough_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
std::string show_to_string(void) const
std::vector< int > m_slot_values
IdDictFieldImplementation m_feedthrough_impl
const IdDictRegion & region(size_t i) const
Region at index i.
element_type get_minimum() const
Query the values.
bool isHecOnlineFebId(const HWIdentifier febId) const
void feb_Id_checks(int barrel_ec, int pos_neg, int feedthrough, int slot) const
std::vector< HWIdentifier > m_channel_vec
void add(element_type value)
Append a value into a new field.
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
void pack(int value, Identifier &id) const
IdDictFieldImplementation m_slot_impl
Define the Hash identifier for channels and febs.
IdDictFieldImplementation m_laronline_impl
IMessageSvc * m_msgSvc
pointer to the message service
boost::iterator_range< id_iterator > id_range
Type for range over identifiers.
const element_vector & get_values() const
element_type get_maximum() const
id_iterator feb_begin() const
Returns an iterator pointing to a feb identifier collection.
id_iterator feedthrough_begin() const
Return an iterator pointing to Feedthrough identifiers collection.
bool isFcalOnline(const HWIdentifier id) const
HWIdentifier calib_module_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Build calibration module identifier from fields.
const std::string & name() const
Dictionary name.
size_type m_laronline_index
const IdDictDictionary * m_dict
bool const RAWDATA *ch2 const
IdContext feedthroughContext() const
Define context for feedthroughs.
int lar_field_value() const
IdDictFieldImplementation m_side_impl
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
int unpack(Identifier id) const
Identifier manipulation methods.
id_iterator channel_end() const
IdDictField * find_field(const std::string &name) const
size_type m_feedthroughHashMax
virtual std::string dictionaryVersion(void) const override
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr)
initialization from the identifier dictionary
std::vector< HWIdentifier > m_calib_channel_vec
IdDictFieldImplementation m_bec_slot_impl
size_type m_calibModuleHashMax
virtual ~LArOnlineID_Base()
Default destructor.
Identifier::size_type size_type
std::vector< HashCalcFeb > m_feb_hash_calcs
size_type channelHashMax() const
Define channel hash tables max size.
bool isFCALchannel(const HWIdentifier id) const
int is_slar(const HWIdentifier id) const
Return whether the channel is in slar or not is_ slar = [0,1] in all FEB.
IdDictFieldImplementation m_channel_in_slot_impl
const IdDictFieldImplementation & implementation(size_t i) const
MultiRange m_full_feedthrough_range
IdDictGroup * find_group(const std::string &group_name) const
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
id_range feb_range() const
IdentifierHash feedthrough_Hash(HWIdentifier feedthroughId) const
Create hash id from feedthrough identifiers.
id_range channel_range() const
bool empty() const
If true, this field does not have any constraints, and may hold any value representable by element_ty...
void set_bits(size_type bits, size_type bits_offset)
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
size_type m_calibChannelHashMax
IdContext channelContext() const
Define context for channel.
Exception class for LAr online Identifiers.
bool isEMECPS(const HWIdentifier id) const
int get_expanded_id(const HWIdentifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
create expanded HWIdentifier from HWIdentifier (return == 0 for OK)
size_type bits_offset() const
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
bool isEmEndcapStandardOnline(const HWIdentifier id) const
int initLevelsFromDict(const std::string &group_name)
const std::string & group() const
Group name for this helper.
size_type m_channelHashMax
MultiRange m_full_calib_laronline_range
bool isEndcapOnline(const HWIdentifier id) const
IdContext febContext() const
Define context for feb.
bool isValidId(const HWIdentifier id) const
Returns false if the identifier is not a LAr-online id or any of the sub-fields is out of range.
bool m_quiet
If true, suppress DEBUG/INFO messages.
bool isHecOnline(const HWIdentifier id) const
bool isEnumerated() const
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
size_type m_feedthrough_index
IdentifierHash channel_Hash_binary_search(HWIdentifier channelId) const
size_type febHashMax() const
define feb hash tables max size
int register_dict_tag(const IdDictMgr &dict_mgr, const std::string &dict_name)
Register the file and tag names for a particular IdDict dictionary.
id_iterator feb_end() const
int get_label_value(const std::string &field, const std::string &label, int &value) const
std::vector< HWIdentifier > m_feedthrough_vec
IdDictFieldImplementation m_lar_impl
Field Implementation.
IdentifierHash feb_Hash_binary_search(HWIdentifier channelId) const
std::string to_string(const DetectorType &type)
size_type feedthroughHashMax() const
Define feedthrough hash tables max size.
bool isCalibration(const HWIdentifier id) const
virtual void setDictVersion(const IdDictMgr &dict_mgr, const std::string &name) override
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
IdContext cryostatEndContext() const
Define context for cryostat (obsolete)
bool isEmEndcapSpecialOnline(const HWIdentifier id) const
bool isEMBchannel(const HWIdentifier id) const
std::vector< HashCalc > m_chan_hash_calcs
IdDictFieldImplementation m_bec_impl
void channel_Id_checks(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
int get_expanded_calib_id(const HWIdentifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
void feedthrough_Id_checks(int barrel_ec, int pos_neg, int feedthrough) const
bool reinitialize(const IdDictMgr &dict_mgr)
Test whether an idhelper should be reinitialized based on the change of tags.
MultiRange m_full_feb_range
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
std::vector< HWIdentifier > m_feb_vec
id_iterator feedthrough_end() const
MultiRange m_full_laronline_range
bool isEMBPS(const HWIdentifier id) const
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
bool isPS(const HWIdentifier id) const
MultiRange m_full_calib_module_range
bool isEmEndcapOnline(const HWIdentifier id) const
bool isNotWarmCableConnected(const HWIdentifier id) const
size_type cardinality() const
Computes a possible cardinality from all ranges.
size_type m_channel_in_slot_index
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
std::vector< HWIdentifier > m_calib_module_vec
virtual bool do_checks(void) const override
Checks are performed by default in debug compilation and NOT in optimized compilation.
size_type m_laronlineRegion_index
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
HWIdentifier calib_channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create calibration channel identifiers from fields
bool isEMECinHECchannel(const HWIdentifier id) const
IdDictFieldImplementation m_bec_ft_impl
id_iterator channel_begin() const
Returns an iterator pointing to a channel identifier collection.
IdentifierHash feb_Hash(HWIdentifier febId) const
Create feb hash identifiers from feb identifiers.
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
bool isEmBarrelOnline(const HWIdentifier id) const
bool match(std::string s1, std::string s2)
match the individual directories of two strings
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.
Identifier::size_type size_type