]>
Commit | Line | Data |
---|---|---|
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 | } |