]> git.uio.no Git - u/mrichter/AliRoot.git/blob - CORRFW/AliCFGrid.h
This commit was generated by cvs2svn to compensate for changes in r23278,
[u/mrichter/AliRoot.git] / CORRFW / AliCFGrid.h
1 #ifndef ALICFGRID_H
2 #define ALICFGRID_H
3
4 /* $Id$ */
5
6 //--------------------------------------------------------------------//
7 //                                                                    //
8 // AliCFGrid.cxx Class                                                //
9 // Class to handle N-dim maps for the correction Framework            // 
10 //                                                                    //
11 //--------------------------------------------------------------------//
12
13 #include "AliCFFrame.h"
14
15 class TH1F;
16 class TH2F;
17 class TH3F;
18
19 class AliCFGrid : public AliCFFrame
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 Float_t  *binLimitsIn=0);
25   AliCFGrid(const AliCFGrid & c);
26   
27   virtual ~AliCFGrid();
28   AliCFGrid& operator=(const AliCFGrid& corr);
29   virtual void  Fill(Float_t *var, Float_t weight=1.);
30   virtual Float_t GetOverFlows(Int_t var) const;
31   virtual Float_t GetUnderFlows(Int_t var)const ;
32   virtual Float_t GetOverFlows()const ;
33   virtual Float_t GetUnderFlows()const ;
34   virtual Float_t GetEntries()const ;
35   virtual Int_t GetEmptyBins()const ;
36   virtual Int_t CheckEfficiencyStats(Float_t thr) const;
37   virtual Int_t GetSumW2()const {return fSumW2;};
38   virtual Float_t GetElement(Int_t iel)const; 
39   virtual Float_t GetElement(Int_t *bin)const; 
40   virtual Float_t GetElement(Float_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(Float_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(Float_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(Float_t *var, Float_t val); 
50   virtual void Scale(Int_t iel, Float_t *fact); 
51   virtual void Scale(Int_t* bin, Float_t *fact); 
52   virtual void Scale(Float_t* var, Float_t *fact); 
53   virtual void Scale(Float_t *fact); // To normalize MC to int lumi, for ex. 
54   virtual Int_t GetEmptyBins(Float_t *varMin,Float_t *varMax) const ;
55   virtual Float_t GetIntegral() const ;
56   virtual Float_t GetIntegral(Int_t *binMin,Int_t *binMax) const ;
57   virtual Float_t GetIntegral(Float_t *varMin,Float_t *varMax) const ;
58   virtual TH1F* Project( Int_t ivar) const;
59   virtual TH2F* Project( Int_t ivar1, Int_t ivar2) const;
60   virtual TH3F* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3) const;
61   virtual TH1F* Slice( Int_t ivar, Float_t *varMin, Float_t *varMax) const;
62   virtual Float_t GetSum(Int_t ivar, Int_t *binMin, Int_t* binMax) const; 
63
64   //basic operations
65
66   virtual void SumW2();
67   virtual void Copy(TObject& c) const;
68   virtual void Add(AliCFGrid* aGrid, Float_t c=1.);
69   virtual void Add(AliCFGrid* aGrid1 ,AliCFGrid* aGrid2, Float_t c1=1.,Float_t c2=1.);
70   virtual void Multiply(AliCFGrid* aGrid, Float_t c=1.);
71   virtual void Multiply(AliCFGrid* aGrid1,AliCFGrid* aGrid2, Float_t c1=1.,Float_t c2=1.);
72   virtual void Divide(AliCFGrid* aGrid, Float_t c=1.,Option_t *option=0);
73   virtual void Divide(AliCFGrid* aGrid1, AliCFGrid* aGrid2, Float_t c1=1., Float_t c2=1.,Option_t *option=0);
74   virtual Long64_t Merge(TCollection* list);
75
76   
77  protected:
78   Bool_t   fSumW2;//flag to check if calculation of squared weights enabled
79   Float_t  fNunflTot;//Total number of underflows
80   Float_t  fNovflTot;//Total number of underflows
81   Float_t  fNentriesTot;//Total number of entries 
82   Float_t  *fNunfl;//[fNVar] underflows in each dimension
83   Float_t  *fNovfl;//[fNVar] overflows in each dimension
84
85   Float_t  *fData;//[fNDim] The data Container
86   Float_t  *fErr2;//[fNDim] The squared weights Container (only with SumW2)
87
88   
89   ClassDef(AliCFGrid,1);
90 };
91     
92 #endif
93