 |
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 889 of file LArLATOMEDecoder.cxx.
895 std::unique_ptr<LArCalibParams> calibParams1;
896 std::unique_ptr<LArCalibParams> calibParams2;
899 const LArOnOffIdMapping*
cabling = 0;
910 calibParams1=std::make_unique<LArCalibParams>();
911 calibParams2=std::make_unique<LArCalibParams>();
913 if (pattype > 0x48) {
916 if (sc1 != StatusCode::SUCCESS || sc2 != StatusCode::SUCCESS) {
917 ATH_MSG_WARNING(
"could not initialize LArCalibParams, acc calib will not be filled ");
920 if (pattype == 0x49 || pattype == 0x4a) {
933 if (sc1 != StatusCode::SUCCESS) {
934 ATH_MSG_WARNING(
"could not initialize LArCalibParams, acc calib will not be filled ");
941 const HWIdentifier hwidEmpty;
942 unsigned nWarnings = 0;
946 if (SCID == hwidEmpty) {
955 std::vector<uint64_t>
sum;
956 std::vector<uint64_t> sum2;
957 unsigned int ntmin = 9999999;
972 sum2[is] =
round(fsum2);
977 if (++nWarnings < 64) {
978 ATH_MSG_WARNING(
"No valid triggers for supercell " << SCID.getString());
986 if (pattype == 0x49 || pattype == 0x4a) {
988 calibParams = calibParams1.get();
990 calibParams = calibParams2.get();
992 }
else if (pattype == 0x4b || pattype == 0x4c) {
994 calibParams = calibParams1.get();
996 calibParams = calibParams2.get();
999 calibParams = calibParams1.get();
1001 unsigned int eventNb = 0;
1002 unsigned int numCL = 0;
1003 unsigned int numPulsedLeg = 0;
1004 std::vector<Identifier> ccellIds(0);
1008 HWIdentifier cellLegHWID = cablingLeg->createSignalChannelID(
id);
1009 const std::vector<HWIdentifier>& calibLineLeg = clcabling->calibSlotLine(cellLegHWID);
1010 numCL += calibLineLeg.size();
1011 for (HWIdentifier calibLineHWID : calibLineLeg) {
1012 if (calibParams->
isPulsed(eventNb, calibLineHWID)) {
1018 isPulsed_value =
true;
1019 if (numPulsedLeg != numCL) {
1022 isPulsed_value =
false;
1024 DAC_value = calibParams->
DAC(eventNb, SCID) * numPulsedLeg;
1035 DAC_value = DAC_value / 1.2;
1039 DAC_value = DAC_value * 7. / 8.;
1045 delay_value = calibParams->
Delay(eventNb, SCID);
1052 if (nWarnings > 16) {
1053 ATH_MSG_WARNING(
"Found " << nWarnings <<
" supercells with no valid triggers");
◆ 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) {
468 LatomeCalibPatterns pat1, pat2, pat3;
469 pat1.DAC = rod_status[9];
470 pat1.delay = rod_status[10];
471 pat1.patterns.resize(4);
472 for (
unsigned int i = 0;
i < 4; ++
i)
473 pat1.patterns[
i] = rod_status[
i + 11];
475 pat2.DAC = rod_status[15];
476 pat2.delay = rod_status[16];
477 pat2.patterns.resize(4);
478 for (
unsigned int i = 0;
i < 4; ++
i)
479 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)
485 pat3.patterns[
i] = rod_status[
i + 23];
489 const HWIdentifier hwidEmpty;
504 <<
" " << sourceID << std::dec);
513 <<
" " << sourceID << std::dec);
536 ATH_MSG_DEBUG(
" end of header check computed offset=" << std::dec <<
offset <<
" nwords in payload=" <<
n);
555 std::vector<unsigned int> bc_size;
576 val.latomeChannel = 99999;
673 val.latomeChannel = 99999;
682 for (
short iBC = 0; iBC < nBC; ++iBC) {
686 if (iBC < startBC1 || iBC >= startBC1 + nBC1)
692 unsigned int oldipacket = 0;
693 for (
unsigned int itimeslot = 0; itimeslot < 6; ++itimeslot) {
694 unsigned int l_bcid = (bswap_32(
p[
s]))>>16;
702 unsigned int bcid_c =
bcid+1;
708 if(bcid_c != l_bcid){
709 ATH_MSG_WARNING(
"ERROR: BCID not increasing properly between samples, sourceId: " <<
m_nthLATOME <<
" L1ID is: " <<
m_l1ID <<
", BCID is from payload: " << l_bcid <<
", expected BCID is: " << bcid_c <<
", LATOME channel is: " << nsc );
716 unsigned int mux = ((bswap_32(
p[
s])) >> 8) & 0xff;
723 unsigned int timeslotsize = timeslot_nsc[itimeslot];
724 unsigned int nbytes = timeslotsize * nbytesPerChannel;
725 unsigned int n64word = nbytes / 8;
728 ATH_MSG_DEBUG(
" at BC " << iBC <<
" timeslot " << itimeslot <<
" " <<
bcid <<
" " <<
mux <<
" n64word " << n64word <<
" at0 " << (
int)at0 <<
" at1 "
729 << (
int)at1 <<
" l_bcid " <<
bcid);
731 unsigned int wordshift =
s;
732 unsigned int byteshift = 0;
737 unsigned int at0Data = 0, at1Data = 0, satData = 0;
738 bool at0val =
false, at1val =
false;
746 decodeChannel(wordshift, byteshift,
p, at0, at1, at0Data, at1Data, satData, at0val, at1val);
747 ATH_MSG_DEBUG(
" wordshift " << wordshift <<
" byteshift " << byteshift <<
" at0data " << at0Data <<
" at1Data " << at1Data <<
" satData " << satData
748 <<
" at0val " << at0val <<
" at1val " << at1val <<
" nsc " << nsc);
752 if (SCID == hwidEmpty) {
755 int RAWValue0 = -999;
757 ATH_MSG_DEBUG(
"at0 bad quality bit for SC:" << nsc <<
" BC " << iBC <<
" latome " << robFrag->rod_source_id());
762 int defaultADCValue = -1;
763 int defaultEValue = -99999;
767 if ((
unsigned)iBC < rawValuesInEvent.adc.size()) {
768 rawValuesInEvent.adc[iBC] = (at0val) ? RAWValue0 : defaultADCValue;
772 if ((
unsigned)iBC < rawValuesInEvent.adc_bas.size()) {
773 rawValuesInEvent.adc_bas[iBC] = (at0val) ? RAWValue0 : defaultADCValue;
777 if ((
unsigned)iBC < rawValuesInEvent.et.size()) {
778 rawValuesInEvent.et[iBC] = (at0val) ?
signEnergy(RAWValue0) : defaultEValue;
779 rawValuesInEvent.saturation[iBC] = satData;
783 if ((
unsigned)iBC < rawValuesInEvent.et_id.size()) {
784 rawValuesInEvent.et_id[iBC] = (at0val) ?
signEnergy(RAWValue0) : defaultEValue;
785 rawValuesInEvent.saturation[iBC] = satData;
795 int RAWValue1 = -999;
797 ATH_MSG_DEBUG(
"at1 bad quality bit for SC:" << nsc <<
" BC " << iBC <<
" latome " << robFrag->rod_source_id());
803 const size_t BCidx = iBC - startBC1;
806 if (BCidx < rawValuesInEvent.adc.size()) {
807 rawValuesInEvent.adc[BCidx] = (at1val) ? RAWValue1 : defaultADCValue;
811 if (BCidx < rawValuesInEvent.adc_bas.size()) {
812 rawValuesInEvent.adc_bas[BCidx] = (at1val) ? RAWValue1 : defaultADCValue;
816 if (BCidx < rawValuesInEvent.et.size()) {
817 rawValuesInEvent.et[BCidx] = (at1val) ?
signEnergy(RAWValue1) : defaultEValue;
818 rawValuesInEvent.saturation[BCidx] = satData;
822 if (BCidx < rawValuesInEvent.et_id.size()) {
838 ATH_MSG_ERROR(
"inconsistant wordshift in decoding everaged data");
841 unsigned int averageword = bswap_32(
p[wordshift]);
843 unsigned int sumSq = bswap_32(
p[wordshift]);
845 unsigned long long sumsqMSB = averageword >> 28;
846 sumsqMSB = sumsqMSB << 32;
864 if ((wordshift -
s) % 2)
869 <<
"!=" << n64word * 2 <<
" m_ipacket " <<
m_iPacket);
880 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 1058 of file LArLATOMEDecoder.cxx.
1060 const HWIdentifier hwidEmpty;
1063 if (SCID == hwidEmpty) {
1072 std::vector<short> adcValues_inChannel_inEvent;
1082 std::vector<unsigned short> bcid_in_event;
1092 std::vector<unsigned short> bcid_in_event;
1105 std::vector<unsigned short> bcid_in_event;
1119 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_LATOMEFW
Word LArLATOMEDecoder::EventProcess::m_LATOMEFW {} |
|
private |
◆ 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