|
ATLAS Offline Software
|
Go to the documentation of this file.
6 #include "GaudiKernel/MsgStream.h"
48 m_this_is_slar(false),
49 m_laronlineRegion_index(999),
51 m_laronline_index(999),
54 m_feedthrough_index(999),
56 m_channel_in_slot_index(999),
59 m_feedthroughHashMax(0),
62 m_calibModuleHashMax(0),
63 m_calibChannelHashMax(0)
221 std::ostringstream
s1;
224 int Nslot =
slot(
id);
226 std::string det_barrel_endcap =
"NODETE";
227 std::string det_side =
"/X-SIDE";
229 if(
barrel_ec(
id) == 0 ) det_barrel_endcap =
"BARREL";
230 if(
barrel_ec(
id) == 1 ) det_barrel_endcap =
"ENDCAP";
231 if(
pos_neg(
id) == 1 ) det_side =
"/A-SIDE";
232 if(
pos_neg(
id) == 0 ) det_side =
"/C-SIDE";
234 s1 << det_barrel_endcap
238 <<
"/CHAN-" << Nchan;
260 return (
IdContext(
id, 0, m_feedthrough_index));
271 return (
IdContext(
id, 0, m_channel_in_slot_index));
293 if(!get_expanded_id(
channelId, expId, &context)) {
295 for (
unsigned int i = 0;
i < m_full_laronline_range.size(); ++
i) {
297 if (
range.match(expId)) {
299 if (!channel_in_slot_field.
empty()) {
300 int channel_in_slotmax = channel_in_slot_field.
get_maximum();
301 if (
result < channel_in_slotmax)
result = channel_in_slotmax + 1;
320 std::string strg =
"initialize_from_dictionary";
325 std::cout << strg << std::endl;
343 std::string strg =
" initialize_from_dictionary - cannot access LArCalorimeter dictionary ";
348 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
369 if (atlasDict->
get_label_value(
"subdet",
"LArCalorimeter", larField)) {
370 std::stringstream strm;
371 strm << atlasDict->
m_name;
372 std::string strg=
" Could not get value for label 'LArCalorimeter' of field 'subdet' in dictionary "+strm.str();
377 std::cout <<
"LArOnlineID_Base:" << strg << std::endl;
383 int larOnlineField = -4;
385 std::stringstream strm;
387 std::string strg =
"Could not get value for label 'LArOnline' of field 'part' in dictionary "+strm.str();
392 std::cout << strg << std::endl;
398 int larOnlineCalibField = -5;
400 std::stringstream strm;
402 std::string strg =
"Could not get value for label 'LArOnlineCalib' of field 'part' in dictionary "+strm.str();
407 std::cout << strg << std::endl;
419 region_id2.
add(larField);
420 region_id2.
add(larOnlineCalibField);
428 std::string strg0=
" initialize_from_dictionary :";
430 std::string strg2=
" feedthrough slot range -> " + (std::string)
m_full_feb_range;
439 std::cout << strg0 << std::endl;
440 std::cout << strg1 << std::endl;
441 std::cout << strg2 << std::endl;
442 std::cout << strg3 << std::endl;
451 std::string strg0=
"=> initialize_from_dictionary : ";
460 std::cout << strg0 << std::endl;
461 std::cout << strg2 << std::endl;
462 std::cout << strg3 << std::endl;
472 std::cout <<
"LArOnlineID_Base: " << strg << std::endl;
499 int size = (1 << bits);
526 std::cout << strg << std::endl;
527 std::cout << strg1 << std::endl;
528 std::cout << strg2 << std::endl;
537 strg =
" ***** Error channel ranges, id, hash, i = "+
show_to_string(
id);
546 std::cout << strg << std::endl;
547 std::cout << strg1 << std::endl;
548 std::cout << strg2 << std::endl;
601 std::cout <<
" ***** Warning cannot get ft expanded id for " <<
show_to_string(
min) << std::endl;
604 unsigned int nrangesFound = 0;
619 if (nrangesFound > 1) {
627 for (
unsigned int j = 0; j < nvalues; ++j) {
634 log << MSG::WARNING <<
" ***** Warning feb range slot field is NOT both_bounded - id, slot mode: "
637 std::cout <<
" ***** Error feb range slot field is NOT both_bounded - id, slot mode: "
657 std::cout << strg << std::endl;
666 strg =
" ***** Error feb ranges, id, hash, i = " +
672 std::cout << strg << std::endl;
690 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << slot <<
channel ;
691 if ( m_this_is_slar ) expId << 1;
693 if (!m_full_laronline_range.match(expId)) {
694 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks() result is not OK: ID, range = "
695 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
710 if (get_expanded_id(febId, expId, &context)) {
711 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(febId) result is not OK: ID = "
712 + show_to_string(febId) ;
718 if ( m_this_is_slar ) expId << 1;
719 if (!m_full_laronline_range.match(expId)) {
720 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(febId) result is not OK: ID, range = "
721 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
735 IdContext context = feedthroughContext();
736 if (get_expanded_id(feedthroughId, expId, &context)) {
737 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(feedthroughId) result is not OK: ID = "
738 + show_to_string(feedthroughId) ;
744 if ( m_this_is_slar ) expId << 1;
745 if (!m_full_laronline_range.match(expId)) {
746 std::string errorMessage =
"LArOnlineID_Base::channel_Id_checks(feedthroughId) result is not OK: ID, range = "
747 + std::string(expId) +
" , " + (std::string)m_full_laronline_range;
760 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << slot ;
762 if ( m_this_is_slar ) expId << 0 << 1;
763 if (!m_full_feedthrough_range.match(expId)) { std::string errorMessage =
"LArOnlineID_Base::feb_Id_checks() result is not OK: ID, range = "
764 + std::string(expId) +
" , " + (std::string)m_full_feb_range;
777 expId << s_lar_online_field_value << barrel_ec << pos_neg << feedthrough << 0 << 0 << (
int)m_this_is_slar;
780 if (!m_full_feedthrough_range.match(expId)) { std::string errorMessage =
"LArOnlineID_Base::feedthrough_Id_checks() result is not OK: ID, range = "
781 + std::string(expId) +
" , " + (std::string)m_full_feedthrough_range;
796 exp_id << lar_field_value()
797 << s_lar_online_field_value
800 if(context && context->end_index() >= m_feedthrough_index) {
801 exp_id << feedthrough(
id);
802 if(context && context->end_index() >= m_slot_index) {
804 if(context->end_index() >= m_channel_in_slot_index) {
806 if(context->end_index() >= m_slar_index) {
807 exp_id << is_slar(
id);
823 exp_id << lar_field_value()
824 << s_lar_onlineCalib_field_value
828 if(context && context->end_index() >= m_slot_index) {
830 if(context->end_index() >= m_channel_in_slot_index) {
832 if(context->end_index() >= m_slar_index) {
833 exp_id << is_slar(
id);
851 log << MSG::ERROR <<
"initLevelsFromDict - dictionary NOT initialized "
855 std::cout <<
"LArEM_ID::initLevelsFromDict - dictionary NOT initialized "
881 strg =
"initLevelsFromDict - unable to find laronline region ";
888 std::cout <<
"LAronline_ID::" << strg << std::endl;
900 strg=
"initLevelsFromDict - unable to find 'subdet' field ";
907 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
920 strg=
"initLevelsFromDict - unable to find 'part' field ";
927 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
940 strg=
"initLevelsFromDict - unable to find 'barrel-endcap' field ";
947 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
960 strg=
"initLevelsFromDict - unable to find 'barrel-endcap' field ";
967 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
985 strg =
"initLevelsFromDict - unable to find 'feedthrough' field ";
992 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
998 std::string slot_name;
1000 slot_name+=
"slar_slot";
1011 strg =
"initLevelsFromDict - unable to find 'slot' field ";
1018 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1037 strg =
"initLevelsFromDict - unable to find 'channel_in_slot' field ";
1044 std::cout <<
"LArOnlineID_Base::" << strg << std::endl;
1058 strg =
"initLevelsFromDict - unable to find 'slar' field ";
1065 std::cout <<
"LArOnline_SuperCellID::" << strg << std::endl;
1075 log << MSG::ERROR <<
"initLevelsFromDict - cannot find "
1107 std::cout <<
"decode index and bit fields for each level: " << std::endl;
1137 unsigned int nids = 0;
1138 std::set<HWIdentifier>
ids;
1143 for (
const auto & exp_id : rit)
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();
1207 for (
const auto & exp_id: rit) {
1211 if(!(
ids.insert(feedthroughId)).second){
1212 strg1 =
" init_hashes: duplicated id for feedthrough nb = "+
std::to_string(nids);
1222 std::cout <<
"LArOnlineID_Base:: Error" << strg1 << std::endl;
1224 std::cout << strg3 << std::endl;
1232 strg1 =
" init_hashes ";
1233 strg2 =
" set size NOT EQUAL to feedthrough hash max. size "+
std::to_string(
ids.size());
1243 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1244 std::cout <<
" Error:" << strg2 << std::endl;
1245 std::cout << strg3 << std::endl;
1268 for (
const auto & exp_id :rit)
1274 if(!(
ids.insert(febId)).second)
1276 strg1 =
" init_hashes: duplicated id for FEB nb = "+
std::to_string(nids);
1286 std::cout <<
"LArOnlineID_Base::Error:" << strg1 << std::endl;
1288 std::cout << strg3 << std::endl;
1296 strg1 =
" init_hashes ";
1297 strg2 =
" set size NOT EQUAL to FEB hash max. size "+
std::to_string(
ids.size());
1307 std::cout <<
"LArOnlineID_Base::" << strg1 << std::endl;
1308 std::cout <<
"Error:" << strg2 << std::endl;
1309 std::cout << strg3 << std::endl;
1336 if (laronlineid!=s_lar_online_field_value && laronlineid!=s_lar_onlineCalib_field_value)
return false;
1339 if (channel<0 || channel>128)
return false;
1344 if (
slot<1)
return false;
1345 if (
ft<0)
return false;
1347 if (
ft>31)
return false;
1348 if (
slot>14)
return false;
1351 if (
ft>27)
return false;
1352 if (
ft==2 ||
ft==9 ||
ft==15 ||
ft==21){
1353 if (
slot >15)
return false;
1356 if (
slot>15)
return false;
1358 else if (
ft>24 &&
ft<28) {
1359 if (
slot>10)
return false;
1361 else if (
ft==3 ||
ft==10 ||
ft==16 ||
ft==22) {
1365 if (
slot>13)
return false;
1409 return(m_feedthrough_vec[feedthroughHashId]);
1415 std::vector<HWIdentifier>::const_iterator
it = std::lower_bound(m_feedthrough_vec.begin(),m_feedthrough_vec.end(),feedthroughId);
1416 if (
it != m_feedthrough_vec.end() ){
1417 return (
it - m_feedthrough_vec.begin());
1426 m_slot_impl.reset(
result);
1427 m_channel_in_slot_impl.reset(
result);
1455 int feedthrough,
int slot,
1462 m_lar_impl.pack (lar_field_value(),
result);
1463 m_laronline_impl.pack (s_lar_online_field_value,
result);
1464 m_bec_impl.pack (barrel_ec ,
result);
1465 m_side_impl.pack (pos_neg ,
result);
1466 m_feedthrough_impl.pack(feedthrough ,
result);
1467 m_slot_impl.pack (slot ,
result);
1468 if ( m_this_is_slar )
1469 m_slar_impl.pack (1 ,
result);
1473 feb_Id_checks ( barrel_ec, pos_neg, feedthrough, slot );
1480 int feedthrough,
int slot)
const
1490 m_slot_impl.reset (
result);
1491 m_slot_impl.pack (slot ,
result);
1492 if ( m_this_is_slar )
1493 m_slar_impl.pack (1 ,
result);
1502 m_channel_in_slot_impl.reset(
result);
1509 return(m_feb_vec[febHashId]);
1516 const HashCalcFeb& hc = m_feb_hash_calcs[m_bec_ft_impl.unpack(febId)];
1524 int slotValue = slot(febId);
1528 MsgStream
log(m_msgSvc,
"LArOnlineID_Base" );
1530 log << MSG::WARNING <<
"LArOnlineID_Base::feb_Hash - ***** WARNING: could not match slot value for has calculation " <<
endmsg;
1532 std::cout <<
"LArOnlineID_Base::feb_Hash - ***** WARNING: could not match slot value for has calculation " << std::endl;
1535 size_type slotIndex = m_slot_impl.unpackToIndex(febId);
1536 return (hc.
m_hash + slotIndex);
1547 m_lar_impl.pack (lar_field_value() ,
result);
1548 m_laronline_impl.pack (s_lar_online_field_value ,
result);
1549 m_bec_impl.pack (barrel_ec ,
result);
1550 m_side_impl.pack (pos_neg ,
result);
1551 m_feedthrough_impl.pack (feedthrough ,
result);
1552 m_slot_impl.pack (slot ,
result);
1554 if ( m_this_is_slar )
1555 m_slar_impl.pack (1 ,
result);
1559 channel_Id_checks( barrel_ec, pos_neg, feedthrough, slot,
channel );
1575 return(m_channel_vec[channelHashId]);
1586 m_slot_impl.reset (
result);
1587 m_channel_in_slot_impl.reset(
result);
1588 m_slot_impl.pack (slot ,
result);
1590 if ( m_this_is_slar )
1591 m_slar_impl.pack (1 ,
result);
1595 channel_Id_checks( feedthroughId, slot,
channel );
1613 m_channel_in_slot_impl.reset(
result);
1615 if ( m_this_is_slar )
1616 m_slar_impl.pack (1,
result);
1620 channel_Id_checks( febId,
channel );
1651 return (barrel_ec(
id)==0);
1656 return ( barrel_ec(
id)==1 && feedthrough(
id) == 6 );
1664 int bec= barrel_ec(
id);
1674 return (isEMECOW(
id) && slot(
id)==1);
1680 return ( isEMBPS(
id) || isEMECPS(
id));
1687 int ft = feedthrough(
id);
1693 ( (-1 <
ft &&
ft < 32) &&
1695 ( 63 <
ch &&
ch < 128 )
1700 isEMECchannel(
id) && sl == 1 &&
1701 (
ft == 2 ||
ft == 9 ||
ft == 15 ||
ft == 21 ) &&
1702 (63 <
ch &&
ch < 128)
1719 return (isEMBchannel(
id));
1725 return (barrel_ec(
id)==1);
1731 return isFCALchannel(
id);
1736 return isEMECchannel(
id);
1751 int ft = feedthrough(
id);
1752 return ( barrel_ec(
id)==1 &&
1774 int ft = feedthrough(
id);
1775 return ( barrel_ec(
id)==1 &&
1786 int bec= barrel_ec(
id);
1787 int ft = feedthrough(
id);
1789 return ( (
bec==0 && sl==15)
1791 (
bec==1 && sl==15 &&
1810 ( barrel_ec(
id)==1 &&
1811 (sl==3 || sl==4 || sl==12) &&
1818 ( barrel_ec(
id)==1 && sl==16 )
1820 ( barrel_ec(
id)==1 &&
ft==27 && sl==11 )
1843 int ft = feedthrough(
id);
1864 int ft = feedthrough(febId);
1865 return ( barrel_ec(febId)==1 &&
1876 return isEMECIW(
id);
1890 return m_feedthroughHashMax;
1895 return m_febHashMax;
1900 return m_channelHashMax;
1941 return (m_bec_impl.unpack(
id));
1947 return (m_feedthrough_impl.unpack(
id));
1953 return (m_side_impl.unpack(
id));
1960 return (m_slot_impl.unpack(
id));
1966 return (m_channel_in_slot_impl.unpack(
id));
1972 return (m_slar_impl.unpack(
id));
1981 unsigned int nids=0;
1982 std::set<HWIdentifier>
ids;
1986 for (
const auto & exp_id : rit) {
1992 if(!(
ids.insert(
id)).second) {
1994 log << MSG::WARNING <<
" LArOnlineID_Base::init_calib_Hashes "
1995 <<
" Error: duplicated id for channel id. nids= " << nids
1998 std::cout <<
" LArOnlineID_Base::init_calib_Hashes "
1999 <<
" Error: duplicated id for channel id. nids= " << nids
2008 unsigned int nidtb=0;
2009 std::set<HWIdentifier>::const_iterator
first =
ids.begin();
2010 std::set<HWIdentifier>::const_iterator last =
ids.end();
2011 for (;
first != last && nidtb < nids; ++
first) {
2024 for (
const auto & exp_id : rit) {
2029 if(!(
ids.insert(febId)).second){
2031 log << MSG::WARNING <<
" LArOnlineID_Base::init_calibhashes "
2032 <<
" Warning: duplicated id for feb id. nids= " << nids
2035 std::cout <<
" LArOnlineID_Base::init_calibhashes "
2036 <<
" Error: duplicated id for feb id. nids= " << nids
2040 std::cout << std::endl;
2050 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)
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
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.
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.
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.
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
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
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
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
bool isPS(const HWIdentifier id) const
MultiRange m_full_calib_module_range
LArOnlineID_Base(void)
Default constructor.
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
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