]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/qaRec/info/AliTRDv0Info.h
Fix coding rule violations
[u/mrichter/AliRoot.git] / TRD / qaRec / info / AliTRDv0Info.h
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
27 class AliESDv0;
28 class AliESDtrack;
29 class AliESDEvent;
30 class AliTRDtrackV1;
31 class AliTRDtrackInfo;
32 class AliTRDv0Info : public TObject
33 {
34 public:
35   enum ETRDv0Info{
36     kNV0param = 10
37     ,kNlayer   = AliTRDgeometry::kNlayer
38     ,kNDetectors = 3//TPC, TOF, ITS (TOF and ITS not implemented yet)
39     ,kNDaughters = 2//for positive and negative track
40     ,kNDecays = 4//number of decay types considered for reference data (conversions, K0s, Lambda, Anti-Lambda)  
41     ,kNMomBins = 2//number of different momentum bins to consider for different cuts; first example: below/above 2.5 GeV -> to be refined!
42   };
43
44   enum EDaughter{
45     kNeg = 0
46     ,kPos = 1
47   };
48
49   enum EDecayType{
50     kGamma = 0
51     ,kK0s = 1
52     ,kLambda = 2
53     ,kAntiLambda = 3
54   };
55
56   enum EDetector{
57     kTPC = 0
58     ,kTOF = 1
59     ,kITS = 2
60   };
61
62
63   AliTRDv0Info();
64   virtual ~AliTRDv0Info(){}
65
66 /*   Float_t Pplus[2*kNlayer];       // Positives */
67 /*   Float_t Pminus[2*kNlayer];      // Negatives */
68
69  
70   void Print(Option_t *opt=0x0) const;
71  
72   Bool_t GetV0PID(Int_t ipart, AliTRDtrackInfo *track);//decides if a track is accepted for one of the reference samples!!
73
74   //Set values of measured/calculated variables:
75   void SetQuality(Int_t SQuality){fQuality = SQuality;}
76   void SetPplus(Int_t iLayer, Float_t SPplus){fPplus[iLayer] = SPplus;}
77   void SetPminus(Int_t iLayer, Float_t SPminus){fPminus[iLayer] = SPminus;}
78   void SetDCA(Float_t SDCA){fDCA = SDCA;}
79   void SetMomentum(Float_t SMomentum){fMomentum = SMomentum;}
80   void SetPointingAngle(Float_t SPointingAngle){fPointingAngle = SPointingAngle;}
81   void SetOpenAngle(Float_t SOpenAngle){fOpenAngle = SOpenAngle;}
82   void SetPsiPair(Float_t SPsiPair){fPsiPair = SPsiPair;}
83   void SetRadius(Float_t SRadius){fRadius = SRadius;}
84   void SetInvMass(Int_t iDecay, Float_t SInvMass){fInvMass[iDecay] = SInvMass;}
85   void SetDetPID(Int_t iDaughter, Int_t iDetector, Int_t iSpecies, Float_t SDetPID){fDetPID[iDaughter][iDetector][iSpecies] = SDetPID;}
86
87 //____________________________________________________________
88  //Set cut values:
89
90  void SetUpDCA(Int_t iDecay, Float_t UpDCA){fUpDCA[iDecay] = UpDCA;}
91  void SetUpPointingAngle(Int_t iDecay, Float_t UpPointingAngle){fUpPointingAngle[iDecay] = UpPointingAngle;}
92  void SetUpOpenAngle(Int_t iDecay, Float_t UpOpenAngle){fUpOpenAngle[iDecay] = UpOpenAngle;}
93  void SetDownOpenAngle(Int_t iDecay, Float_t DownOpenAngle){fDownOpenAngle[iDecay] = DownOpenAngle;}
94  void SetUpPsiPair(Int_t iDecay, Float_t UpPsiPair){fUpPsiPair[iDecay] = UpPsiPair;}
95  void SetDownPsiPair(Int_t iDecay, Float_t DownPsiPair){fDownPsiPair[iDecay] = DownPsiPair;}
96  void SetUpRadius(Int_t iDecay, Float_t UpRadius){fUpRadius[iDecay] = UpRadius;}
97  void SetDownRadius(Int_t iDecay, Float_t DownRadius){fDownRadius[iDecay] = DownRadius;}
98  void SetUpInvMass(Int_t iDecay, Int_t iMomentum, Double_t UpInvMass){fUpInvMass[iDecay][iMomentum] = UpInvMass;}
99  void SetDownInvMass(Int_t iDecay, Double_t DownInvMass){fDownInvMass[iDecay] = DownInvMass;}
100  void SetDownTPCPIDneg(Int_t iDecay, Double_t DownTPCPIDneg){fDownTPCPIDneg[iDecay] = DownTPCPIDneg;}
101  void SetDownTPCPIDpos(Int_t iDecay, Double_t DownTPCPIDpos){fDownTPCPIDpos[iDecay] = DownTPCPIDpos;}
102
103  
104
105 private:
106   AliTRDv0Info(const AliTRDv0Info&);
107   AliTRDv0Info& operator=(const AliTRDv0Info&);
108
109   void GetESDv0Info(AliESDv0 *esdv0);//gets most of the variables below
110   void GetDetectorPID();//operating with likelihood values of different detectors
111   Int_t Quality(AliESDv0 * const esdv0);//checks for track/vertex quality criteria
112   Double_t InvMass(Int_t part1, Int_t part2, AliESDv0 *esdv0) const;//invariant mass of mother
113   Float_t PsiPair(AliESDv0 *esdv0);//angle between daughters in plane perpendicular to magnetic field (characteristically around zero for conversions)
114   Float_t OpenAngle(AliESDv0 *esdv0);//opening angle between V0 daughters; close to zero for conversions
115   Float_t Radius(AliESDv0 *esdv0);//distance of secondary to primary vertex in x-y-plane 
116   Float_t DCA() const {return fDCA;}//distance of closest approach between supposed daughter tracks
117   Float_t PointingAngle() const {return fPointingAngle;}//pointing angle: between vector from primary to secondary vertex and reconstructed momentum of V0 mother particle
118   Float_t V0Momentum(AliESDv0 *esdv0) const;//reconstructed momentum of V0 mother particle
119   void V0fromTrack(AliTRDtrackInfo * const track, Int_t ivertex);//checks if a track belongs to a vertex found by V0 finder
120   
121   AliESDEvent *fESD; // ESD event
122
123   Bool_t fHasV0; //Does this track belong to a vertex from a V0 finder?
124  
125   Int_t fQuality;              // track quality status for both V0 daughters; OnFly, TPCrefit, Kinks, TPC clusters
126  
127   Float_t fPplus[2*kNlayer];    // momentum and variance for the positive daughter  
128   Float_t fPminus[2*kNlayer];   // momentum and variance for the negative daughter  
129   Double_t fDetPID[kNDaughters][kNDetectors][AliPID::kSPECIES]; // PID provided by TPC, TOF and ITS
130
131   Float_t fMomentum;  // Momentum of track at the vertex
132
133   Float_t fDCA;  // Distance of closest approach of daughter tracks
134   
135   Float_t fPointingAngle;// = TMath::ACos(esdv0->GetV0CosineOfPointingAngle()); // Cosine of pointing angle
136   
137   Float_t fOpenAngle;  // opening angle between daughters
138   
139   Float_t fPsiPair; // /Angle between daughter momentum plane and plane perpendicular to magnetic field
140   
141   Double_t fInvMass[kNDecays];  // invariant mass for different decay scenarios (conversions, K0s, Lambda->p+pi-, Lambda->p-pi+)
142
143   Double_t fMagField; //magnetic field strength
144
145   Float_t fRadius; //distance of decay/conversion from primary vertex in x-y plane
146
147   Int_t fTrackID;//track index
148
149
150   Float_t fV0Momentum; //V0 mother's momentum
151
152   //____________________________________________________________
153   //Upper and lower limits for cut variables:
154
155   Float_t fUpDCA[kNDecays];                  // DCA, upper limit
156   Float_t fUpPointingAngle[kNDecays];        // pointing angle, upper limit
157   Float_t fUpOpenAngle[kNDecays];            // opening angle, upper limit
158   Float_t fDownOpenAngle[kNDecays];          // opening angle, lower limit
159   Float_t fUpPsiPair[kNDecays];              // psi angle, upper limit
160   Float_t fDownPsiPair[kNDecays];            // psi angle, lower limit
161   Double_t fUpInvMass[kNDecays][kNMomBins];  // invariant mass, upper limit
162   Double_t fDownInvMass[kNDecays];           // invariant mass, lower limit
163   Float_t fUpRadius[kNDecays];               // radius, upper limit
164   Float_t fDownRadius[kNDecays];             // radius, lower limit
165   Float_t fDownTPCPIDneg[AliPID::kSPECIES];  // TPC PID negatives, lower limit
166   Float_t fDownTPCPIDpos[AliPID::kSPECIES];  // TPC PID positives, lower limit
167  
168   AliESDtrack *fTrackP; //positive daughter
169   AliESDtrack *fTrackN; //negative daughter
170   AliESDtrack *fTrack; //the current track in the ESDtrack loop (either positive or negative)
171
172
173   Int_t fNindex; //indices of positive and negative daughter track
174   Int_t fPindex; //indices of positive and negative daughter track
175   
176   
177   ClassDef(AliTRDv0Info, 0) // extracted V0 MC information
178 };
179
180
181 #endif
182