]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/AliVertexingHFUtils.h
New methods to tag hadronic decays in the Kinematics.root
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliVertexingHFUtils.h
CommitLineData
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 23class AliStack;
b176db3b 24class AliAODMCParticle;
25class AliAODMCHeader;
7f51a627 26class AliGenEventHeader;
5d1396f9 27class AliAODEvent;
b176db3b 28class TProfile;
ee9c9d9b 29class TParticle;
b176db3b 30class TClonesArray;
31class TH1F;
32class TH2F;
33class TF1;
a6c5a2e9 34
35class 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
86d84fa4 92 // Functions for computing average pt
19df7ca5 93 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 94
b176db3b 95 // Functions for computing true impact parameter of D meson
15917f37 96 static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp);
b176db3b 97 static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp);
98
686e4710 99 static Double_t GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult);
86d84fa4 100
c8781624 101 static Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE);
ee9c9d9b 102 static Int_t CheckOrigin(AliStack* stack, TParticle *mcPart, Bool_t searchUpToQuark=kTRUE);
103 static Int_t CheckD0Decay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
c8781624 104 static Int_t CheckD0Decay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
ee9c9d9b 105 static Int_t CheckDplusDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
c8781624 106 static Int_t CheckDplusDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
ee9c9d9b 107 static Int_t CheckDsDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
108 static Int_t CheckDsDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
109 static Int_t CheckDstarDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
110 static Int_t CheckDstarDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
c8781624 111
a6c5a2e9 112 private:
113
114 Int_t fK; // ratio of measured harmonic to event plane harmonic
115 Double_t fSubRes; // sub-event resolution = sqrt(<cos[n(phiA-phiB)] >)
116 Double_t fMinEtaForTracklets; // min eta for counting tracklets
117 Double_t fMaxEtaForTracklets; // min eta for counting tracklets
118
119 ClassDef(AliVertexingHFUtils,0)
120};
121#endif