]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TRD/info/AliTRDv0Info.h
fix codding convention violations (Markus H & Alex B)
[u/mrichter/AliRoot.git] / PWG1 / TRD / info / AliTRDv0Info.h
CommitLineData
1ee39b3a 1#ifndef ALITRDV0INFO_H
2#define ALITRDV0INFO_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id: AliTRDv0Info.h 34132 2009-08-06 11:18:32Z cblume $ */
7
8////////////////////////////////////////////////////////////////////////////
9// //
10// Reconstruction QA //
11// //
12////////////////////////////////////////////////////////////////////////////
13
14#ifndef Root_TObject
15#include "TObject.h"
16#endif
17
18#ifndef ALITRDGEOMETRY_H
19#include "AliTRDgeometry.h"
20#endif
21
22#ifndef ALIPID_H
23#include "AliPID.h"
24#endif
25
26
27class AliESDv0;
28class AliESDtrack;
0ed6f095 29class AliKFParticle;
30class AliKFVertex;
31class AliVEvent;
32class AliVTrack;
3d19c1b0 33//class AliTRDtrackV1;
1ee39b3a 34class AliTRDtrackInfo;
35class AliTRDv0Info : public TObject
36{
37public:
38 enum ETRDv0Info{
39 kNV0param = 10
40 ,kNlayer = AliTRDgeometry::kNlayer
41 ,kNDetectors = 3//TPC, TOF, ITS (TOF and ITS not implemented yet)
42 ,kNDaughters = 2//for positive and negative track
43 ,kNDecays = 4//number of decay types considered for reference data (conversions, K0s, Lambda, Anti-Lambda)
8bc8ea55 44 ,kNMomBins = 2//number of different momentum bins to consider for different cuts; first example: below /above 2.5 GeV-> to be refined!
0ed6f095 45 ,kNArmenteros = 2//number of Armenteros-Polanski parameters
1ee39b3a 46 };
47
0ed6f095 48 enum EDaughter{
1ee39b3a 49 kNeg = 0
50 ,kPos = 1
51 };
52
53 enum EDecayType{
54 kGamma = 0
55 ,kK0s = 1
56 ,kLambda = 2
57 ,kAntiLambda = 3
58 };
59
60 enum EDetector{
61 kTPC = 0
62 ,kTOF = 1
63 ,kITS = 2
64 };
65
66
67 AliTRDv0Info();
3d19c1b0 68 AliTRDv0Info(const AliTRDv0Info &ref);
1ee39b3a 69 virtual ~AliTRDv0Info(){}
3d19c1b0 70
1ee39b3a 71
64d57299 72 Int_t GetQuality(){return fQuality;}
73 Float_t GetDCA(){return fDCA;}
74 Float_t GetPointingAngle(){return fPointingAngle;}
75 Float_t GetOpenAngle(){return fOpenAngle;}
76 Float_t GetPsiPair(){return fPsiPair;}
77 Float_t GetRadius(){return fRadius;}
78 Float_t GetV0Momentum(){return fV0Momentum;}
79 Double_t GetInvMass(Int_t iDecay){return fInvMass[iDecay];}
80 Float_t GetDetPID(Int_t iDaughter, Int_t iDetector, Int_t iSpecies){return fDetPID[iDaughter][iDetector][iSpecies];}
81 Float_t GetComPID(Int_t iDaughter, Int_t iSpecies){return fComPID[iDaughter][iSpecies];}
82 Float_t GetTPCdEdx(Int_t iDaughter){return fTPCdEdx[iDaughter];}
83 Float_t GetChi2ndf(Int_t decay){return fChi2ndf[decay];}
84
85 //Get Cut values:
86
87 Float_t GetUpDCA(Int_t iDecay){return fUpDCA[iDecay];}
88 Float_t GetUpPointingAngle(Int_t iDecay){return fUpPointingAngle[iDecay];}
89 Float_t GetUpOpenAngle(Int_t iDecay){return fUpOpenAngle[iDecay];}
90 Float_t GetDownOpenAngle(Int_t iDecay){return fDownOpenAngle[iDecay];}
91 Float_t GetUpPsiPair(Int_t iDecay){return fUpPsiPair[iDecay];}
92 Float_t GetDownPsiPair(Int_t iDecay){return fDownPsiPair[iDecay];}
93 Float_t GetUpRadius(Int_t iDecay){return fUpRadius[iDecay];}
94 Float_t GetDownRadius(Int_t iDecay){return fDownRadius[iDecay];}
95 Double_t GetUpInvMass(Int_t iDecay, Int_t iMomentum){return fUpInvMass[iDecay][iMomentum];}
96 Double_t GetDownInvMass(Int_t iDecay){return fDownInvMass[iDecay];}
97 Float_t GetDownTPCPIDneg(Int_t iPart){return fDownTPCPIDneg[iPart];}
98 Float_t GetDownTPCPIDpos(Int_t iPart){return fDownTPCPIDpos[iPart];}
99 Float_t GetDownComPIDneg(Int_t iPart){return fDownComPIDneg[iPart];}
100 Float_t GetDownComPIDpos(Int_t iPart){return fDownComPIDpos[iPart];}
101 Float_t GetDownComPIDnegPart(Int_t iPart){return fDownComPIDnegPart[iPart];}
102 Float_t GetDownComPIDposPart(Int_t iPart){return fDownComPIDposPart[iPart];}
103
104
105 Int_t GetPID(Int_t ipart, AliTRDtrackInfo *track);
106 Int_t HasTrack(const AliTRDtrackInfo * const track) const;
107 Int_t HasTrack(Int_t ti) const;
108 AliESDtrack *GetV0Daughter(Int_t sign); //Get positive of negative daughter of decay
109
b9ddd472 110 void Print(Option_t *opt="") const;
64d57299 111
3d19c1b0 112 void SetMagField(Float_t b) {fMagField = b;}
b9ddd472 113 void SetV0tracks(AliESDtrack *p, AliESDtrack *n);
0ed6f095 114 void SetInputEvent(AliVEvent *e) { fInputEvent = e; };
115 void SetPrimaryVertex(AliKFVertex *v) { fPrimaryVertex = v; };
64d57299 116
1ee39b3a 117 //Set values of measured/calculated variables:
118 void SetQuality(Int_t SQuality){fQuality = SQuality;}
1ee39b3a 119 void SetDCA(Float_t SDCA){fDCA = SDCA;}
1ee39b3a 120 void SetPointingAngle(Float_t SPointingAngle){fPointingAngle = SPointingAngle;}
121 void SetOpenAngle(Float_t SOpenAngle){fOpenAngle = SOpenAngle;}
122 void SetPsiPair(Float_t SPsiPair){fPsiPair = SPsiPair;}
123 void SetRadius(Float_t SRadius){fRadius = SRadius;}
124 void SetInvMass(Int_t iDecay, Float_t SInvMass){fInvMass[iDecay] = SInvMass;}
125 void SetDetPID(Int_t iDaughter, Int_t iDetector, Int_t iSpecies, Float_t SDetPID){fDetPID[iDaughter][iDetector][iSpecies] = SDetPID;}
8bc8ea55 126 void SetComPID(Int_t iDaughter, Int_t iSpecies, Float_t SComPID){fComPID[iDaughter][iSpecies] = SComPID;}
0ed6f095 127 void SetTPCdEdx(Int_t iDaughter, Float_t STpcdEdx){fTPCdEdx[iDaughter] = STpcdEdx;}
64d57299 128 void SetV0Momentum(Float_t SV0Momentum){fV0Momentum = SV0Momentum;}
129 void SetChi2ndf(Int_t decay, Float_t SChi2ndf){fChi2ndf[decay]=SChi2ndf;}
1ee39b3a 130
131//____________________________________________________________
132 //Set cut values:
133
3d19c1b0 134 void SetUpDCA(Int_t iDecay, Float_t UpDCA){fUpDCA[iDecay] = UpDCA;}
135 void SetUpPointingAngle(Int_t iDecay, Float_t UpPointingAngle){fUpPointingAngle[iDecay] = UpPointingAngle;}
136 void SetUpOpenAngle(Int_t iDecay, Float_t UpOpenAngle){fUpOpenAngle[iDecay] = UpOpenAngle;}
137 void SetDownOpenAngle(Int_t iDecay, Float_t DownOpenAngle){fDownOpenAngle[iDecay] = DownOpenAngle;}
138 void SetUpPsiPair(Int_t iDecay, Float_t UpPsiPair){fUpPsiPair[iDecay] = UpPsiPair;}
139 void SetDownPsiPair(Int_t iDecay, Float_t DownPsiPair){fDownPsiPair[iDecay] = DownPsiPair;}
140 void SetUpRadius(Int_t iDecay, Float_t UpRadius){fUpRadius[iDecay] = UpRadius;}
141 void SetDownRadius(Int_t iDecay, Float_t DownRadius){fDownRadius[iDecay] = DownRadius;}
142 void SetUpInvMass(Int_t iDecay, Int_t iMomentum, Double_t UpInvMass){fUpInvMass[iDecay][iMomentum] = UpInvMass;}
143 void SetDownInvMass(Int_t iDecay, Double_t DownInvMass){fDownInvMass[iDecay] = DownInvMass;}
144 void SetDownTPCPIDneg(Int_t iPart, Double_t DownTPCPIDneg){fDownTPCPIDneg[iPart] = DownTPCPIDneg;}
145 void SetDownTPCPIDpos(Int_t iPart, Double_t DownTPCPIDpos){fDownTPCPIDpos[iPart] = DownTPCPIDpos;}
146 void SetDownComPIDneg(Int_t iPart, Double_t DownComPIDneg){fDownComPIDneg[iPart] = DownComPIDneg;}
147 void SetDownComPIDpos(Int_t iPart, Double_t DownComPIDpos){fDownComPIDpos[iPart] = DownComPIDpos;}
148 void SetDownComPIDnegPart(Int_t iPart, Double_t DownComPIDnegPart){fDownComPIDnegPart[iPart] = DownComPIDnegPart;}
149 void SetDownComPIDposPart(Int_t iPart, Double_t DownComPIDposPart){fDownComPIDposPart[iPart] = DownComPIDposPart;}
64d57299 150
151
3d19c1b0 152 void SetV0Info(AliESDv0 *v0);//gets most of the variables below
1ee39b3a 153
0ed6f095 154
155
1ee39b3a 156private:
1ee39b3a 157 AliTRDv0Info& operator=(const AliTRDv0Info&);
158
1ee39b3a 159 void GetDetectorPID();//operating with likelihood values of different detectors
8bc8ea55 160 void CombinePID();//Bayesian combination of TPC and TOF likelihoods
0ed6f095 161 Bool_t TPCdEdxCuts(Int_t part, AliTRDtrackInfo * const track);//direct cuts on TPC dE/dx
162
d80a6a00 163 Bool_t GetTPCdEdx();//TPC dE/dx values from both tracks
1ee39b3a 164 Int_t Quality(AliESDv0 * const esdv0);//checks for track/vertex quality criteria
165 Double_t InvMass(Int_t part1, Int_t part2, AliESDv0 *esdv0) const;//invariant mass of mother
166 Float_t PsiPair(AliESDv0 *esdv0);//angle between daughters in plane perpendicular to magnetic field (characteristically around zero for conversions)
167 Float_t OpenAngle(AliESDv0 *esdv0);//opening angle between V0 daughters; close to zero for conversions
168 Float_t Radius(AliESDv0 *esdv0);//distance of secondary to primary vertex in x-y-plane
169 Float_t DCA() const {return fDCA;}//distance of closest approach between supposed daughter tracks
170 Float_t PointingAngle() const {return fPointingAngle;}//pointing angle: between vector from primary to secondary vertex and reconstructed momentum of V0 mother particle
171 Float_t V0Momentum(AliESDv0 *esdv0) const;//reconstructed momentum of V0 mother particle
0ed6f095 172 Bool_t V0SignCheck();//checks if daughters have opposite signs
173 Bool_t Armenteros(AliESDv0 *esdv0, Int_t species);//the famous Armenteros-Polanski cut
174 Double_t KFChi2ndf(Int_t part1, Int_t part2,Int_t decay);//Chi2ndf from KF
64d57299 175 AliKFParticle *CreateMotherParticle(const AliESDtrack *pdaughter, const AliESDtrack *ndaughter, Int_t pspec, Int_t nspec);//Mother Particle from KF
0ed6f095 176
1ee39b3a 177
178 //____________________________________________________________
179 //Upper and lower limits for cut variables:
180
181 Float_t fUpDCA[kNDecays]; // DCA, upper limit
182 Float_t fUpPointingAngle[kNDecays]; // pointing angle, upper limit
183 Float_t fUpOpenAngle[kNDecays]; // opening angle, upper limit
184 Float_t fDownOpenAngle[kNDecays]; // opening angle, lower limit
185 Float_t fUpPsiPair[kNDecays]; // psi angle, upper limit
186 Float_t fDownPsiPair[kNDecays]; // psi angle, lower limit
0ed6f095 187
64d57299 188 Double_t fUpChi2ndf[kNDecays]; // upper Chi2/NDF limit
1ee39b3a 189 Float_t fUpRadius[kNDecays]; // radius, upper limit
190 Float_t fDownRadius[kNDecays]; // radius, lower limit
191 Float_t fDownTPCPIDneg[AliPID::kSPECIES]; // TPC PID negatives, lower limit
192 Float_t fDownTPCPIDpos[AliPID::kSPECIES]; // TPC PID positives, lower limit
8bc8ea55 193 Float_t fDownComPIDneg[AliPID::kSPECIES]; // Combined PID negatives, lower limit
194 Float_t fDownComPIDpos[AliPID::kSPECIES]; // Combined PID positives, lower limit
195 Float_t fDownComPIDnegPart[AliPID::kSPECIES]; // Combined PID positive partner daughters (NOT the daughter track that would go into the reference data; here: pion daughters from Lambda decays; lower limit
196 Float_t fDownComPIDposPart[AliPID::kSPECIES]; // Combined PID positive partner daughters (NOT the daughter track that would go into the reference data; here: pion daughters from Lambda decays; lower limit
64d57299 197 Double_t fUpInvMass[kNDecays][kNMomBins]; // invariant mass, upper limit
198 Double_t fDownInvMass[kNDecays]; // invariant mass, lower limit
199
200
201 Double_t fChi2ndf[kNDecays];//Chi2/NDF from KF
202
203
204 Double_t fInvMass[kNDecays]; // invariant mass for different decay scenarios (conversions, K0s, Lambda->p+pi-, Lambda->p-pi+)
205 Int_t fQuality; // track quality status for both V0 daughters; OnFly, TPCrefit, Kinks, TPC clusters
206
207 Double_t fDetPID[kNDaughters][kNDetectors][AliPID::kSPECIES]; // PID provided by TPC, TOF and ITS
208 Double_t fComPID[kNDaughters][AliPID::kSPECIES];//Combined PID, momentarily from TPC and TOF only
0ed6f095 209
64d57299 210 Float_t fDCA; // Distance of closest approach of daughter tracks
211 Float_t fPointingAngle;// = TMath::ACos(esdv0->GetV0CosineOfPointingAngle()); // Cosine of pointing angle
212 Float_t fOpenAngle; // opening angle between daughters
213 Float_t fPsiPair; // /Angle between daughter momentum plane and plane perpendicular to magnetic field
214
215 Bool_t fArmenteros[kNDecays];// Array for the Armenteros yes/no decision for all decays
216 Double_t fMagField; //magnetic field strength
217 Float_t fRadius; //distance of decay/conversion from primary vertex in x-y plane
218 Float_t fV0Momentum; //V0 mother's momentum
1ee39b3a 219
3d19c1b0 220 Int_t fNindex; //indices of positive and negative daughter track
221 Int_t fPindex; //indices of positive and negative daughter track
0ed6f095 222
64d57299 223 Float_t fTPCdEdx[kNDaughters]; //Energy deposition in the TPC
224
225
0ed6f095 226 AliVEvent *fInputEvent; // Input Event
227 AliKFVertex *fPrimaryVertex; // primary vertex
1ee39b3a 228
64d57299 229 AliESDtrack *fTrackP; //!positive daughter
230 AliESDtrack *fTrackN; //!negative daughter
231
232
1ee39b3a 233
3d19c1b0 234 ClassDef(AliTRDv0Info, 1) // extracted V0 MC information
1ee39b3a 235};
236
237
238#endif
239