![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
|
typedef unsigned int | Word |
| this should be the same as how we get the data, otherwise we will have bugs. More...
|
|
typedef int | NumWord |
|
typedef int | Packet |
|
typedef int | SuperCell |
|
typedef int | Sample |
|
typedef std::string | Path |
|
|
| 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 | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment *pROB, const LArLATOMEMapping *map, const LArOnOffIdMapping *onoffmap=nullptr, const LArCalibLineMapping *clmap=nullptr) |
| Execute decoding for an event. More...
|
|
bool | msgLvl (const MSG::Level lvl) const |
| Test the output level. More...
|
|
MsgStream & | msg () const |
| The standard message stream. More...
|
|
MsgStream & | msg (const MSG::Level lvl) const |
| The standard message stream. More...
|
|
void | setLevel (MSG::Level lvl) |
| Change the current logging level. More...
|
|
|
bool | compareOrSet (Word ¶m, Word value, bool compare) |
|
unsigned int | decodeTrailer (const uint32_t *p, unsigned int offset) |
|
unsigned int | decodeHeader (const uint32_t *p, unsigned int offset) |
|
unsigned int | bytesPerChannel (MonDataType at0, MonDataType at1) |
|
void | increaseWordShift (unsigned int &wordshift) |
|
void | increaseByteShift (unsigned int &wordshift, unsigned int &byteshift) |
|
void | decodeByte (unsigned int &byte, unsigned int wordshift, unsigned int byteshift, const uint32_t *p) |
|
void | decodeWord (unsigned int &word, unsigned int &wordshift, unsigned int &byteshift, const uint32_t *p) |
|
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) |
|
int | signEnergy (unsigned int energy) |
|
void | fillRaw (const LArLATOMEMapping *map) |
| Pass ADC values from an event. More...
|
|
void | fillCalib (const LArLATOMEMapping *map, const LArOnOffIdMapping *onoffmap, const LArCalibLineMapping *clmap) |
|
void | fillHeader () |
|
void | initMessaging () const |
| Initialize our message level and MessageSvc. More...
|
|
Definition at line 129 of file LArLATOMEDecoder.h.
◆ NumWord
◆ Packet
◆ Path
◆ Sample
◆ SuperCell
◆ Word
this should be the same as how we get the data, otherwise we will have bugs.
use reinterpret_cast later to properly interpret the bit in other format if needed.
Definition at line 133 of file LArLATOMEDecoder.h.
◆ MODE
◆ EventProcess()
◆ bytesPerChannel()
◆ compareOrSet()
bool LArLATOMEDecoder::EventProcess::compareOrSet |
( |
Word & |
param, |
|
|
Word |
value, |
|
|
bool |
compare |
|
) |
| |
|
private |
◆ decodeByte()
void LArLATOMEDecoder::EventProcess::decodeByte |
( |
unsigned int & |
byte, |
|
|
unsigned int |
wordshift, |
|
|
unsigned int |
byteshift, |
|
|
const uint32_t * |
p |
|
) |
| |
|
private |
◆ decodeChannel()
void LArLATOMEDecoder::EventProcess::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 |
|
) |
| |
|
private |
now that we have the basic words we can rearrange the bits in case it is energy, ADC do not need further arrangement this is assuming energy lsb is at bit[0-2] and energy-id at [5-7]. Make sure this is the case for all recipe in the firmware. assumptions are in https://its.cern.ch/jira/browse/LDPBFW-2976
Definition at line 367 of file LArLATOMEDecoder.cxx.
377 bool satByte = nbytesPerChannel%2;
383 unsigned int satData=0;
386 unsigned int word1=0;
387 unsigned int word2=0;
389 if(nbytesPerChannel>3){
392 at0Data =
word1 & 0x7fff;
393 at0val =
word1 & 0x8000;
394 if(nbytesPerChannel>3){
395 at1Data = word2 & 0x7fff;
396 at1val = word2 & 0x8000;
408 at0Data = (at0Data<<3) | (satData&0x7);
409 at1Data = (at1Data<<3) | ((satData&0x70)>>4);
410 saturation = ((satData & 0x88) == 0x88);
413 at0Data = (at0Data<<3) | ((satData&0x70)>>4);
414 at1Data = (at1Data<<3) | (satData&0x7);
415 saturation = ((satData & 0x88) == 0x88);
419 at0Data = (at0Data<<3) | (satData&0x7);
420 saturation = (satData & 0x20);
423 at1Data = (at1Data<<3) | (satData&0x7);
424 saturation = (satData & 0x20);
◆ decodeHeader()
unsigned int LArLATOMEDecoder::EventProcess::decodeHeader |
( |
const uint32_t * |
p, |
|
|
unsigned int |
offset |
|
) |
| |
|
private |
now these are taken from the ROD header but the word are still here (maybe we will use them for something else)
Definition at line 224 of file LArLATOMEDecoder.cxx.
227 int monheadererror=0;
228 int monheadererrorbit=0;
233 ATH_MSG_DEBUG(
"Mon header L1ID " << l1IDtmp <<
" different from rod header L1ID " <<
m_l1ID );
240 monheadererror |= (1<<monheadererrorbit++);
244 monheadererror |= (1<<monheadererrorbit++);
278 monheadererrorbit+=2;
308 ATH_MSG_WARNING(
" consistency error in mon checker at packet " <<
m_iPacket <<
" errorbits " << std::hex<< monheadererror << std::dec );
◆ decodeTrailer()
unsigned int LArLATOMEDecoder::EventProcess::decodeTrailer |
( |
const uint32_t * |
p, |
|
|
unsigned int |
offset |
|
) |
| |
|
private |
for now the trailerhas only 2 fixed words, just check them
fixed shift for now but in case we get a dynamic trailer (hopefully not)
Definition at line 213 of file LArLATOMEDecoder.cxx.
215 if(bswap_32(
p[
offset])!=0xc0ffee00 || bswap_32(
p[
offset+1]!=0xaaaaaaaa)){
217 <<
" words " << std::hex << bswap_32(
p[
offset]) <<
", "
218 << bswap_32(
p[
offset+1]) << std::dec );
◆ decodeWord()
void LArLATOMEDecoder::EventProcess::decodeWord |
( |
unsigned int & |
word, |
|
|
unsigned int & |
wordshift, |
|
|
unsigned int & |
byteshift, |
|
|
const uint32_t * |
p |
|
) |
| |
|
private |
◆ fillCalib()
accumulated calib digits requested so decode dac and delay from headers
scale to the min nt since we have only one nt per channel and not by sample as with raw data
for loop on SCs
Definition at line 845 of file LArLATOMEDecoder.cxx.
852 std::unique_ptr<LArCalibParams> calibParams1;
853 std::unique_ptr<LArCalibParams> calibParams2;
856 const LArOnOffIdMapping*
cabling =0;
867 calibParams1=std::make_unique<LArCalibParams>();
868 calibParams2=std::make_unique<LArCalibParams>();
870 if (pattype > 0x48) {
873 if (sc1 != StatusCode::SUCCESS || sc2 != StatusCode::SUCCESS) {
874 ATH_MSG_WARNING(
"could not initialize LArCalibParams, acc calib will not be filled ");
877 if (pattype == 0x49 || pattype == 0x4a) {
890 if (sc1 != StatusCode::SUCCESS) {
891 ATH_MSG_WARNING(
"could not initialize LArCalibParams, acc calib will not be filled ");
898 const HWIdentifier hwidEmpty;
902 if (SCID == hwidEmpty) {
909 std::vector<uint64_t>
sum;
910 std::vector<uint64_t> sum2;
911 unsigned int ntmin=9999999;
925 sum2[is]=
round(fsum2);
934 if (pattype == 0x49 || pattype == 0x4a) {
936 calibParams = calibParams1.get();
938 calibParams = calibParams2.get();
940 }
else if (pattype == 0x4b || pattype == 0x4c) {
942 calibParams = calibParams1.get();
944 calibParams = calibParams2.get();
947 calibParams = calibParams1.get();
949 unsigned int eventNb = 0;
950 unsigned int numCL = 0;
951 unsigned int numPulsedLeg = 0;
952 std::vector<Identifier> ccellIds(0);
953 Identifier myofflineID =
cabling->cnvToIdentifier(SCID);
955 for (Identifier
id : ccellIds) {
956 HWIdentifier cellLegHWID = cablingLeg->createSignalChannelID(
id);
957 const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine(cellLegHWID);
958 numCL += calibLineLeg.size();
959 for (HWIdentifier calibLineHWID : calibLineLeg) {
960 if (calibParams->
isPulsed(eventNb, calibLineHWID)) {
966 isPulsed_value =
true;
967 if (numPulsedLeg != numCL) {
970 isPulsed_value =
false;
972 DAC_value = calibParams->
DAC(eventNb, SCID) * numPulsedLeg;
982 DAC_value = DAC_value / 1.363;
985 DAC_value = DAC_value / 1.206;
991 delay_value = calibParams->
Delay(eventNb, SCID);
◆ fillCollection()
Execute decoding for an event.
some of this info should be used in the LatomeHeader class and for cross checks also (same as for the mon header)
this is an empty fragment, skip it
not we have the packet size from the first packet, check all packet headers before decoding we can decide later if we drop decoding if we have inconsistency
OK all headers checked and we have all info we need to decode each packet, so lets start
for now just getting the ADCs from AT0 Change later to add energy as well and use the BC shift to determine at which BC there is energy
recipe does not have at1, set at1 mux to invalid
lets start from here
start of packet, bcid still unvalid / should increase by one but take care of rotation at s_nBunches;
the data is packed with 64 bits words. Will be padded with 0s at the end of the timeslot time slot.
lets fill now, using the older code structure but this should be change to support having energy.
Loop over SC
Loop over time slots
Loop over BC
Definition at line 432 of file LArLATOMEDecoder.cxx.
439 const unsigned int sourceID = robFrag->rob_source_id();
447 m_l1ID = robFrag->rod_lvl1_id();
450 const unsigned int n = robFrag->rod_ndata();
457 const uint32_t *rod_status = robFrag->rod_status();
458 const unsigned int rod_nstatus = robFrag->rod_nstatus();
459 if(rod_nstatus != 27){
460 ATH_MSG_WARNING(
"Inconsistent number of rod header status elements: nstatus= " << rod_nstatus );
470 LatomeCalibPatterns pat1, pat2, pat3;
471 pat1.DAC=rod_status[9];
472 pat1.delay=rod_status[10];
473 pat1.patterns.resize(4);
474 for(
unsigned int i=0;
i<4; ++
i)pat1.patterns[
i]=rod_status[
i+11];
476 pat2.DAC=rod_status[15];
477 pat2.delay=rod_status[16];
478 pat2.patterns.resize(4);
479 for(
unsigned int i=0;
i<4; ++
i)pat2.patterns[
i]=rod_status[
i+17];
481 pat3.DAC=rod_status[21];
482 pat3.delay=rod_status[22];
483 pat3.patterns.resize(4);
484 for(
unsigned int i=0;
i<4; ++
i)pat3.patterns[
i]=rod_status[
i+23];
488 const HWIdentifier hwidEmpty;
499 << std::hex <<
m_l1ID <<
" "<<sourceID << std::dec );
508 << std::hex <<
m_l1ID <<
" "<<sourceID << std::dec );
524 ATH_MSG_DEBUG(
" end of header check computed offset=" << std::dec
525 <<
offset <<
" nwords in payload=" <<
n );
536 std::vector<unsigned int> bc_size;
557 val.latomeChannel = 99999;
655 val.latomeChannel = 99999;
664 for(
short iBC=0;iBC<nBC; ++iBC){
673 unsigned int oldipacket=0;
674 for(
unsigned int itimeslot=0; itimeslot<6; ++itimeslot){
676 unsigned int l_bcid = (bswap_32(
p[
s]))>>16;
684 unsigned int bcid_c =
bcid+1;
690 if(bcid_c != l_bcid){
691 ATH_MSG_WARNING(
"ERROR: BCID not increasing properly between samples, L1ID is: " <<
m_l1ID <<
", BCID is from payload: " << l_bcid <<
", expected BCID is: " << bcid_c <<
", LATOME channel is: " << nsc );
698 unsigned int mux = ((bswap_32(
p[
s]))>>8)&0xff;
705 unsigned int timeslotsize = timeslot_nsc[itimeslot];
706 unsigned int nbytes = timeslotsize*nbytesPerChannel;
707 unsigned int n64word= nbytes/8;
708 if(nbytes%8) ++n64word;
710 <<
" " <<
bcid <<
" " <<
mux <<
" n64word " <<n64word
711 <<
" at0 " << (
int)at0 <<
" at1 " << (
int)at1 <<
" l_bcid " <<
bcid );
713 unsigned int wordshift=
s;
714 unsigned int byteshift=0;
719 unsigned int at0Data=0, at1Data=0, satData=0;
720 bool at0val=
false, at1val=
false;
724 at0Data, at1Data, satData, at0val, at1val);
725 ATH_MSG_DEBUG(
" wordshift " << wordshift <<
" byteshift " <<byteshift
726 <<
" at0data " << at0Data <<
" at1Data " << at1Data <<
" satData "
727 << satData <<
" at0val " << at0val <<
" at1val " << at1val
732 if (SCID == hwidEmpty) {
735 int RAWValue0 = -999;
737 ATH_MSG_DEBUG(
"at0 bad quality bit for SC:" << nsc <<
" BC " << iBC
738 <<
" latome " << robFrag->rod_source_id() );
743 int defaultADCValue=-1;
744 int defaultEValue=-99999;
767 int RAWValue1 = -999;
769 ATH_MSG_DEBUG(
"at1 bad quality bit for SC:" << nsc <<
" BC " << iBC
770 <<
" latome " << robFrag->rod_source_id() );
801 ATH_MSG_ERROR(
"inconsistant wordshift in decoding everaged data" );
804 unsigned int averageword=bswap_32(
p[wordshift]); wordshift+=1;
805 unsigned int sumSq=bswap_32(
p[wordshift]); wordshift+=1;
806 unsigned long long sumsqMSB = averageword>>28;
807 sumsqMSB=sumsqMSB<<32;
836 if(onoffmap && clmap) {
◆ fillHeader()
void LArLATOMEDecoder::EventProcess::fillHeader |
( |
| ) |
|
|
private |
◆ fillRaw()
Pass ADC values from an event.
don't copy vectors for nothing
need to shift the BCID as well do it at the same time
Definition at line 1001 of file LArLATOMEDecoder.cxx.
1003 const HWIdentifier hwidEmpty;
1006 if (SCID == hwidEmpty) {
1015 std::vector<short> adcValues_inChannel_inEvent;
1025 std::vector<unsigned short> bcid_in_event;
1035 std::vector<unsigned short> bcid_in_event;
1048 std::vector<unsigned short> bcid_in_event;
1062 std::vector<unsigned short> bcid_in_event;
◆ increaseByteShift()
void LArLATOMEDecoder::EventProcess::increaseByteShift |
( |
unsigned int & |
wordshift, |
|
|
unsigned int & |
byteshift |
|
) |
| |
|
private |
◆ increaseWordShift()
void LArLATOMEDecoder::EventProcess::increaseWordShift |
( |
unsigned int & |
wordshift | ) |
|
|
private |
◆ initMessaging()
void AthMessaging::initMessaging |
( |
| ) |
const |
|
privateinherited |
Initialize our message level and MessageSvc.
This method should only be called once.
Definition at line 39 of file AthMessaging.cxx.
◆ msg() [1/2]
MsgStream & AthMessaging::msg |
( |
| ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 164 of file AthMessaging.h.
◆ msg() [2/2]
MsgStream & AthMessaging::msg |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 179 of file AthMessaging.h.
180 {
return msg() << lvl; }
◆ msgLvl()
bool AthMessaging::msgLvl |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
Test the output level.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ signEnergy()
int LArLATOMEDecoder::EventProcess::signEnergy |
( |
unsigned int |
energy | ) |
|
|
private |
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_accdigits
◆ m_activeSC
Word LArLATOMEDecoder::EventProcess::m_activeSC {} |
|
private |
◆ m_adc_bas_coll
◆ m_adc_coll
◆ m_at0BC
Word LArLATOMEDecoder::EventProcess::m_at0BC {} |
|
private |
◆ m_at0nBC
Word LArLATOMEDecoder::EventProcess::m_at0nBC {} |
|
private |
◆ m_at0type
Word LArLATOMEDecoder::EventProcess::m_at0type {} |
|
private |
◆ m_at0typeRec
Word LArLATOMEDecoder::EventProcess::m_at0typeRec {} |
|
private |
◆ m_at1BC
Word LArLATOMEDecoder::EventProcess::m_at1BC {} |
|
private |
◆ m_at1nBC
Word LArLATOMEDecoder::EventProcess::m_at1nBC {} |
|
private |
◆ m_at1type
Word LArLATOMEDecoder::EventProcess::m_at1type {} |
|
private |
◆ m_at1typeRec
Word LArLATOMEDecoder::EventProcess::m_at1typeRec {} |
|
private |
◆ m_averagedRawValuesInEvent
◆ m_BC_ADC
short LArLATOMEDecoder::EventProcess::m_BC_ADC {} |
|
private |
◆ m_BC_E
short LArLATOMEDecoder::EventProcess::m_BC_E {} |
|
private |
◆ m_BC_EID
short LArLATOMEDecoder::EventProcess::m_BC_EID {} |
|
private |
◆ m_BC_rawADC
short LArLATOMEDecoder::EventProcess::m_BC_rawADC {} |
|
private |
◆ m_BCIDsInEvent
std::vector<unsigned short> LArLATOMEDecoder::EventProcess::m_BCIDsInEvent |
|
private |
◆ m_caccdigits
◆ m_decoder
◆ m_et_coll
◆ m_et_id_coll
◆ m_hasAdc
bool LArLATOMEDecoder::EventProcess::m_hasAdc {} |
|
private |
◆ m_hasE
bool LArLATOMEDecoder::EventProcess::m_hasE {} |
|
private |
◆ m_hasEID
bool LArLATOMEDecoder::EventProcess::m_hasEID {} |
|
private |
◆ m_hasRawAdc
bool LArLATOMEDecoder::EventProcess::m_hasRawAdc {} |
|
private |
◆ m_header_coll
◆ m_headerDecoded
bool LArLATOMEDecoder::EventProcess::m_headerDecoded {} |
|
private |
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_iPacket
Word LArLATOMEDecoder::EventProcess::m_iPacket {} |
|
private |
◆ m_isAutoCorr
bool LArLATOMEDecoder::EventProcess::m_isAutoCorr {} |
|
private |
◆ m_isAveraged
bool LArLATOMEDecoder::EventProcess::m_isAveraged {} |
|
private |
◆ m_l1ID
Word LArLATOMEDecoder::EventProcess::m_l1ID {} |
|
private |
◆ m_latomeBCID
Word LArLATOMEDecoder::EventProcess::m_latomeBCID {} |
|
private |
◆ m_latomeCalibPatternsInEvent
◆ m_latomeID
Word LArLATOMEDecoder::EventProcess::m_latomeID {} |
|
private |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ m_monHeaderSize
Word LArLATOMEDecoder::EventProcess::m_monHeaderSize {} |
|
private |
◆ m_monTrailerSize
const Word LArLATOMEDecoder::EventProcess::m_monTrailerSize =2 |
|
staticprivate |
some cached info to ease processing reading from data header
Definition at line 181 of file LArLATOMEDecoder.h.
◆ m_msg_tls
boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls |
|
mutableprivateinherited |
MsgStream instance (a std::cout like with print-out levels)
Definition at line 132 of file AthMessaging.h.
◆ m_nBC_ADC
short LArLATOMEDecoder::EventProcess::m_nBC_ADC {} |
|
private |
◆ m_nBC_Averaged
short LArLATOMEDecoder::EventProcess::m_nBC_Averaged {} |
|
private |
◆ m_nBC_E
short LArLATOMEDecoder::EventProcess::m_nBC_E {} |
|
private |
◆ m_nBC_EID
short LArLATOMEDecoder::EventProcess::m_nBC_EID {} |
|
private |
◆ m_nBC_rawADC
short LArLATOMEDecoder::EventProcess::m_nBC_rawADC {} |
|
private |
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_nPackets
Word LArLATOMEDecoder::EventProcess::m_nPackets {} |
|
private |
◆ m_nsc1
Word LArLATOMEDecoder::EventProcess::m_nsc1 {} |
|
private |
◆ m_nsc2
Word LArLATOMEDecoder::EventProcess::m_nsc2 {} |
|
private |
◆ m_nsc3
Word LArLATOMEDecoder::EventProcess::m_nsc3 {} |
|
private |
◆ m_nsc4
Word LArLATOMEDecoder::EventProcess::m_nsc4 {} |
|
private |
◆ m_nsc5
Word LArLATOMEDecoder::EventProcess::m_nsc5 {} |
|
private |
◆ m_nsc6
Word LArLATOMEDecoder::EventProcess::m_nsc6 {} |
|
private |
◆ m_nStreams
Word LArLATOMEDecoder::EventProcess::m_nStreams {} |
|
private |
◆ m_nthLATOME
unsigned int LArLATOMEDecoder::EventProcess::m_nthLATOME = 0 |
|
private |
◆ m_nWordsPerPacket
Word LArLATOMEDecoder::EventProcess::m_nWordsPerPacket {} |
|
private |
◆ m_packetEnd
std::vector<Word> LArLATOMEDecoder::EventProcess::m_packetEnd |
|
private |
◆ m_rawValuesInEvent
std::vector<LatomeRawData> LArLATOMEDecoder::EventProcess::m_rawValuesInEvent |
|
private |
◆ m_region
Word LArLATOMEDecoder::EventProcess::m_region {} |
|
private |
◆ m_ROBFragSize
Word LArLATOMEDecoder::EventProcess::m_ROBFragSize {} |
|
private |
◆ m_streamNumber
Word LArLATOMEDecoder::EventProcess::m_streamNumber {} |
|
private |
◆ s_monCheckPoint
const Word LArLATOMEDecoder::EventProcess::s_monCheckPoint =0xdeadbeef |
|
staticprivate |
◆ s_monHeaderMarker
const Word LArLATOMEDecoder::EventProcess::s_monHeaderMarker =0xff1234ff |
|
staticprivate |
The documentation for this class was generated from the following files:
HWIdentifier getChannelID(const unsigned int sourceID, const unsigned int chan) const
create a HWIdentifier from an Identifier
std::atomic< MSG::Level > m_lvl
Current logging level.
Liquid Argon SuperCell raw data.
Data class for calibration ADC samples preprocessed by the DSP.
Extra patterns decribing particle interation process.
std::pair< int, int > compare(const AmgSymMatrix(N) &m1, const AmgSymMatrix(N) &m2, double precision=1e-9, bool relative=false)
compare two matrices, returns the indices of the first element that fails the condition,...
bool compareOrSet(Word ¶m, Word value, bool compare)
BooleanProperty m_ignoreBarrelChannels
LArRawSCContainer * m_et_coll
void setDelayScale(const double scale)
set the delay Scale
unsigned int Word
this should be the same as how we get the data, otherwise we will have bugs.
const LArOnline_SuperCellID * m_onlineId
std::vector< std::string > patterns
std::vector< unsigned short > m_BCIDsInEvent
float round(const float toRound, const unsigned int decimals)
int signEnergy(unsigned int energy)
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...
static const Word s_monHeaderMarker
this is fixed and not read from data
unsigned int bytesPerChannel(MonDataType at0, MonDataType at1)
std::vector< Word > m_packetEnd
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)
const std::string & key() const
Return the StoreGate ID for the referenced object.
void decodeWord(unsigned int &word, unsigned int &wordshift, unsigned int &byteshift, const uint32_t *p)
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
IMessageSvc * getMessageSvc(bool quiet=false)
#define N_LATOME_CHANNELS
fixed number of channels on one LATOME board
const LArLATOMEDecoder * m_decoder
LArLATOMEHeaderContainer * m_header_coll
LArDigitContainer * m_adc_coll
AthMessaging()
Default constructor:
bool isHECchannel(const HWIdentifier id) const override final
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Data class for ADC samples and autocorr preprocessed by the DSP.
static const Word m_monTrailerSize
some cached info to ease processing reading from data header
void decodeByte(unsigned int &byte, unsigned int wordshift, unsigned int byteshift, const uint32_t *p)
void increaseWordShift(unsigned int &wordshift)
LArAccumulatedCalibDigitContainer * m_caccdigits
::StatusCode StatusCode
StatusCode definition for legacy code.
static const Word s_monCheckPoint
BooleanProperty m_ignoreEndcapChannels
bool isPulsed(const unsigned event, const HWIdentifier calibLineID) const
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKeySC
void increaseByteShift(unsigned int &wordshift, unsigned int &byteshift)
LArRawSCContainer * m_et_id_coll
std::vector< LatomeRawData > m_rawValuesInEvent
unsigned int decodeTrailer(const uint32_t *p, unsigned int offset)
MsgStream & msg() const
The standard message stream.
Base class for LArDigits taken by LATOME.
unsigned DAC(const unsigned event, const HWIdentifier calibLineID) const
void fillCalib(const LArLATOMEMapping *map, const LArOnOffIdMapping *onoffmap, const LArCalibLineMapping *clmap)
void fillRaw(const LArLATOMEMapping *map)
Pass ADC values from an event.
unsigned Delay(const unsigned event, const HWIdentifier calibLineID) const
value_type push_back(value_type pElem)
Add an element to the end of the collection.
setEventNumber setTimeStamp bcid
std::vector< LatomeAveragedRawData > m_averagedRawValuesInEvent
LArAccumulatedDigitContainer * m_accdigits
std::vector< LatomeCalibPatterns > m_latomeCalibPatternsInEvent
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
#define ATH_MSG_WARNING(x)
std::string m_nm
Message source name.
virtual StatusCode initialize()
void initMessaging() const
Initialize our message level and MessageSvc.
unsigned int decodeHeader(const uint32_t *p, unsigned int offset)
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
static const int s_nBunches
Maximum value of BCID.
void set(const HWIdentifier CalibModuleID, const unsigned nTrigger, const std::vector< unsigned > &Pattern, const std::vector< unsigned > &DAC, const std::vector< unsigned > &Delay)
ToolHandle< ICaloSuperCellIDTool > m_sc2ccMappingTool
BooleanProperty m_keepPulsed
LArDigitContainer * m_adc_bas_coll