76using vsiz_t = vector<int>::size_type;
79 DoRegister(ModuleType(
"Decoder::Fadc250Module", 250));
84 data_type_4(false), data_type_6(false), data_type_7(false),
85 data_type_8(false), data_type_9(false), data_type_10(false),
86 block_header_found(false), block_trailer_found(false),
87 event_header_found(false), slots_match(false)
94#if defined DEBUG && defined WITH_DEBUG
118 for( uint32_t i = 0; i <
NADCCHAN; i++ ) {
128 uint32_t data )
const
131 data_vector.push_back(
data);
139 return accumulate(data_vector.begin(), data_vector.end(), 0U);
159#if defined DEBUG && defined WITH_DEBUG
167 fName =
"FADC250 JLab Flash ADC Module";
173 cout <<
"FADC250 Decoder has been called" << endl;
208 throw overflow_error(
"ERROR! Fadc250Module::GetNumEvents: "
240 if( ievent >= nevent ) {
241 cout <<
"ERROR:: Fadc250Module:: GetPulseIntegralData:: invalid event number for slot = " <<
fSlot <<
", channel = "
246 cout <<
"ERROR:: Fadc250Module:: GetPulseIntegralData:: data vector empty for slot = " <<
fSlot <<
", channel = "
252 *
fDebugFile <<
"Fadc250Module::GetPulseIntegralData channel "
253 <<
chan <<
", event " << ievent <<
" = "
265 cout <<
"ERROR:: Fadc250Module:: GetEmulatedPulseIntegralData:: data vector empty for slot = " <<
fSlot
266 <<
", channel = " <<
chan <<
"\n"
267 <<
"Ensure that FADC is operating in mode 1 OR 8" << endl;
272 *
fDebugFile <<
"Fadc250Module::GetEmulatedPulseIntegralData channel "
283 if( ievent >= nevent ) {
284 cout <<
"ERROR:: Fadc250Module:: GetPulseTimeData:: invalid event number for slot = " <<
fSlot <<
", channel = "
289 cout <<
"ERROR:: Fadc250Module:: GetPulseTimeData:: data vector empty for slot = " <<
fSlot <<
", channel = "
295 *
fDebugFile <<
"Fadc250Module::GetPulseTimeData channel "
296 <<
chan <<
", event " << ievent <<
" = "
307 if( ievent >= nevent ) {
308 cout <<
"ERROR:: Fadc250Module:: GetPulseCoarseTimeData:: invalid event number for slot = " <<
fSlot
309 <<
", channel = " <<
chan << endl;
313 cout <<
"ERROR:: Fadc250Module:: GetPulseCoarseTimeData:: data vector empty for slot = " <<
fSlot <<
", channel = "
319 *
fDebugFile <<
"Fadc250Module::GetPulseCoarseTimeData channel "
320 <<
chan <<
", event " << ievent <<
" = "
331 if( ievent >= nevent ) {
332 cout <<
"ERROR:: Fadc250Module:: GetPulseCoarseTimeData:: invalid event number for slot = " <<
fSlot
333 <<
", channel = " <<
chan << endl;
337 cout <<
"ERROR:: Fadc250Module:: GetPulseCoarseTimeData:: data vector empty for slot = " <<
fSlot <<
", channel = "
343 *
fDebugFile <<
"Fadc250Module::GetPulseFineTimeData channel "
344 <<
chan <<
", event " << ievent <<
" = "
355 if( ievent >= nevent ) {
356 cout <<
"ERROR:: Fadc250Module:: GetPulsePeakData:: invalid event number for slot = " <<
fSlot <<
", channel = "
361 cout <<
"ERROR:: Fadc250Module:: GetPulsePeakData:: data vector empty for slot = " <<
fSlot <<
", channel = "
367 *
fDebugFile <<
"Fadc250Module::GetPulsePeakData channel "
368 <<
chan <<
", event " << ievent <<
" = "
380 cout <<
"ERROR:: Fadc250Module:: GetPulsePedestalData:: data vector empty for slot = " <<
fSlot <<
", channel = "
385 if( ievent >= nevent ) {
386 cout <<
"ERROR:: Fadc250Module:: GetPulsePedestalData:: invalid data vector size = " <<
fSlot <<
", channel = "
392 *
fDebugFile <<
"Fadc250Module::GetPulsePedestalData channel "
393 <<
chan <<
", event " << ievent <<
" = "
400 cout <<
"ERROR:: Fadc250Module:: GetPulsePedestalData:: invalid data vector size = " <<
fSlot <<
", channel = "
406 *
fDebugFile <<
"Fadc250Module::GetPulsePedestalData channel "
407 <<
chan <<
", event " << ievent <<
" = "
419 cout <<
"ERROR:: Fadc250Module:: GetPedestalQuality:: data vector empty for slot = " <<
fSlot <<
", channel = "
424 cout <<
"ERROR:: Fadc250Module:: GetPedestalQuality:: invalid data vector size = " <<
fSlot <<
", channel = "
430 *
fDebugFile <<
"Fadc250Module::GetPedestalQuality channel "
431 <<
chan <<
", event " << ievent <<
" = "
442 if( ievent >= nevent ) {
443 cout <<
"ERROR:: Fadc250Module:: GetOverflowBit:: invalid event number for slot = " <<
fSlot <<
", channel = "
448 cout <<
"ERROR:: Fadc250Module:: GetOverflowBit:: data vector empty for slot = " <<
fSlot <<
", channel = " <<
chan
454 *
fDebugFile <<
"Fadc250Module::GetOverflowBit channel "
455 <<
chan <<
", event " << ievent <<
" = "
466 if( ievent >= nevent ) {
467 cout <<
"ERROR:: Fadc250Module:: GetUnderflowBit:: invalid event number for slot = " <<
fSlot <<
", channel = "
472 cout <<
"ERROR:: Fadc250Module:: GetUnderflowBit:: data vector empty for slot = " <<
fSlot <<
", channel = " <<
chan
478 *
fDebugFile <<
"Fadc250Module::GetUnderflowBit channel "
479 <<
chan <<
", event " << ievent <<
" = "
490 UInt_t shorttime = fadc_data.trig_time;
493 *
fDebugFile <<
"Fadc250Module::GetTriggerTime = "
494 << fadc_data.trig_time <<
" " << shorttime << endl;
503 if( ievent >= nevent ) {
504 cout <<
"ERROR:: Fadc250Module:: GetPulseSamplesData:: invalid event number for slot = " <<
fSlot <<
", channel = "
509 cout <<
"ERROR:: Fadc250Module:: GetPulseSamplesData:: data vector empty for slot = " <<
fSlot <<
", channel = "
515 *
fDebugFile <<
"Fadc250Module::GetPulseSamplesData channel "
516 <<
chan <<
", event " << ievent <<
" = "
528 cout <<
"ERROR:: Fadc250Module:: GetPulseSamplesVector:: data vector empty for slot = " <<
fSlot <<
", channel = "
534 *
fDebugFile <<
"Fadc250Module::GetPulseSamplesVector channel "
546 *
fDebugFile <<
"start, Print Data Type " << endl;
553 *
fDebugFile <<
"end, Print Data Type " << endl;
581 cout <<
"ERROR:: Fadc250Module:: GetFadcMode:: FADC is in invalid mode for slot = " <<
fSlot << endl;
583 *
fDebugFile <<
"ERROR:: Fadc250Module:: GetFadcMode:: FADC is in invalid mode for slot = " <<
fSlot << endl;
633 *
fDebugFile <<
"Fadc250Module::GetNumFadcEvents channel "
634 <<
chan <<
" = " << sz << endl;
639 <<
"ERROR:: Fadc250Module:: GetNumFadcEvents:: FADC not in acceptable mode or data vector sizes do not match for for slot = "
640 <<
fSlot <<
", channel = " <<
chan << endl;
641 cout <<
"ERROR:: Fadc250Module:: GetNumFadcEvents:: FADC data potentially corrupt for event " << fadc_data.evt_num
642 <<
", PROCEED WITH CAUTION!" << endl;
653 if( ievent >= nsamples ) {
654 cout <<
"ERROR:: Fadc250Module:: GetNumFadcSamples:: invalid event number for slot = " <<
fSlot <<
", channel = "
658 if( nsamples == 0 ) {
664 *
fDebugFile <<
"Fadc250Module::GetNumFadcSamples channel "
665 <<
chan <<
", event " << ievent <<
" = "
671 cout <<
"ERROR:: Fadc250Module:: GetNumFadcSamples:: FADC is not in Mode 1, 8, or 10 for slot = " <<
fSlot
672 <<
", channel = " <<
chan << endl;
681 static const string here{
"Fadc250Module::DecodeBlockHeader" };
685 fadc_data.slot_blk_hdr = (pdat >> 22) & 0x1F;
689 *
fDebugFile <<
"Fadc250Module::Decode:: Slot from FADC block header = " << fadc_data.slot_blk_hdr << endl;
695 fadc_data.mod_id = (pdat >> 18) & 0xF;
696 fadc_data.iblock_num = (pdat >> 8) & 0x3FF;
697 fadc_data.nblock_events = (pdat >> 0) & 0xFF;
701 *
fDebugFile <<
"Fadc250Module::Decode:: FADC BLOCK HEADER"
702 <<
" >> data = " << hex << pdat << dec
703 <<
" >> slot = " << fadc_data.slot_blk_hdr
704 <<
" >> module id = " << fadc_data.mod_id <<
" >> event block number = " << fadc_data.iblock_num
705 <<
" >> num events in block = " << fadc_data.nblock_events
710 (pdat >> 18) & 0x7FF;
718 *
fDebugFile <<
"Fadc250Module::Decode:: FADC BLOCK HEADER"
719 <<
" >> data = " << hex << pdat << dec
720 <<
" >> NSB trigger point (PL) = " << fadc_data.PL
721 <<
" >> NSB threshold crossing = " << fadc_data.NSA
722 <<
" >> NSA threshold crossing = " << fadc_data.NSB
732 fadc_data.slot_blk_trl = (pdat >> 22) & 0x1F;
733 fadc_data.nwords_inblock = (pdat >> 0) & 0x3FFFFF;
737 *
fDebugFile <<
"Fadc250Module::Decode:: FADC BLOCK TRAILER"
738 <<
" >> data = " << hex << pdat << dec
739 <<
" >> slot = " << fadc_data.slot_blk_trl
740 <<
" >> nwords in block = " << fadc_data.nwords_inblock
750 fadc_data.slot_evt_hdr = (pdat >> 22) & 0x1F;
753 fadc_data.eh_trig_time = (pdat >> 12) & 0x3FF;
754 fadc_data.trig_num = (pdat >> 0) & 0xFFF;
764 *
fDebugFile <<
"Fadc250Module::Decode:: FADC EVENT HEADER"
765 <<
" >> data = " << hex << pdat << dec
766 <<
" >> event header trigger time = " << fadc_data.eh_trig_time
767 <<
" >> trigger number = " << fadc_data.trig_num
776 fadc_data.trig_time_w1 = (pdat >> 0) & 0xFFFFFF;
778 fadc_data.trig_time_w2 = (pdat >> 0) & 0xFFFFFF;
780 fadc_data.trig_time = (fadc_data.trig_time_w2 << 24) | fadc_data.trig_time_w1;
784 *
fDebugFile <<
"Fadc250Module::Decode:: FADC TRIGGER TIME"
785 <<
" >> data = " << hex << pdat << dec
786 <<
" >> trigger time word 1 = " << fadc_data.trig_time_w1
787 <<
" >> trigger time word 2 = " << fadc_data.trig_time_w2
788 <<
" >> trigger time = " << fadc_data.trig_time
797 if( data_type_id == 1 ) {
798 fadc_data.chan = (pdat >> 23) & 0xF;
799 fadc_data.win_width = (pdat >> 0) & 0xFFF;
803 *
fDebugFile <<
"Fadc250Module::Decode:: FADC WINDOW RAW DATA"
804 <<
" >> data = " << hex << pdat << dec
805 <<
" >> channel = " << fadc_data.chan
806 <<
" >> window width = " << fadc_data.win_width
810 assert(data_type_id == 0);
811 Bool_t invalid_1 = (pdat >> 29) & 0x1;
812 Bool_t invalid_2 = (pdat >> 13) & 0x1;
813 uint32_t sample_1 = 0;
814 uint32_t sample_2 = 0;
815 if( !invalid_1 ) sample_1 = (pdat >> 16) & 0x1FFF;
816 if( !invalid_2 ) sample_2 = (pdat >> 0) & 0x1FFF;
819 fadc_data.invalid_samples |= invalid_1;
820 fadc_data.overflow = (sample_1 >> 12) & 0x1;
822 if(
fPulseData[fadc_data.chan].samples.size() == fadc_data.win_width )
827 fadc_data.invalid_samples |= invalid_2;
828 fadc_data.overflow = (sample_2 >> 12) & 0x1;
832 *
fDebugFile <<
"Fadc250Module::Decode:: FADC WINDOW RAW DATA"
833 <<
" >> data = " << hex << pdat << dec
834 <<
" >> channel = " << fadc_data.chan
835 <<
" >> sample 1 = " << sample_1
836 <<
" >> sample 2 = " << sample_2
837 <<
" >> size of fPulseSamples = "
848 if( data_type_id == 1 ) {
849 fadc_data.chan = (pdat >> 23) & 0xF;
850 fadc_data.pulse_num = (pdat >> 21) & 0x3;
851 fadc_data.sample_num_tc = (pdat >> 0) & 0x3FF;
855 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE RAW DATA"
856 <<
" >> data = " << hex << pdat << dec
857 <<
" >> channel = " << fadc_data.chan
858 <<
" >> window width = " << fadc_data.win_width
862 assert(data_type_id == 0);
863 Bool_t invalid_1 = (pdat >> 29) & 0x1;
864 Bool_t invalid_2 = (pdat >> 13) & 0x1;
865 uint32_t sample_1 = 0;
866 uint32_t sample_2 = 0;
867 if( !invalid_1 ) sample_1 = (pdat >> 16) & 0x1FFF;
868 if( !invalid_2 ) sample_2 = (pdat >> 0) & 0x1FFF;
871 fadc_data.invalid_samples |= invalid_1;
872 fadc_data.overflow = (sample_1 >> 12) & 0x1;
874 if(
fPulseData[fadc_data.chan].samples.size() == fadc_data.win_width )
879 fadc_data.invalid_samples |= invalid_2;
880 fadc_data.overflow = (sample_2 >> 12) & 0x1;
884 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE RAW DATA"
885 <<
" >> data = " << hex << pdat << dec
886 <<
" >> sample 1 = " << sample_1
887 <<
" >> sample 2 = " << sample_2
888 <<
" >> size of fPulseSamples = "
899 fadc_data.chan = (pdat >> 23) & 0xF;
900 fadc_data.pulse_num = (pdat >> 21) & 0x3;
901 fadc_data.qual_factor = (pdat >> 19) & 0x3;
902 fadc_data.pulse_integral = (pdat >> 0) & 0x7FFFF;
908 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE INTEGRAL"
909 <<
" >> data = " << hex << pdat << dec
910 <<
" >> chan = " << fadc_data.chan
911 <<
" >> pulse num = " << fadc_data.pulse_num
912 <<
" >> quality factor = " << fadc_data.qual_factor
913 <<
" >> pulse integral = " << fadc_data.pulse_integral
922 fadc_data.chan = (pdat >> 23) & 0xF;
923 fadc_data.pulse_num = (pdat >> 21) & 0x3;
924 fadc_data.qual_factor = (pdat >> 19) & 0x3;
925 fadc_data.coarse_pulse_time = (pdat >> 6) & 0x1FF;
926 fadc_data.fine_pulse_time = (pdat >> 0) & 0x3F;
927 fadc_data.time = (pdat >> 0) & 0x7FFF;
935 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE TIME"
936 <<
" >> data = " << hex << pdat << dec
937 <<
" >> chan = " << fadc_data.chan
938 <<
" >> pulse num = " << fadc_data.pulse_num
939 <<
" >> quality factor = " << fadc_data.qual_factor
940 <<
" >> coarse time = " << fadc_data.coarse_pulse_time
941 <<
" >> fine time = " << fadc_data.fine_pulse_time
942 <<
" >> time = " << fadc_data.time
951 if( data_type_id == 1 ) {
952 fadc_data.evnt_of_blk = (pdat >> 19) & 0xFF;
953 fadc_data.chan = (pdat >> 15) & 0xF;
954 fadc_data.qual_factor = (pdat >> 14) & 0x1;
955 fadc_data.pedestal_sum = (pdat >> 0) & 0x3FFF;
962 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE PARAMETERS"
963 <<
" >> data = " << hex << pdat << dec
964 <<
" >> chan = " << fadc_data.chan
965 <<
" >> event of block = " << fadc_data.evnt_of_blk
966 <<
" >> quality factor = " << fadc_data.qual_factor
967 <<
" >> pedestal sum = " << fadc_data.pedestal_sum
971 assert(data_type_id == 0);
972 if( ((pdat >> 30) & 0x1) == 1 ) {
973 fadc_data.sample_sum =
974 (pdat >> 12) & 0x3FFFF;
975 fadc_data.nsa_ext = (pdat >> 11) & 0x1;
976 fadc_data.samp_overflow = (pdat >> 10) & 0x1;
977 fadc_data.samp_underflow = (pdat >> 9) & 0x1;
978 fadc_data.samp_over_thresh =
987 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE PARAMETERS"
988 <<
" >> data = " << hex << pdat << dec
989 <<
" >> chan = " << fadc_data.chan
990 <<
" >> integral = " << fadc_data.sample_sum
991 <<
" >> nsa extended = " << fadc_data.nsa_ext
992 <<
" >> sample overflow = " << fadc_data.samp_overflow
993 <<
" >> sample underflow = " << fadc_data.samp_underflow
994 <<
" >> sample over threshold = " << fadc_data.samp_over_thresh
998 if( ((pdat >> 30) & 0x1) == 0 ) {
999 fadc_data.coarse_pulse_time = (pdat >> 21) & 0x1FF;
1000 fadc_data.fine_pulse_time = (pdat >> 15) & 0x3F;
1001 fadc_data.time = (pdat >> 15) & 0x7FFF;
1002 fadc_data.pulse_peak = (pdat >> 3) & 0xFFF;
1003 fadc_data.peak_beyond_nsa =
1005 fadc_data.peak_not_found = (pdat >> 1) & 0x1;
1006 fadc_data.peak_above_maxped =
1016 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE PARAMETERS"
1017 <<
" >> data = " << hex << pdat << dec
1018 <<
" >> chan = " << fadc_data.chan
1019 <<
" >> coarse time = " << fadc_data.coarse_pulse_time
1020 <<
" >> fine time = " << fadc_data.fine_pulse_time
1021 <<
" >> time = " << fadc_data.time
1022 <<
" >> pulse peak = " << fadc_data.pulse_peak
1023 <<
" >> peak beyond nsa = " << fadc_data.peak_beyond_nsa
1024 <<
" >> peak not found = " << fadc_data.peak_not_found
1025 <<
" >> peak above maxped = " << fadc_data.peak_above_maxped
1036 fadc_data.chan = (pdat >> 23) & 0xF;
1037 fadc_data.pulse_num = (pdat >> 21) & 0x3;
1038 fadc_data.pedestal = (pdat >> 12) & 0x1FF;
1039 fadc_data.pulse_peak = (pdat >> 0) & 0xFFF;
1046 *
fDebugFile <<
"Fadc250Module::Decode:: FADC PULSE PEDESTAL"
1047 <<
" >> data = " << hex << pdat << dec
1048 <<
" >> chan = " << fadc_data.chan
1049 <<
" >> pulse num = " << fadc_data.pulse_num
1050 <<
" >> pedestal = " << fadc_data.pedestal
1051 <<
" >> pulse peak = " << fadc_data.pulse_peak
1059 fadc_data.scaler_words = (pdat >> 0) & 0x3F;
1063 *
fDebugFile <<
"Fadc250Module::Decode:: FADC SCALER HEADER"
1064 <<
" >> data = " << hex << pdat << dec
1065 <<
" >> data words = " << hex << fadc_data.scaler_words << dec
1076 static const vector<string> what_text{
"UNDEFINED TYPE",
1079 "INCORRECT DECODING" };
1081 static const map<uint32_t, uint32_t> what_map = {
1094 size_t i = (idx == what_map.end()) ? what_text.size() - 1 : idx->second;
1095 const string& what = what_text[i];
1097 str <<
"Fadc250Module::Decode:: " << what
1098 <<
" >> data = " << hex << pdat << dec
1099 <<
" >> data type id = " << data_type_id
1103 if( idx == what_map.end() )
1112 uint32_t
data = *pdat;
1113 uint32_t data_type_id = (
data >> 31) & 0x1;
1114 if( data_type_id == 1 )
1120 *
fDebugFile <<
"Fadc250Module::Decode:: FADC DATA TYPES"
1121 <<
" >> data = " << hex <<
data << dec
1122 <<
" >> data word id = " << data_type_id
1135 <<
"fSlot & FADC slot do not match AND data type != 0"
1184 throw logic_error(
"Fadc250Module: incorrect masking of data_type_def");
1189 *
fDebugFile <<
"**********************************************************************"
1225 return LoadSlot(sldat, evbuffer, 0, pstop + 1 - evbuffer);
1235 const auto*
p = evbuffer + pos;
1236 const auto*
q =
p +
len;
std::vector< uint32_t > integral
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
static const char *const here
virtual UInt_t GetData(Decoder::EModuleType mtype, UInt_t chan, UInt_t ievent) const
void DecodeWindowRawData(UInt_t pdat, uint32_t data_type_id)
void DecodePulseParameters(UInt_t pdat, uint32_t data_type_id)
std::vector< fadc_pulse_data > fPulseData
virtual UInt_t GetPulseCoarseTimeData(UInt_t chan, UInt_t ievent) const
virtual void CheckDecoderStatus() const
virtual Int_t GetFadcMode() const
virtual UInt_t GetNumFadcEvents(UInt_t chan) const
virtual UInt_t GetEmulatedPulseIntegralData(UInt_t chan) const
virtual std::vector< uint32_t > GetPulseSamplesVector(UInt_t chan) const
Bool_t block_trailer_found
void DecodeEventHeader(UInt_t pdat)
void DecodeTriggerTime(UInt_t pdat, uint32_t data_type_id)
virtual void Clear(Option_t *opt="")
void DecodePulseTime(UInt_t pdat)
void DecodeBlockHeader(UInt_t pdat, uint32_t data_type_id)
Bool_t event_header_found
virtual UInt_t GetPulsePedestalData(UInt_t chan, UInt_t ievent) const
virtual UInt_t GetOverflowBit(UInt_t chan, UInt_t ievent) const
Bool_t block_header_found
void LoadTHaSlotDataObj(THaSlotData *sldat)
virtual UInt_t GetNumFadcSamples(UInt_t chan, UInt_t ievent) const
void PopulateDataVector(std::vector< uint32_t > &data_vector, uint32_t data) const
void DecodeBlockTrailer(UInt_t pdat)
virtual Int_t Decode(const UInt_t *data)
static const size_t NADCCHAN
void PrintDataType() const
void DecodePulseIntegral(UInt_t pdat)
virtual UInt_t GetNumEvents() const
void DecodePulsePedestal(UInt_t pdat)
void DecodeScalerHeader(UInt_t pdat)
virtual UInt_t GetPulseSamplesData(UInt_t chan, UInt_t ievent) const
virtual UInt_t GetPulseFineTimeData(UInt_t chan, UInt_t ievent) const
virtual UInt_t LoadSlot(THaSlotData *sldat, const UInt_t *evbuffer, const UInt_t *pstop)
virtual UInt_t GetPulseIntegralData(UInt_t chan, UInt_t ievent) const
static uint32_t SumVectorElements(const std::vector< uint32_t > &data_vector)
void DecodePulseRawData(UInt_t pdat, uint32_t data_type_id)
virtual Bool_t HasCapability(Decoder::EModuleType type)
void UnsupportedType(UInt_t pdat, uint32_t data_type_id)
virtual UInt_t GetTriggerTime() const
virtual UInt_t GetPedestalQuality(UInt_t chan, UInt_t ievent) const
virtual UInt_t GetPulseTimeData(UInt_t chan, UInt_t ievent) const
virtual UInt_t GetPulsePeakData(UInt_t chan, UInt_t ievent) const
static TypeIter_t fgThisType
virtual UInt_t GetUnderflowBit(UInt_t chan, UInt_t ievent) const
std::ofstream * fDebugFile
TypeSet_t::iterator TypeIter_t
virtual void Clear(Option_t *opt="")
Int_t loadData(const char *type, UInt_t chan, UInt_t dat, UInt_t raw)
vector< int >::size_type vsiz_t