#ifndef ROOT_TSpectrum3
#define ROOT_TSpectrum3
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
class TH1;
class TSpectrum3 : public TNamed {
protected:
Int_t fMaxPeaks;
Int_t fNPeaks;
Double_t *fPosition;
Double_t *fPositionX;
Double_t *fPositionY;
Double_t *fPositionZ;
Double_t fResolution;
TH1 *fHistogram;
public:
enum {
kBackIncreasingWindow =0,
kBackDecreasingWindow =1,
kBackSuccessiveFiltering =0,
kBackOneStepFiltering =1
};
TSpectrum3();
TSpectrum3(Int_t maxpositions, Double_t resolution=1);
virtual ~TSpectrum3();
virtual const char *Background(const TH1 *hist, Int_t niter, Option_t *option="goff");
const char *Background(Double_t ***spectrum, Int_t ssizex, Int_t ssizey, Int_t ssizez, Int_t numberIterationsX,Int_t numberIterationsY, Int_t numberIterationsZ, Int_t direction,Int_t filterType);
const char *Deconvolution(Double_t ***source, const Double_t ***resp, Int_t ssizex, Int_t ssizey, Int_t ssizez,Int_t numberIterations, Int_t numberRepetitions, Double_t boost);
TH1 *GetHistogram() const {return fHistogram;}
Int_t GetNPeaks() const {return fNPeaks;}
Double_t *GetPositionX() const {return fPositionX;}
Double_t *GetPositionY() const {return fPositionY;}
Double_t *GetPositionZ() const {return fPositionZ;}
virtual void Print(Option_t *option="") const;
virtual Int_t Search(const TH1 *hist, Double_t sigma=2, Option_t *option="goff", Double_t threshold=0.05);
Int_t SearchFast(const Double_t ***source, Double_t ***dest, Int_t ssizex, Int_t ssizey, Int_t ssizez, Double_t sigma, Double_t threshold, Bool_t markov, Int_t averWindow);
Int_t SearchHighRes(const Double_t ***source,Double_t ***dest, Int_t ssizex, Int_t ssizey, Int_t ssizez, Double_t sigma, Double_t threshold, Bool_t backgroundRemove,Int_t deconIterations, Bool_t markov, Int_t averWindow);
void SetResolution(Double_t resolution=1);
const char *SmoothMarkov(Double_t ***source, Int_t ssizex, Int_t ssizey, Int_t ssizez, Int_t averWindow);
ClassDef(TSpectrum3,1)
};
#endif