|
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 |
Definition at line 357 of file LArLATOMEDecoder.cxx.
358 byte = ((bswap_32(
p[wordshift])) >> (8 * (4 - 1 - byteshift))) & 0xff;
◆ 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 371 of file LArLATOMEDecoder.cxx.
379 bool satByte = nbytesPerChannel % 2;
385 unsigned int satData = 0;
388 unsigned int word1 = 0;
389 unsigned int word2 = 0;
391 if (nbytesPerChannel > 3) {
394 at0Data =
word1 & 0x7fff;
395 at0val =
word1 & 0x8000;
396 if (nbytesPerChannel > 3) {
397 at1Data = word2 & 0x7fff;
398 at1val = word2 & 0x8000;
410 at0Data = (at0Data << 3) | (satData & 0x7);
411 at1Data = (at1Data << 3) | ((satData & 0x70) >> 4);
412 saturation = ((satData & 0x88) == 0x88);
414 at0Data = (at0Data << 3) | ((satData & 0x70) >> 4);
415 at1Data = (at1Data << 3) | (satData & 0x7);
416 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 220 of file LArLATOMEDecoder.cxx.
223 int monheadererror = 0;
224 int monheadererrorbit = 0;
226 monheadererror |= (1 << monheadererrorbit++);
229 monheadererror |= (1 << monheadererrorbit++);
231 ATH_MSG_DEBUG(
"Mon header L1ID " << l1IDtmp <<
" different from rod header L1ID " <<
m_l1ID);
238 monheadererror |= (1 << monheadererrorbit++);
242 monheadererror |= (1 << monheadererrorbit++);
247 monheadererror |= (1 << monheadererrorbit++);
259 monheadererror |= (1 << monheadererrorbit++);
264 monheadererror |= (1 << monheadererrorbit++);
277 monheadererror |= (1 << monheadererrorbit++);
279 monheadererror |= (1 << monheadererrorbit++);
280 monheadererrorbit += 2;
283 monheadererror |= (1 << monheadererrorbit++);
285 monheadererror |= (1 << monheadererrorbit++);
287 monheadererror |= (1 << monheadererrorbit++);
289 monheadererror |= (1 << monheadererrorbit++);
291 monheadererror |= (1 << monheadererrorbit++);
293 monheadererror |= (1 << monheadererrorbit++);
295 monheadererror |= (1 << monheadererrorbit++);
297 monheadererror |= (1 << monheadererrorbit++);
299 monheadererror |= (1 << monheadererrorbit++);
301 monheadererror |= (1 << monheadererrorbit++);
303 monheadererror |= (1 << monheadererrorbit++);
309 if (monheadererror) {
310 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 210 of file LArLATOMEDecoder.cxx.
212 if (bswap_32(
p[
offset]) != 0xc0ffee00 || bswap_32(
p[
offset + 1] != 0xaaaaaaaa)) {
◆ decodeWord()
void LArLATOMEDecoder::EventProcess::decodeWord |
( |
unsigned int & |
word, |
|
|
unsigned int & |
wordshift, |
|
|
unsigned int & |
byteshift, |
|
|
const uint32_t * |
p |
|
) |
| |
|
private |
Definition at line 361 of file LArLATOMEDecoder.cxx.
362 unsigned int msb = 0;
363 unsigned int lsb = 0;
368 word = lsb | (msb << 8);
◆ 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 871 of file LArLATOMEDecoder.cxx.
877 std::unique_ptr<LArCalibParams> calibParams1;
878 std::unique_ptr<LArCalibParams> calibParams2;
881 const LArOnOffIdMapping*
cabling = 0;
892 calibParams1=std::make_unique<LArCalibParams>();
893 calibParams2=std::make_unique<LArCalibParams>();
895 if (pattype > 0x48) {
898 if (sc1 != StatusCode::SUCCESS || sc2 != StatusCode::SUCCESS) {
899 ATH_MSG_WARNING(
"could not initialize LArCalibParams, acc calib will not be filled ");
902 if (pattype == 0x49 || pattype == 0x4a) {
915 if (sc1 != StatusCode::SUCCESS) {
916 ATH_MSG_WARNING(
"could not initialize LArCalibParams, acc calib will not be filled ");
923 const HWIdentifier hwidEmpty;
927 if (SCID == hwidEmpty) {
936 std::vector<uint64_t>
sum;
937 std::vector<uint64_t> sum2;
938 unsigned int ntmin = 9999999;
952 sum2[is] =
round(fsum2);
960 if (pattype == 0x49 || pattype == 0x4a) {
962 calibParams = calibParams1.get();
964 calibParams = calibParams2.get();
966 }
else if (pattype == 0x4b || pattype == 0x4c) {
968 calibParams = calibParams1.get();
970 calibParams = calibParams2.get();
973 calibParams = calibParams1.get();
975 unsigned int eventNb = 0;
976 unsigned int numCL = 0;
977 unsigned int numPulsedLeg = 0;
978 std::vector<Identifier> ccellIds(0);
982 HWIdentifier cellLegHWID = cablingLeg->createSignalChannelID(
id);
983 const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine(cellLegHWID);
984 numCL += calibLineLeg.size();
985 for (HWIdentifier calibLineHWID : calibLineLeg) {
986 if (calibParams->
isPulsed(eventNb, calibLineHWID)) {
992 isPulsed_value =
true;
993 if (numPulsedLeg != numCL) {
996 isPulsed_value =
false;
998 DAC_value = calibParams->
DAC(eventNb, SCID) * numPulsedLeg;
1008 DAC_value = DAC_value / 1.363;
1011 DAC_value = DAC_value / 1.206;
1017 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 429 of file LArLATOMEDecoder.cxx.
436 const unsigned int sourceID = robFrag->rob_source_id();
444 m_l1ID = robFrag->rod_lvl1_id();
447 const unsigned int n = robFrag->rod_ndata();
454 const uint32_t* rod_status = robFrag->rod_status();
455 const unsigned int rod_nstatus = robFrag->rod_nstatus();
456 if (rod_nstatus != 27) {
457 ATH_MSG_WARNING(
"Inconsistent number of rod header status elements: nstatus= " << rod_nstatus);
460 if (rod_nstatus > 8) {
467 LatomeCalibPatterns pat1, pat2, pat3;
468 pat1.DAC = rod_status[9];
469 pat1.delay = rod_status[10];
470 pat1.patterns.resize(4);
471 for (
unsigned int i = 0;
i < 4; ++
i)
472 pat1.patterns[
i] = rod_status[
i + 11];
474 pat2.DAC = rod_status[15];
475 pat2.delay = rod_status[16];
476 pat2.patterns.resize(4);
477 for (
unsigned int i = 0;
i < 4; ++
i)
478 pat2.patterns[
i] = rod_status[
i + 17];
480 pat3.DAC = rod_status[21];
481 pat3.delay = rod_status[22];
482 pat3.patterns.resize(4);
483 for (
unsigned int i = 0;
i < 4; ++
i)
484 pat3.patterns[
i] = rod_status[
i + 23];
488 const HWIdentifier hwidEmpty;
503 <<
" " << sourceID << std::dec);
512 <<
" " << sourceID << std::dec);
527 ATH_MSG_DEBUG(
" end of header check computed offset=" << std::dec <<
offset <<
" nwords in payload=" <<
n);
536 std::vector<unsigned int> bc_size;
557 val.latomeChannel = 99999;
654 val.latomeChannel = 99999;
663 for (
short iBC = 0; iBC < nBC; ++iBC) {
667 if (iBC < startBC1 || iBC >= startBC1 + nBC1)
673 unsigned int oldipacket = 0;
674 for (
unsigned int itimeslot = 0; itimeslot < 6; ++itimeslot) {
676 unsigned int l_bcid = (bswap_32(
p[
s])) >> 16;
677 if (itimeslot != 0) {
678 if (l_bcid !=
bcid) {
683 unsigned int bcid_c =
bcid + 1;
689 if (bcid_c != l_bcid) {
690 ATH_MSG_WARNING(
"ERROR: BCID not increasing properly between samples, L1ID is: "
691 <<
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;
710 ATH_MSG_DEBUG(
" at BC " << iBC <<
" timeslot " << itimeslot <<
" " <<
bcid <<
" " <<
mux <<
" n64word " << n64word <<
" at0 " << (
int)at0 <<
" at1 "
711 << (
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;
728 decodeChannel(wordshift, byteshift,
p, at0, at1, at0Data, at1Data, satData, at0val, at1val);
729 ATH_MSG_DEBUG(
" wordshift " << wordshift <<
" byteshift " << byteshift <<
" at0data " << at0Data <<
" at1Data " << at1Data <<
" satData " << satData
730 <<
" at0val " << at0val <<
" at1val " << at1val <<
" nsc " << nsc);
734 if (SCID == hwidEmpty) {
737 int RAWValue0 = -999;
739 ATH_MSG_DEBUG(
"at0 bad quality bit for SC:" << nsc <<
" BC " << iBC <<
" latome " << robFrag->rod_source_id());
744 int defaultADCValue = -1;
745 int defaultEValue = -99999;
749 if ((
unsigned)iBC < rawValuesInEvent.adc.size()) {
750 rawValuesInEvent.adc[iBC] = (at0val) ? RAWValue0 : defaultADCValue;
754 if ((
unsigned)iBC < rawValuesInEvent.adc_bas.size()) {
755 rawValuesInEvent.adc_bas[iBC] = (at0val) ? RAWValue0 : defaultADCValue;
759 if ((
unsigned)iBC < rawValuesInEvent.et.size()) {
760 rawValuesInEvent.et[iBC] = (at0val) ?
signEnergy(RAWValue0) : defaultEValue;
761 rawValuesInEvent.saturation[iBC] = satData;
765 if ((
unsigned)iBC < rawValuesInEvent.et_id.size()) {
766 rawValuesInEvent.et_id[iBC] = (at0val) ?
signEnergy(RAWValue0) : defaultEValue;
767 rawValuesInEvent.saturation[iBC] = satData;
777 int RAWValue1 = -999;
779 ATH_MSG_DEBUG(
"at1 bad quality bit for SC:" << nsc <<
" BC " << iBC <<
" latome " << robFrag->rod_source_id());
785 const size_t BCidx = iBC - startBC1;
788 if (BCidx < rawValuesInEvent.adc.size()) {
789 rawValuesInEvent.adc[BCidx] = (at1val) ? RAWValue1 : defaultADCValue;
793 if (BCidx < rawValuesInEvent.adc_bas.size()) {
794 rawValuesInEvent.adc_bas[BCidx] = (at1val) ? RAWValue1 : defaultADCValue;
798 if (BCidx < rawValuesInEvent.et.size()) {
799 rawValuesInEvent.et[BCidx] = (at1val) ?
signEnergy(RAWValue1) : defaultEValue;
800 rawValuesInEvent.saturation[BCidx] = satData;
804 if (BCidx < rawValuesInEvent.et_id.size()) {
820 ATH_MSG_ERROR(
"inconsistant wordshift in decoding everaged data");
823 unsigned int averageword = bswap_32(
p[wordshift]);
825 unsigned int sumSq = bswap_32(
p[wordshift]);
827 unsigned long long sumsqMSB = averageword >> 28;
828 sumsqMSB = sumsqMSB << 32;
846 if ((wordshift -
s) % 2)
851 <<
"!=" << n64word * 2 <<
" m_ipacket " <<
m_iPacket);
862 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 1027 of file LArLATOMEDecoder.cxx.
1029 const HWIdentifier hwidEmpty;
1032 if (SCID == hwidEmpty) {
1041 std::vector<short> adcValues_inChannel_inEvent;
1051 std::vector<unsigned short> bcid_in_event;
1061 std::vector<unsigned short> bcid_in_event;
1074 std::vector<unsigned short> bcid_in_event;
1088 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)
constexpr int pow(int base, int exp) noexcept
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