00001 #ifndef DAQFORMATMODULES_DAQBENCHMARK_H
00002 #define DAQFORMATMODULES_DAQBENCHMARK_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include <ctime>
00014
00015 class IStatisticsSvc;
00016 class TH1F;
00017 class TH2F;
00018
00019 namespace DayaBay {
00020 class DaqFadcChannel;
00021 class DaqLtbFrame;
00022 class DaqPmtChannel;
00023 class DaqPmtCrate;
00024 class ReadoutHeader;
00025 class ReadoutPmtChannel;
00026 class ReadoutPmtCrate;
00027 }
00028
00029
00030 namespace DybDaq {
00031 class EventReadout;
00032 class FeeReadout;
00033 class FadcReadout;
00034 class RomData;
00035 class RomFragment;
00036 }
00037
00038 #include "GaudiAlg/GaudiAlgorithm.h"
00039
00040 class DaqBenchmark : public GaudiAlgorithm {
00041
00042 public:
00043
00047 DaqBenchmark(const std::string& name,
00048 ISvcLocator* pSvcLocator);
00049
00053 ~DaqBenchmark();
00054
00058 virtual StatusCode initialize();
00059
00063 virtual StatusCode finalize();
00064
00068 virtual StatusCode execute();
00069
00070 private:
00071
00075 DaqBenchmark();
00076
00080 DaqBenchmark(DaqBenchmark& rhs);
00081
00085 DaqBenchmark& operator=(DaqBenchmark& rhs);
00086
00090 TH1F** getSlotLowGainHistograms(const unsigned int slot);
00091
00095 TH1F* getLowGainHistogram(TH1F** slotLowGainHistograms,
00096 const unsigned int slot,
00097 const unsigned int channelNumber);
00098
00102 TH1F** getSlotHighGainHistograms(const unsigned int slot);
00103
00107 TH1F* getHighGainHistogram(TH1F** slotHighGainHistograms,
00108 const unsigned int slot,
00109 const unsigned int channelNumber);
00110
00114 TH1F** getSlotTdcHistograms(const unsigned int slot);
00115
00119 TH1F* getTdcHistogram(TH1F** slotTdcHistograms,
00120 const unsigned int slot,
00121 const unsigned int channelNumber);
00122
00126 TH1F** getSlotHistogram(TH1F*** histograms,
00127 const unsigned int slot);
00128
00132 TH2F** getSlotFadcHistograms(const unsigned int slot);
00133
00137 TH2F* getFadcHistogram(TH2F** slotFadcHistograms,
00138 const unsigned int slot,
00139 const unsigned int channelNumber);
00140
00144 TH2F** getSlotHistogram(TH2F*** histograms,
00145 const unsigned int slot);
00146
00150 StatusCode handleDaqFormat(const DayaBay::ReadoutHeader& readoutHeader);
00151
00155 void handleEvent(const DybDaq::EventReadout& event);
00156
00160 void handleFragment(const DybDaq::RomFragment& fragment);
00161
00165 void handleFee(const DybDaq::FeeReadout& readout,
00166 const unsigned int slot);
00167
00171 StatusCode handleReadoutEvent(const DayaBay::ReadoutHeader& readoutHeader);
00172
00176 void handleEvent(const DayaBay::ReadoutPmtCrate& create);
00177
00181 void handleChannel(const DayaBay::ReadoutPmtChannel& channel);
00182
00186 StatusCode handleDaqEvent(const DayaBay::ReadoutHeader& readoutHeader);
00187
00191 void handleEvent(const DayaBay::DaqPmtCrate& crate);
00192
00196 void handleFrame(const DayaBay::DaqLtbFrame& frame);
00197
00201 void handleChannel(const DayaBay::DaqPmtChannel& channel);
00202
00206 void handleChannel(const DayaBay::DaqFadcChannel& channel);
00207
00208
00212 IStatisticsSvc* m_statsSvc;
00213
00217 TH1F*** m_feeLowGainHistograms;
00218
00222 TH1F*** m_feeHighGainHistograms;
00223
00227 TH1F*** m_feeTdcHistograms;
00228
00232 TH2F*** m_fadcHistograms;
00233
00237 unsigned long m_eventCount;
00238
00242 unsigned long m_payloadLength;
00243
00247 time_t m_beginTime;
00248
00252 time_t m_firstEventTime;
00253
00257 time_t m_lastEventTime;
00258
00262 bool m_useDaqFormat;
00263
00267 bool m_useDaqEvent;
00268
00272 bool m_useReadoutEvent;
00273
00274 };
00275
00276 #endif // DAQFORMATMODULES_DAQBENCHMARK_H