]>
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" | |
f98f4c22 | 18 | #include "AliAODTrack.h" |
19 | #include "AliAODRecoDecay.h" | |
20 | #include "AliAODRecoDecayHF.h" | |
d49d50fc | 21 | #include "AliAODRecoCascadeHF.h" |
b176db3b | 22 | |
23 | class AliAODMCParticle; | |
24 | class AliAODMCHeader; | |
7f51a627 | 25 | class AliGenEventHeader; |
5d1396f9 | 26 | class AliAODEvent; |
b176db3b | 27 | class TProfile; |
28 | class TClonesArray; | |
29 | class TH1F; | |
30 | class TH2F; | |
31 | class TF1; | |
a6c5a2e9 | 32 | |
33 | class AliVertexingHFUtils : public TObject{ | |
34 | public: | |
35 | AliVertexingHFUtils(); | |
36 | AliVertexingHFUtils(Int_t k); | |
37 | virtual ~AliVertexingHFUtils() {}; | |
38 | ||
5d1396f9 | 39 | // Significance calculator |
40 | static void ComputeSignificance(Double_t signal, Double_t errsignal, Double_t background, Double_t errbackground, Double_t &significance,Double_t &errsignificance); | |
41 | ||
a6c5a2e9 | 42 | // Functions for Event plane resolution |
43 | void SetK(Int_t k){fK=k;} | |
44 | void SetSubEvResol(Double_t res){fSubRes=res;} | |
45 | void SetSubEventHisto(const TH1F* hSub){ | |
46 | fSubRes=GetSubEvResol(hSub); | |
47 | } | |
48 | Int_t GetK() const {return fK;} | |
49 | Double_t GetSubEvResol() const {return fSubRes;} | |
50 | Double_t Pol(Double_t x) const {return Pol(x,fK);} | |
51 | Double_t FindChi() const {return FindChi(fSubRes,fK);} | |
52 | Double_t GetFullEvResol() const {return GetFullEvResol(fSubRes,fK);} | |
53 | static Double_t FindChi(Double_t res, Int_t k=1); | |
54 | static Double_t Pol(Double_t x, Int_t k); | |
55 | static Double_t ResolK1(Double_t x); | |
56 | static Double_t GetSubEvResol(const TH1F* hSubEvCorr){ | |
57 | if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()); | |
58 | else return 1.; | |
59 | } | |
60 | static Double_t GetSubEvResolLowLim(const TH1F* hSubEvCorr){ | |
61 | if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()-hSubEvCorr->GetMeanError()); | |
62 | else return 1.; | |
63 | } | |
64 | static Double_t GetSubEvResolHighLim(const TH1F* hSubEvCorr){ | |
65 | if(hSubEvCorr) return TMath::Sqrt(hSubEvCorr->GetMean()+hSubEvCorr->GetMeanError()); | |
66 | else return 1.; | |
67 | } | |
68 | static Double_t GetFullEvResol(Double_t resSub, Int_t k=1); | |
69 | static Double_t GetFullEvResol(const TH1F* hSubEvCorr, Int_t k=1); | |
70 | static Double_t GetFullEvResolLowLim(const TH1F* hSubEvCorr, Int_t k=1); | |
71 | static Double_t GetFullEvResolHighLim(const TH1F* hSubEvCorr, Int_t k=1); | |
7f51a627 | 72 | static TString GetGenerator(Int_t label, AliAODMCHeader* header); |
f98f4c22 | 73 | Bool_t IsTrackInjected(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC); |
7c0e9154 | 74 | void GetTrackPrimaryGenerator(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC,TString &nameGen); |
f98f4c22 | 75 | Bool_t IsCandidateInjected(AliAODRecoDecayHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC); |
d49d50fc | 76 | Bool_t HasCascadeCandidateAnyDaughInjected(AliAODRecoCascadeHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC); |
a6c5a2e9 | 77 | // Functions for tracklet multiplcity calculation |
78 | void SetEtaRangeForTracklets(Double_t mineta, Double_t maxeta){ | |
79 | fMinEtaForTracklets=mineta; | |
80 | fMaxEtaForTracklets=maxeta; | |
81 | } | |
82 | static Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev, Double_t mineta, Double_t maxeta); | |
83 | Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev) const { | |
84 | return GetNumberOfTrackletsInEtaRange(ev,fMinEtaForTracklets,fMaxEtaForTracklets); | |
85 | } | |
25504150 | 86 | static Int_t GetGeneratedMultiplicityInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta); |
87 | static Int_t GetGeneratedPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta); | |
88 | static Int_t GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta); | |
a6c5a2e9 | 89 | |
86d84fa4 | 90 | // Functions for computing average pt |
19df7ca5 | 91 | 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, Float_t minMass=0., Float_t maxMass=3., Int_t rebin=1); |
86d84fa4 | 92 | |
b176db3b | 93 | // Functions for computing true impact parameter of D meson |
15917f37 | 94 | static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp); |
b176db3b | 95 | static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp); |
96 | ||
686e4710 | 97 | static Double_t GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult); |
86d84fa4 | 98 | |
c8781624 | 99 | static Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE); |
100 | static Int_t CheckD0Decay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab); | |
101 | static Int_t CheckDplusDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab); | |
102 | ||
a6c5a2e9 | 103 | private: |
104 | ||
105 | Int_t fK; // ratio of measured harmonic to event plane harmonic | |
106 | Double_t fSubRes; // sub-event resolution = sqrt(<cos[n(phiA-phiB)] >) | |
107 | Double_t fMinEtaForTracklets; // min eta for counting tracklets | |
108 | Double_t fMaxEtaForTracklets; // min eta for counting tracklets | |
109 | ||
110 | ClassDef(AliVertexingHFUtils,0) | |
111 | }; | |
112 | #endif |