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