]> git.uio.no Git - u/mrichter/AliRoot.git/blob - CORRFW/AliCFGrid.h
All known overlaps removed (M. Sitta)
[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 #include "AliLog.h"
14
15 class TH1D;
16 class TH2D;
17 class TH3D;
18
19 class AliCFGrid : public AliCFVGrid
20 {
21  public:
22   AliCFGrid();
23   AliCFGrid(const Char_t* name,const Char_t* title);
24   AliCFGrid(const Char_t* name, const Char_t* title, const Int_t nVarIn, const Int_t* nBinIn, const Double_t  *binLimitsIn=0);
25   AliCFGrid(const AliCFGrid & c);
26   
27   virtual ~AliCFGrid();
28   AliCFGrid& operator=(const AliCFGrid& corr);
29
30   virtual void  Fill(Double_t *var, Double_t weight=1.);
31
32   virtual void   SetExcludeOffEntriesInProj(Bool_t in); 
33   virtual Bool_t GetExcludeOffEntriesInProj( ) const; 
34   virtual Float_t GetOverFlows(Int_t var) const;
35   virtual Float_t GetUnderFlows(Int_t var)const ;
36   virtual Float_t GetEntries()const ;
37
38   virtual Float_t GetElement(Int_t iel)const; 
39   virtual Float_t GetElement(Int_t *bin)const; 
40   virtual Float_t GetElement(Double_t *var)const; 
41   virtual Float_t GetElementError(Int_t iel)const; 
42   virtual Float_t GetElementError(Int_t *bin)const; 
43   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); 
50
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 ivar, Double_t *varMin, Double_t *varMax) const;
55   virtual TH2D* Slice( Int_t /*ivar1*/, Int_t /*ivar2*/, Double_t */*varMin*/, Double_t */*varMax*/) const 
56   {AliWarning("not implemented"); return 0x0;}
57   virtual TH3D* Slice( Int_t /*ivar1*/, Int_t /*ivar2*/, Int_t /*ivar3*/, Double_t */*varMin*/, Double_t */*varMax*/) const 
58   {AliWarning("not implemented"); return 0x0;}
59
60   //basic operations
61
62   virtual void SumW2();
63   virtual void Copy(TObject& c) const;
64   virtual void Add(AliCFVGrid* aGrid, Double_t c=1.);
65   virtual void Add(AliCFVGrid* aGrid1 ,AliCFVGrid* aGrid2, Double_t c1=1.,Double_t c2=1.);
66   virtual void Multiply(AliCFVGrid* aGrid, Double_t c=1.);
67   virtual void Multiply(AliCFVGrid* aGrid1,AliCFVGrid* aGrid2, Double_t c1=1.,Double_t c2=1.);
68   virtual void Divide(AliCFVGrid* aGrid, Double_t c=1.);
69   virtual void Divide(AliCFVGrid* aGrid1, AliCFVGrid* aGrid2, Double_t c1=1., Double_t c2=1.,Option_t *option=0);
70
71   void Rebin(const Int_t* group);
72
73   
74  protected:
75
76   Float_t  fNentriesTot;//Total number of entries 
77   Float_t  *fNunfl;//[fNVar] underflows in each dimension
78   Float_t  *fNovfl;//[fNVar] overflows in each dimension
79   Float_t  *fData;//[fNDim] The data Container
80   Float_t  *fErr2;//[fNDim] The squared weights Container (only with SumW2)
81
82   
83   ClassDef(AliCFGrid,4);
84 };
85     
86 #endif
87