]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/AliCFContainer.h
Fixing a bug with DCA
[u/mrichter/AliRoot.git] / CORRFW / AliCFContainer.h
index f014f235693e84904c3f9db6600de167775ec04c..aa22f2bacdc2efe816d64a6ea03f4fcd969f3ce8 100644 (file)
@@ -22,7 +22,6 @@ class AliCFContainer : public AliCFFrame
 {
  public:
   AliCFContainer();
-  AliCFContainer(const Char_t* name,const Char_t* title);
   AliCFContainer(const Char_t* name, const Char_t* title,const Int_t nSelStep, const Int_t nVarIn, const Int_t* nBinIn);
   AliCFContainer(const AliCFContainer& c);
   AliCFContainer& operator=(const AliCFContainer& corr);
@@ -36,6 +35,9 @@ class AliCFContainer : public AliCFFrame
   virtual void       PrintNBins()                                    const {fGrid[0]->PrintNBins();}
   virtual void       SetBinLimits(Int_t ivar, Double_t min, Double_t max) ; // for uniform bin width only
   virtual void       SetBinLimits(Int_t ivar, const Double_t * array) ;     // for variable or uniform bin width
+  virtual void       SetBinLabel (Int_t ivar,Int_t ibin, const Char_t* label);// set a label to bin ibin on axis ivar
+  virtual void       SetBinContent(Int_t* bin, Int_t step, Double_t value);
+  virtual void       SetBinError  (Int_t* bin, Int_t step, Double_t value);
   virtual void       GetBinLimits(Int_t ivar, Double_t * array)      const {return fGrid[0]->GetBinLimits(ivar,array);}
   virtual Double_t * GetBinLimits(Int_t ivar)                        const {return fGrid[0]->GetBinLimits(ivar);}
   virtual Long_t     GetNBinsTotal()                                 const {return fGrid[0]->GetNBinsTotal()*fNStep;}
@@ -43,14 +45,11 @@ class AliCFContainer : public AliCFFrame
   virtual Int_t    * GetNBins()                                      const {return fGrid[0]->GetNBins();}
   virtual Float_t    GetBinCenter(Int_t ivar,Int_t ibin)             const {return fGrid[0]->GetBinCenter(ivar,ibin);}
   virtual Float_t    GetBinSize  (Int_t ivar,Int_t ibin)             const {return fGrid[0]->GetBinSize  (ivar,ibin);}
+  virtual Float_t    GetBinContent(const Int_t* coordinates, Int_t step) const {return fGrid[step]->GetGrid()->GetBinContent(coordinates);}
+  virtual Float_t    GetBinError  (const Int_t* coordinates, Int_t step) const {return fGrid[step]->GetGrid()->GetBinError  (coordinates);}
+  virtual const Char_t* GetBinLabel (Int_t ivar,Int_t ibin)          const {return GetAxis(ivar,0)->GetBinLabel(ibin);}
 
-  //virtual void       GetBinCenters(const Int_t *ibin, const Double_t *binCenter) const {return fGrid[0]->GetBinCenters(ibin,binCenter);}
-  //virtual void       GetBinSizes(const Int_t *ibin, const Double_t *binSizes)    const {return fGrid[0]->GetBinSizes(ibin,binSizes);}
-
-  //probably not needed anymore
-  //virtual Int_t      GetBinIndex(const Int_t *ibin)                  const {return fGrid[0]->GetBinIndex(ibin);}
-  //virtual void       GetBinIndex(Int_t iel, const Int_t *ibin)       const {return fGrid[0]->GetBinIndex(iel,ibin);}
-  //virtual Int_t      GetBinIndex(Int_t ivar, Int_t ind)              const {return fGrid[0]->GetBinIndex(ivar,ind);}
+  virtual void       Print(const Option_t*) const ;
 
   virtual TAxis       * GetAxis(Int_t ivar, Int_t istep) const {return fGrid[istep]->GetAxis(ivar);}
   virtual void          SetVarTitle (Int_t ivar,  const Char_t* title) ;
@@ -68,32 +67,31 @@ class AliCFContainer : public AliCFFrame
   virtual Float_t  GetUnderFlows(Int_t var,Int_t istep,Bool_t excl=kFALSE) const ;
   virtual Float_t  GetEntries  (Int_t istep) const ;
   virtual Long_t   GetEmptyBins(Int_t istep) const {return fGrid[istep]->GetEmptyBins();}
-  //virtual Int_t    GetEmptyBins(Int_t istep, Double_t *varMin,Double_t *varMax) const ;
   virtual Double_t GetIntegral (Int_t istep) const ;
-  //virtual Double_t GetIntegral (Int_t istep, Double_t *varMin,Double_t *varMax) const ;
-
 
   //basic operations
   virtual void     Add(const AliCFContainer* aContainerToAdd, Double_t c=1.);
   virtual Long64_t Merge(TCollection* list);
 
-  virtual TH1D* ShowProjection( Int_t ivar, Int_t istep)                           const {return Project(ivar             ,istep);}
-  virtual TH2D* ShowProjection( Int_t ivar1, Int_t ivar2, Int_t istep)             const {return Project(ivar1,ivar2      ,istep);}
-  virtual TH3D* ShowProjection( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const {return Project(ivar1,ivar2,ivar3,istep);}
-  virtual TH1D* Project( Int_t ivar, Int_t istep) const;
-  virtual TH2D* Project( Int_t ivar1, Int_t ivar2, Int_t istep) const;
-  virtual TH3D* Project( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const;
-
-  virtual TH1D* ShowSlice(Int_t ivar, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ;
-  virtual TH2D* ShowSlice(Int_t ivar1, Int_t ivar2, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ;
-  virtual TH3D* ShowSlice(Int_t ivar1, Int_t ivar2, Int_t ivar3, const Double_t *varMin, const Double_t *varMax, Int_t istep, Bool_t useBins=0) const ;
-  virtual AliCFContainer* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Bool_t useBins=0) const ;
-  virtual AliCFContainer* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin, const Double_t* varMax, Int_t nStep, const Int_t* steps, Bool_t useBins=0) const ;
-
-  virtual void  SetRangeUser(Int_t ivar, Double_t varMin, Double_t varMax, Int_t istep) ;
-  virtual void  SetRangeUser(Double_t* varMin, Double_t* varMax, Int_t istep) ;
-  virtual void  SetGrid(Int_t step, AliCFGridSparse* grid) {fGrid[step]=grid;}
+  virtual TH1* Project (Int_t istep, Int_t ivar1, Int_t ivar2=-1 ,Int_t ivar3=-1) const;
+  virtual AliCFContainer* MakeSlice(Int_t nVars, const Int_t* vars, const Double_t* varMin=0x0, const Double_t* varMax=0x0, Bool_t useBins=0) const ;
+  virtual AliCFContainer* MakeSlice(Int_t nStep, const Int_t* steps, 
+                                   Int_t nVars, const Int_t* vars, const Double_t* varMin=0x0, const Double_t* varMax=0x0, 
+                                   Bool_t useBins=0) const ;
+  virtual void  Smooth(Int_t istep) {GetGrid(istep)->Smooth();}
+
+  virtual void  SetRangeUser(Int_t ivar, Double_t varMin, Double_t varMax, Bool_t useBins=kFALSE) const ;
+  virtual void  SetRangeUser(const Double_t* varMin, const Double_t* varMax, Bool_t useBins=kFALSE) const ;
+
+  virtual void  SetGrid(Int_t step, AliCFGridSparse* grid) {if (fGrid[step]) delete fGrid[step]; fGrid[step]=grid;}
   virtual AliCFGridSparse * GetGrid(Int_t istep) const {return fGrid[istep];};
+
+  virtual void  Scale(Double_t factor) const;
+
+  /****   TO BE REMOVED SOON ******/
+  virtual TH1D* ShowProjection( Int_t ivar,  Int_t istep)                          const {return (TH1D*)Project(istep,ivar);}
+  virtual TH2D* ShowProjection( Int_t ivar1, Int_t ivar2, Int_t istep)             const {return (TH2D*)Project(istep,ivar1,ivar2);}
+  virtual TH3D* ShowProjection( Int_t ivar1, Int_t ivar2,Int_t ivar3, Int_t istep) const {return (TH3D*)Project(istep,ivar1,ivar2,ivar3);}
   
  private:
   Int_t    fNStep; //number of selection steps
@@ -136,5 +134,27 @@ inline Int_t AliCFContainer::GetStep(const Char_t* title) const {
 inline Int_t AliCFContainer::GetVar(const Char_t* title) const {
   return fGrid[0]->GetVar(title);
 }
+
+inline void AliCFContainer::SetBinLabel(Int_t iVar, Int_t iBin, const Char_t* label) {
+  for (Int_t iStep=0; iStep<GetNStep(); iStep++) GetAxis(iVar,iStep)->SetBinLabel(iBin,label);
+}
+
+inline void  AliCFContainer::Scale(Double_t factor) const {
+  Double_t fact[2] = {factor,0} ;
+  for (Int_t iStep=0; iStep<fNStep; iStep++) fGrid[iStep]->Scale(fact);
+}
+
+inline void AliCFContainer::SetBinContent(Int_t* bin, Int_t step, Double_t value) {
+  // sets the content 'value' to the current container, at step 'step'
+  // 'bin' is the array of the bin coordinates
+  GetGrid(step)->GetGrid()->SetBinContent(bin,value);
+}
+
+inline void AliCFContainer::SetBinError(Int_t* bin, Int_t step, Double_t value) {
+  // sets the error 'value' to the current container, at step 'step'
+  // 'bin' is the array of the bin coordinates
+  GetGrid(step)->GetGrid()->SetBinError(bin,value);
+}
+
 #endif