]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliAODv0.cxx
Added protection (E. Fragiacomo)
[u/mrichter/AliRoot.git] / STEER / AliAODv0.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-2007, 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 //     Analysis Oriented Data (AOD) V0 vertex class
18 //     Authors: B.Hippolyte, IReS, hippolyt@in2p3.fr 
19 //              G.Van Buren, BNL,  gene@bnl.gov      (original STAR MuDsts)
20 //-------------------------------------------------------------------------
21
22 #include "AliAODv0.h"
23 #include "AliAODTrack.h"
24
25 ClassImp(AliAODv0)
26
27   AliAODv0::AliAODv0() : 
28     AliAODRecoDecay(),
29     fDcaV0ToPrimVertex(999),
30     fOnFlyStatus(kFALSE)
31 {
32   //--------------------------------------------------------------------
33   // Default constructor
34   //--------------------------------------------------------------------
35   fCharge  = 0;
36   fNProngs = 2;
37   fNDCA    = 1;
38   fNPID    = 0; // used to be 2!
39
40   fDCA = new Double_t[fNDCA];
41   fDCA[0] = 999;
42
43   fPx = new Double_t[GetNProngs()];
44   fPy = new Double_t[GetNProngs()];
45   fPz = new Double_t[GetNProngs()];
46   fPx[0] = 999;
47   fPy[0] = 999;
48   fPz[0] = 999;
49
50   fPx[1] = 999;
51   fPy[1] = 999;
52   fPz[1] = 999;
53
54   fd0 = new Double_t[GetNProngs()];
55   fd0[0] = 999;
56   fd0[1] = 999;
57 }
58
59 AliAODv0::AliAODv0(AliAODVertex* rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
60            const Double_t *rMomPos, const Double_t *rMomNeg, Double_t *rDcaDaughterToPrimVertex) :
61   AliAODRecoDecay(rAODVertex,2,0,rDcaDaughterToPrimVertex),
62   fDcaV0ToPrimVertex(rDcaV0ToPrimVertex),
63   fOnFlyStatus(kFALSE)
64 {
65   //--------------------------------------------------------------------
66   // Constructor via setting each data member
67   //--------------------------------------------------------------------
68   fCharge  = 0;
69   fNProngs = 2;
70   fNDCA    = 1;
71   fNPID    = 0; // used to be 2!
72
73   fDCA = new Double_t[fNDCA];
74
75   fDCA[0] = rDcaV0Daughters;
76   fDcaV0ToPrimVertex = rDcaV0ToPrimVertex;
77
78   fPx = new Double_t[GetNProngs()];
79   fPy = new Double_t[GetNProngs()];
80   fPz = new Double_t[GetNProngs()];
81
82   fPx[0] = rMomPos[0] ;
83   fPy[0] = rMomPos[1];
84   fPz[0] = rMomPos[2];
85
86   fPx[1] = rMomNeg[0];
87   fPy[1] = rMomNeg[1];
88   fPz[1] = rMomNeg[2];
89 }
90
91 AliAODv0::AliAODv0(const AliAODv0& rAliAODv0) :
92   AliAODRecoDecay(rAliAODv0),
93   fDcaV0ToPrimVertex(rAliAODv0.fDcaV0ToPrimVertex),
94   fOnFlyStatus(rAliAODv0.fOnFlyStatus)
95  {
96   //--------------------------------------------------------------------
97   // Copy constructor
98   //--------------------------------------------------------------------
99 }
100
101 AliAODv0& AliAODv0::operator=(const AliAODv0& rAliAODv0){
102   //--------------------------------------------------------------------
103   // Assignment overload
104   //--------------------------------------------------------------------
105   if(this!=&rAliAODv0) {
106     AliAODRecoDecay::operator=(rAliAODv0);
107     this->fDcaV0ToPrimVertex  = rAliAODv0.fDcaV0ToPrimVertex ;
108     this->fOnFlyStatus        = rAliAODv0.fOnFlyStatus;
109   }
110   return *this;
111 }
112
113 AliAODv0::~AliAODv0(){
114   //--------------------------------------------------------------------
115   // Empty destructor
116   //--------------------------------------------------------------------
117 }
118
119 void AliAODv0::Fill(AliAODVertex *rAODVertex, Double_t rDcaV0Daughters, Double_t rDcaV0ToPrimVertex,
120                     const Double_t *rMomPos, const Double_t *rMomNeg, Double_t *rDcaDaughterToPrimVertex){
121
122   this->SetSecondaryVtx(rAODVertex);
123
124   fDCA[0] = rDcaV0Daughters;
125   fDcaV0ToPrimVertex = rDcaV0ToPrimVertex;
126
127   fPx[0] = rMomPos[0] ;
128   fPy[0] = rMomPos[1];
129   fPz[0] = rMomPos[2];
130
131   fPx[1] = rMomNeg[0];
132   fPy[1] = rMomNeg[1];
133   fPz[1] = rMomNeg[2];
134
135   fd0[0] = rDcaDaughterToPrimVertex[0];
136   fd0[1] = rDcaDaughterToPrimVertex[1];
137 }
138
139 void AliAODv0::ResetV0(){
140
141   GetSecondaryVtx()->SetChi2perNDF(999);
142   GetSecondaryVtx()->RemoveCovMatrix();
143   GetSecondaryVtx()->RemoveDaughters();
144   GetSecondaryVtx()->SetParent((TObject*) 0x0);
145   GetSecondaryVtx()->SetID(-1);
146   GetSecondaryVtx()->SetPosition(999,999,999);
147   GetSecondaryVtx()->SetType(AliAODVertex::kUndef);
148
149   fDCA[0] = 999;
150   fDcaV0ToPrimVertex  = 999;
151
152   fPx[0] = 999;
153   fPy[0] = 999;
154   fPz[0] = 999;
155
156   fPx[1] = 999;
157   fPy[1] = 999;
158   fPz[1] = 999;
159
160   fd0[0] = 999;
161   fd0[1] = 999;
162 }
163
164 Short_t AliAODv0::GetPosID() const {
165         AliAODTrack *posTrack = (AliAODTrack *) (this->GetSecondaryVtx()->GetDaughter(0));
166         Short_t posID = posTrack->GetID();
167         return posID;
168 }
169
170 Short_t AliAODv0::GetNegID() const {
171         AliAODTrack *negTrack = (AliAODTrack *) (this->GetSecondaryVtx()->GetDaughter(1));
172         Short_t negID = negTrack->GetID();
173         return negID;
174 }
175
176 void AliAODv0::Print(Option_t* /*option*/) const {
177   //
178   // Print some information
179   //
180   AliAODRecoDecay::Print();
181   printf("AliAODv0: invariant mass (k0s %.6f, lambda %.6f, anti-lambda %.6f) \n",MassK0Short(),MassLambda(),MassAntiLambda());
182   printf("AliAODv0: dca (v0d %.6f, v0tpv %.6f, postpv %.6f, negtpv %.6f ) \n",DcaV0Daughters(),DcaV0ToPrimVertex(),DcaPosToPrimVertex(),DcaNegToPrimVertex());
183   printf("AliAODv0: mom (ptot2 %.6f, pt2 %.6f, rapk0 %.6f, rapla %.6f ) \n",Ptot2V0(),Pt2V0(),RapK0Short(),RapLambda());
184   printf("AliAODv0: cin (mpav0 %.6f, mnav0 %.6f, alpha %.6f, ptarm %.6f ) \n",MomPosAlongV0(),MomNegAlongV0(),AlphaV0(),PtArmV0());
185   printf("AliAODv0: nrg (eppro %.6f, enpro %.6f, eppio %.6f, enpio %.6f ) \n",EPosProton(),ENegProton(),EPosPion(),ENegPion());
186
187   return;
188 }