1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
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 //-------------------------------------------------------------------------
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;
54 AliAODv0::AliAODv0(AliESDv0* rV0Vertex ,AliESD* rEvent){
55 this->Fill(rV0Vertex,rEvent);
59 AliAODv0::AliAODv0(const AliAODv0& rAliAODv0) : TObject(rAliAODv0) {
60 //--------------------------------------------------------------------
62 //--------------------------------------------------------------------
63 fDecayVertexV0X = rAliAODv0.fDecayVertexV0X;
64 fDecayVertexV0Y = rAliAODv0.fDecayVertexV0Y;
65 fDecayVertexV0Z = rAliAODv0.fDecayVertexV0Z;
66 fDcaV0Daughters = rAliAODv0.fDcaV0Daughters;
67 fDcaV0ToPrimVertex = rAliAODv0.fDcaV0ToPrimVertex ;
68 fDcaPosToPrimVertex = rAliAODv0.fDcaPosToPrimVertex;
69 fDcaNegToPrimVertex = rAliAODv0.fDcaNegToPrimVertex;
70 fMomPosX = rAliAODv0.fMomPosX;
71 fMomPosY = rAliAODv0.fMomPosY;
72 fMomPosZ = rAliAODv0.fMomPosZ;
73 fMomNegX = rAliAODv0.fMomNegX;
74 fMomNegY = rAliAODv0.fMomNegY;
75 fMomNegZ = rAliAODv0.fMomNegZ;
77 fKeyNeg = rAliAODv0.fKeyNeg;
78 fKeyPos = rAliAODv0.fKeyPos;
80 fChi2 = rAliAODv0.fChi2;
83 AliAODv0& AliAODv0::operator=(const AliAODv0& rAliAODv0){
84 //--------------------------------------------------------------------
85 // Assignment overload
86 //--------------------------------------------------------------------
87 this->fDecayVertexV0X = rAliAODv0.fDecayVertexV0X;
88 this->fDecayVertexV0Y = rAliAODv0.fDecayVertexV0Y;
89 this->fDecayVertexV0Z = rAliAODv0.fDecayVertexV0Z;
90 this->fDcaV0Daughters = rAliAODv0.fDcaV0Daughters;
91 this->fDcaV0ToPrimVertex = rAliAODv0.fDcaV0ToPrimVertex ;
92 this->fDcaPosToPrimVertex = rAliAODv0.fDcaPosToPrimVertex;
93 this->fDcaNegToPrimVertex = rAliAODv0.fDcaNegToPrimVertex;
94 this->fMomPosX = rAliAODv0.fMomPosX;
95 this->fMomPosY = rAliAODv0.fMomPosY;
96 this->fMomPosZ = rAliAODv0.fMomPosZ;
97 this->fMomNegX = rAliAODv0.fMomNegX;
98 this->fMomNegY = rAliAODv0.fMomNegY;
99 this->fMomNegZ = rAliAODv0.fMomNegZ;
101 this->fKeyPos = rAliAODv0.fKeyPos;
102 this->fKeyNeg = rAliAODv0.fKeyNeg;
104 this->fChi2 = rAliAODv0.fChi2;
108 AliAODv0::~AliAODv0(){
109 //--------------------------------------------------------------------
111 //--------------------------------------------------------------------
115 void AliAODv0::Fill(AliESDv0* rV0Vertex ,AliESD* rEvent){
116 // Fills the data memebers of the AOD
117 Double_t tDecayVertexV0[3]; rV0Vertex->GetXYZ(tDecayVertexV0[0],tDecayVertexV0[1],tDecayVertexV0[2]);
118 fDecayVertexV0X = tDecayVertexV0[0];
119 fDecayVertexV0Y = tDecayVertexV0[1];
120 fDecayVertexV0Z = tDecayVertexV0[2];
122 fDcaV0Daughters = rV0Vertex->GetDcaV0Daughters();
123 fDcaV0ToPrimVertex = rV0Vertex->GetD();
125 Double_t tMomPos[3]; rV0Vertex->GetPPxPyPz(tMomPos[0],tMomPos[1],tMomPos[2]);
126 fMomPosX = tMomPos[0];
127 fMomPosY = tMomPos[1];
128 fMomPosZ = tMomPos[2];
130 Double_t tMomNeg[3]; rV0Vertex->GetNPxPyPz(tMomNeg[0],tMomNeg[1],tMomNeg[2]);
131 fMomNegX = tMomNeg[0];
132 fMomNegY = tMomNeg[1];
133 fMomNegZ = tMomNeg[2];
135 fKeyPos = (UInt_t)TMath::Abs(rV0Vertex->GetPindex());// need to ask why Abs
136 fKeyNeg = (UInt_t)TMath::Abs(rV0Vertex->GetNindex());
138 AliESDtrack *pTrack=rEvent->GetTrack(fKeyPos);
139 AliESDtrack *nTrack=rEvent->GetTrack(fKeyNeg);
141 Float_t tDcaPosToPrimVertex[2];
142 if(pTrack) pTrack->GetImpactParameters(tDcaPosToPrimVertex[0],tDcaPosToPrimVertex[1]);
143 else { tDcaPosToPrimVertex[0]=999.; tDcaPosToPrimVertex[1]=999.;}
145 fDcaPosToPrimVertex = TMath::Sqrt(tDcaPosToPrimVertex[0]*tDcaPosToPrimVertex[0]+tDcaPosToPrimVertex[1]*tDcaPosToPrimVertex[1]);
147 Float_t tDcaNegToPrimVertex[2];
148 if(nTrack) nTrack->GetImpactParameters(tDcaNegToPrimVertex[0],tDcaNegToPrimVertex[1]);
149 else { tDcaNegToPrimVertex[0]=999.; tDcaNegToPrimVertex[1]=999.;}
151 fDcaNegToPrimVertex = TMath::Sqrt(tDcaNegToPrimVertex[0]*tDcaNegToPrimVertex[0]+tDcaNegToPrimVertex[1]*tDcaNegToPrimVertex[1]);
154 void AliAODv0::ResetV0(){
155 // Sets the default values of the AOD data members
156 fDecayVertexV0X = 999;
157 fDecayVertexV0Y = 999;
158 fDecayVertexV0Z = 999;
159 fDcaV0Daughters = 999;
160 fDcaV0ToPrimVertex = 999;
161 fDcaPosToPrimVertex = 999;
162 fDcaNegToPrimVertex = 999;