QGUIHistogramHandler.hh
Go to the documentation of this file.00001
00002 #ifndef _QGUI_HISTOGRAM_HANDLER_HH_
00003 #define _QGUI_HISTOGRAM_HANDLER_HH_
00004
00005 #include <string>
00006 #include <map>
00007
00008 #include <TH1F.h>
00009
00010 #include "QApolloMonitorDefs.hh"
00011
00012 class QMonitorHistogramReader;
00013 class QMonitorConfigHandler;
00014 class TCanvas;
00015
00025 class QGUIHistogramHandler
00026 {
00027 public:
00028
00030 QGUIHistogramHandler();
00031
00033 virtual ~QGUIHistogramHandler();
00034
00036 void SetChannel(unsigned int channel);
00037
00039 unsigned int GetChannel() const { return fChannel; }
00040
00042 void SetRateCanvas(TCanvas* ptr) { fRateCanvas = ptr; }
00044 void SetSpectrumCanvas(TCanvas* ptr) { fSpectrumCanvas = ptr; }
00046 void SetPulseCanvas(TCanvas* ptr) { fPulseCanvas = ptr; }
00047
00049 void DrawHistograms();
00050
00051
00060 bool CheckUpdate();
00061
00063 void ForceUpdate() const;
00064
00069 void Inhibit() const;
00070
00072 void SetHistogramColor(QApolloMonitorDefs::QMonitorEventType_t type,
00073 Int_t color)
00074 { fColors[type] = color; }
00075
00080 void SetSpectrumActive(QApolloMonitorDefs::QMonitorEventType_t type,
00081 bool active)
00082 { fSpectrumActive[type] = active; }
00083
00088 void SetRateActive(QApolloMonitorDefs::QMonitorEventType_t type,
00089 bool active)
00090 { fRateActive[type] = active; }
00091
00097 void SetRateStacked(bool stacked) { fRateStacked = stacked; }
00098
00100 void SetSpectrumLogScale(bool logScale) { fSpectrumLogScale = logScale; }
00101
00111 void SetAutoRangeSpectrum(bool lowerBound, bool upperBound)
00112 { fAutoRangeSpectrumMin = lowerBound; fAutoRangeSpectrumMax = upperBound; }
00113
00125 void SetSpectrumMin(Int_t min) { fSpectrumMin = min; }
00126
00138 void SetSpectrumMax(Int_t max) { fSpectrumMax = max; }
00139
00140 private:
00141 unsigned int fChannel;
00142 std::string fRootFile;
00145 std::map<QApolloMonitorDefs::QMonitorEventType_t, TH1F> fRateHisto;
00147 std::map<QApolloMonitorDefs::QMonitorEventType_t, TH1F> fSpectrumHisto;
00148 TH1F fPulseHisto;
00156 std::map<UInt_t, std::map<QApolloMonitorDefs::QMonitorEventType_t,
00157 int> > fLastSpectrumBin;
00158
00165 std::map<UInt_t, std::map<QApolloMonitorDefs::QMonitorEventType_t,
00166 int> > fFirstSpectrumBin;
00167
00168 Double_t fTimeFromStart;
00169 time_t fEventTime;
00170 unsigned int fSamplingRate;
00172 QApolloMonitorDefs::QMonitorEventType_t fEventType;
00173
00174 QMonitorHistogramReader *fReader;
00175 QMonitorConfigHandler *fConfigHandler;
00177 TCanvas* fRateCanvas;
00178 TCanvas *fSpectrumCanvas;
00179 TCanvas *fPulseCanvas;
00181 bool fRateStacked;
00183 bool fSpectrumLogScale;
00186 bool fAutoRangeSpectrumMin;
00188 bool fAutoRangeSpectrumMax;
00189
00190 Int_t fSpectrumMin;
00191 Int_t fSpectrumMax;
00194 std::map<QApolloMonitorDefs::QMonitorEventType_t, Int_t> fColors;
00195
00197 std::map<QApolloMonitorDefs::QMonitorEventType_t, bool> fSpectrumActive;
00198
00200 std::map<QApolloMonitorDefs::QMonitorEventType_t, bool> fRateActive;
00201
00208 bool UpdateHistograms();
00209
00211 void ResetHistograms();
00212
00213
00215 void EvalSpectrumRange();
00216
00223 std::string GetTimeString(const time_t& time, const std::string& format);
00224
00231 void DrawStackedHistograms(bool type, bool stacked);
00232
00233 ClassDef(QGUIHistogramHandler,0)
00234 };
00235 #endif