1 #ifndef ALIHISTTOOLSDIHADRONPID_H
2 #define ALIHISTTOOLSDIHADRONPID_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 class AliHistToolsDiHadronPID {
10 AliHistToolsDiHadronPID() {};
13 ~AliHistToolsDiHadronPID() {};
17 // Histogram Manipulation.
18 static TH1F* RebinVariableBinning(TH1F* histIn, Double_t* binsx, Int_t Nbinsx, Bool_t density = kTRUE);
19 static TH1F* RebinVariableBinning(TH1F* histIn, TH1F* histAxis, Bool_t density = kTRUE) {
21 // Rebins histogram histIn to the x-axis of histAxis
22 TAxis* xaxis = histAxis->GetXaxis();
23 Int_t nbinsx = xaxis->GetNbins();
24 const Double_t* binsx = (xaxis->GetXbins())->GetArray();
25 return RebinVariableBinning(histIn, const_cast<Double_t*>(binsx), nbinsx, density);
28 static TH1F* TrimHisto(TH1F* histo, Int_t firstbin, Int_t lastbin);
29 static void ConstMinusHist(TH1F* histo, const Float_t cc = 1) {
32 Int_t nbins = histo->GetNbinsX();
33 for (Int_t iBin = 0; iBin < (nbins + 1); iBin++) {
34 Float_t bincontent = histo->GetBinContent(iBin);
35 histo->SetBinContent(iBin,(cc - bincontent));
39 static TH3F* MakeHist3D(const char* name, const char* title,
40 Int_t nbinsX, Double_t minX, Double_t maxX,
41 Int_t nbinsY, Double_t minY, Double_t maxY,
42 Int_t nbinsZ, const Double_t* zaxis) {
44 const Double_t* xaxis = const_cast<Double_t*>(CreateAxis(nbinsX,minX,maxX));
45 const Double_t* yaxis = const_cast<Double_t*>(CreateAxis(nbinsY,minY,maxY));
47 TH3F* hout = new TH3F(name,title,nbinsX,xaxis,nbinsY,yaxis,nbinsZ,zaxis);
52 // Histogram Visualization.
53 static TObjArray* CreateSpectraComparison(const char* name, const char* title, TH1F* h1, TH1F* h2, Int_t markerstyle = 8, Bool_t logy = kTRUE);
56 static Double_t* CreateAxis(const Int_t nbins, Double_t min, Double_t max) {
57 if (nbins <= 0) return 0x0;
58 if (max < min) return 0x0;
60 Double_t* axis = new Double_t[nbins + 1];
61 Double_t binsize = (max - min)/((Double_t)nbins);
62 for (Int_t iBin = 0; iBin < nbins + 1; iBin++) {
63 axis[iBin] = min + ((Double_t)iBin) * binsize;