ROOT logo
#ifndef ALICFEFFGRID_H
#define ALICFEFFGRID_H

/* $Id$ */

//-----------------------------------------------------------------//
//                                                                 //
// AliCFEffGrid Class                                              //
// Class to handle efficiency grids                                // 
//                                                                 //
//-----------------------------------------------------------------//

#include "AliCFGridSparse.h"
#include "AliCFContainer.h"
class TH1D;
class TH2D;
class TH3D;

class AliCFEffGrid : public AliCFGridSparse
{
 public:
  AliCFEffGrid();
  AliCFEffGrid(const Char_t* name,const Char_t* title, const Int_t nVarIn, const Int_t* nBinIn);
  AliCFEffGrid(const Char_t* name,const Char_t* title, const AliCFContainer &c);
  virtual ~AliCFEffGrid();
  AliCFEffGrid(const AliCFEffGrid& eff);
  AliCFEffGrid& operator=(const AliCFEffGrid& eff);
  
  virtual Double_t GetAverage() const ;
  virtual Int_t GetSelNumStep() const {return fSelNum;};
  virtual Int_t GetSelDenStep() const {return fSelDen;};
  virtual TH1*  Project(Int_t ivar1, Int_t ivar2=-1,Int_t ivar3=-1) const;
  virtual AliCFGridSparse*  Project(Int_t, const Int_t*, const Double_t*, const Double_t*, Bool_t) const {AliWarning("should not be used"); return 0x0;}
  virtual AliCFEffGrid* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const;

  //Efficiency calculation
  virtual void  CalculateEfficiency(Int_t istep1, Int_t istep2, Option_t *option ="B" /*binomial*/);
  virtual AliCFGridSparse*  GetNum() const {return fContainer->GetGrid(fSelNum);};
  virtual AliCFGridSparse*  GetDen() const {return fContainer->GetGrid(fSelDen);};
  virtual void  SetContainer(const AliCFContainer &c) {fContainer=&c;};

 private:
  const AliCFContainer *fContainer; //pointer to the input AliContainer
  Int_t fSelNum;                    //numerator selection step
  Int_t fSelDen;                    //denominator selection step
  
  ClassDef(AliCFEffGrid,1);
};
    
#endif
 AliCFEffGrid.h:1
 AliCFEffGrid.h:2
 AliCFEffGrid.h:3
 AliCFEffGrid.h:4
 AliCFEffGrid.h:5
 AliCFEffGrid.h:6
 AliCFEffGrid.h:7
 AliCFEffGrid.h:8
 AliCFEffGrid.h:9
 AliCFEffGrid.h:10
 AliCFEffGrid.h:11
 AliCFEffGrid.h:12
 AliCFEffGrid.h:13
 AliCFEffGrid.h:14
 AliCFEffGrid.h:15
 AliCFEffGrid.h:16
 AliCFEffGrid.h:17
 AliCFEffGrid.h:18
 AliCFEffGrid.h:19
 AliCFEffGrid.h:20
 AliCFEffGrid.h:21
 AliCFEffGrid.h:22
 AliCFEffGrid.h:23
 AliCFEffGrid.h:24
 AliCFEffGrid.h:25
 AliCFEffGrid.h:26
 AliCFEffGrid.h:27
 AliCFEffGrid.h:28
 AliCFEffGrid.h:29
 AliCFEffGrid.h:30
 AliCFEffGrid.h:31
 AliCFEffGrid.h:32
 AliCFEffGrid.h:33
 AliCFEffGrid.h:34
 AliCFEffGrid.h:35
 AliCFEffGrid.h:36
 AliCFEffGrid.h:37
 AliCFEffGrid.h:38
 AliCFEffGrid.h:39
 AliCFEffGrid.h:40
 AliCFEffGrid.h:41
 AliCFEffGrid.h:42
 AliCFEffGrid.h:43
 AliCFEffGrid.h:44
 AliCFEffGrid.h:45
 AliCFEffGrid.h:46
 AliCFEffGrid.h:47
 AliCFEffGrid.h:48
 AliCFEffGrid.h:49
 AliCFEffGrid.h:50