]>
Commit | Line | Data |
---|---|---|
a6c5a2e9 | 1 | #ifndef ALIVERTEXINGHFUTILS_H |
2 | #define ALIVERTEXINGHFUTILS_H | |
3 | ||
4 | ||
d947ea9c | 5 | /* $Id$ */ |
a6c5a2e9 | 6 | |
7 | /////////////////////////////////////////////////////////////////// | |
8 | // // | |
9 | // Class with functions useful for different D2H analyses // | |
10 | // - event plane resolution // | |
11 | // - <pt> calculation with side band subtraction // | |
25504150 | 12 | // - tracklet multiplicity calculation // |
a6c5a2e9 | 13 | // Origin: F.Prino, Torino, prino@to.infn.it // |
14 | // // | |
15 | /////////////////////////////////////////////////////////////////// | |
16 | ||
17 | #include "TObject.h" | |
b176db3b | 18 | |
19 | class AliAODMCParticle; | |
20 | class AliAODMCHeader; | |
21 | class TProfile; | |
22 | class TClonesArray; | |
23 | class TH1F; | |
24 | class TH2F; | |
25 | class TF1; | |
a6c5a2e9 | 26 | |
27 | class AliVertexingHFUtils : public TObject{ | |
28 | public: | |
29 | AliVertexingHFUtils(); | |
30 | AliVertexingHFUtils(Int_t k); | |
31 | virtual ~AliVertexingHFUtils() {}; | |
32 | ||
33 | // Functions for Event plane resolution | |
34 | void SetK(Int_t k){fK=k;} | |
35 | void SetSubEvResol(Double_t res){fSubRes=res;} | |
36 | void SetSubEventHisto(const TH1F* hSub){ | |
37 | fSubRes=GetSubEvResol(hSub); | |
38 | } | |
39 | Int_t GetK() const {return fK;} | |
40 | Double_t GetSubEvResol() const {return fSubRes;} | |
41 | Double_t Pol(Double_t x) const {return Pol(x,fK);} | |
42 | Double_t FindChi() const {return FindChi(fSubRes,fK);} | |
43 | Double_t GetFullEvResol() const {return GetFullEvResol(fSubRes,fK);} | |
44 | static Double_t FindChi(Double_t res, Int_t k=1); | |
45 | static Double_t Pol(Double_t x, Int_t k); | |
46 | static Double_t ResolK1(Double_t x); | |
47 | static Double_t GetSubEvResol(const TH1F* hSubEvCorr){ | |
48 | if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()); | |
49 | else return 1.; | |
50 | } | |
51 | static Double_t GetSubEvResolLowLim(const TH1F* hSubEvCorr){ | |
52 | if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()-hSubEvCorr->GetMeanError()); | |
53 | else return 1.; | |
54 | } | |
55 | static Double_t GetSubEvResolHighLim(const TH1F* hSubEvCorr){ | |
56 | if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()+hSubEvCorr->GetMeanError()); | |
57 | else return 1.; | |
58 | } | |
59 | static Double_t GetFullEvResol(Double_t resSub, Int_t k=1); | |
60 | static Double_t GetFullEvResol(const TH1F* hSubEvCorr, Int_t k=1); | |
61 | static Double_t GetFullEvResolLowLim(const TH1F* hSubEvCorr, Int_t k=1); | |
62 | static Double_t GetFullEvResolHighLim(const TH1F* hSubEvCorr, Int_t k=1); | |
63 | ||
64 | // Functions for tracklet multiplcity calculation | |
65 | void SetEtaRangeForTracklets(Double_t mineta, Double_t maxeta){ | |
66 | fMinEtaForTracklets=mineta; | |
67 | fMaxEtaForTracklets=maxeta; | |
68 | } | |
69 | static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev, Double_t mineta, Double_t maxeta); | |
70 | Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev) const { | |
71 | return GetNumberOfTrackletsInEtaRange(ev,fMinEtaForTracklets,fMaxEtaForTracklets); | |
72 | } | |
25504150 | 73 | static Int_t GetGeneratedMultiplicityInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta); |
74 | static Int_t GetGeneratedPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta); | |
75 | static Int_t GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta); | |
a6c5a2e9 | 76 | |
86d84fa4 | 77 | // Functions for computing average pt |
78 | 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); | |
79 | ||
b176db3b | 80 | // Functions for computing true impact parameter of D meson |
15917f37 | 81 | static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp); |
b176db3b | 82 | static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp); |
83 | ||
686e4710 | 84 | static Double_t GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult); |
86d84fa4 | 85 | |
a6c5a2e9 | 86 | private: |
87 | ||
88 | Int_t fK; // ratio of measured harmonic to event plane harmonic | |
89 | Double_t fSubRes; // sub-event resolution = sqrt(<cos[n(phiA-phiB)] >) | |
90 | Double_t fMinEtaForTracklets; // min eta for counting tracklets | |
91 | Double_t fMaxEtaForTracklets; // min eta for counting tracklets | |
92 | ||
93 | ClassDef(AliVertexingHFUtils,0) | |
94 | }; | |
95 | #endif |