]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/Tools/AliPWGHistoTools.h
add praticle sources: secondary type
[u/mrichter/AliRoot.git] / PWG / Tools / AliPWGHistoTools.h
CommitLineData
4c0d7bc7 1// ----------------------------------------------------------------------
fef6f2b3 2// AliPWGHistoTools
4c0d7bc7 3//
4// This class provides some tools which can be useful in the analsis
5// of spectra, to fit or transform histograms. See the comments of the
6// individual methods for details
7//
8// Author: M. Floris (CERN)
9// ----------------------------------------------------------------------
10
11#ifndef ALIBWTOOLS_H
12#define ALIBWTOOLS_H
13
14#if !defined(__CINT__) || defined(__MAKECINT__)
15
16#include "TObject.h"
17#include "TH1.h"
18
19class TF1;
20class TH1D;
21class TH1F;
22class TGraphErrors;
8681985a 23class TGraph;
4c0d7bc7 24#endif
25
26
27
fef6f2b3 28class AliPWGHistoTools : public TObject {
4c0d7bc7 29
30public:
31
fef6f2b3 32 AliPWGHistoTools();
33 ~AliPWGHistoTools();
4c0d7bc7 34
3beb22a2 35 static TH1 * GetOneOverPtdNdPt(const TH1 * hPt) ;
36 static TH1 * GetdNdmtFromdNdpt(const TH1 * hpt, Double_t mass);
37 static TH1 * GetdNdPtFromOneOverPt(const TH1 * h1Pt) ;
9ca56c22 38 static TH1 * GetdNdptFromdNdmt(const TH1 * hmt, Double_t mass) ;
3beb22a2 39
40 static TGraphErrors * ConcatenateGraphs(const TGraphErrors * g1,const TGraphErrors * g2);
41 static TH1F * GetHistoFromGraph(const TGraphErrors * g, const TH1F* hTemplate) ;
42 static TGraphErrors * GetGraphFromHisto(const TH1F * h, Bool_t binWidth = kTRUE) ;
ddecf727 43 static void GetMeanDataAndExtrapolation(const TH1 * hData, TF1 * fExtrapolation, Double_t &mean, Double_t &error, Float_t min=0, Float_t max=100);
44
3beb22a2 45 static TH1F * CombineHistos(const TH1 * h1, TH1 * h2, const TH1* htemplate, Float_t renorm1=1.);
46 static TH1F * Combine3HistosWithErrors(const TH1 * h1, const TH1 * h2, const TH1* h3,
3725266c 47 TH1 * he1, TH1 * he2, TH1 * he3,
3beb22a2 48 const TH1* htemplate, Int_t statFrom = 0,
3725266c 49 Float_t renorm1=1., Float_t renorm2=1., Float_t renorm3=1.,
50 TH1 ** hSyst =0, Bool_t errorFromBinContent=kFALSE);
3beb22a2 51 static void GetFromHistoGraphDifferentX(const TH1F * h, TF1 * f, TGraphErrors ** gBarycentre, TGraphErrors ** gXlw);
ddecf727 52 static Float_t GetMean(TH1F * h, Float_t min, Float_t max, Float_t * error = NULL) ;
4c0d7bc7 53
3472a634 54 static void GetMean(TF1 * func, Float_t &mean, Float_t &error, Float_t min=0, Float_t max=100, Int_t normPar = -1);
55 static void GetMeanSquare(TF1 * func, Float_t &mean, Float_t &error, Float_t min=0, Float_t max=100, Int_t normPar = -1) ;
4c0d7bc7 56
57 static Bool_t Fit (TH1 * h, TF1* f, Float_t min, Float_t max) ;
58
3beb22a2 59 static Int_t GetLowestNotEmptyBin(const TH1*h);
60 static Int_t GetHighestNotEmptyBin(const TH1*h);
61 static Float_t GetLowestNotEmptyBinEdge(const TH1*h) { return h->GetBinLowEdge(GetLowestNotEmptyBin(h));}
62 static Float_t GetHighestNotEmptyBinEdge(const TH1*h) { return h->GetBinLowEdge(GetHighestNotEmptyBin(h)+1);}
4c0d7bc7 63
3beb22a2 64 static void GetResiduals(const TGraphErrors * gdata, const TF1 * func, TH1F ** hres, TGraphErrors ** gres) ;
65 static void GetResiduals(const TH1F* hdata, const TF1 * func, TH1F ** hres, TH1F ** hresVsBin) ;
4c0d7bc7 66
67 static void GetYield(TH1* h, TF1 * f, Double_t &yield, Double_t &yieldError, Float_t min = 0,
68 Float_t max = 100, Double_t *partialYields=0, Double_t *partialYieldsErrors=0);
69
3beb22a2 70 static TGraphErrors * DivideGraphByFunc (const TGraphErrors * g, const TF1 * f, Bool_t invert = kFALSE);
71 static TGraphErrors * DivideGraphByHisto(const TGraphErrors * g, TH1 * h, Bool_t invert = kFALSE);
4c0d7bc7 72 static TH1F * DivideHistoByFunc (TH1F * h, TF1 * f, Bool_t invert = kFALSE);
73
ee08b77d 74 static void WeightedMean(Int_t npoints, const Double_t *x, const Double_t *xerr, Double_t &mean, Double_t &meanerr);
75
058137a6 76 static void GetValueAndError(TH1 * hdest, const TH1 * hvalue, const TH1 * herror, Bool_t isPercentError) ;
57b5143c 77 static TH1 * GetRelativeError(TH1 * h);
058137a6 78 static void AddHisto(TH1 * hdest, const TH1* hsource, Bool_t getMirrorBins = kFALSE);
79 static void GetHistoCombinedErrors(TH1 * hdest, const TH1 * h1) ;
d8e6677d 80 static TH1F * DivideHistosDifferentBins(const TH1F* h1, const TH1F* h2);
57b5143c 81 static Double_t DoIntegral(TH1* h, Int_t binx1, Int_t binx2, Int_t biny1, Int_t biny2, Int_t binz1, Int_t binz2, Double_t & error ,
82 Option_t *option, Bool_t doError) ;
8681985a 83 static TGraphErrors * Divide2Graphs(const TGraph * g1, const TGraph * g2, Int_t strategy);
fef6f2b3 84 static TGraphErrors * Add2Graphs(const TGraphErrors * g1, const TGraphErrors * g2);
8681985a 85 static void ScaleGraph (TGraph * g1, Double_t scale);
86
90421222 87
88 static Double_t dMtdptFunction(Double_t *x, Double_t *p) ;
89 static Double_t GetdMtdEta(TH1 *hData, TF1 * fExtrapolation, Double_t mass) ;
90
1fe08fa5 91 // static Bool_t Compare2Plots(TObject * obj1, TObject * obj2);
d8e6677d 92
3725266c 93
4c0d7bc7 94private:
95
fef6f2b3 96 AliPWGHistoTools(const AliPWGHistoTools&); // not implemented
97 AliPWGHistoTools& operator=(const AliPWGHistoTools&); // not implemented
3472a634 98 static void GetMoment(TString name, TString var, TF1 * func, Float_t &mean, Float_t &error, Float_t min, Float_t max, Int_t normPar = -1) ;
4c0d7bc7 99
90421222 100 static TF1 * fdNdptForETCalc;
101
fef6f2b3 102 ClassDef(AliPWGHistoTools,1);
4c0d7bc7 103
104};
105
106#endif