#ifndef Filter_h #define Filter_h #include #include #include class Filter : public TNamed { public: Filter(const TH1D &h1); Filter(const Filter &filt); Filter(Int_t length=12); virtual ~Filter(); Int_t GetLength(); TH1D *GetFilterHist(); Int_t GetFilterData(Double_t *array, Int_t length); TH1D *GetTransformHist(); Int_t GetTransformData(Double_t *array, Int_t length); void SetEdgeFilter(Int_t length=0); void Transform(const TH1 *hin); void Transform(const Double_t *array, Int_t length); void Transform(const Float_t *array, Int_t length); void Transform(const Int_t *array, Int_t length); void Transform(const Short_t *array, Int_t length); class Peak_t { public: virtual ~Peak_t() {} void Print() { std::cout << "mag,zero,pos=" << mag << "," << zero << "," << pos << std::endl; } Double_t mag; Double_t zero; Int_t pos; ClassDef(Filter::Peak_t,0); }; class PeakIterator { public: PeakIterator(const PeakIterator &iter); virtual ~PeakIterator(); void Reset(); PeakIterator Begin(); PeakIterator End(); PeakIterator &operator=(PeakIterator &iter); Peak_t &operator*(); Bool_t operator==(PeakIterator &iter); Bool_t operator!=(PeakIterator &iter); PeakIterator &operator++(); PeakIterator operator++(int); Double_t GetThresh(); Filter *GetFilter(); ClassDef(Filter::PeakIterator,0); protected: PeakIterator(Filter *filt, Double_t thresh); friend class Filter; private: Double_t fThresh; Peak_t fPeak; Filter *fFilter; }; PeakIterator &GetPeakIterator(Double_t thresh); ClassDef(Filter,0); private: Int_t fLength; Double_t *fCoef; Int_t fSize; Double_t *fSeries; }; inline Int_t Filter::GetLength() { return fLength; } inline Double_t Filter::PeakIterator::GetThresh() { return fThresh; } inline Filter *Filter::PeakIterator::GetFilter() { return fFilter; } #endif