1 #include "AliFemtoV0.h"
2 #include "phys_constants.h"
4 // -----------------------------------------------------------------------
5 AliFemtoV0::AliFemtoV0():
6 fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0),
7 fDcaV0Daughters(0), fDcaV0ToPrimVertex(0),
8 fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0),
9 fMomPos(0), fMomNeg(0),
10 fTpcHitsPos(0), fTpcHitsNeg(0),
11 fChi2V0(0), fClV0(0), fChi2Pos(0), fClPos(0), fChi2Neg(0), fClNeg(0),
12 fDedxPos(0), fErrDedxPos(0), fLenDedxPos(0),
13 fDedxNeg(0), fErrDedxNeg(0), fLenDedxNeg(0),
14 fNufDedxPos(0), fNufDedxNeg(0),
15 fHelixPos(), fHelixNeg(),
17 fAlphaV0(0), fPtArmV0(0),
18 fELambda(0), fEK0Short(0),
19 fEPosProton(0), fEPosPion(0),
20 fENegProton(0), fENegPion(0),
21 fMassLambda(0), fMassAntiLambda(0),
22 fMassK0Short(0), fRapLambda(0),
23 fRapK0Short(0), fCTauLambda(0),
24 fCTauK0Short(0), fPtV0(0), fPtotV0(0),
25 fPtPos(0), fPtotPos(0),
26 fPtNeg(0), fPtotNeg(0),
27 fKeyNeg(0), fKeyPos(0),
30 // -----------------------------------------------------------------------
31 AliFemtoV0::AliFemtoV0(const AliFemtoV0& v) :
32 fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0),
33 fDcaV0Daughters(0), fDcaV0ToPrimVertex(0),
34 fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0),
35 fMomPos(0), fMomNeg(0),
36 fTpcHitsPos(0), fTpcHitsNeg(0),
37 fChi2V0(0), fClV0(0), fChi2Pos(0), fClPos(0), fChi2Neg(0), fClNeg(0),
38 fDedxPos(0), fErrDedxPos(0), fLenDedxPos(0),
39 fDedxNeg(0), fErrDedxNeg(0), fLenDedxNeg(0),
40 fNufDedxPos(0), fNufDedxNeg(0),
41 fHelixPos(), fHelixNeg(),
43 fAlphaV0(0), fPtArmV0(0),
44 fELambda(0), fEK0Short(0),
45 fEPosProton(0), fEPosPion(0),
46 fENegProton(0), fENegPion(0),
47 fMassLambda(0), fMassAntiLambda(0),
48 fMassK0Short(0), fRapLambda(0),
49 fRapK0Short(0), fCTauLambda(0),
50 fCTauK0Short(0), fPtV0(0), fPtotV0(0),
51 fPtPos(0), fPtotPos(0),
52 fPtNeg(0), fPtotNeg(0),
53 fKeyNeg(0), fKeyPos(0),
56 fDecayLengthV0 = v.fDecayLengthV0;
57 fDecayVertexV0 = v.fDecayVertexV0;
58 fDcaV0Daughters = v.fDcaV0Daughters;
59 fDcaV0ToPrimVertex = v.fDcaV0ToPrimVertex;
60 fDcaPosToPrimVertex = v.fDcaPosToPrimVertex;
61 fDcaNegToPrimVertex = v.fDcaNegToPrimVertex;
65 fTrackTopologyMapPos[0] = v.fTrackTopologyMapPos[0];
66 fTrackTopologyMapPos[1] = v.fTrackTopologyMapPos[1];
67 fTrackTopologyMapNeg[0] = v.fTrackTopologyMapNeg[0];
68 fTrackTopologyMapNeg[1] = v.fTrackTopologyMapNeg[1];
73 fTpcHitsPos = v.fTpcHitsPos;
74 fTpcHitsNeg = v.fTpcHitsNeg;
78 fChi2Pos = v.fChi2Pos;
80 fChi2Neg = v.fChi2Neg;
82 fDedxPos = v.fDedxPos;
83 fErrDedxPos = v.fErrDedxPos;//Gael 04Fev2002
84 fLenDedxPos = v.fLenDedxPos;//Gael 04Fev2002
85 fDedxNeg = v.fDedxNeg;
86 fErrDedxNeg = v.fErrDedxNeg;//Gael 04Fev2002
87 fLenDedxNeg = v.fLenDedxNeg;//Gael 04Fev2002
89 fNufDedxPos = v.fNufDedxPos;
90 fNufDedxNeg = v.fNufDedxNeg;
92 fHelixPos = v.fHelixPos;// Gael 12 Sept
93 fHelixNeg = v.fHelixNeg;// Gael 12 Sept
94 fHiddenInfo = v.fHiddenInfo? v.fHiddenInfo->clone() : 0;// GR 11 DEC 02
97 AliFemtoV0& AliFemtoV0::operator=(const AliFemtoV0& aV0)
101 fDecayLengthV0 = aV0.fDecayLengthV0;
102 fDecayVertexV0 = aV0.fDecayVertexV0;
103 fDcaV0Daughters = aV0.fDcaV0Daughters;
104 fDcaV0ToPrimVertex = aV0.fDcaV0ToPrimVertex;
105 fDcaPosToPrimVertex = aV0.fDcaPosToPrimVertex;
106 fDcaNegToPrimVertex = aV0.fDcaNegToPrimVertex;
107 fMomPos = aV0.fMomPos;
108 fMomNeg = aV0.fMomNeg;
110 fTrackTopologyMapPos[0] = aV0.fTrackTopologyMapPos[0];
111 fTrackTopologyMapPos[1] = aV0.fTrackTopologyMapPos[1];
112 fTrackTopologyMapNeg[0] = aV0.fTrackTopologyMapNeg[0];
113 fTrackTopologyMapNeg[1] = aV0.fTrackTopologyMapNeg[1];
115 fKeyPos = aV0.fKeyPos;
116 fKeyNeg = aV0.fKeyNeg;
118 fTpcHitsPos = aV0.fTpcHitsPos;
119 fTpcHitsNeg = aV0.fTpcHitsNeg;
121 fChi2V0 = aV0.fChi2V0;
123 fChi2Pos = aV0.fChi2Pos;
125 fChi2Neg = aV0.fChi2Neg;
127 fDedxPos = aV0.fDedxPos;
128 fErrDedxPos = aV0.fErrDedxPos;//Gael 04Fev2002
129 fLenDedxPos = aV0.fLenDedxPos;//Gael 04Fev2002
130 fDedxNeg = aV0.fDedxNeg;
131 fErrDedxNeg = aV0.fErrDedxNeg;//Gael 04Fev2002
132 fLenDedxNeg = aV0.fLenDedxNeg;//Gael 04Fev2002
134 fNufDedxPos = aV0.fNufDedxPos;
135 fNufDedxNeg = aV0.fNufDedxNeg;
137 fHelixPos = aV0.fHelixPos;// Gael 12 Sept
138 fHelixNeg = aV0.fHelixNeg;// Gael 12 Sept
139 if (fHiddenInfo) delete fHiddenInfo;
140 fHiddenInfo = aV0.fHiddenInfo? aV0.fHiddenInfo->clone() : 0;// GR 11 DEC 02
146 // -----------------------------------------------------------------------
147 void AliFemtoV0::UpdateV0(){
148 //Calc. derived memebers of the v0 class
149 float MomNegAlongV0, MomPosAlongV0;
151 fMomV0 = fMomPos + fMomNeg;
152 fPtV0 = fMomV0.perp();
153 fPtotV0 = fMomV0.mag();
154 fPtPos = fMomPos.perp();
155 fPtotPos= fMomPos.mag();
156 fPtNeg = fMomNeg.perp();
157 fPtotNeg= fMomNeg.mag();
158 fELambda= ::sqrt(fPtotV0*fPtotV0+M_LAMBDA*M_LAMBDA);
159 fEK0Short= ::sqrt(fPtotV0*fPtotV0+M_KAON_0_SHORT*M_KAON_0_SHORT);
160 fEPosProton = ::sqrt(fPtotPos*fPtotPos+M_PROTON*M_PROTON);
161 fENegProton = ::sqrt(fPtotNeg*fPtotNeg+M_PROTON*M_PROTON);
162 fEPosPion = ::sqrt(fPtotPos*fPtotPos+M_PION_PLUS*M_PION_PLUS);
163 fENegPion = ::sqrt(fPtotNeg*fPtotNeg+M_PION_MINUS*M_PION_MINUS);
165 MomNegAlongV0 = fMomNeg*fMomV0 / ::sqrt(::pow(fPtotV0,2));
166 MomPosAlongV0 = fMomPos*fMomV0 / ::sqrt(::pow(fPtotV0,2));
168 fAlphaV0 = (MomPosAlongV0-MomNegAlongV0)/(MomPosAlongV0+MomNegAlongV0);
169 fPtArmV0 = ::sqrt(fPtotPos*fPtotPos - MomPosAlongV0*MomPosAlongV0);
170 fMassLambda = ::sqrt(::pow(fEPosProton+fENegPion,2)-::pow(fPtotV0,2));
171 fMassAntiLambda = ::sqrt(::pow(fENegProton+fEPosPion,2)-::pow(fPtotV0,2));
172 fMassK0Short = ::sqrt(::pow(fENegPion+fEPosPion,2)-::pow(fPtotV0,2));
174 fRapLambda = 0.5*::log( (fELambda+fMomV0.z()) / (fELambda-fMomV0.z()) );
175 fCTauLambda = M_LAMBDA*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.mag(),2.) );
177 fRapK0Short = 0.5*::log( (fEK0Short+fMomV0.z()) / (fEK0Short-fMomV0.z()) );
178 fCTauK0Short = M_KAON_0_SHORT*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.mag(),2.) );
181 // -----------------------------------------------------------------------
182 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
184 #include "StStrangeMuDstMaker/StV0MuDst.h"
185 AliFemtoV0::AliFemtoV0( StV0MuDst& v){ // from strangess micro dst structure
186 fDecayLengthV0 = v.decayLengthV0();
187 fDecayVertexV0 = AliFemtoThreeVector( v.decayVertexV0X(), v.decayVertexV0Y(), v.decayVertexV0Z() );
188 fDcaV0Daughters = v.dcaV0Daughters();
189 fDcaV0ToPrimVertex = v.dcaV0ToPrimVertex();
190 fDcaPosToPrimVertex = v.dcaPosToPrimVertex();
191 fDcaNegToPrimVertex = v.dcaNegToPrimVertex();
192 fMomPos = AliFemtoThreeVector( v.momPosX(), v.momPosY(), v.momPosZ() );
193 fMomNeg = AliFemtoThreeVector( v.momNegX(), v.momNegY(), v.momNegZ() );
195 cout << " hist pos ";
196 cout << v.topologyMapPos().numberOfHits(kTpcId);
197 cout << " hist neg ";
198 cout << v.topologyMapNeg().numberOfHits(kTpcId) << endl;
200 fTpcHitsPos = ( v.topologyMapPos().numberOfHits(kTpcId) );
201 fTpcHitsNeg = ( v.topologyMapNeg().numberOfHits(kTpcId) );
202 fTrackTopologyMapPos[0] = ( v.topologyMapPos().data(0) );
203 fTrackTopologyMapPos[1] = ( v.topologyMapPos().data(1) );
204 fTrackTopologyMapNeg[0] = ( v.topologyMapNeg().data(0) );
205 fTrackTopologyMapNeg[1] = ( v.topologyMapNeg().data(1) );
206 fKeyPos = v.keyPos();
207 fKeyNeg = v.keyNeg();
208 fChi2V0 = v.chi2V0();
210 fChi2Pos = v.chi2Pos();
212 fChi2Neg = v.chi2Neg();
214 fDedxPos = v.dedxPos();
215 fErrDedxPos = v.errDedxPos();//Gael 04Fev2002
216 fLenDedxPos = v.lenDedxPos();//Gael 04Fev2002
217 fDedxNeg = v.dedxNeg();
218 fErrDedxNeg = v.errDedxNeg();//Gael 04Fev2002
219 fLenDedxNeg = v.lenDedxNeg();//Gael 04Fev2002
220 fNufDedxPos = v.nufDedxPos();
221 fNufDedxNeg = v.nufDedxNeg();
222 fHiddenInfo = 0;//GR 11 DEC 02
225 cout << " keyPos " << v.keyPos() << endl;
226 cout << " keyNeg " << v.keyNeg() << endl;
228 fMomV0 = AliFemtoThreeVector( v.momV0X(), v.momV0Y(), v.momV0Z() );
233 cout << v.ptArmV0() << endl;
235 fAlphaV0 = v.alphaV0();
236 fPtArmV0 = v.ptArmV0();
237 fELambda = v.eLambda();
238 fEK0Short = v.eK0Short();
239 fEPosProton = v.ePosProton();
240 fEPosPion = v.ePosPion();
241 fENegPion = v.eNegPion();
242 fENegProton = v.eNegProton();
243 fMassLambda = v.massLambda();
244 fMassAntiLambda = v.massAntiLambda();
245 fMassK0Short = v.massK0Short();
246 fRapLambda = v.rapLambda();
247 fRapK0Short = v.rapK0Short();
248 fCTauLambda = v.cTauLambda();
249 fCTauK0Short = v.cTauK0Short();
251 fPtotV0 = v.ptotV0();
253 fPtotPos = v.ptotPos();
254 fDedxPos = v.dedxPos();
256 fPtotNeg = v.ptotNeg();
257 fDedxNeg = v.dedxNeg();
260 #endif // __NO_STAR_DEPENDENCE_ALLOWED__
264 void AliFemtoV0::SetHelixPos(const AliFmPhysicalHelixD& h){fHelixPos = h;}// Gael 12 Sept 02
265 const AliFmPhysicalHelixD& AliFemtoV0::HelixPos() const {return fHelixPos;}// Gael 12 Sept 02
266 void AliFemtoV0::SetHelixNeg(const AliFmPhysicalHelixD& h){fHelixNeg = h;}// Gael 12 Sept 02
267 const AliFmPhysicalHelixD& AliFemtoV0::HelixNeg() const {return fHelixNeg;}// Gael 12 Sept 02
269 void AliFemtoV0::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
270 bool AliFemtoV0::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
271 AliFemtoHiddenInfo* AliFemtoV0::getHiddenInfo() const {return fHiddenInfo;}