00001 #ifndef PULSEVIEWER_H_ 00002 #define PULSEVIEWER_H_ 00003 00004 #include "definitions.h" 00005 #include "BaseModule.h" 00006 class TGlobalData; 00007 class TSetupData; 00008 namespace modules {class options;} 00009 class TFormula; 00010 class TIntegralRatioAnalysedPulse; 00011 class TTemplateFitAnalysedPulse; 00012 class TTemplateConvolveAnalysedPulse; 00013 00016 class PulseViewer : public BaseModule{ 00017 typedef int TPulseIslandID; 00018 typedef int TAnalysedPulseID; 00019 typedef int EventID_t; 00020 typedef std::map<TPulseIslandID,int> PulseIDList_t; 00021 typedef std::map<EventID_t,PulseIDList_t> EventPulseIDList_t; 00022 00023 enum ParameterType { 00024 kAmplitude, 00025 kTime, 00026 kIntegral, 00027 kTPILength, 00028 kEnergy, 00029 kPedestal, 00030 kTriggerTime, 00031 kEventNo, 00032 kIntegralRatio, 00033 kIntegralTail, 00034 kChi2, 00035 kStatus, 00036 kWasDouble, 00037 kNPeaks, 00038 kPeakRank 00039 }; 00040 00041 enum PulseType{ 00042 kTAP, 00043 kIntegralRatioAP, 00044 kTemplateFitAP, 00045 kTemplateConvolveAP 00046 }; 00047 00048 public: 00049 PulseViewer(modules::options* opts); 00050 ~PulseViewer(); 00051 00052 private: 00053 virtual int ProcessEntry(TGlobalData *gData, const TSetupData* gSetup); 00054 virtual int BeforeFirstEntry(TGlobalData* gData, const TSetupData* setup); 00055 virtual int AfterLastEntry(TGlobalData* gData, const TSetupData* setup); 00056 00058 IDs::source GetSource()const{return fSource;}; 00059 00062 int ConsiderDrawing(const TAnalysedPulseID& id, const TAnalysedPulse* i_pulse); 00063 00065 double GetParameterValue(const TAnalysedPulse* pulse,const ParameterType& parameter); 00066 double GetParameterValue(const TIntegralRatioAnalysedPulse* pulse,const ParameterType& parameter); 00067 double GetParameterValue(const TTemplateFitAnalysedPulse* pulse,const ParameterType& parameter); 00068 double GetParameterValue(const TTemplateConvolveAnalysedPulse* pulse,const ParameterType& parameter); 00069 00072 int ParseTriggerString(const std::string& trigger_condition); 00073 int CheckPulseType(const std::string& pulse_type); 00074 bool TestPulseType(const TAnalysedPulse* pulse_type); 00075 00077 bool SummarisePlots(){return fSummarize;}; 00078 00079 private: 00080 IDs::source fSource; 00081 std::string fRequestedSource; 00082 std::string fTriggerCondition; 00083 PulseType fPulseType; 00084 std::string fRequestedPulseType; 00085 long int fTotalPlotted; 00086 long int fMaxToPlot, fMaxToPlotPerEvent; 00087 bool fSummarize, fStopAtMax; 00088 EventPulseIDList_t fPulsesPlotted; 00089 TFormula* fFormula; 00090 int fEvent; 00091 00092 typedef std::map<std::string,ParameterType> ParameterKeys; 00093 static ParameterKeys fAvailableParams; 00094 00095 typedef std::map<std::string,PulseType> PulseKeys; 00096 static PulseKeys fAvailablePulseTypes; 00097 }; 00098 00099 #endif //PULSEVIEWER_H_