ROOT logo
#ifndef ALICORRECTIONMATRIX3D_H
#define ALICORRECTIONMATRIX3D_H

/* $Id$ */

// ------------------------------------------------------
//
// Class to handle 3d-corrections.
//
// ------------------------------------------------------

#include <AliCorrectionMatrix.h>
#include <AliCorrectionMatrix2D.h>

class TH3;
class TH2;
class TH1;


class AliCorrectionMatrix3D : public AliCorrectionMatrix
{
public:
  AliCorrectionMatrix3D();
  AliCorrectionMatrix3D(const AliCorrectionMatrix3D& c);
  AliCorrectionMatrix3D(const Char_t* name, const Char_t* title,
		     Int_t nBinX, Float_t Xmin, Float_t Xmax,
		     Int_t nBinY, Float_t Ymin, Float_t Ymax,
		     Int_t nBinZ, Float_t Zmin, Float_t Zmax);

  AliCorrectionMatrix3D(const Char_t* name, const Char_t* title,
         Int_t nBinX, Float_t Xmin, Float_t Xmax,
         Int_t nBinY, Float_t Ymin, Float_t Ymax,
         Int_t nBinZ, const Float_t* zbins);

  AliCorrectionMatrix3D(const Char_t* name, const Char_t* title, TH3* hBinning);
 
  virtual ~AliCorrectionMatrix3D();

  AliCorrectionMatrix3D& operator= (const AliCorrectionMatrix3D& c);

  void CreateHists(Int_t nBinX, const Float_t* binLimitsX,
		   Int_t nBinY, const Float_t* binLimitsY,
		   Int_t nBinZ, const Float_t* binLimitsZ);

  TH3* GetGeneratedHistogram();
  TH3* GetMeasuredHistogram();
  TH3* GetCorrectionHistogram();

  AliCorrectionMatrix2D* Get2DCorrection(Option_t* opt, Float_t aMin, Float_t aMax);
  TH2* Get2DCorrectionHistogram(Option_t* opt, Float_t aMin, Float_t aMax)     {return Get2DCorrection(opt,aMin,aMax)->GetCorrectionHistogram();}
  TH1* Get1DCorrectionHistogram(Option_t* opt, Float_t aMins1=0, Float_t aMax1=0, Float_t aMins2=0, Float_t aMax2=0);

  void FillMeas(Float_t ax, Float_t ay, Float_t az, Double_t weight = 1.);
  void FillGene(Float_t ax, Float_t ay, Float_t az, Double_t weight = 1.);

  Float_t GetCorrection(Float_t ax, Float_t ay, Float_t az) const;

  void RemoveEdges(Float_t cut=2, Int_t nBinsXedge = 0, Int_t nBinsYedge = 0, Int_t nBinsZedge = 0);

  virtual void SaveHistograms();

  Int_t CheckEmptyBins(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax, Bool_t quiet = kFALSE);
  TH1* PlotBinErrors(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax);


protected:
  ClassDef(AliCorrectionMatrix3D,1)
};

#endif

 AliCorrectionMatrix3D.h:1
 AliCorrectionMatrix3D.h:2
 AliCorrectionMatrix3D.h:3
 AliCorrectionMatrix3D.h:4
 AliCorrectionMatrix3D.h:5
 AliCorrectionMatrix3D.h:6
 AliCorrectionMatrix3D.h:7
 AliCorrectionMatrix3D.h:8
 AliCorrectionMatrix3D.h:9
 AliCorrectionMatrix3D.h:10
 AliCorrectionMatrix3D.h:11
 AliCorrectionMatrix3D.h:12
 AliCorrectionMatrix3D.h:13
 AliCorrectionMatrix3D.h:14
 AliCorrectionMatrix3D.h:15
 AliCorrectionMatrix3D.h:16
 AliCorrectionMatrix3D.h:17
 AliCorrectionMatrix3D.h:18
 AliCorrectionMatrix3D.h:19
 AliCorrectionMatrix3D.h:20
 AliCorrectionMatrix3D.h:21
 AliCorrectionMatrix3D.h:22
 AliCorrectionMatrix3D.h:23
 AliCorrectionMatrix3D.h:24
 AliCorrectionMatrix3D.h:25
 AliCorrectionMatrix3D.h:26
 AliCorrectionMatrix3D.h:27
 AliCorrectionMatrix3D.h:28
 AliCorrectionMatrix3D.h:29
 AliCorrectionMatrix3D.h:30
 AliCorrectionMatrix3D.h:31
 AliCorrectionMatrix3D.h:32
 AliCorrectionMatrix3D.h:33
 AliCorrectionMatrix3D.h:34
 AliCorrectionMatrix3D.h:35
 AliCorrectionMatrix3D.h:36
 AliCorrectionMatrix3D.h:37
 AliCorrectionMatrix3D.h:38
 AliCorrectionMatrix3D.h:39
 AliCorrectionMatrix3D.h:40
 AliCorrectionMatrix3D.h:41
 AliCorrectionMatrix3D.h:42
 AliCorrectionMatrix3D.h:43
 AliCorrectionMatrix3D.h:44
 AliCorrectionMatrix3D.h:45
 AliCorrectionMatrix3D.h:46
 AliCorrectionMatrix3D.h:47
 AliCorrectionMatrix3D.h:48
 AliCorrectionMatrix3D.h:49
 AliCorrectionMatrix3D.h:50
 AliCorrectionMatrix3D.h:51
 AliCorrectionMatrix3D.h:52
 AliCorrectionMatrix3D.h:53
 AliCorrectionMatrix3D.h:54
 AliCorrectionMatrix3D.h:55
 AliCorrectionMatrix3D.h:56
 AliCorrectionMatrix3D.h:57
 AliCorrectionMatrix3D.h:58
 AliCorrectionMatrix3D.h:59
 AliCorrectionMatrix3D.h:60
 AliCorrectionMatrix3D.h:61
 AliCorrectionMatrix3D.h:62
 AliCorrectionMatrix3D.h:63
 AliCorrectionMatrix3D.h:64
 AliCorrectionMatrix3D.h:65
 AliCorrectionMatrix3D.h:66
 AliCorrectionMatrix3D.h:67
 AliCorrectionMatrix3D.h:68
 AliCorrectionMatrix3D.h:69
 AliCorrectionMatrix3D.h:70
 AliCorrectionMatrix3D.h:71