00001 #ifndef TemplateFitter_h_ 00002 #define TemplateFitter_h_ 00003 00004 #include "TFitterMinuit.h" 00005 #include "TPulseIsland.h" 00006 #include "TTemplate.h" 00007 00008 #include "definitions.h" 00009 00010 class TemplateFitter { 00011 public: 00012 TemplateFitter(std::string detname, int refine_factor); 00013 ~TemplateFitter(); 00014 00015 private: 00016 TFitterMinuit* fMinuitFitter; 00017 void operator=(const TemplateFitter&); 00018 00019 public: 00020 int FitPulseToTemplate(const TTemplate* hTemplate, const TH1D* hPulse, const std::string& bankname); 00021 double GetPedestalOffset() { return fPedestalOffset; } 00022 double GetAmplitudeScaleFactor() { return fAmplitudeScaleFactor; } 00023 double GetTimeOffset() { return fTimeOffset; } 00024 double GetChi2() { return fChi2; } 00025 double GetNDoF() { return fNDoF; } 00026 00027 private: 00028 IDs::channel fChannel; 00029 double fPedestalOffset; 00030 double fAmplitudeScaleFactor; 00031 double fTimeOffset; 00032 double fChi2; 00033 int fNDoF; // number of degress of freedom in fit 00034 00037 double fPedestalOffset_estimate; 00038 double fAmplitudeScaleFactor_estimate; 00039 double fTimeOffset_estimate; 00040 00043 double fPedestalOffset_minimum; 00044 double fAmplitudeScaleFactor_minimum; 00045 double fTimeOffset_minimum; 00046 00049 double fPedestalOffset_maximum; 00050 double fAmplitudeScaleFactor_maximum; 00051 double fTimeOffset_maximum; 00052 00053 public: 00056 void SetInitialParameterEstimates(double pedestal, double amplitude, double time); 00057 00058 private: 00059 int fRefineFactor; 00060 }; 00061 00062 #endif