![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
6 #include "GaudiKernel/MsgStream.h"
47 m_this_is_slar(false),
48 m_laronlineRegion_index(999),
50 m_laronline_index(999),
53 m_feedthrough_index(999),
55 m_channel_in_slot_index(999),
58 m_feedthroughHashMax(0),
61 m_calibModuleHashMax(0),
62 m_calibChannelHashMax(0)
220 std::ostringstream
s1;
223 int Nslot =
slot(
id);
225 std::string det_barrel_endcap =
"NODETE";
226 std::string det_side =
"/X-SIDE";
228 if(
barrel_ec(
id) == 0 ) det_barrel_endcap =
"BARREL";
229 if(
barrel_ec(
id) == 1 ) det_barrel_endcap =
"ENDCAP";
230 if(
pos_neg(
id) == 1 ) det_side =
"/A-SIDE";
231 if(
pos_neg(
id) == 0 ) det_side =
"/C-SIDE";
233 s1 << det_barrel_endcap
237 <<
"/CHAN-" << Nchan;
259 return (
IdContext(
id, 0, m_feedthrough_index));
270 return (
IdContext(
id, 0, m_channel_in_slot_index));
292 if(!get_expanded_id(
channelId, expId, &context)) {
294 for (
unsigned int i = 0;
i < m_full_laronline_range.size(); ++
i) {
296 if (
range.match(expId)) {
299 int channel_in_slotmax = channel_in_slot_field.
get_maximum();
300 if (
result < channel_in_slotmax)
result = channel_in_slotmax + 1;
319 std::string strg =
"initialize_from_dictionary";
324 std::cout << strg << std::endl;
342 std::string strg =
" initialize_from_dictionary - cannot access LArCalorimeter dictionary ";
347 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
368 if (atlasDict->
get_label_value(
"subdet",
"LArCalorimeter", larField)) {
369 std::stringstream strm;
370 strm << atlasDict->
m_name;
371 std::string strg=
" Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary "+strm.str();
376 std::cout <<
"LArOnlineID_Base:" << strg << std::endl;
382 int larOnlineField = -4;
384 std::stringstream strm;
386 std::string strg =
"Could not get value for label 'LArOnline' of field 'part' in dictionary "+strm.str();
391 std::cout << strg << std::endl;
397 int larOnlineCalibField = -5;
399 std::stringstream strm;
401 std::string strg =
"Could not get value for label 'LArOnlineCalib' of field 'part' in dictionary "+strm.str();
406 std::cout << strg << std::endl;
418 region_id2.
add(larField);
419 region_id2.
add(larOnlineCalibField);
427 std::string strg0=
" initialize_from_dictionary :";
429 std::string strg2=
" feedthrough slot range -> " + (std::string)
m_full_feb_range;
438 std::cout << strg0 << std::endl;
439 std::cout << strg1 << std::endl;
440 std::cout << strg2 << std::endl;
441 std::cout << strg3 << std::endl;
450 std::string strg0=
"=> initialize_from_dictionary : ";
459 std::cout << strg0 << std::endl;
460 std::cout << strg2 << std::endl;
461 std::cout << strg3 << std::endl;
471 std::cout <<
"LArOnlineID_Base: " << strg << std::endl;
498 int size = (1 << bits);
525 std::cout << strg << std::endl;
526 std::cout << strg1 << std::endl;
527 std::cout << strg2 << std::endl;
536 strg =
" ***** Error channel ranges, id, hash, i = "+
show_to_string(
id);
545 std::cout << strg << std::endl;
546 std::cout << strg1 << std::endl;
547 std::cout << strg2 << std::endl;
600 std::cout <<
" ***** Warning cannot get ft expanded id for " <<
show_to_string(
min) << std::endl;
603 unsigned int nrangesFound = 0;
618 if (nrangesFound > 1) {
626 for (
unsigned int j = 0; j < nvalues; ++j) {
632 log << MSG::WARNING <<
" ***** Warning feb range slot field is NOT both_bounded - id, slot mode: "
635 std::cout <<
" ***** Error feb range slot field is NOT both_bounded - id, slot mode: "
655 std::cout << strg << std::endl;
664 strg =
" ***** Error feb ranges, id, hash, i = " +
670 std::cout << strg << std::endl;
688 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << slot <<
channel ;
689 if ( m_this_is_slar ) expId << 1;
691 if (!m_full_laronline_range.match(expId)) {
692 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks() result is not OK: ID, range = "
693 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
708 if (get_expanded_id(febId, expId, &context)) {
709 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(febId) result is not OK: ID = "
710 + show_to_string(febId) ;
716 if ( m_this_is_slar ) expId << 1;
717 if (!m_full_laronline_range.match(expId)) {
718 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(febId) result is not OK: ID, range = "
719 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
733 IdContext context = feedthroughContext();
734 if (get_expanded_id(feedthroughId, expId, &context)) {
735 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(feedthroughId) result is not OK: ID = "
736 + show_to_string(feedthroughId) ;
742 if ( m_this_is_slar ) expId << 1;
743 if (!m_full_laronline_range.match(expId)) {
744 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(feedthroughId) result is not OK: ID, range = "
745 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
758 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << slot ;
760 if ( m_this_is_slar ) expId << 0 << 1;
761 if (!m_full_feedthrough_range.match(expId)) { std::string errorMessage =
"LArOnlineID_Base::feb_Id_checks() result is not OK: ID, range = "
762 + std::string(expId) +
" , " + (std::string)m_full_feb_range;
775 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << 0 << 0 << (
int)m_this_is_slar;
778 if (!m_full_feedthrough_range.match(expId)) { std::string errorMessage =
"LArOnlineID_Base::feedthrough_Id_checks() result is not OK: ID, range = "
779 + std::string(expId) +
" , " + (std::string)m_full_feedthrough_range;
794 exp_id << lar_field_value()
795 << s_lar_online_field_value
798 if(context && context->end_index() >= m_feedthrough_index) {
799 exp_id << feedthrough(
id);
800 if(context && context->end_index() >= m_slot_index) {
802 if(context->end_index() >= m_channel_in_slot_index) {
804 if(context->end_index() >= m_slar_index) {
805 exp_id << is_slar(
id);
821 exp_id << lar_field_value()
822 << s_lar_onlineCalib_field_value
826 if(context && context->end_index() >= m_slot_index) {
828 if(context->end_index() >= m_channel_in_slot_index) {
830 if(context->end_index() >= m_slar_index) {
831 exp_id << is_slar(
id);
849 log << MSG::ERROR <<
"initLevelsFromDict - dictionary NOT initialized "
853 std::cout <<
"LArEM_ID::initLevelsFromDict - dictionary NOT initialized "
879 strg =
"initLevelsFromDict - unable to find laronline region ";
886 std::cout <<
"LAronline_ID::" << strg << std::endl;
898 strg=
"initLevelsFromDict - unable to find 'subdet' field ";
905 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
918 strg=
"initLevelsFromDict - unable to find 'part' field ";
925 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
938 strg=
"initLevelsFromDict - unable to find 'barrel-endcap' field ";
945 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
958 strg=
"initLevelsFromDict - unable to find 'barrel-endcap' field ";
965 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
983 strg =
"initLevelsFromDict - unable to find 'feedthrough' field ";
990 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
996 std::string slot_name;
998 slot_name+=
"slar_slot";
1009 strg =
"initLevelsFromDict - unable to find 'slot' field ";
1016 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1035 strg =
"initLevelsFromDict - unable to find 'channel_in_slot' field ";
1042 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1056 strg =
"initLevelsFromDict - unable to find 'slar' field ";
1063 std::cout <<
"LArOnline_SuperCellID::" << strg << std::endl;
1073 log << MSG::ERROR <<
"initLevelsFromDict - cannot find "
1105 std::cout <<
"decode index and bit fields for each level: " << std::endl;
1135 unsigned int nids = 0;
1136 std::set<HWIdentifier>
ids;
1150 if(!(
ids.insert(
id)).second)
1152 strg1 =
" init_hashes: duplicated id for channel nb = "+
std::to_string(nids);
1162 std::cout <<
"LArOnlineID_Base::Error" << strg1 << std::endl;
1164 std::cout << strg3 << std::endl;
1172 strg1 =
" init_hashes ";
1183 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1184 std::cout <<
"Error" << strg2 << std::endl;
1185 std::cout << strg3 << std::endl;
1190 std::set<HWIdentifier>::const_iterator
first =
ids.begin();
1191 std::set<HWIdentifier>::const_iterator last =
ids.end();
1213 if(!(
ids.insert(feedthroughId)).second){
1214 strg1 =
" init_hashes: duplicated id for feedthrough nb = "+
std::to_string(nids);
1224 std::cout <<
"LArOnlineID_Base:: Error" << strg1 << std::endl;
1226 std::cout << strg3 << std::endl;
1234 strg1 =
" init_hashes ";
1235 strg2 =
" set size NOT EQUAL to feedthrough hash max. size "+
std::to_string(
ids.size());
1245 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1246 std::cout <<
" Error:" << strg2 << std::endl;
1247 std::cout << strg3 << std::endl;
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);
1894 return m_feedthroughHashMax;
1899 return m_febHashMax;
1904 return m_channelHashMax;
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;
1998 if(!(
ids.insert(
id)).second) {
2000 log << MSG::WARNING <<
" LArOnlineID_Base::init_calib_Hashes "
2001 <<
" Error: duplicated id for channel id. nids= " << nids
2004 std::cout <<
" LArOnlineID_Base::init_calib_Hashes "
2005 <<
" Error: duplicated id for channel id. nids= " << nids
2014 unsigned int nidtb=0;
2015 std::set<HWIdentifier>::const_iterator
first =
ids.begin();
2016 std::set<HWIdentifier>::const_iterator last =
ids.end();
2017 for (;
first != last && nidtb < nids; ++
first) {
2037 if(!(
ids.insert(febId)).second){
2039 log << MSG::WARNING <<
" LArOnlineID_Base::init_calibhashes "
2040 <<
" Warning: duplicated id for feb id. nids= " << nids
2043 std::cout <<
" LArOnlineID_Base::init_calibhashes "
2044 <<
" Error: duplicated id for feb id. nids= " << nids
2048 std::cout << std::endl;
2058 for (;
first != last && nidtb < nids; ++
first)
IdDictRegion * find_region(const std::string ®ion_name) const
size_type feedthroughHashMax(void) const
Define feedthrough hash tables max size.
IdContext febContext(void) const
Define context for feb.
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.
IdContext cryostatEndContext(void) const
Define context for cryostat (obsolete)
id_range feedthrough_range() const
size_type febHashMax(void) const
define feb hash tables max size
IdDictFieldImplementation m_slar_impl
std::string feedthrough_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
Identifier::size_type size_type
std::string show_to_string(void) const
std::vector< int > m_slot_values
IdDictFieldImplementation m_feedthrough_impl
int init_calib_hashes(void)
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)
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
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.
IdContext feedthroughContext(void) const
Define context for feedthroughs.
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.
size_type m_laronline_index
const IdDictDictionary * m_dict
bool const RAWDATA *ch2 const
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.
reg
globals -----------------------------------------------------------------—
id_iterator channel_end() const
std::vector< HWIdentifier >::const_iterator id_iterator
Type for iterators over identifiers.
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
Identifier::size_type size_type
std::vector< HashCalcFeb > m_feb_hash_calcs
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
boost::iterator_range< id_iterator > id_range
Type for range over identifiers.
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
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
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
std::vector< IdDictRegion * > m_regions
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)
size_type m_channelHashMax
MultiRange m_full_calib_laronline_range
bool isEndcapOnline(const HWIdentifier id) const
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.
element_type get_minimum() const
bool isHecOnline(const HWIdentifier id) 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
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 channelHashMax(void) const
Define channel 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.
bool isEmEndcapSpecialOnline(const HWIdentifier id) const
bool isEMBchannel(const HWIdentifier id) const
std::vector< HashCalc > m_chan_hash_calcs
IdDictFieldImplementation m_bec_impl
element_type get_maximum() const
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
IdContext channelContext(void) const
Define context for channel.
id_iterator feedthrough_end() const
~LArOnlineID_Base(void)
Default destructor.
MultiRange m_full_laronline_range
bool isEMBPS(const HWIdentifier id) const
bool isPS(const HWIdentifier id) const
MultiRange m_full_calib_module_range
LArOnlineID_Base(void)
Default constructor.
mode get_mode() const
Query the values.
bool isEmEndcapOnline(const HWIdentifier id) const
bool isNotWarmCableConnected(const HWIdentifier id) const
This is the individual specification for the range of one ExpandedIdentifier field.
size_type cardinality() const
Computes a possible cardinality from all ranges.
size_type m_channel_in_slot_index
const element_vector & get_values() const
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
HWIdentifier calib_channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create calibration channel identifiers from fields
std::vector< IdDictFieldImplementation > m_implementation
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.
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