]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliAODv0.cxx
switch to activate ResponseTriggerV1 from Config
[u/mrichter/AliRoot.git] / ANALYSIS / AliAODv0.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //-------------------------------------------------------------------------
17 //     Implementation of the Analysis Oriented Data (AOD) V0 vertex class
18 //     Origin: B.Hippolyte, IReS, hippolyt@in2p3.fr 
19 //             G.Van Buren, BNL,  gene@bnl.gov      (original STAR MuDsts)
20 //     Purpose: Having observables for physics available for V0s
21 //-------------------------------------------------------------------------
22
23 #include <TMath.h>
24
25 #include "AliESD.h"
26 #include "AliAODv0.h"
27
28 ClassImp(AliAODv0)
29
30 AliAODv0::AliAODv0() : TObject() {
31   //--------------------------------------------------------------------
32   // Default constructor
33   //--------------------------------------------------------------------
34   fDecayVertexV0X     = 999;
35   fDecayVertexV0Y     = 999;
36   fDecayVertexV0Z     = 999;
37   fDcaV0Daughters     = 999;
38   fDcaV0ToPrimVertex  = 999;
39   fDcaPosToPrimVertex = 999;
40   fDcaNegToPrimVertex = 999;
41   fMomPosX = 999;
42   fMomPosY = 999;
43   fMomPosZ = 999;
44   fMomNegX = 999;
45   fMomNegY = 999;
46   fMomNegZ = 999;
47
48   fKeyPos  = 999;
49   fKeyNeg  = 999;
50
51   fChi2    = 999;
52 }
53
54 AliAODv0::AliAODv0(AliESDv0* rV0Vertex ,AliESD* rEvent){
55   this->Fill(rV0Vertex,rEvent);
56 }
57
58 AliAODv0::AliAODv0(AliESDV0MI* rV0Vertex ,AliESD* rEvent){
59   this->Fill(rV0Vertex,rEvent);
60 }
61
62 AliAODv0::AliAODv0(const AliAODv0& rAliAODv0) : TObject(rAliAODv0) {
63   //--------------------------------------------------------------------
64   // Copy constructor
65   //--------------------------------------------------------------------
66   fDecayVertexV0X     = rAliAODv0.fDecayVertexV0X;
67   fDecayVertexV0Y     = rAliAODv0.fDecayVertexV0Y;
68   fDecayVertexV0Z     = rAliAODv0.fDecayVertexV0Z;
69   fDcaV0Daughters     = rAliAODv0.fDcaV0Daughters;
70   fDcaV0ToPrimVertex  = rAliAODv0.fDcaV0ToPrimVertex ;
71   fDcaPosToPrimVertex = rAliAODv0.fDcaPosToPrimVertex;
72   fDcaNegToPrimVertex = rAliAODv0.fDcaNegToPrimVertex;
73   fMomPosX = rAliAODv0.fMomPosX;
74   fMomPosY = rAliAODv0.fMomPosY;
75   fMomPosZ = rAliAODv0.fMomPosZ;
76   fMomNegX = rAliAODv0.fMomNegX;
77   fMomNegY = rAliAODv0.fMomNegY;
78   fMomNegZ = rAliAODv0.fMomNegZ;
79
80   fKeyNeg  = rAliAODv0.fKeyNeg;
81   fKeyPos =  rAliAODv0.fKeyPos;
82
83   fChi2    = rAliAODv0.fChi2;
84 }
85
86 AliAODv0& AliAODv0::operator=(const AliAODv0& rAliAODv0){
87   //--------------------------------------------------------------------
88   // Assignment overload
89   //--------------------------------------------------------------------
90   this->fDecayVertexV0X     = rAliAODv0.fDecayVertexV0X;
91   this->fDecayVertexV0Y     = rAliAODv0.fDecayVertexV0Y;
92   this->fDecayVertexV0Z     = rAliAODv0.fDecayVertexV0Z;
93   this->fDcaV0Daughters     = rAliAODv0.fDcaV0Daughters;
94   this->fDcaV0ToPrimVertex  = rAliAODv0.fDcaV0ToPrimVertex ;
95   this->fDcaPosToPrimVertex = rAliAODv0.fDcaPosToPrimVertex;
96   this->fDcaNegToPrimVertex = rAliAODv0.fDcaNegToPrimVertex;
97   this->fMomPosX = rAliAODv0.fMomPosX;
98   this->fMomPosY = rAliAODv0.fMomPosY;
99   this->fMomPosZ = rAliAODv0.fMomPosZ;
100   this->fMomNegX = rAliAODv0.fMomNegX;
101   this->fMomNegY = rAliAODv0.fMomNegY;
102   this->fMomNegZ = rAliAODv0.fMomNegZ;
103
104   this->fKeyPos  = rAliAODv0.fKeyPos;
105   this->fKeyNeg  = rAliAODv0.fKeyNeg;
106
107   this->fChi2    = rAliAODv0.fChi2;
108   return *this;
109 }
110
111 AliAODv0::~AliAODv0(){
112   //--------------------------------------------------------------------
113   // Empty destructor
114   //--------------------------------------------------------------------
115 }
116
117
118 void AliAODv0::Fill(AliESDv0* rV0Vertex ,AliESD* rEvent){
119   // Fills the data memebers of the AOD
120   Double_t tDecayVertexV0[3]; rV0Vertex->GetXYZ(tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]); 
121   fDecayVertexV0X = tDecayVertexV0[0];
122   fDecayVertexV0Y = tDecayVertexV0[1];
123   fDecayVertexV0Z = tDecayVertexV0[2];
124
125   fDcaV0Daughters = rV0Vertex->GetDcaV0Daughters();
126   fDcaV0ToPrimVertex = rV0Vertex->GetD();
127
128   Double_t tMomPos[3]; rV0Vertex->GetPPxPyPz(tMomPos[0],tMomPos[1],tMomPos[2]); 
129   fMomPosX = tMomPos[0];
130   fMomPosY = tMomPos[1];
131   fMomPosZ = tMomPos[2];
132
133   Double_t tMomNeg[3]; rV0Vertex->GetNPxPyPz(tMomNeg[0],tMomNeg[1],tMomNeg[2]); 
134   fMomNegX = tMomNeg[0];
135   fMomNegY = tMomNeg[1];
136   fMomNegZ = tMomNeg[2];
137
138   fKeyPos = (UInt_t)TMath::Abs(rV0Vertex->GetPindex());// need to ask why Abs
139   fKeyNeg = (UInt_t)TMath::Abs(rV0Vertex->GetNindex());
140
141   AliESDtrack *pTrack=rEvent->GetTrack(fKeyPos);
142   AliESDtrack *nTrack=rEvent->GetTrack(fKeyNeg);
143
144   Float_t tDcaPosToPrimVertex[2];
145   if(pTrack) pTrack->GetImpactParameters(tDcaPosToPrimVertex[0],tDcaPosToPrimVertex[1]);
146   else { tDcaPosToPrimVertex[0]=999.;  tDcaPosToPrimVertex[1]=999.;}
147
148   fDcaPosToPrimVertex = TMath::Sqrt(tDcaPosToPrimVertex[0]*tDcaPosToPrimVertex[0]+tDcaPosToPrimVertex[1]*tDcaPosToPrimVertex[1]);
149
150   Float_t tDcaNegToPrimVertex[2];
151   if(nTrack) nTrack->GetImpactParameters(tDcaNegToPrimVertex[0],tDcaNegToPrimVertex[1]);
152   else { tDcaNegToPrimVertex[0]=999.;  tDcaNegToPrimVertex[1]=999.;}
153
154   fDcaNegToPrimVertex = TMath::Sqrt(tDcaNegToPrimVertex[0]*tDcaNegToPrimVertex[0]+tDcaNegToPrimVertex[1]*tDcaNegToPrimVertex[1]);
155 }
156
157 void AliAODv0::Fill(AliESDV0MI* rV0Vertex ,AliESD* rEvent){
158   // Fills the data members of the AOD
159   Double_t tDecayVertexV0[3]; rV0Vertex->GetXYZ(tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]); 
160   fDecayVertexV0X = tDecayVertexV0[0];
161   fDecayVertexV0Y = tDecayVertexV0[1];
162   fDecayVertexV0Z = tDecayVertexV0[2];
163
164   fDcaV0Daughters = rV0Vertex->GetDcaV0Daughters();
165
166   fDcaV0ToPrimVertex = rV0Vertex->GetD();
167
168
169   Double_t tMomPos[3]; rV0Vertex->GetPPxPyPz(tMomPos[0],tMomPos[1],tMomPos[2]); 
170   fMomPosX = tMomPos[0];
171   fMomPosY = tMomPos[1];
172   fMomPosZ = tMomPos[2];
173
174   Double_t tMomNeg[3]; rV0Vertex->GetNPxPyPz(tMomNeg[0],tMomNeg[1],tMomNeg[2]); 
175   fMomNegX = tMomNeg[0];
176   fMomNegY = tMomNeg[1];
177   fMomNegZ = tMomNeg[2];
178
179   fKeyPos = (UInt_t)TMath::Abs(rV0Vertex->GetPindex());// need to check why Abs
180   fKeyNeg = (UInt_t)TMath::Abs(rV0Vertex->GetNindex());
181
182   AliESDtrack *pTrack=rEvent->GetTrack(fKeyPos);
183   AliESDtrack *nTrack=rEvent->GetTrack(fKeyNeg);
184
185   Float_t tDcaPosToPrimVertex[2];
186   if(pTrack) pTrack->GetImpactParameters(tDcaPosToPrimVertex[0],tDcaPosToPrimVertex[1]);
187   else { tDcaPosToPrimVertex[0]=999.;  tDcaPosToPrimVertex[1]=999.;}
188
189   fDcaPosToPrimVertex = TMath::Sqrt(tDcaPosToPrimVertex[0]*tDcaPosToPrimVertex[0]+tDcaPosToPrimVertex[1]*tDcaPosToPrimVertex[1]);
190
191   Float_t tDcaNegToPrimVertex[2];
192   if(nTrack) nTrack->GetImpactParameters(tDcaNegToPrimVertex[0],tDcaNegToPrimVertex[1]);
193   else { tDcaNegToPrimVertex[0]=999.;  tDcaNegToPrimVertex[1]=999.;}
194
195   fDcaNegToPrimVertex = TMath::Sqrt(tDcaNegToPrimVertex[0]*tDcaNegToPrimVertex[0]+tDcaNegToPrimVertex[1]*tDcaNegToPrimVertex[1]);
196
197   fChi2  = rV0Vertex->GetChi2V0();
198 }
199
200 void AliAODv0::ResetV0(){
201   // Sets the default values of the AOD data members
202   fDecayVertexV0X     = 999;
203   fDecayVertexV0Y     = 999;
204   fDecayVertexV0Z     = 999;
205   fDcaV0Daughters     = 999;
206   fDcaV0ToPrimVertex  = 999;
207   fDcaPosToPrimVertex = 999;
208   fDcaNegToPrimVertex = 999;
209   fMomPosX = 999;
210   fMomPosY = 999;
211   fMomPosZ = 999;
212   fMomNegX = 999;
213   fMomNegY = 999;
214   fMomNegZ = 999;
215
216   fKeyPos  = 999;
217   fKeyNeg  = 999;
218
219   fChi2    = 999;
220 }