]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemto/AliFemtoV0.cxx
- removing debug outout
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoV0.cxx
CommitLineData
d0e92d9a 1///////////////////////////////////////////////////////////////////////////
2// //
3// AliFemtoV0: special type of particle desling with the specifics //
4// of the V0 type of particle //
5// It stores the information both about the V0 itself and about it's //
6// daughters, so that the caut betwen the daughter characteristics is //
7// possible.
8// //
9///////////////////////////////////////////////////////////////////////////
67427ff7 10#include "AliFemtoV0.h"
11#include "phys_constants.h"
12
13// -----------------------------------------------------------------------
0215f606 14AliFemtoV0::AliFemtoV0():
15 fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0),
16 fDcaV0Daughters(0), fDcaV0ToPrimVertex(0),
17 fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0),
18 fMomPos(0), fMomNeg(0),
19 fTpcHitsPos(0), fTpcHitsNeg(0),
20 fChi2V0(0), fClV0(0), fChi2Pos(0), fClPos(0), fChi2Neg(0), fClNeg(0),
21 fDedxPos(0), fErrDedxPos(0), fLenDedxPos(0),
22 fDedxNeg(0), fErrDedxNeg(0), fLenDedxNeg(0),
23 fNufDedxPos(0), fNufDedxNeg(0),
24 fHelixPos(), fHelixNeg(),
25 fMomV0(0),
26 fAlphaV0(0), fPtArmV0(0),
27 fELambda(0), fEK0Short(0),
28 fEPosProton(0), fEPosPion(0),
29 fENegProton(0), fENegPion(0),
30 fMassLambda(0), fMassAntiLambda(0),
31 fMassK0Short(0), fRapLambda(0),
32 fRapK0Short(0), fCTauLambda(0),
33 fCTauK0Short(0), fPtV0(0), fPtotV0(0),
34 fPtPos(0), fPtotPos(0),
35 fPtNeg(0), fPtotNeg(0),
36 fKeyNeg(0), fKeyPos(0),
37 fHiddenInfo(0) /***/
d0e92d9a 38{
39 // Default empty constructor
40 /* no-op */
41}
0215f606 42// -----------------------------------------------------------------------
43AliFemtoV0::AliFemtoV0(const AliFemtoV0& v) :
44 fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0),
45 fDcaV0Daughters(0), fDcaV0ToPrimVertex(0),
46 fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0),
47 fMomPos(0), fMomNeg(0),
48 fTpcHitsPos(0), fTpcHitsNeg(0),
49 fChi2V0(0), fClV0(0), fChi2Pos(0), fClPos(0), fChi2Neg(0), fClNeg(0),
50 fDedxPos(0), fErrDedxPos(0), fLenDedxPos(0),
51 fDedxNeg(0), fErrDedxNeg(0), fLenDedxNeg(0),
52 fNufDedxPos(0), fNufDedxNeg(0),
53 fHelixPos(), fHelixNeg(),
54 fMomV0(0),
55 fAlphaV0(0), fPtArmV0(0),
56 fELambda(0), fEK0Short(0),
57 fEPosProton(0), fEPosPion(0),
58 fENegProton(0), fENegPion(0),
59 fMassLambda(0), fMassAntiLambda(0),
60 fMassK0Short(0), fRapLambda(0),
61 fRapK0Short(0), fCTauLambda(0),
62 fCTauK0Short(0), fPtV0(0), fPtotV0(0),
63 fPtPos(0), fPtotPos(0),
64 fPtNeg(0), fPtotNeg(0),
65 fKeyNeg(0), fKeyPos(0),
66 fHiddenInfo(0) /***/
d0e92d9a 67{
68 // copy constructor
67427ff7 69 fDecayLengthV0 = v.fDecayLengthV0;
70 fDecayVertexV0 = v.fDecayVertexV0;
71 fDcaV0Daughters = v.fDcaV0Daughters;
72 fDcaV0ToPrimVertex = v.fDcaV0ToPrimVertex;
73 fDcaPosToPrimVertex = v.fDcaPosToPrimVertex;
74 fDcaNegToPrimVertex = v.fDcaNegToPrimVertex;
75 fMomPos = v.fMomPos;
76 fMomNeg = v.fMomNeg;
77
78 fTrackTopologyMapPos[0] = v.fTrackTopologyMapPos[0];
79 fTrackTopologyMapPos[1] = v.fTrackTopologyMapPos[1];
80 fTrackTopologyMapNeg[0] = v.fTrackTopologyMapNeg[0];
81 fTrackTopologyMapNeg[1] = v.fTrackTopologyMapNeg[1];
82
83 fKeyPos = v.fKeyPos;
84 fKeyNeg = v.fKeyNeg;
85
86 fTpcHitsPos = v.fTpcHitsPos;
87 fTpcHitsNeg = v.fTpcHitsNeg;
88
89 fChi2V0 = v.fChi2V0;
90 fClV0 = v.fClV0;
91 fChi2Pos = v.fChi2Pos;
92 fClPos = v.fClPos;
93 fChi2Neg = v.fChi2Neg;
94 fClNeg = v.fClNeg;
95 fDedxPos = v.fDedxPos;
96 fErrDedxPos = v.fErrDedxPos;//Gael 04Fev2002
97 fLenDedxPos = v.fLenDedxPos;//Gael 04Fev2002
98 fDedxNeg = v.fDedxNeg;
99 fErrDedxNeg = v.fErrDedxNeg;//Gael 04Fev2002
100 fLenDedxNeg = v.fLenDedxNeg;//Gael 04Fev2002
101
102 fNufDedxPos = v.fNufDedxPos;
103 fNufDedxNeg = v.fNufDedxNeg;
104
105 fHelixPos = v.fHelixPos;// Gael 12 Sept
106 fHelixNeg = v.fHelixNeg;// Gael 12 Sept
d0e92d9a 107 fHiddenInfo = v.fHiddenInfo? v.fHiddenInfo->Clone() : 0;// GR 11 DEC 02
67427ff7 108 UpdateV0();
109}
0215f606 110AliFemtoV0& AliFemtoV0::operator=(const AliFemtoV0& aV0)
111{
d0e92d9a 112 // assignment operator
0215f606 113 if (this == &aV0)
114 return *this;
115 fDecayLengthV0 = aV0.fDecayLengthV0;
116 fDecayVertexV0 = aV0.fDecayVertexV0;
117 fDcaV0Daughters = aV0.fDcaV0Daughters;
118 fDcaV0ToPrimVertex = aV0.fDcaV0ToPrimVertex;
119 fDcaPosToPrimVertex = aV0.fDcaPosToPrimVertex;
120 fDcaNegToPrimVertex = aV0.fDcaNegToPrimVertex;
121 fMomPos = aV0.fMomPos;
122 fMomNeg = aV0.fMomNeg;
123
124 fTrackTopologyMapPos[0] = aV0.fTrackTopologyMapPos[0];
125 fTrackTopologyMapPos[1] = aV0.fTrackTopologyMapPos[1];
126 fTrackTopologyMapNeg[0] = aV0.fTrackTopologyMapNeg[0];
127 fTrackTopologyMapNeg[1] = aV0.fTrackTopologyMapNeg[1];
128
129 fKeyPos = aV0.fKeyPos;
130 fKeyNeg = aV0.fKeyNeg;
131
132 fTpcHitsPos = aV0.fTpcHitsPos;
133 fTpcHitsNeg = aV0.fTpcHitsNeg;
134
135 fChi2V0 = aV0.fChi2V0;
136 fClV0 = aV0.fClV0;
137 fChi2Pos = aV0.fChi2Pos;
138 fClPos = aV0.fClPos;
139 fChi2Neg = aV0.fChi2Neg;
140 fClNeg = aV0.fClNeg;
141 fDedxPos = aV0.fDedxPos;
142 fErrDedxPos = aV0.fErrDedxPos;//Gael 04Fev2002
143 fLenDedxPos = aV0.fLenDedxPos;//Gael 04Fev2002
144 fDedxNeg = aV0.fDedxNeg;
145 fErrDedxNeg = aV0.fErrDedxNeg;//Gael 04Fev2002
146 fLenDedxNeg = aV0.fLenDedxNeg;//Gael 04Fev2002
147
148 fNufDedxPos = aV0.fNufDedxPos;
149 fNufDedxNeg = aV0.fNufDedxNeg;
150
151 fHelixPos = aV0.fHelixPos;// Gael 12 Sept
152 fHelixNeg = aV0.fHelixNeg;// Gael 12 Sept
153 if (fHiddenInfo) delete fHiddenInfo;
d0e92d9a 154 fHiddenInfo = aV0.fHiddenInfo? aV0.fHiddenInfo->Clone() : 0;// GR 11 DEC 02
0215f606 155 UpdateV0();
156
157 return *this;
158}
159
67427ff7 160// -----------------------------------------------------------------------
161void AliFemtoV0::UpdateV0(){
162 //Calc. derived memebers of the v0 class
d0e92d9a 163 float tMomNegAlongV0, tMomPosAlongV0;
67427ff7 164
165 fMomV0 = fMomPos + fMomNeg;
69c1c8ff 166 fPtV0 = fMomV0.Perp();
167 fPtotV0 = fMomV0.Mag();
168 fPtPos = fMomPos.Perp();
169 fPtotPos= fMomPos.Mag();
170 fPtNeg = fMomNeg.Perp();
171 fPtotNeg= fMomNeg.Mag();
67427ff7 172 fELambda= ::sqrt(fPtotV0*fPtotV0+M_LAMBDA*M_LAMBDA);
173 fEK0Short= ::sqrt(fPtotV0*fPtotV0+M_KAON_0_SHORT*M_KAON_0_SHORT);
174 fEPosProton = ::sqrt(fPtotPos*fPtotPos+M_PROTON*M_PROTON);
175 fENegProton = ::sqrt(fPtotNeg*fPtotNeg+M_PROTON*M_PROTON);
176 fEPosPion = ::sqrt(fPtotPos*fPtotPos+M_PION_PLUS*M_PION_PLUS);
177 fENegPion = ::sqrt(fPtotNeg*fPtotNeg+M_PION_MINUS*M_PION_MINUS);
178
d0e92d9a 179 tMomNegAlongV0 = fMomNeg*fMomV0 / ::sqrt(::pow(fPtotV0,2));
180 tMomPosAlongV0 = fMomPos*fMomV0 / ::sqrt(::pow(fPtotV0,2));
67427ff7 181
d0e92d9a 182 fAlphaV0 = (tMomPosAlongV0-tMomNegAlongV0)/(tMomPosAlongV0+tMomNegAlongV0);
183 fPtArmV0 = ::sqrt(fPtotPos*fPtotPos - tMomPosAlongV0*tMomPosAlongV0);
67427ff7 184 fMassLambda = ::sqrt(::pow(fEPosProton+fENegPion,2)-::pow(fPtotV0,2));
185 fMassAntiLambda = ::sqrt(::pow(fENegProton+fEPosPion,2)-::pow(fPtotV0,2));
186 fMassK0Short = ::sqrt(::pow(fENegPion+fEPosPion,2)-::pow(fPtotV0,2));
187
188 fRapLambda = 0.5*::log( (fELambda+fMomV0.z()) / (fELambda-fMomV0.z()) );
69c1c8ff 189 fCTauLambda = M_LAMBDA*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.Mag(),2.) );
67427ff7 190
191 fRapK0Short = 0.5*::log( (fEK0Short+fMomV0.z()) / (fEK0Short-fMomV0.z()) );
69c1c8ff 192 fCTauK0Short = M_KAON_0_SHORT*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.Mag(),2.) );
67427ff7 193
194}
195// -----------------------------------------------------------------------
196#ifndef __NO_STAR_DEPENDENCE_ALLOWED__
197#ifdef __ROOT__
198#include "StStrangeMuDstMaker/StV0MuDst.h"
199AliFemtoV0::AliFemtoV0( StV0MuDst& v){ // from strangess micro dst structure
200 fDecayLengthV0 = v.decayLengthV0();
201 fDecayVertexV0 = AliFemtoThreeVector( v.decayVertexV0X(), v.decayVertexV0Y(), v.decayVertexV0Z() );
202 fDcaV0Daughters = v.dcaV0Daughters();
203 fDcaV0ToPrimVertex = v.dcaV0ToPrimVertex();
204 fDcaPosToPrimVertex = v.dcaPosToPrimVertex();
205 fDcaNegToPrimVertex = v.dcaNegToPrimVertex();
206 fMomPos = AliFemtoThreeVector( v.momPosX(), v.momPosY(), v.momPosZ() );
207 fMomNeg = AliFemtoThreeVector( v.momNegX(), v.momNegY(), v.momNegZ() );
208#ifdef STHBTDEBUG
209 cout << " hist pos ";
210 cout << v.topologyMapPos().numberOfHits(kTpcId);
211 cout << " hist neg ";
212 cout << v.topologyMapNeg().numberOfHits(kTpcId) << endl;
213#endif
214 fTpcHitsPos = ( v.topologyMapPos().numberOfHits(kTpcId) );
215 fTpcHitsNeg = ( v.topologyMapNeg().numberOfHits(kTpcId) );
216 fTrackTopologyMapPos[0] = ( v.topologyMapPos().data(0) );
217 fTrackTopologyMapPos[1] = ( v.topologyMapPos().data(1) );
218 fTrackTopologyMapNeg[0] = ( v.topologyMapNeg().data(0) );
219 fTrackTopologyMapNeg[1] = ( v.topologyMapNeg().data(1) );
220 fKeyPos = v.keyPos();
221 fKeyNeg = v.keyNeg();
222 fChi2V0 = v.chi2V0();
223 fClV0 = v.clV0();
224 fChi2Pos = v.chi2Pos();
225 fClPos = v.clPos();
226 fChi2Neg = v.chi2Neg();
227 fClNeg = v.clNeg();
228 fDedxPos = v.dedxPos();
229 fErrDedxPos = v.errDedxPos();//Gael 04Fev2002
230 fLenDedxPos = v.lenDedxPos();//Gael 04Fev2002
231 fDedxNeg = v.dedxNeg();
232 fErrDedxNeg = v.errDedxNeg();//Gael 04Fev2002
233 fLenDedxNeg = v.lenDedxNeg();//Gael 04Fev2002
234 fNufDedxPos = v.nufDedxPos();
235 fNufDedxNeg = v.nufDedxNeg();
236 fHiddenInfo = 0;//GR 11 DEC 02
237
238#ifdef STHBTDEBUG
239 cout << " keyPos " << v.keyPos() << endl;
240 cout << " keyNeg " << v.keyNeg() << endl;
241#endif
242 fMomV0 = AliFemtoThreeVector( v.momV0X(), v.momV0Y(), v.momV0Z() );
243#ifdef STHBTDEBUG
244 cout << " alpha ";
245 cout << v.alphaV0();
246 cout << " ptArm ";
247 cout << v.ptArmV0() << endl;
248#endif
249 fAlphaV0 = v.alphaV0();
250 fPtArmV0 = v.ptArmV0();
251 fELambda = v.eLambda();
252 fEK0Short = v.eK0Short();
253 fEPosProton = v.ePosProton();
254 fEPosPion = v.ePosPion();
255 fENegPion = v.eNegPion();
256 fENegProton = v.eNegProton();
257 fMassLambda = v.massLambda();
258 fMassAntiLambda = v.massAntiLambda();
259 fMassK0Short = v.massK0Short();
260 fRapLambda = v.rapLambda();
261 fRapK0Short = v.rapK0Short();
262 fCTauLambda = v.cTauLambda();
263 fCTauK0Short = v.cTauK0Short();
264 fPtV0 = v.ptV0();
265 fPtotV0 = v.ptotV0();
266 fPtPos = v.ptPos();
267 fPtotPos = v.ptotPos();
268 fDedxPos = v.dedxPos();
269 fPtNeg = v.ptNeg();
270 fPtotNeg = v.ptotNeg();
271 fDedxNeg = v.dedxNeg();
272}
273#endif // __ROOT__
274#endif // __NO_STAR_DEPENDENCE_ALLOWED__
275
276
277
278void AliFemtoV0::SetHelixPos(const AliFmPhysicalHelixD& h){fHelixPos = h;}// Gael 12 Sept 02
279const AliFmPhysicalHelixD& AliFemtoV0::HelixPos() const {return fHelixPos;}// Gael 12 Sept 02
280void AliFemtoV0::SetHelixNeg(const AliFmPhysicalHelixD& h){fHelixNeg = h;}// Gael 12 Sept 02
281const AliFmPhysicalHelixD& AliFemtoV0::HelixNeg() const {return fHelixNeg;}// Gael 12 Sept 02
282
283void AliFemtoV0::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
284bool AliFemtoV0::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
d0e92d9a 285AliFemtoHiddenInfo* AliFemtoV0::GetHiddenInfo() const {return fHiddenInfo;}
67427ff7 286