Some cleaning and simplification in container-related classes and
[u/mrichter/AliRoot.git] / CORRFW / AliCFGrid.cxx
index 1fd35e32f41c93c93c9c9a41896509baa2dbb4d3..7e5ff07e5eebb922656547e8a94522c8c691ef4f 100644 (file)
 //   Still to be done:                                                 //
 // --Implement methods to merge cells                                  //
 // --Interpolate among bins in a range                                 // 
-// This implementation will be aventually replaced  byAliCFGridSparse  //
+// This implementation will be eventually replaced by AliCFGridSparse  //
 //---------------------------------------------------------------------//
 //
 //
-#include <AliLog.h>
+#include "AliLog.h"
 #include "AliCFGrid.h"
 #include "TMath.h"
 #include "TROOT.h"
@@ -168,7 +168,7 @@ Float_t AliCFGrid::GetElement(Double_t *var) const
   Int_t ovfl=0;  
   for(Int_t i=0;i<fNVar;i++){
     Int_t nbins=fNVarBins[i]+1;
-    Float_t *bins=new Float_t[nbins];
+    Double_t *bins=new Double_t[nbins];
     for(Int_t ibin =0;ibin<nbins;ibin++){
      bins[ibin] = fVarBinLimits[ibin+fOffset[i]];
     }
@@ -236,7 +236,7 @@ Float_t AliCFGrid::GetElementError(Double_t *var) const
   Int_t ovfl=0;  
   for(Int_t i=0;i<fNVar;i++){
     Int_t nbins=fNVarBins[i]+1;
-    Float_t *bins=new Float_t[nbins];
+    Double_t *bins=new Double_t[nbins];
     for(Int_t ibin =0;ibin<nbins;ibin++){
      bins[ibin] = fVarBinLimits[ibin+fOffset[i]];
     }
@@ -299,7 +299,7 @@ void AliCFGrid::SetElement(Double_t *var, Float_t val)
   Int_t ovfl=0;  
   for(Int_t i=0;i<fNVar;i++){
     Int_t nbins=fNVarBins[i]+1;
-    Float_t *bins=new Float_t[nbins];
+    Double_t *bins=new Double_t[nbins];
     for(Int_t ibin =0;ibin<nbins;ibin++){
      bins[ibin] = fVarBinLimits[ibin+fOffset[i]];
     }
@@ -362,7 +362,7 @@ void AliCFGrid::SetElementError(Double_t *var, Float_t val)
   Int_t ovfl=0;  
   for(Int_t i=0;i<fNVar;i++){
     Int_t nbins=fNVarBins[i]+1;
-    Float_t *bins=new Float_t[nbins];
+    Double_t *bins=new Double_t[nbins];
     for(Int_t ibin =0;ibin<nbins;ibin++){
      bins[ibin] = fVarBinLimits[ibin+fOffset[i]];
     }
@@ -415,7 +415,7 @@ void AliCFGrid::Fill(Double_t *var, Double_t weight)
 
   for(Int_t i=0;i<fNVar;i++){
     Int_t nbins=fNVarBins[i]+1;
-    Float_t *bins=new Float_t[nbins];
+    Double_t *bins=new Double_t[nbins];
     for(Int_t ibin =0;ibin<nbins;ibin++){
      bins[ibin] = fVarBinLimits[ibin+fOffset[i]];
     }
@@ -767,10 +767,10 @@ TH1D *AliCFGrid::Slice(Int_t ivar, Double_t *varMin, Double_t* varMax) const
   //Find out the min and max bins
 
   for(Int_t i=0;i<fNVar;i++){
-    Float_t xmin=varMin[i]; // the min values  
-    Float_t xmax=varMax[i]; // the min values  
+    Double_t xmin=varMin[i]; // the min values  
+    Double_t xmax=varMax[i]; // the max values  
     Int_t nbins=fNVarBins[i]+1;
-    Float_t *bins=new Float_t[nbins];
+    Double_t *bins=new Double_t[nbins];
     for(Int_t ibin =0;ibin<nbins;ibin++){
      bins[ibin] = fVarBinLimits[ibin+fOffset[i]];
     }
@@ -786,6 +786,8 @@ TH1D *AliCFGrid::Slice(Int_t ivar, Double_t *varMin, Double_t* varMax) const
   Int_t *index= new Int_t[fNVar];
   Int_t ielmin=GetBinIndex(indexMin);
   Int_t ielmax=GetBinIndex(indexMax);
+
+
   for(Int_t iel=ielmin;iel<=ielmax;iel++){
     GetBinIndex(iel,index);
     Bool_t isIn=kTRUE;
@@ -797,6 +799,8 @@ TH1D *AliCFGrid::Slice(Int_t ivar, Double_t *varMin, Double_t* varMax) const
   }
 
   delete [] index;
+  delete [] indexMin;
+  delete [] indexMax;
 
 
   for(Int_t ibin =0;ibin<nbins;ibin++){
@@ -1060,6 +1064,18 @@ void AliCFGrid::Divide(AliCFVGrid* aGrid1, AliCFVGrid* aGrid2, Double_t c1,Doubl
   }
 }
 //____________________________________________________________________
+void AliCFGrid::Rebin(const Int_t* group)
+{
+  //
+  // Not yet implemented
+  //
+  for(Int_t i=0;i<fNVar;i++){
+    if(group[i]!=1)AliInfo(Form(" merging bins along dimension %i in groups of %i bins", i,group[i]));
+  }
+  AliInfo(Form("This method was so far not implemented for AliCFGrid, but it is available for AliCFGridSparse"));
+
+}
+//____________________________________________________________________
 void AliCFGrid::SumW2()
 {
   //
@@ -1102,8 +1118,8 @@ void AliCFGrid::SetExcludeOffEntriesInProj(Bool_t in)
   // or included, when performing projections.
   // For AliCFGrid implementation, only option = kTRUE is available
 
-  if(in){
-    AliInfo(Form("This option not available for AliCFGrid")); 
+  if(!in){
+    AliInfo(Form("This option is not available for AliCFGrid, Under/Overflows in hidden dimensions are always excluded")); 
     return;
   }