]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliVertexingHFUtils.h
Add method for multiplicity correction
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliVertexingHFUtils.h
1 #ifndef ALIVERTEXINGHFUTILS_H
2 #define ALIVERTEXINGHFUTILS_H
3
4
5 /* $Id$ */
6
7 ///////////////////////////////////////////////////////////////////
8 //                                                               //
9 // Class with functions useful for different D2H analyses        //
10 // - event plane resolution                                      //
11 // - <pt> calculation with side band subtraction                 //
12 // - tracklet multiplicity calculation                            //
13 // Origin: F.Prino, Torino, prino@to.infn.it                     //
14 //                                                               //
15 ///////////////////////////////////////////////////////////////////
16
17 #include "TObject.h"
18 #include "TProfile.h"
19 #include "TH1F.h"
20 #include "TH2F.h"
21 #include "TF1.h"
22
23 class AliVertexingHFUtils : public TObject{
24  public:
25   AliVertexingHFUtils();
26   AliVertexingHFUtils(Int_t k);
27   virtual ~AliVertexingHFUtils() {};
28
29   // Functions for Event plane resolution
30   void SetK(Int_t k){fK=k;}
31   void SetSubEvResol(Double_t res){fSubRes=res;}
32   void SetSubEventHisto(const TH1F* hSub){
33     fSubRes=GetSubEvResol(hSub);
34   }
35   Int_t GetK() const  {return fK;}
36   Double_t GetSubEvResol() const  {return fSubRes;}
37   Double_t Pol(Double_t x) const {return Pol(x,fK);}
38   Double_t FindChi() const {return FindChi(fSubRes,fK);}
39   Double_t GetFullEvResol() const {return GetFullEvResol(fSubRes,fK);}
40   static Double_t FindChi(Double_t res,  Int_t k=1);
41   static Double_t Pol(Double_t x, Int_t k);
42   static Double_t ResolK1(Double_t x);
43   static Double_t GetSubEvResol(const TH1F* hSubEvCorr){
44     if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean());
45     else return 1.;
46   }
47   static Double_t GetSubEvResolLowLim(const TH1F* hSubEvCorr){
48     if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()-hSubEvCorr->GetMeanError());
49     else return 1.;
50   }
51   static Double_t GetSubEvResolHighLim(const TH1F* hSubEvCorr){
52     if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()+hSubEvCorr->GetMeanError());
53     else return 1.;
54   }
55   static Double_t GetFullEvResol(Double_t resSub, Int_t k=1);
56   static Double_t GetFullEvResol(const TH1F* hSubEvCorr, Int_t k=1);
57   static Double_t GetFullEvResolLowLim(const TH1F* hSubEvCorr, Int_t k=1);
58   static Double_t GetFullEvResolHighLim(const TH1F* hSubEvCorr, Int_t k=1);
59
60   // Functions for tracklet multiplcity calculation
61   void SetEtaRangeForTracklets(Double_t mineta, Double_t maxeta){
62     fMinEtaForTracklets=mineta; 
63     fMaxEtaForTracklets=maxeta;
64   }
65   static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev, Double_t mineta, Double_t maxeta);
66   Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev) const {
67     return GetNumberOfTrackletsInEtaRange(ev,fMinEtaForTracklets,fMaxEtaForTracklets);
68   }
69   static Int_t GetGeneratedMultiplicityInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta);
70   static Int_t GetGeneratedPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta);
71   static Int_t GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta);
72
73   // Functions for computing average pt 
74   static void AveragePt(Float_t& averagePt, Float_t& errorPt, Float_t ptmin, Float_t ptmax, TH2F* hMassD, Float_t massFromFit, Float_t sigmaFromFit, TF1* funcB2, Float_t sigmaRangeForSig=2.5, Float_t sigmaRangeForBkg=4.5, Int_t rebin=4);
75
76   static Double_t GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult);
77
78  private:
79
80   Int_t fK;             // ratio of measured harmonic to event plane harmonic
81   Double_t fSubRes;     // sub-event resolution = sqrt(<cos[n(phiA-phiB)] >)
82   Double_t fMinEtaForTracklets; // min eta for counting tracklets
83   Double_t fMaxEtaForTracklets; // min eta for counting tracklets
84
85   ClassDef(AliVertexingHFUtils,0) 
86 };
87 #endif