00001 #ifndef TAP_GENERATORS_TEMPLATE_FITTING_TTEMPLATE_H 00002 #define TAP_GENERATORS_TEMPLATE_FITTING_TTEMPLATE_H 00003 00004 #include <TH1D.h> 00005 #include <TObject.h> 00006 #include <TDirectory.h> 00007 00008 #include "IdChannel.h" 00009 #include "TPulseIsland.h" 00010 00011 class TTemplate:public TObject{ 00012 00013 public: 00014 TTemplate(); 00015 TTemplate(const std::string& det,int refine,int trigger_polarity,bool debug); 00016 virtual ~TTemplate(); 00017 00018 bool HasConverged()const{return fConverged;} 00019 bool CheckConverged(); 00020 bool Empty()const{return fTotalPulses==0;} 00021 int PulsesMerged()const{return fTotalPulses;} 00022 void Initialize(int pulseID, TH1D* pulse, TDirectory* dir); 00023 void AddPulse(double x_offset, double y_scale, double y_offset,const TH1D*); 00024 void AddToDirectory(TDirectory* dir,TDirectory* hist_dir){ 00025 TDirectory* curr=TDirectory::CurrentDirectory(); 00026 dir->cd(); 00027 TObject::Write(); 00028 if(hist_dir){ 00029 fTemplatePulse->SetDirectory(hist_dir); 00030 fErrors->SetDirectory(hist_dir); 00031 } 00032 curr->cd(); 00033 } 00034 00035 void NormaliseToAmplitude(); 00036 void NormaliseToIntegral(); 00037 void NormaliseToSumSquares(); 00038 TH1* RebinToOriginalSampling(); 00039 00040 double GetPedestal()const; 00041 double GetTime()const; 00042 double GetAmplitude()const; 00043 int GetPolarity()const{return fTriggerPolarity;}; 00044 00045 double GetRefineFactor()const{return fRefineFactor;} 00046 00047 const TH1D* GetHisto()const{return fTemplatePulse;} 00048 00049 const char* GetName()const {return fName.c_str();} 00050 static std::string MakeName(const IDs::channel& ch){return ch.str()+"_template";} 00051 private: 00052 void SubtractPedestal(); 00053 void ScaleHist(double factor); 00054 00055 private: 00056 bool fDebug; 00057 bool fConverged; 00058 int fTotalPulses; 00059 int fRefineFactor; 00060 int fTriggerPolarity; 00061 IDs::channel fChannel; 00062 std::string fName; 00063 TH1D *fErrors; 00064 TH1D *fTemplatePulse; 00065 00066 ClassDef(TTemplate,1); 00067 }; 00068 00069 #endif // TAP_GENERATORS_TEMPLATE_FITTING_TTEMPLATE_H