1 #ifndef ALICFGRIDSPARSE_H
2 #define ALICFGRIDSPARSE_H
3 //--------------------------------------------------------------------//
5 // AliCFGridSparse.cxx Class //
6 // Class to handle N-dim maps for the correction Framework //
7 // uses a THnSparse to store the grid //
8 // Author:S.Arcelli, silvia.arcelli@cern.ch
9 //--------------------------------------------------------------------//
11 #include "AliCFVGrid.h"
12 #include "THnSparse.h"
18 class AliCFGridSparse : public AliCFVGrid
22 AliCFGridSparse(const Char_t* name,const Char_t* title);
23 AliCFGridSparse(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t* nBinIn, const Double_t *binLimitsIn=0);
24 AliCFGridSparse(const AliCFGridSparse & c);
26 virtual ~AliCFGridSparse();
27 AliCFGridSparse& operator=(const AliCFGridSparse& corr) ;
28 virtual void SetBinLimits(Int_t ivar, Double_t * array);
30 virtual void Fill(Double_t *var, Double_t weight=1.);
32 virtual Float_t GetOverFlows(Int_t var) const;
33 virtual Float_t GetUnderFlows(Int_t var)const;
34 virtual Float_t GetEntries()const;
36 virtual Float_t GetElement(Int_t iel)const;
37 virtual Float_t GetElement(Int_t *bin)const;
38 virtual Float_t GetElement(Double_t *var)const;
40 virtual Float_t GetElementError(Int_t iel)const;
41 virtual Float_t GetElementError(Int_t *bin)const;
42 virtual Float_t GetElementError(Double_t *var)const;
44 virtual void SetElement(Int_t iel, Float_t val);
45 virtual void SetElement(Int_t *bin, Float_t val);
46 virtual void SetElement(Double_t *var, Float_t val);
47 virtual void SetElementError(Int_t iel, Float_t val);
48 virtual void SetElementError(Int_t *bin, Float_t val) ;
49 virtual void SetElementError(Double_t *var, Float_t val);
51 virtual TH1D* Project( Int_t ivar) const;
52 virtual TH2D* Project( Int_t ivar1, Int_t ivar2) const;
53 virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3) const;
54 virtual TH1D* Slice( Int_t, Double_t *, Double_t *) const {AliInfo("Not yet implemented!"); return 0x0;};
60 virtual void Add(AliCFVGrid* aGrid, Double_t c=1.);
61 virtual void Add(AliCFVGrid* aGrid1 ,AliCFVGrid* aGrid2, Double_t c1=1.,Double_t c2=1.);
62 virtual void Multiply(AliCFVGrid* aGrid, Double_t c=1.);
63 virtual void Multiply(AliCFVGrid* aGrid1,AliCFVGrid* aGrid2, Double_t c1=1.,Double_t c2=1.);
64 virtual void Divide(AliCFVGrid* aGrid, Double_t c=1.);
65 virtual void Divide(AliCFVGrid* aGrid1, AliCFVGrid* aGrid2, Double_t c1=1., Double_t c2=1.,Option_t *option=0);
67 virtual void Rebin(const Int_t* group);
69 THnSparse *GetGrid() const {return fData;};// Getter for the data Container: a THnSparse
71 virtual void Copy(TObject& c) const;
76 THnSparse *fData;// The data Container: a THnSparse
77 ClassDef(AliCFGridSparse,2);