added functions to define uniform axis binning
authorrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 3 Nov 2009 15:20:48 +0000 (15:20 +0000)
committerrvernet <rvernet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 3 Nov 2009 15:20:48 +0000 (15:20 +0000)
cf savannah https://savannah.cern.ch/bugs/?58112

CORRFW/AliCFContainer.h
CORRFW/AliCFGridSparse.cxx
CORRFW/AliCFGridSparse.h

index aa79143..f014f23 100644 (file)
@@ -34,7 +34,8 @@ class AliCFContainer : public AliCFFrame
   virtual Int_t      GetNVar()                                       const {return fGrid[0]->GetNVar();}
   virtual void       PrintBinLimits()                                const {fGrid[0]->PrintBinLimits();}
   virtual void       PrintNBins()                                    const {fGrid[0]->PrintNBins();}
-  virtual void       SetBinLimits(Int_t ivar, const Double_t * array) ;
+  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       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;}
@@ -107,6 +108,12 @@ inline void AliCFContainer::SetBinLimits(Int_t ivar, const Double_t* array) {
   }
 }
 
+inline void AliCFContainer::SetBinLimits(Int_t ivar, Double_t min, Double_t max) {
+  for (Int_t iStep=0; iStep<GetNStep(); iStep++) {
+    fGrid[iStep]->SetBinLimits(ivar,min,max);
+  }
+}
+
 inline void AliCFContainer::SetVarTitle(Int_t ivar, const Char_t* title) {
   for (Int_t iStep=0; iStep<fNStep; iStep++) {
     GetAxis(ivar,iStep)->SetTitle(title);
index d286149..00843be 100755 (executable)
@@ -98,6 +98,19 @@ AliCFGridSparse& AliCFGridSparse::operator=(const AliCFGridSparse &c)
 } 
 
 //____________________________________________________________________
+void AliCFGridSparse::SetBinLimits(Int_t ivar, Double_t min, Double_t max)
+{
+  //
+  // set a uniform binning for variable ivar
+  //
+  Int_t nBins = GetNBins(ivar);
+  Double_t * array = new Double_t[nBins+1];
+  for (Int_t iEdge=0; iEdge<=nBins; iEdge++) array[iEdge] = min + iEdge * (max-min)/nBins ;
+  fData->SetBinEdges(ivar, array);
+  delete [] array ;
+} 
+
+//____________________________________________________________________
 void AliCFGridSparse::SetBinLimits(Int_t ivar, const Double_t *array)
 {
   //
index 1ebd098..93a09a5 100755 (executable)
@@ -32,7 +32,8 @@ class AliCFGridSparse : public AliCFFrame
   virtual Int_t      GetNVar() const {return fData->GetNdimensions();}
   virtual void       PrintBinLimits() const ;
   virtual void       PrintNBins() const ; 
-  virtual void       SetBinLimits(Int_t ivar, const Double_t * array);
+  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       GetBinLimits(Int_t ivar, Double_t * array) const ;
   virtual Double_t * GetBinLimits(Int_t ivar) const ;
   virtual Long_t     GetNBinsTotal() const ;