|
ATLAS Offline Software
|
Go to the documentation of this file.
31 m_groupType(SubDetectorGrouping),
32 m_onlineHelper(nullptr),
33 m_offlineHelper(nullptr),
34 m_isInitialized(false)
40 m_onlineHelper(nullptr),
41 m_offlineHelper(nullptr),
42 m_isInitialized(false)
85 return (StatusCode::SUCCESS);
99 if (groupingStr ==
"Single")
101 return StatusCode::SUCCESS;
103 else if (groupingStr ==
"SubDetector")
105 return StatusCode::SUCCESS;
107 else if (groupingStr ==
"ExtendedSubDetector")
109 return StatusCode::SUCCESS;
111 else if (groupingStr ==
"FeedThrough")
113 return StatusCode::SUCCESS;
115 else if (groupingStr ==
"ExtendedFeedThrough") {
117 return StatusCode::SUCCESS;
119 else if (groupingStr ==
"SuperCells") {
121 return StatusCode::SUCCESS;
124 logStr << MSG::ERROR <<
"Unknown COOL Channel Grouping '"<< groupingStr <<
"'. Allowed values are:" <<
endmsg;
125 logStr << MSG::ERROR <<
"'Single','SubDetector', 'ExtendedSubDetector','FeedThrough','ExtendedFeedThrough'" <<
endmsg;
126 return StatusCode::FAILURE;
139 log << MSG::ERROR <<
"Unknown grouping "<<
endmsg;
151 for (; febIt != febEnd; ++febIt) {
152 febIds.push_back((*febIt).get_identifier32().get_compact());
155 unsigned int nChanPerGain = 1;
156 unsigned int minGain = 0;
157 unsigned int nGains = 3;
174 for (; febIt != febEnd; ++febIt) {
175 unsigned int febId = (*febIt).get_identifier32().get_compact();
177 emBarrel.push_back(febId);
180 emEndcap.push_back(febId);
183 hec.push_back(febId);
186 fcal.push_back(febId);
190 << MSG::hex << (febId) << MSG::dec
197 unsigned int nChanPerGain = 4;
198 unsigned int minGain = 0;
199 unsigned int nGains = 3;
252 for (; febIt != febEnd; ++febIt) {
255 if(iside <0 || iside > 1) {
256 log << MSG::ERROR <<
"Wrong side id: "<< iside <<
" from: "
257 << MSG::hex << *febIt << MSG::dec <<
endmsg;
258 return (StatusCode::FAILURE);
260 unsigned int febId = (*febIt).get_identifier32().get_compact();
262 emBarrelPS[iside].push_back(febId);
265 emEndcapPS[iside].push_back(febId);
268 emBarrel[iside].push_back(febId);
271 emEndcap[iside].push_back(febId);
274 hec[iside].push_back(febId);
277 fcal[iside].push_back(febId);
281 << MSG::hex << (febId) << MSG::dec
288 unsigned int nChanPerGain = 12;
289 unsigned int minGain = 0;
290 unsigned int nGains = 3;
292 for (
int iside=0; iside<2; ++iside) {
312 for (; febIt != febEnd; ++febIt) {
320 if (fthash <
ft.size()) {
324 log << MSG::ERROR <<
"Feedthru hash > channel map size: id, hash, size "
325 << MSG::hex << febId << MSG::dec <<
" "
326 << ftid <<
" " <<
ft.size()
328 return (StatusCode::FAILURE);
332 unsigned int nChanPerGain =
ft.size();
333 unsigned int minGain = 0;
334 unsigned int nGains = 3;
336 for (
unsigned int i = 0;
i <
ft.size(); ++
i) {
342 log <<
MSG::DEBUG <<
"Extended FeedThrough grouping (PS goes seperatly, EMEC in HEC as well)"<<
endmsg;
354 std::vector<LArCondFEBIdChanMap::FEBIdVector> ftSpecial(8);
356 for (; febIt != febEnd; ++febIt) {
366 if (fthash >=
ft.size()) {
367 log << MSG::ERROR <<
"Feedthru hash > channel map size: id, hash, size "
368 << MSG::hex << febId << MSG::dec <<
" "
369 << ftid <<
" " <<
ft.size()
371 return (StatusCode::FAILURE);
411 unsigned int nChanPerGain =
ft.size()+ftPS.size()+ftSpecial.size();
412 unsigned int minGain = 0;
413 unsigned int nGains = 3;
414 unsigned int iCoolChannel=0;
416 for (
unsigned int i = 0;
i <
ft.size(); ++
i) {
419 for (
unsigned int i = 0;
i < ftPS.size(); ++
i) {
422 for (
unsigned int i = 0;
i < ftSpecial.size(); ++
i) {
427 return StatusCode::FAILURE;
453 return (StatusCode::SUCCESS);
465 return (
"SingleGroup");
467 return (
"SubDetectorGrouping");
469 return (
"FeedThroughGrouping");
471 return (
"ExtendedFTGrouping");
473 return (
"ExtendedSubDetGrouping");
475 return (
"SuperCells");
495 unsigned int coolChannel)
const
504 unsigned int& coolChannel)
512 log << MSG::ERROR <<
"correctionIndex> Could not get online id helper!" <<
endmsg;
543 log << MSG::ERROR <<
"correctionIndex> coolChannel not found! Online ids: "
551 coolChannel += gainOffset;
555 log << MSG::ERROR <<
"correctionIndex> coolChannel larger than lookup table: chan, size "
571 static std::atomic<bool> applyCorrs =
true;
size_type feedthroughHashMax(void) const
Define feedthrough hash tables max size.
unsigned int totalChannels() const
Total number of channels for all gains and includes special offset channels.
void setGroupingType(GroupingType type)
allow group type to be set externally - need to (re)initialize after setting grouping type
const FEBIdVector & febIdVector(unsigned int gain, unsigned int coolChannel) const
Access to a FEB ID vector for a given gain and COOL channel.
LArCondFEBIdChanMap::FEBIdVector FEBIdVector
unsigned int channelsPerGain() const
Number of cool channels per gain.
This file contain an implementation base class for LArConditionsContainer.
StatusCode initializeBase()
initialize
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
id_iterator feb_begin() const
Returns an iterator pointing to a feb identifier collection.
StatusCode initGrouping()
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
unsigned int nOffsetChannels() const
Number of offset channels - i.e. correction channels.
value_type get_compact() const
Get the compact id.
IMessageSvc * getMessageSvc(bool quiet=false)
void correctionIndexAndCoolChannel(HWIdentifier id, unsigned int gain, unsigned int &index, unsigned int &coolChannel)
bool isFCALchannel(const HWIdentifier id) const
unsigned int minGain() const
Mininum gain value.
IdentifierHash feedthrough_Hash(HWIdentifier feedthroughId) const
Create hash id from feedthrough identifiers.
GroupingType
Grouping type.
Helper class for offline supercell identifiers.
virtual bool isHECchannel(const HWIdentifier id) const =0
::StatusCode StatusCode
StatusCode definition for legacy code.
bool isEMECPS(const HWIdentifier id) const
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...
Helper class for offline supercell identifiers.
#define CHECK(...)
Evaluate an expression and check for errors.
Helper class for offline cell identifiers.
const LArOnlineID_Base * m_onlineHelper
void setFlag(TrigPassFlags *flags, const T *obj, const CONTAINER *container, const std::vector< bool > &flag)
Set the flag at index position.
const FEBIdVector & febIdVector(unsigned int gain, unsigned int coolChannel) const
Access to a FEB ID vector for a given gain and COOL channel.
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
std::string groupingTypeToString() const
id_iterator feb_end() const
LArConditionsContainerBase()
Default constructor.
Helper for the Liquid Argon Calorimeter cell identifiers.
std::vector< unsigned int > m_channelToMultChanCollIndex
virtual bool isEMECchannel(const HWIdentifier id) const =0
Helpers for checking error return status codes and reporting errors.
const CaloCell_Base_ID * m_offlineHelper
bool isCalibration(const HWIdentifier id) const
bool isEMBchannel(const HWIdentifier id) const
std::vector< FEBId > FEBIdVector
unsigned int nGains() const
Number of gain values.
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
void addFEBIdVector(unsigned int channel, const FEBIdVector &febIdVec)
Add in a FEBIdVector - channel number should be from 0 to NChannelsPerGain-1
bool isEMBPS(const HWIdentifier id) const
This class maps FEB IDs to/from COOL channel ids.
bool isPS(const HWIdentifier id) const
const CaloCell_Base_ID * offlineHelper() const
provide access to offline id helper
LArCondFEBIdChanMap m_febIdChanMap
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Helper base class for offline cell identifiers.
virtual ~LArConditionsContainerBase()
destructor
static bool applyCorrectionsAtInit(bool setFlag=false, bool flag=true)
provide access to flag which determines corrections are applied at initialize, i.e.
bool isEMECinHECchannel(const HWIdentifier id) const
const LArOnlineID_Base * onlineHelper() const
provide access to online id helper
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.