|
ATLAS Offline Software
|
Go to the documentation of this file.
8 #ifndef LARBYTESTREAM_LARRODDECODER_H
9 #define LARBYTESTREAM_LARRODDECODER_H
17 #include "GaudiKernel/ToolHandle.h"
43 #include "eformat/Version.h"
44 #include "eformat/Issue.h"
138 const IInterface*
parent ) ;
206 std::unique_ptr<LArRodBlockStructure>
208 unsigned int rodMinorVersion)
const;
273 msg(MSG::WARNING) <<
"Exception while checking eformat fragment validity: " << ex.what() <<
endmsg;
299 ATH_MSG_VERBOSE(
"Prepare LArRodBlockStructure. Got a fragment of size " <<
n);
308 msg(MSG::ERROR) <<
"Got truncated ROD Fragment!" <<
endmsg;
315 eformat::helper::Version
ver(robFrag.rod_version());
317 const uint32_t rBT_present=robFrag.rod_detev_type()&0xff;
320 if ( !providedRodBlockStructure || (rodMinorVersion!=rMV_present) || (robBlockType!=rBT_present) ){
327 providedRodBlockStructure = BlStruct;
328 rodMinorVersion = rMV_present;
329 robBlockType = rBT_present;
330 }
else BlStruct = providedRodBlockStructure;
334 (*ii)->setEnergyFast(0.0);
344 if(!BlStruct->
setGain(calogain)){
354 ATH_MSG_DEBUG(
"Bad FebID=0x"<< std::hex << BlStruct->
getFEBID() << std::dec <<
" found for this FEB, skipping it!");
365 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
366 msg(MSG::WARNING) <<
" online checksum = 0x" << MSG::hex << onsum <<
endmsg;
367 msg(MSG::WARNING) <<
" offline checksum = 0x" << MSG::hex << offsum << MSG::dec <<
endmsg;
378 int NthisFebChannel=128 ;
382 if (fcNb>=NthisFebChannel)
continue;
383 collElem = coll[fcNb+nfeb];
386 if ( quality>=0 ) { iprovenance|= 0x2000; iquality=(quality& 0xffff);}
398 unsigned int collection_size = coll.
size();
399 if ( feb_number== 0 && collection_size>0 )
error |= 0x20;
400 if ( feb_number== 1 && collection_size !=128 )
error |= 0x20;
401 if ( feb_number== 2 && collection_size !=256 )
error |= 0x20;
Property holding a SG store/key/clid from which a ReadHandle is made.
Holds partial energy sums Ex,Ey,Ez for each Feb.
virtual uint32_t hasPhysicsBlock() const
LArRodDecoder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor Standard AlgTool constructor.
std::vector< unsigned int > m_vFinalPreselection
virtual int setGain(const int GainValue)
void set(const CaloDetDescrElement *caloDDE, const Identifier &ID)
Fast method to change the identity of a cell.
Container class for LArAccumulatedDigit.
const LArOnlineID * m_onlineHelper
SG::ReadHandleKey< xAOD::EventInfo > m_evt
std::vector< std::string > m_LArCellCorrNames
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
void writeFebInfo(LArCellCollection &m_coll, LArFebEnergy &febene) const
static const InterfaceID & interfaceID()
#define ATH_MSG_VERBOSE(x)
std::vector< unsigned int > m_IgnoreCheckFEBs
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
value_type get_compact() const
Get the compact id.
std::vector< int > m_vPosNegPreselection
virtual uint32_t offlineCheckSum() const
std::vector< int > m_vFTPreselection
Container class for LArCalibDigit.
void addfebenergy(LArFebEnergy &larfebenergy)
set the feb energy
std::unique_ptr< LArRodBlockStructure > makeBlockStructure(unsigned int rodBlockType, unsigned int rodMinorVersion) const
SG::SlotSpecificObj< std::vector< std::unique_ptr< LArRodBlockStructure > > > m_blstructs ATLAS_THREAD_SAFE
Maintain a set of objects, one per slot.
(Non-const) Iterator class for DataVector/DataList.
::StatusCode StatusCode
StatusCode definition for legacy code.
virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE() override
virtual ~LArRodDecoder()
Destructor.
uint32_t getFEBID() const
bool check_valid(const T *frag, MsgStream &log) const
std::vector< int > m_vBEPreselection
Container Class for LArCell in a ROB used by EF.
void fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArRawChannelContainer &coll, const CaloGain::CaloGain gain) const
bool report_error(void) const
void setCellEnergy(LArCell *element, int energy, int time, int quality, CaloGain::CaloGain gain) const
Data object for LAr calorimeter readout cell.
float m_LArCellEthreshold
This class provides conversion between ROD data and LArRawChannels.
uint32_t fillCollectionHLT(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArCellCollection &coll, LArRodBlockStructure *&providedRodBlockStructure, uint16_t &rodMinorVersion, uint32_t &robBlockType) const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
LArRodBlockStructure * prepareBlockStructure(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, const CaloGain::CaloGain RequestedGain) const
def time(flags, cells_name, *args, **kw)
bool setFragment(const uint32_t *p, uint32_t n)
Container class for LArDigit.
Maintain a set of objects, one per slot.
virtual uint32_t onlineCheckSum() const
unsigned short m_requiredPhysicsNSamples
LArRodBlockStructure * prepareBlockStructure1(const uint16_t rodMinorVersion, const uint32_t robBlockType) const
Define macros for attributes used to control the static checker.
Container class for LArAccumulatedCalibDigit.
size_type size() const noexcept
Returns the number of elements in the collection.
std::vector< const CaloCellCorrection * > m_LArCellCorrTools
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Container for LArRawChannel (IDC using LArRawChannelCollection)
void setsecfeb(HWIdentifier feb)