]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliAnalysisVertexingHF.h
Adding AliAODRecoCascadeHF class (Xiaoming, Andrea)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisVertexingHF.h
CommitLineData
6a213b59 1#ifndef AliAnalysisVertexingHF_H
2#define AliAnalysisVertexingHF_H
3/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6//-------------------------------------------------------------------------
7// Class AliAnalysisVertexingHF
8// Reconstruction of heavy-flavour decay candidates
9//
10// Origin: E.Bruna, G.E.Bruno, A.Dainese, F.Prino, R.Romita
b056c5e3 11// Contact: andrea.dainese@lnl.infn.it
6a213b59 12//-------------------------------------------------------------------------
13
14#include <TNamed.h>
6a213b59 15#include "AliESDVertex.h"
16#include "AliAODRecoDecayHF.h"
17#include "AliAODRecoDecayHF2Prong.h"
18#include "AliAODRecoDecayHF3Prong.h"
19#include "AliAODRecoDecayHF4Prong.h"
f8fa4595 20#include "AliAnalysisFilter.h"
6a213b59 21
dcb444c9 22class AliESDtrack;
23class AliVEvent;
24class AliAODVertex;
25
6a213b59 26//-----------------------------------------------------------------------------
27class AliAnalysisVertexingHF : public TNamed {
28 public:
29 //
30 AliAnalysisVertexingHF();
13977a79 31 AliAnalysisVertexingHF(const AliAnalysisVertexingHF& source);
32 AliAnalysisVertexingHF& operator=(const AliAnalysisVertexingHF& source);
6a213b59 33 virtual ~AliAnalysisVertexingHF();
34
dcb444c9 35 void FindCandidates(AliVEvent *event,
36 TClonesArray *aodVerticesHFTClArr,
37 TClonesArray *aodD0toKpiTClArr,
38 TClonesArray *aodJPSItoEleTClArr,
39 TClonesArray *aodCharm3ProngTClArr,
40 TClonesArray *aodCharm4ProngTClArr);
41
6a213b59 42 void PrintStatus() const;
b82f6d67 43 void SetSecVtxWithKF() { fSecVtxWithKF=kTRUE; }
6a213b59 44 void SetD0toKpiOn() { fD0toKpi=kTRUE; }
45 void SetD0toKpiOff() { fD0toKpi=kFALSE; }
46 void SetJPSItoEleOn() { fJPSItoEle=kTRUE; }
47 void SetJPSItoEleOff() { fJPSItoEle=kFALSE; }
48 void Set3ProngOn() { f3Prong=kTRUE; }
49 void Set3ProngOff() { f3Prong=kFALSE; }
50 void Set4ProngOn() { f4Prong=kTRUE; }
51 void Set4ProngOff() { f4Prong=kFALSE; }
b056c5e3 52 Bool_t GetD0toKpi() { return fD0toKpi; }
53 Bool_t GetJPSItoEle() { return fJPSItoEle; }
54 Bool_t Get3Prong() { return f3Prong; }
55 Bool_t Get4Prong() { return f4Prong; }
6a213b59 56 void SetRecoPrimVtxSkippingTrks()
57 { fRecoPrimVtxSkippingTrks=kTRUE; fRmTrksFromPrimVtx=kFALSE;}
58 void SetRmTrksFromPrimVtx()
59 {fRmTrksFromPrimVtx=kTRUE; fRecoPrimVtxSkippingTrks=kFALSE; }
f8fa4595 60 void SetTrackFilter(AliAnalysisFilter* trackF) { fTrackFilter = trackF; }
6a213b59 61 void SetD0toKpiCuts(Double_t cut0=1000.,Double_t cut1=100000.,
62 Double_t cut2=1.1,Double_t cut3=0.,Double_t cut4=0.,
63 Double_t cut5=100000.,Double_t cut6=100000.,
64 Double_t cut7=100000000.,Double_t cut8=-1.1);
65 void SetD0toKpiCuts(const Double_t cuts[9]);
66 void SetBtoJPSICuts(Double_t cut0=1000.,Double_t cut1=100000.,
67 Double_t cut2=1.1,Double_t cut3=0.,Double_t cut4=0.,
68 Double_t cut5=100000.,Double_t cut6=100000.,
69 Double_t cut7=100000000.,Double_t cut8=-1.1);
70 void SetBtoJPSICuts(const Double_t cuts[9]);
71 void SetDplusCuts(Double_t cut0=1000.,Double_t cut1=0.,
72 Double_t cut2=0.,Double_t cut3=0.,Double_t cut4=0.,
73 Double_t cut5=0.,Double_t cut6=10000000000.,
74 Double_t cut7=0.,Double_t cut8=0.,
75 Double_t cut9=-1.1,Double_t cut10=0.,
81679460 76 Double_t cut11=10000000000.);
6a213b59 77 void SetDplusCuts(const Double_t cuts[12]);
6ea608bf 78 void SetDsCuts(Double_t cut0=1000.,Double_t cut1=0.,
79 Double_t cut2=0.,Double_t cut3=0.,Double_t cut4=0.,
80 Double_t cut5=0.,Double_t cut6=10000000000.,
81 Double_t cut7=0.,Double_t cut8=0.,
82 Double_t cut9=-1.1,Double_t cut10=0.,
81679460 83 Double_t cut11=10000000000., Double_t cut12=1000.);
84 void SetDsCuts(const Double_t cuts[13]);
6ea608bf 85 void SetLcCuts(Double_t cut0=1000.,Double_t cut1=0.,
86 Double_t cut2=0.,Double_t cut3=0.,Double_t cut4=0.,
87 Double_t cut5=0.,Double_t cut6=10000000000.,
88 Double_t cut7=0.,Double_t cut8=0.,
89 Double_t cut9=-1.1,Double_t cut10=0.,
81679460 90 Double_t cut11=10000000000.);
6ea608bf 91 void SetLcCuts(const Double_t cuts[12]);
92
6a213b59 93 //
94 private:
95 //
dcb444c9 96 Bool_t fInputAOD; // input from AOD (kTRUE) or ESD (kFALSE)
97
98 Int_t *fAODMap; // map between index and ID for AOD tracks
99
b82f6d67 100 Double_t fBzkG; // z componenent of field in kG
101
102 Bool_t fSecVtxWithKF; // if kTRUE use KF vertexer, else AliVertexerTracks
103
6a213b59 104 Bool_t fRecoPrimVtxSkippingTrks; // flag for primary vertex reco on the fly
105 // for each candidate, w/o its daughters
106 Bool_t fRmTrksFromPrimVtx; // flag for fast removal of daughters from
107 // the primary vertex
108
109 AliESDVertex *fV1; // primary vertex
110
6a213b59 111 // flag to enable candidates production
112 Bool_t fD0toKpi;
113 Bool_t fJPSItoEle;
114 Bool_t f3Prong;
115 Bool_t f4Prong;
116
117 // single-track cuts
f8fa4595 118 AliAnalysisFilter *fTrackFilter; // Track Filter
6a213b59 119 // candidates cuts
120 Double_t fD0toKpiCuts[9]; // cuts on D0->Kpi candidates
121 // (to be passed to AliAODRecoDecayHF2Prong::SelectD0())
122 // 0 = inv. mass half width [GeV]
123 // 1 = dca [cm]
124 // 2 = cosThetaStar
125 // 3 = pTK [GeV/c]
126 // 4 = pTPi [GeV/c]
127 // 5 = d0K [cm] upper limit!
128 // 6 = d0Pi [cm] upper limit!
129 // 7 = d0d0 [cm^2]
130 // 8 = cosThetaPoint
131 Double_t fBtoJPSICuts[9]; // cuts on JPSI candidates
132 // (to be passed to AliAODRecoDecayHF2Prong::SelectBtoJPSI())
133 // 0 = inv. mass half width [GeV]
134 // 1 = dca [cm]
135 // 2 = cosThetaStar (negative electron)
136 // 3 = pTP [GeV/c]
137 // 4 = pTN [GeV/c]
138 // 5 = d0O [cm] upper limit!
139 // 6 = d0N [cm] upper limit!
140 // 7 = d0d0 [cm^2]
141 // 8 = cosThetaPoint
142 Double_t fDplusCuts[12]; // cuts on Dplus candidates
6ea608bf 143 // (to be passed to AliAODRecoDecayHF3Prong::SelectDplus())
6a213b59 144 // 0 = inv. mass half width [GeV]
145 // 1 = pTK [GeV/c]
146 // 2 = pTPi [GeV/c]
147 // 3 = d0K [cm] lower limit!
148 // 4 = d0Pi [cm] lower limit!
149 // 5 = dist12 (cm)
150 // 6 = sigmavert (cm)
151 // 7 = dist prim-sec (cm)
152 // 8 = pM=Max{pT1,pT2,pT3} (GeV/c)
153 // 9 = cosThetaPoint
154 // 10 = Sum d0^2 (cm^2)
155 // 11 = dca cut (cm)
81679460 156 Double_t fDsCuts[13]; // cuts on Ds candidates
6ea608bf 157 // (to be passed to AliAODRecoDecayHF3Prong::SelectDs())
158 // 0 = inv. mass half width [GeV]
159 // 1 = pTK [GeV/c]
160 // 2 = pTPi [GeV/c]
161 // 3 = d0K [cm] lower limit!
162 // 4 = d0Pi [cm] lower limit!
163 // 5 = dist12 (cm)
164 // 6 = sigmavert (cm)
165 // 7 = dist prim-sec (cm)
166 // 8 = pM=Max{pT1,pT2,pT3} (GeV/c)
167 // 9 = cosThetaPoint
168 // 10 = Sum d0^2 (cm^2)
169 // 11 = dca cut (cm)
81679460 170 // 12 = inv. mass cut arounf phi and K0* [GeV]
171 Double_t fLcCuts[12]; // cuts on Lambdac candidates
6ea608bf 172 // (to be passed to AliAODRecoDecayHF3Prong::SelectLc())
173 // 0 = inv. mass half width [GeV]
174 // 1 = pTP [GeV/c]
175 // 2 = pTPi abd pTK [GeV/c]
176 // 3 = d0P [cm] lower limit!
177 // 4 = d0Pi and d0K [cm] lower limit!
178 // 5 = dist12 (cm)
179 // 6 = sigmavert (cm)
180 // 7 = dist prim-sec (cm)
181 // 8 = pM=Max{pT1,pT2,pT3} (GeV/c)
182 // 9 = cosThetaPoint
183 // 10 = Sum d0^2 (cm^2)
184 // 11 = dca cut (cm)
6a213b59 185 //
dcb444c9 186 void AddDaughterRefs(AliAODVertex *v,AliVEvent *event,
187 TObjArray *trkArray) const;
188 AliAODRecoDecayHF2Prong* Make2Prong(TObjArray *twoTrackArray1,AliVEvent *event,
189 AliAODVertex *secVert,Double_t dcap1n1,
190 Bool_t &okD0,Bool_t &okJPSI) const;
191 AliAODRecoDecayHF3Prong* Make3Prong(TObjArray *threeTrackArray,AliVEvent *event,
192 AliAODVertex *secVert,
193 Double_t dispersion,
194 AliAODVertex *vertexp1n1,
195 AliAODVertex *vertexp2n1,
196 Double_t dcap1n1,Double_t dcap2n1,Double_t dcap1p2,
197 Bool_t &ok3Prong) const;
198 AliAODRecoDecayHF4Prong* Make4Prong(TObjArray *fourTrackArray,AliVEvent *event,
199 AliAODVertex *secVert,
200 AliAODVertex *vertexp1n1,
201 AliAODVertex *vertexp2n1,
202 Double_t dcap1n1,Double_t dcap1n2,
203 Double_t dcap2n1,
204 Bool_t &ok4Prong) const;
205
206 AliAODVertex* OwnPrimaryVertex(TObjArray *trkArray,AliVEvent *event) const;
207 AliAODVertex* ReconstructSecondaryVertex(TObjArray *trkArray,Double_t &dispersion) const;
6a213b59 208 Bool_t SelectInvMass(Int_t decay,Int_t nprongs,
209 Double_t *px,Double_t *py,Double_t *pz) const;
dcb444c9 210 void SelectTracksAndCopyVertex(AliVEvent *event,
6a213b59 211 TObjArray &trksP,Int_t &nTrksP,
dcb444c9 212 TObjArray &trksN,Int_t &nTrksN);
213 void SetPrimaryVertex(AliESDVertex *v1) { fV1 = v1; }
f8fa4595 214 Bool_t SingleTrkCuts(AliESDtrack *trk) const;
6a213b59 215 //
f8fa4595 216 ClassDef(AliAnalysisVertexingHF,5) // Reconstruction of HF decay candidates
6a213b59 217};
218
219
220#endif
221
222
223
224
225
226
227
228