// --------------------------------------------------------------------- // ----- KrattaSpectrum header file ----- // ----- Created 10/11/13 by P. Pawlowski ----- // --------------------------------------------------------------------- #ifndef KrattaSpectrum_hxx #define KrattaSpectrum_hxx #include "mktreedstchain_sct_fitABC.h" #include "TTree.h" #include "TH2F.h" #include "TString.h" #include "TDirectory.h" namespace Kratta{ typedef float funct(const ASYFadcPeak *); typedef bool cond(const ASYFadcPeak *); }; using namespace Kratta; class KrattaSpectrum{ private: static const int DefaultNx = 2000; static const float DefaultXmin = 0; static const float DefaultXmax = 25000; static const int DefaultNy = 2000; static const float DefaultYmin = 0; static const float DefaultYmax = 25000; int Nx; float Xmin; float Xmax; int Ny; float Ymin; float Ymax; TH2F * hspect; TString Title; int Module; TString Name; TString Formula; TString Condition; funct *Xfun; funct *Yfun; cond *Cfun; const char * MyDirectory; void CreateSpectrum(){ SetSpectrum( //new TH2F(Name,Title + " Module "+Form("%02d",Module), //DefaultNx,DefaultXmin,DefaultXmax,DefaultNy,DefaultYmin,DefaultYmax) new TH2F(Name,Title + " Module "+Form("%02d",Module), Nx,Xmin,Xmax,Ny,Ymin,Ymax) ); } public: KrattaSpectrum( const char *title, int mod, const char *formula = 0, const char *condition = 0, funct * xfun = 0, funct * yfun = 0, cond * cfun = 0); ~KrattaSpectrum(); void SetSpectrum(Int_t nx, Float_t xmin, Float_t xmax, Int_t ny, Float_t ymin, Float_t ymax); void SetFormula(const char * formula){Formula = formula;} void SetCondition(const char * condition){ Condition = *condition ? Form("(%s) && (mod==%d)",condition,Module) : Form("mod==%d",Module); } void SetXfun(funct * fun){Xfun = fun;} void SetYfun(funct * fun){Yfun = fun;} void SetCfun(cond * fun){Cfun = fun;} const char * GetFormula()const{return Formula;} const char * GetCondition()const{return Condition;} float GetX(const ASYFadcPeak * peak)const{return Xfun ? Xfun(peak) : 0;} float GetY(const ASYFadcPeak * peak)const{return Yfun ? Yfun(peak) : 0;} bool GetCondition(const ASYFadcPeak * peak)const{return Cfun ? Cfun(peak) : 0;} int GetModule()const{return Module;} const char * GetName()const{return Name;} const char * GetTitle()const{return Title;} int GetNbinsX(){return Nx;} int GetNbinsY(){return Ny;} float GetXmin(){return Xmin;} float GetXmax(){return Xmax;} float GetYmin(){return Ymin;} float GetYmax(){return Ymax;} float GetCenterX(int binx){return (Xmax - Xmin)/Nx*(binx - 0.5);} float GetCenterY(int biny){return (Ymax - Ymin)/Ny*(biny - 0.5);} void GetCenterXY(int binx, int biny, float & x, float & y){x = GetCenterX(binx); y = GetCenterY(biny);} float GetContent(int binx, int biny){return hspect ? hspect->GetBinContent(binx, biny) : 0;} void SetSpectrum(TH2F * h); /// func. Fill and Draw - not to use in Asyeosroot. Used only in test stage as external software: //int Fill(); //int Fill(const ASYFadcPeak * peak); //void Draw(); int Fill(TTree * tree); void Reset(); void ls(); TH2F * GetSpectrum(){return hspect;} }; #endif