]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliVertexingHFUtils.h
Additional odifications to compile without ZeroMQ
[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 "AliAODTrack.h"
19 #include "AliAODRecoDecay.h"
20 #include "AliAODRecoDecayHF.h"
21 #include "AliAODRecoCascadeHF.h"
22
23 class AliStack;
24 class AliAODMCParticle;
25 class AliAODMCHeader;
26 class AliGenEventHeader;
27 class AliAODEvent;
28 class TProfile;
29 class TParticle;
30 class TClonesArray;
31 class TH1F;
32 class TH2F;
33 class TF1;
34
35 class AliVertexingHFUtils : public TObject{
36  public:
37   AliVertexingHFUtils();
38   AliVertexingHFUtils(Int_t k);
39   virtual ~AliVertexingHFUtils() {};
40
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
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);
74   static TString  GetGenerator(Int_t label, AliAODMCHeader* header); 
75   Bool_t IsTrackInjected(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC);
76   void GetTrackPrimaryGenerator(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC,TString &nameGen);
77   Bool_t IsCandidateInjected(AliAODRecoDecayHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC);
78   Bool_t HasCascadeCandidateAnyDaughInjected(AliAODRecoCascadeHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC);
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   }
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);
91
92   // Functions for computing average pt 
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);
94
95   // Functions for processing trigger information
96   static Bool_t CheckT0TriggerFired(AliAODEvent* aodEv);
97
98   // Functions for computing true impact parameter of D meson
99   static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp);
100   static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp);
101
102   static Double_t GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult);
103
104   static Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE);
105   static Int_t CheckOrigin(AliStack* stack, TParticle *mcPart, Bool_t searchUpToQuark=kTRUE);
106   static Int_t CheckD0Decay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
107   static Int_t CheckD0Decay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
108   static Int_t CheckDplusDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
109   static Int_t CheckDplusDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
110   static Int_t CheckDsDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
111   static Int_t CheckDsDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
112   static Int_t CheckDstarDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
113   static Int_t CheckDstarDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
114
115  private:
116
117   Int_t fK;             // ratio of measured harmonic to event plane harmonic
118   Double_t fSubRes;     // sub-event resolution = sqrt(<cos[n(phiA-phiB)] >)
119   Double_t fMinEtaForTracklets; // min eta for counting tracklets
120   Double_t fMaxEtaForTracklets; // min eta for counting tracklets
121
122   ClassDef(AliVertexingHFUtils,0) 
123 };
124 #endif