1 #ifndef Podd_Fadc250Module_h_
2 #define Podd_Fadc250Module_h_
27 virtual void Clear( Option_t *opt=
"" );
47 virtual UInt_t
LoadSlot(
THaSlotData *sldat,
const UInt_t* evbuffer, UInt_t pos, UInt_t len );
49 virtual Int_t
Decode(
const UInt_t* ) {
return 0; }
62 static const size_t NADCCHAN = 16;
64 struct fadc_data_struct {
66 uint32_t slot_blk_hdr, mod_id, iblock_num, nblock_events;
67 uint32_t PL, NSA, NSB;
68 uint32_t slot_blk_trl, nwords_inblock;
69 uint32_t slot_evt_hdr, evt_num;
70 uint32_t eh_trig_time, trig_num;
71 uint32_t trig_time_w1, trig_time_w2;
74 uint32_t chan, win_width;
76 bool overflow, invalid_samples;
78 uint32_t pulse_num, sample_num_tc;
80 uint32_t qual_factor, pulse_integral;
82 uint32_t coarse_pulse_time, fine_pulse_time, time;
84 uint32_t pedestal, pulse_peak, pedestal_sum;
86 uint32_t scaler_words;
90 uint32_t nsa_ext, sample_sum;
91 uint32_t samp_overflow, samp_underflow, samp_over_thresh;
93 uint32_t peak_beyond_nsa, peak_not_found, peak_above_maxped;
96 struct fadc_pulse_data {
97 std::vector<uint32_t> integral, time, peak, pedestal;
98 std::vector<uint32_t> samples, coarse_time, fine_time;
99 std::vector<uint32_t> pedestal_quality, overflow, underflow;
101 integral.clear(); time.clear(); peak.clear(); pedestal.clear();
102 samples.clear(); coarse_time.clear(); fine_time.clear();
103 pedestal_quality.clear(); overflow.clear(); underflow.clear();
106 std::vector<fadc_pulse_data> fPulseData;
108 Bool_t data_type_4, data_type_6, data_type_7, data_type_8, data_type_9, data_type_10;
109 Bool_t block_header_found, block_trailer_found, event_header_found, slots_match;
111 void ClearDataVectors();
112 void PopulateDataVector( std::vector<uint32_t>& data_vector, uint32_t data );
113 static uint32_t SumVectorElements(
const std::vector<uint32_t>& data_vector );
114 void LoadTHaSlotDataObj( THaSlotData* sldat );
115 UInt_t LoadThisBlock( THaSlotData *sldat,
const std::vector<UInt_t>& evb );
116 void PrintDataType()
const;
virtual UInt_t GetNumEvents() const
Definition: Fadc250Module.h:55
virtual UInt_t GetPulseSamplesData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:447
virtual UInt_t GetPedestalQuality(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:373
Definition: Fadc250Module.h:17
virtual UInt_t GetEmulatedPulseIntegralData(UInt_t chan) const
Definition: Fadc250Module.cxx:236
virtual UInt_t GetUnderflowBit(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:415
virtual Int_t GetFadcMode() const
Definition: Fadc250Module.cxx:498
virtual Int_t GetMode() const
Definition: Fadc250Module.h:43
TypeSet_t::iterator TypeIter_t
Definition: Module.h:39
virtual Bool_t IsMultiFunction()
Definition: Fadc250Module.h:50
virtual UInt_t GetNumSamples(UInt_t ichan) const
Definition: Fadc250Module.h:57
virtual UInt_t GetPulsePeakData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:316
EModuleType
Definition: Decoder.h:53
virtual UInt_t GetNumFadcSamples(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:574
virtual UInt_t DecodeOneWord(UInt_t pdat)
Definition: Fadc250Module.cxx:662
virtual UInt_t GetData(Decoder::EModuleType mtype, UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:195
virtual Int_t Decode(const UInt_t *)
Definition: Fadc250Module.h:49
Definition: THaSlotData.h:37
virtual UInt_t GetPulseTimeData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:253
virtual UInt_t GetOverflowBit(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:394
virtual Bool_t HasCapability(Decoder::EModuleType type)
Definition: Fadc250Module.cxx:106
virtual void CheckDecoderStatus() const
Definition: Fadc250Module.cxx:156
virtual UInt_t GetNumEvents(UInt_t ichan) const
Definition: Fadc250Module.h:56
virtual UInt_t GetPulseIntegralData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:215
Fadc250Module()
Definition: Fadc250Module.cxx:79
virtual void Clear(Option_t *opt="")
Definition: Fadc250Module.cxx:133
virtual void Init()
Definition: Fadc250Module.cxx:144
virtual UInt_t GetPulsePedestalData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:337
virtual UInt_t GetPulseCoarseTimeData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:274
virtual UInt_t GetTriggerTime() const
Definition: Fadc250Module.cxx:436
virtual std::vector< uint32_t > GetPulseSamplesVector(UInt_t chan) const
Definition: Fadc250Module.cxx:468
virtual UInt_t GetPulseFineTimeData(UInt_t chan, UInt_t ievent) const
Definition: Fadc250Module.cxx:295
Definition: Caen1190Module.cxx:20
virtual UInt_t LoadSlot(THaSlotData *sldat, const UInt_t *evbuffer, const UInt_t *pstop)
Definition: Fadc250Module.cxx:602
Definition: PipeliningModule.h:35
virtual UInt_t GetData(UInt_t) const
Definition: Module.h:50
virtual UInt_t LoadNextEvBuffer(THaSlotData *sldat)
Definition: Fadc250Module.cxx:641
virtual UInt_t GetNumFadcEvents(UInt_t chan) const
Definition: Fadc250Module.cxx:519