26#include "GaudiKernel/SystemOfUnits.h"
45 ATH_MSG_ERROR(
"Configuration problem: 'addDeadOTX' set, but no missing FEB container given." );
46 return StatusCode::FAILURE;
67 return StatusCode::SUCCESS;
75 const EventContext& ctx)
const
78 ATH_MSG_ERROR(
"Called with a CaloCellContainer with wrong ownership policy! Need a VIEW container!" );
79 return StatusCode::FAILURE;
86 return StatusCode::FAILURE;
89 const size_t nRawChannels=rawColl->size();
90 if (nRawChannels==0) {
92 return StatusCode::SUCCESS;
98 unsigned nCellsAdded=0;
99 std::bitset<CaloCell_ID::NSUBCALO> includedSubcalos;
101 if (!theCellContainer->
empty()) {
103 theCellContainer->
clear();
119 if( cabling->isOnlineConnectedFromHash(onlHash)) {
120 const IdentifierHash oflHash= cabling->oflHashFromOnlHash(onlHash);
129 rawChan.time()*Gaudi::Units::picosecond/Gaudi::Units::nanosecond,
131 rawChan.provenance(),
134 if ((*theCellContainer)[oflHash]) {
136 << oflHash <<
" online ID=0x" << std::hex
140 (*theCellContainer)[oflHash] = pCell;
142 includedSubcalos.set(
m_caloCID->sub_calo(oflHash));
148 unsigned nMissingButPresent=0;
159 const int chansPerFeb=
m_onlineID->channelInSlotMax(febId);
160 for (
int ch=0; ch<chansPerFeb; ++ch) {
162 if ( cabling->isOnlineConnected(hwid)) {
163 const Identifier id=cabling->cnvToIdentifier(hwid);
176 if ((*theCellContainer)[hashid]) {
177 ++nMissingButPresent;
178 ATH_MSG_DEBUG(
"The supposedly missing channel with online ID=0x" << std::hex
181 <<
" is actually present in the LArRawChannel container");
184 (*theCellContainer)[hashid]=pCell;
186 includedSubcalos.set(
m_caloCID->sub_calo(hashid));
196 if (includedSubcalos.test(iCalo))
200 if (nMissingButPresent)
202 <<
" supposedly missing channels where present in the LArRawChannelContainer" );
207 theCellContainer->
erase(end1,theCellContainer->
end());
211 ATH_MSG_DEBUG(
"All " << nCellsAdded <<
" cells filled (no holes)");
213 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Definition of CaloDetDescrManager.
Definition of CaloDetDescriptor.
Handle class for reading from StoreGate.
Container class for CaloCell.
void setHasCalo(const CaloCell_ID::SUBCALO caloNum)
set which calo has been filled.
CaloCell_Base_ID::SUBCALO SUBCALO
This class groups all DetDescr information related to a CaloCell.
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
This class provides the client interface for accessing the detector description information common to...
a typed memory pool that saves time spent allocation small object.
void resize(size_type sz)
Resizes the collection to the specified number of elements.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
iterator erase(iterator position)
Remove element at a given position.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
SG::OwnershipPolicy ownPolicy() const
Return the ownership policy setting for this container.
size_type size() const noexcept
Returns the number of elements in the collection.
void clear()
Erase all the elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
value_type get_compact() const
Get the compact id.
This is a "hash" representation of an Identifier.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
bool deadAll() const
FEB is completely missing, e.g. powered off.
bool deactivatedInOKS() const
Deactivated in OKS.
bool deadReadout() const
FEB is not sending readout data, but the L1 trigger path is working.
std::vector< BadChanEntry > BadChanVec
std::pair< ChanId_t, LArBadFeb > BadChanEntry
Data object for LAr calorimeter readout cell.
Liquid Argon ROD output object base class.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
@ OWN_ELEMENTS
this data object owns its elements
DataModel_detail::iterator< DVL > remove(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, const T &value)
Specialization of remove for DataVector/List.