Logarithmic binning for TAxis
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 17 Apr 2012 13:42:36 +0000 (13:42 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 17 Apr 2012 13:42:36 +0000 (13:42 +0000)
TPC/AliTPCcalibBase.cxx
TPC/AliTPCcalibBase.h

index e263bbd..e4e004a 100644 (file)
@@ -397,3 +397,24 @@ void AliTPCcalibBase::BinLogX(TH1 *h) {
   delete [] new_bins;
 
 }
+
+void AliTPCcalibBase::BinLogX(TAxis *axis) {
+
+  // Method for the correct logarithmic binning of histograms
+
+  Int_t bins = axis->GetNbins();
+
+  Double_t from = axis->GetXmin();
+  Double_t to = axis->GetXmax();
+  if (from<0) return;
+  Double_t *new_bins = new Double_t[bins + 1];
+
+  new_bins[0] = from;
+  Double_t factor = pow(to/from, 1./bins);
+
+  for (int i = 1; i <= bins; i++) {
+   new_bins[i] = factor * new_bins[i-1];
+  }
+  axis->Set(bins, new_bins);
+  delete [] new_bins;
+}
index 6344777..f40241b 100644 (file)
@@ -20,6 +20,7 @@ class TGraph;
 class TGraphErrors;
 class THnSparse;
 class TH1;
+class TAxis;
 
 class AliTPCcalibBase:public TNamed {
 public:
@@ -50,6 +51,7 @@ public:
   static TGraphErrors *        FitSlices(THnSparse *h, Int_t axisDim1, Int_t axisDim2, Int_t minEntries, Int_t nmaxBin, Float_t fracLow=0.1, Float_t fracUp=0.9, Bool_t useMedian=kFALSE, TTreeSRedirector *cstream=0, Int_t ival=1);
   static void            BinLogX(THnSparse *h, Int_t axisDim);
   static void            BinLogX(TH1 *h);
+  static void            BinLogX(TAxis * axis);
   void SetRun(Int_t run){ fRun=run;}
 protected: 
   TTreeSRedirector *fDebugStreamer;     //! debug streamer
@@ -71,7 +73,7 @@ protected:
 private:
   Int_t  fDebugLevel;                   //  debug level
 
-  ClassDef(AliTPCcalibBase,2)
+  ClassDef(AliTPCcalibBase,3)
 };
 
 #endif