AOD class for V0 analysis (B.Hippolyte)
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODv0.h
1 #ifndef ALIAODV0_H
2 #define ALIAODV0_H
3
4 /* Copyright(c) 2004-2005, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //-------------------------------------------------------------------------
8 //     Implementation of the Analysis Oriented Data (AOD) V0 vertex class
9 //
10 //     Origin: B.Hippolyte, IReS, hippolyt@in2p3.fr 
11 //             G.Van Buren, BNL,  gene@bnl.gov      (original STAR MuDsts)
12 //-------------------------------------------------------------------------
13
14 #include <TObject.h>
15 #include <TPDGCode.h>
16
17 class AliESD;
18 class AliESDVertex;
19 class AliESDv0;
20 class AliESDtrack;
21
22
23 class AliAODv0 : public TObject {
24
25 public:
26   AliAODv0();
27   AliAODv0(AliESDv0*,AliESD*);
28   void  Fill(AliESDv0*,AliESD*);
29   void  ResetV0();
30
31   Double_t decayVertexV0X() const;
32   Double_t decayVertexV0Y() const;
33   Double_t decayVertexV0Z() const;
34                      
35   Double_t dcaV0Daughters() const;
36   Double_t dcaV0ToPrimVertex() const;
37   Double_t dcaPosToPrimVertex() const; 
38   Double_t dcaNegToPrimVertex() const; 
39
40   Double_t momPosX() const;
41   Double_t momPosY() const;
42   Double_t momPosZ() const;
43   Double_t momNegX() const;
44   Double_t momNegY() const;
45   Double_t momNegZ() const;
46
47   Int_t keyPos() const;
48   Int_t keyNeg() const;
49
50   Double_t chi2V0() const;
51
52   // Following Need to be moved to Base Class
53   Double_t momV0X();
54   Double_t momV0Y();
55   Double_t momV0Z();
56
57   Double_t Ptot2Pos();
58   Double_t Ptot2Neg();
59   Double_t Ptot2V0();
60   Double_t Pt2V0();
61   Double_t MomPosAlongV0();
62   Double_t MomNegAlongV0();
63   Double_t alphaV0();
64   Double_t ptArmV0();
65   // Above  Need to be moved to Base Class
66
67
68 protected:
69   Double_t fDecayVertexV0X;
70   Double_t fDecayVertexV0Y;
71   Double_t fDecayVertexV0Z;
72   Double_t fDcaV0Daughters;
73   Double_t fDcaV0ToPrimVertex;
74   Double_t fDcaPosToPrimVertex;
75   Double_t fDcaNegToPrimVertex;
76   Double_t fMomPosX;
77   Double_t fMomPosY;
78   Double_t fMomPosZ;
79   Double_t fMomNegX;
80   Double_t fMomNegY;
81   Double_t fMomNegZ;
82
83   Int_t   fKeyPos;
84   Int_t   fKeyNeg;
85
86   Double_t fChi2;
87   AliESD  *fEvent;
88
89   ClassDef(AliAODv0,1)    // AOD V0 vertex
90 };
91
92 inline Double_t AliAODv0::decayVertexV0X() const {return fDecayVertexV0X;}
93 inline Double_t AliAODv0::decayVertexV0Y() const {return fDecayVertexV0Y;}
94 inline Double_t AliAODv0::decayVertexV0Z() const {return fDecayVertexV0Z;}
95
96 inline Double_t AliAODv0::dcaV0Daughters() const {return fDcaV0Daughters;}
97 inline Double_t AliAODv0::dcaV0ToPrimVertex() const {return fDcaV0ToPrimVertex;}
98 inline Double_t AliAODv0::dcaPosToPrimVertex() const {return fDcaPosToPrimVertex;}
99 inline Double_t AliAODv0::dcaNegToPrimVertex() const {return fDcaNegToPrimVertex;}
100
101 inline Double_t AliAODv0::momPosX() const {return fMomPosX;}
102 inline Double_t AliAODv0::momPosY() const {return fMomPosY;}
103 inline Double_t AliAODv0::momPosZ() const {return fMomPosZ;}
104 inline Double_t AliAODv0::momNegX() const {return fMomNegX;}
105 inline Double_t AliAODv0::momNegY() const {return fMomNegY;}
106 inline Double_t AliAODv0::momNegZ() const {return fMomNegZ;}
107
108 inline Int_t AliAODv0::keyPos() const {return fKeyPos;}
109 inline Int_t AliAODv0::keyNeg() const {return fKeyNeg;}
110
111 inline Double_t AliAODv0::chi2V0() const {return fChi2;}
112
113 // Following Need to be moved to Base Class
114 inline Double_t AliAODv0::momV0X(){return momPosX()+momNegX();}
115 inline Double_t AliAODv0::momV0Y(){return momPosY()+momNegY();}
116 inline Double_t AliAODv0::momV0Z(){return momPosZ()+momNegZ();}
117
118 inline Double_t AliAODv0::Ptot2Pos(){
119   return (::pow(momPosX(),2) + ::pow(momPosY(),2) + ::pow(momPosZ(),2) );
120 }
121 inline Double_t AliAODv0::Ptot2Neg(){
122   return (::pow(momNegX(),2) + ::pow(momNegY(),2) + ::pow(momNegZ(),2) );
123 }
124 inline Double_t AliAODv0::Pt2V0(){
125   return (::pow(momV0X(),2) + ::pow(momV0Y(),2) );
126 }
127
128 inline Double_t AliAODv0::Ptot2V0(){return ( Pt2V0() + ::pow(momV0Z(),2) );}
129
130 inline Double_t AliAODv0::MomPosAlongV0(){
131   Double_t mPtot2V0 = Ptot2V0();
132   if (mPtot2V0)
133     return (momPosX()*momV0X() +
134             momPosY()*momV0Y() +
135             momPosZ()*momV0Z()) / ::sqrt(mPtot2V0);
136   return 0.;
137 }
138
139 inline Double_t AliAODv0::MomNegAlongV0(){
140   Double_t mPtot2V0 = Ptot2V0();
141   if (mPtot2V0)
142     return (momNegX()*momV0X() +
143             momNegY()*momV0Y() +
144             momNegZ()*momV0Z()) / ::sqrt(mPtot2V0);
145   return 0.;
146 }
147
148 inline Double_t AliAODv0::alphaV0(){
149   return 1.-(2./(1.+(MomPosAlongV0()/MomNegAlongV0())));
150 }
151 inline Double_t AliAODv0::ptArmV0(){
152   return ::sqrt(Ptot2Pos()-MomPosAlongV0()*MomPosAlongV0());
153 }
154
155 // Above Need to be moved to Base Class
156
157 #endif
158
159