Made these classes derive from AliCFGridSparse.
[u/mrichter/AliRoot.git] / CORRFW / AliCFGrid.h
1 #ifndef ALICFGRID_H
2 #define ALICFGRID_H
3
4 //--------------------------------------------------------------------//
5 //                                                                    //
6 // AliCFGrid.cxx Class                                                //
7 // Class to handle N-dim maps for the correction Framework            // 
8 // The class uses a une-dimensional array of floats to store the grid //     
9 //                                                                    //
10 //--------------------------------------------------------------------//
11
12 #include "AliCFVGrid.h"
13
14 class TH1D;
15 class TH2D;
16 class TH3D;
17
18 class AliCFGrid : public AliCFVGrid
19 {
20  public:
21   AliCFGrid();
22   AliCFGrid(const Char_t* name,const Char_t* title);
23   AliCFGrid(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t* nBinIn, const Double_t  *binLimitsIn=0);
24   AliCFGrid(const AliCFGrid & c);
25   
26   virtual ~AliCFGrid();
27   AliCFGrid& operator=(const AliCFGrid& corr);
28
29   virtual void  Fill(Double_t *var, Double_t weight=1.);
30
31   virtual void   SetExcludeOffEntriesInProj(Bool_t in); 
32   virtual Bool_t GetExcludeOffEntriesInProj( ) const; 
33   virtual Float_t GetOverFlows(Int_t var) const;
34   virtual Float_t GetUnderFlows(Int_t var)const ;
35   virtual Float_t GetEntries()const ;
36
37   virtual Float_t GetElement(Int_t iel)const; 
38   virtual Float_t GetElement(Int_t *bin)const; 
39   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; 
43   virtual void SetElement(Int_t iel, Float_t val); 
44   virtual void SetElement(Int_t *bin, Float_t val); 
45   virtual void SetElement(Double_t *var, Float_t val); 
46   virtual void SetElementError(Int_t iel, Float_t val); 
47   virtual void SetElementError(Int_t *bin, Float_t val); 
48   virtual void SetElementError(Double_t *var, Float_t val); 
49
50   virtual TH1D* Project( Int_t ivar) const;
51   virtual TH2D* Project( Int_t ivar1, Int_t ivar2) const;
52   virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3) const;
53   virtual TH1D* Slice( Int_t ivar, Double_t *varMin, Double_t *varMax) const;
54
55   //basic operations
56
57   virtual void SumW2();
58   virtual void Copy(TObject& c) const;
59   virtual void Add(AliCFVGrid* aGrid, Double_t c=1.);
60   virtual void Add(AliCFVGrid* aGrid1 ,AliCFVGrid* aGrid2, Double_t c1=1.,Double_t c2=1.);
61   virtual void Multiply(AliCFVGrid* aGrid, Double_t c=1.);
62   virtual void Multiply(AliCFVGrid* aGrid1,AliCFVGrid* aGrid2, Double_t c1=1.,Double_t c2=1.);
63   virtual void Divide(AliCFVGrid* aGrid, Double_t c=1.);
64   virtual void Divide(AliCFVGrid* aGrid1, AliCFVGrid* aGrid2, Double_t c1=1., Double_t c2=1.,Option_t *option=0);
65
66   void Rebin(const Int_t* group);
67
68   
69  protected:
70
71   Float_t  fNentriesTot;//Total number of entries 
72   Float_t  *fNunfl;//[fNVar] underflows in each dimension
73   Float_t  *fNovfl;//[fNVar] overflows in each dimension
74   Float_t  *fData;//[fNDim] The data Container
75   Float_t  *fErr2;//[fNDim] The squared weights Container (only with SumW2)
76
77   
78   ClassDef(AliCFGrid,4);
79 };
80     
81 #endif
82