X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=CORRFW%2FAliCFGridSparse.h;h=eb17b9356f11249f41efd187be5e35fe5581accf;hb=769f5114d71fc1af49cf313362859f15bccd31b4;hp=1ebd098ed5510e1ab08c324dd4989a7a24b10a00;hpb=98a5f77237f1ab4274eeae689ced35d98615997a;p=u%2Fmrichter%2FAliRoot.git diff --git a/CORRFW/AliCFGridSparse.h b/CORRFW/AliCFGridSparse.h index 1ebd098ed55..eb17b9356f1 100755 --- a/CORRFW/AliCFGridSparse.h +++ b/CORRFW/AliCFGridSparse.h @@ -32,7 +32,8 @@ class AliCFGridSparse : public AliCFFrame virtual Int_t GetNVar() const {return fData->GetNdimensions();} virtual void PrintBinLimits() const ; virtual void PrintNBins() const ; - virtual void SetBinLimits(Int_t ivar, const Double_t * array); + virtual void SetBinLimits(Int_t ivar, Double_t min, Double_t max); // for uniform bin width only + virtual void SetBinLimits(Int_t ivar, const Double_t * array); // for variable or uniform bin width virtual void GetBinLimits(Int_t ivar, Double_t * array) const ; virtual Double_t * GetBinLimits(Int_t ivar) const ; virtual Long_t GetNBinsTotal() const ; @@ -69,16 +70,15 @@ class AliCFGridSparse : public AliCFFrame virtual void SetElementError(const Int_t *bin, Float_t val) ; virtual void SetElementError(const Double_t *var, Float_t val); - virtual TH1D* Project( Int_t ivar) const; - virtual TH2D* Project( Int_t ivar1, Int_t ivar2) const; - virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3) const; - virtual AliCFGridSparse* Project(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const ; - virtual TH1D* Slice(Int_t ivar, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const ; - virtual TH2D* Slice(Int_t ivar1, Int_t ivar2, const Double_t *varMin, const Double_t *varMax, Bool_t useBins=0) const ; - virtual TH3D* Slice(Int_t ivar1, Int_t ivar2, Int_t ivar3, const Double_t *varMin, const Double_t *varMax, Bool_t useBins=0) const ; - virtual void SetRangeUser(Int_t iVar, Double_t varMin, Double_t varMax) ; - virtual void SetRangeUser(const Double_t* varMin, const Double_t* varMax) ; - virtual void UseAxisRange(Bool_t b) const ; + virtual TH1* Project(Int_t ivar1, Int_t ivar2=-1, Int_t ivar3=-1) const {return Slice(ivar1,ivar2,ivar3,0x0,0x0,kFALSE);} + virtual TH1* Slice(Int_t ivar1, Int_t ivar2=-1, Int_t ivar3=-1, + const Double_t *varMin=0x0, const Double_t *varMax=0x0, Bool_t useBins=0) const ; + virtual AliCFGridSparse* MakeSlice(Int_t nVars, const Int_t* vars, + const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const ; + + virtual void SetRangeUser(Int_t iVar, Double_t varMin, Double_t varMax, Bool_t useBins=kFALSE) const ; + virtual void SetRangeUser(const Double_t* varMin, const Double_t* varMax, Bool_t useBins=kFALSE) const ; + virtual void Smooth() ; //basic operations virtual void SumW2(); @@ -99,23 +99,25 @@ class AliCFGridSparse : public AliCFFrame //virtual Double_t GetIntegral(const Double_t *varMin, const Double_t *varMax) const; virtual Long64_t Merge(TCollection* list); - virtual void SetGrid(THnSparse* grid) {fData=grid;} + virtual void SetGrid(THnSparse* grid) {if (fData) delete fData ; fData=grid;} THnSparse * GetGrid() const {return fData;} virtual Float_t GetOverFlows (Int_t var, Bool_t excl=kFALSE) const; virtual Float_t GetUnderFlows(Int_t var, Bool_t excl=kFALSE) const; virtual Long_t GetEmptyBins() const; - // to be implemented - //------------------ - //virtual Int_t GetEmptyBins(Double_t *varMin,Double_t *varMax) const; - //virtual Double_t GetIntegral(Int_t *binMin,Int_t *binMax) const; + /* FUNCTIONS TO REMOVE */ + virtual AliCFGridSparse* Project(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const + {return MakeSlice(nVars,vars,varMin,varMax,useBins);} + protected: //protected functions - //Float_t GetSum(Int_t ivar, const Int_t *binMin, const Int_t* binMax) const; void GetScaledValues(const Double_t *fact, const Double_t *in, Double_t *out) const; + void SetAxisRange(TAxis* axis, Double_t min, Double_t max, Bool_t useBins) const; + void GetProjectionName (TString& s,Int_t var0, Int_t var1=-1, Int_t var2=-1) const; + void GetProjectionTitle(TString& s,Int_t var0, Int_t var1=-1, Int_t var2=-1) const; // data members: Bool_t fSumW2 ; // Flag to check if calculation of squared weights enabled @@ -192,5 +194,21 @@ inline Int_t AliCFGridSparse::GetVar(const Char_t* title) const { return -1; } +inline void AliCFGridSparse::GetProjectionName (TString& s, Int_t var0, Int_t var1, Int_t var2) const { + s.Form("%s_proj-%s",GetName(),GetVarTitle(var0)); + if (var1>=0) { + s.Append(Form("-%s",GetVarTitle(var1))); + if (var2>=0) s.Append(Form("-%s",GetVarTitle(var2))); + } +} + +inline void AliCFGridSparse::GetProjectionTitle(TString& s, Int_t var0, Int_t var1, Int_t var2) const { + s.Form("%s: projection on %s",GetTitle(),GetVarTitle(var0)); + if (var1>=0) { + s.Append(Form("-%s",GetVarTitle(var1))); + if (var2>=0) s.Append(Form("-%s",GetVarTitle(var2))); + } +} + #endif