14#ifndef LARBYTESTREAM_LARLATOMEDDECODER_H
15#define LARBYTESTREAM_LARLATOMEDDECODER_H
17#define N_LATOME_CHANNELS 320
30#include "eformat/Version.h"
31#include "eformat/Issue.h"
35#include "eformat/index.h"
80 virtual StatusCode
finalize() {
return StatusCode::SUCCESS;};
115 std::vector<unsigned long long>
sum;
116 std::vector<unsigned long long>
sumSq;
156 unsigned int decodeTrailer(
const uint32_t* p,
unsigned int offset);
157 unsigned int decodeHeader(
const uint32_t* p,
unsigned int offset);
161 void decodeByte(
unsigned int&
byte,
unsigned int wordshift,
unsigned int byteshift,
const uint32_t* p);
162 void decodeWord(
unsigned int& word,
unsigned int& wordshift,
unsigned int& byteshift,
const uint32_t* p);
163 void decodeChannel(
unsigned int& wordshift,
unsigned int& byteshift,
const uint32_t* p,
165 unsigned int& at0Data,
unsigned int& at1Data,
unsigned int& satData,
166 bool& at0val,
bool& at1val);
259 BooleanProperty
m_protectSourceId{
this,
"ProtectSourceId",
true,
"discard main readout sourceID, should be false for reading all files from the mon path with old source IDs"};
const boost::regex re(r_e)
std::vector< double > Energy
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
Container class for LArAccumulatedCalibDigit.
Container class for LArAccumulatedDigit.
Container class for LArDigit.
int signEnergy(unsigned int energy)
static const Word m_monTrailerSize
some cached info to ease processing reading from data header
std::vector< LatomeCalibPatterns > m_latomeCalibPatternsInEvent
LArRawSCContainer * m_et_id_coll
unsigned int Word
this should be the same as how we get the data, otherwise we will have bugs.
LArLATOMEHeaderContainer * m_header_coll
EventProcess(const LArLATOMEDecoder *decoderInput, LArDigitContainer *adc_coll, LArDigitContainer *adc_bas_coll, LArRawSCContainer *et_coll, LArRawSCContainer *et_id_coll, LArAccumulatedDigitContainer *accdigits, LArAccumulatedCalibDigitContainer *caccdigits, LArLATOMEHeaderContainer *header_coll)
void decodeChannel(unsigned int &wordshift, unsigned int &byteshift, const uint32_t *p, MonDataType at0, MonDataType at1, unsigned int &at0Data, unsigned int &at1Data, unsigned int &satData, bool &at0val, bool &at1val)
void decodeByte(unsigned int &byte, unsigned int wordshift, unsigned int byteshift, const uint32_t *p)
void fillCalib(const LArLATOMEMapping *map, const LArOnOffIdMapping *onoffmap, const LArCalibLineMapping *clmap)
LArAccumulatedDigitContainer * m_accdigits
const LArLATOMEDecoder * m_decoder
unsigned int bytesPerChannel(MonDataType at0, MonDataType at1)
LArDigitContainer * m_adc_bas_coll
LArAccumulatedCalibDigitContainer * m_caccdigits
bool compareOrSet(Word ¶m, Word value, bool compare)
void fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment *pROB, const LArLATOMEMapping *map, const LArOnOffIdMapping *onoffmap=nullptr, const LArCalibLineMapping *clmap=nullptr)
Execute decoding for an event.
void fillRaw(const LArLATOMEMapping *map)
Pass ADC values from an event.
static const Word s_monHeaderMarker
this is fixed and not read from data
std::vector< LatomeRawData > m_rawValuesInEvent
std::vector< LatomeAveragedRawData > m_averagedRawValuesInEvent
unsigned int decodeHeader(const uint32_t *p, unsigned int offset)
static const Word s_monCheckPoint
std::vector< unsigned short > m_BCIDsInEvent
void increaseByteShift(unsigned int &wordshift, unsigned int &byteshift)
LArRawSCContainer * m_et_coll
void decodeWord(unsigned int &word, unsigned int &wordshift, unsigned int &byteshift, const uint32_t *p)
LArDigitContainer * m_adc_coll
void increaseWordShift(unsigned int &wordshift)
std::vector< Word > m_packetEnd
unsigned int decodeTrailer(const uint32_t *p, unsigned int offset)
std::vector< unsigned long long > sum
std::vector< unsigned long long > sumSq
unsigned int latomeChannel
std::vector< unsigned int > nTrigValid
std::vector< unsigned int > patterns
4th bit should be this value if the word indicate ADC value.
unsigned int latomeChannel
std::vector< bool > saturation
std::vector< short > adc_bas
static const InterfaceID & interfaceID()
BooleanProperty m_keepPulsed
StatusCode convert(const std::vector< const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment * > &robFrags, const LArLATOMEMapping *map, LArDigitContainer *adc_coll, LArDigitContainer *adc_bas_coll, LArRawSCContainer *et_coll, LArRawSCContainer *et_id_coll, LArLATOMEHeaderContainer *header_coll) const
Converter.
LArLATOMEDecoder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
virtual StatusCode initialize()
Initialize the converter.
virtual StatusCode finalize()
Finalize the converter.
BooleanProperty m_ignoreBarrelChannels
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKeySC
virtual ~LArLATOMEDecoder()=default
Destructor.
const LArOnline_SuperCellID * m_onlineId
static const int s_nBunches
Maximum value of BCID.
ToolHandle< ICaloSuperCellIDTool > m_sc2ccMappingTool
BooleanProperty m_ignoreEndcapChannels
BooleanProperty m_protectSourceId
class to provide SC mapping
Container class for LArRawSC.
eformat::ROBFragment< PointerType > ROBFragment
Macro to mark a member as unused.