]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoV0.cxx
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 ///////////////////////////////////////////////////////////////////////////
10 #include "AliFemtoV0.h"
11 #include "phys_constants.h"
12
13 // -----------------------------------------------------------------------
14 AliFemtoV0::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), fOnFlyStatusV0(0),
20   fChi2V0(0),  fClV0(0),  fChi2Pos(0),  fClPos(0),  fChi2Neg(0),  fClNeg(0), fCosPointingAngle(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), fEtaV0(0), fPhiV0(0), fYV0(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   fEtaPos(0), fEtaNeg(0), fTPCNclsPos(0), fTPCNclsNeg(0), fClustersPos(0), fClustersNeg(0), fSharingPos(0), fSharingNeg(0), fNdofPos(0), fNdofNeg(0), fStatusPos(0), fStatusNeg(0),
37   fPosNSigmaTPCK(0), fPosNSigmaTPCPi(0), fPosNSigmaTPCP(0), fNegNSigmaTPCK(0), fNegNSigmaTPCPi(0), fNegNSigmaTPCP(0),
38   fPosNSigmaTOFK(0), fPosNSigmaTOFPi(0), fPosNSigmaTOFP(0), fNegNSigmaTOFK(0), fNegNSigmaTOFPi(0), fNegNSigmaTOFP(0),
39   fKeyNeg(0),   fKeyPos(0),
40   fNominalTpcEntrancePointPos(0,0,0),fNominalTpcExitPointPos(0,0,0),
41   fNominalTpcEntrancePointNeg(0,0,0),fNominalTpcExitPointNeg(0,0,0),
42   fTPCMomentumPos(0), fTPCMomentumNeg(0),
43   fTOFProtonTimePos(0), fTOFPionTimePos(0), fTOFKaonTimePos(0),
44   fTOFProtonTimeNeg(0), fTOFPionTimeNeg(0), fTOFKaonTimeNeg(0), 
45   fImpactDprimPos(-999), fImpactDweakPos(-999), fImpactDmatPos(-999), fImpactDprimNeg(-999), fImpactDweakNeg(-999), fImpactDmatNeg(-999),
46   fHiddenInfo(0)  /***/
47
48   // Default empty constructor
49   fTrackTopologyMapPos[0] = 0;
50   fTrackTopologyMapPos[1] = 0;
51   fTrackTopologyMapNeg[0] = 0;
52   fTrackTopologyMapNeg[1] = 0;
53
54   for(int i=0;i<9;i++)
55     {
56       fNominalTpcPointsPos[i].SetX(0);
57       fNominalTpcPointsPos[i].SetY(0);
58       fNominalTpcPointsPos[i].SetZ(0);
59       fNominalTpcPointsNeg[i].SetX(0);
60       fNominalTpcPointsNeg[i].SetY(0);
61       fNominalTpcPointsNeg[i].SetZ(0);
62
63     }
64 }
65 // -----------------------------------------------------------------------
66 AliFemtoV0::AliFemtoV0(const AliFemtoV0& v) :
67   fDecayLengthV0(0), fDecayVertexV0(0), fPrimaryVertex(0),
68   fDcaV0Daughters(0), fDcaV0ToPrimVertex(0),
69   fDcaPosToPrimVertex(0), fDcaNegToPrimVertex(0),
70   fMomPos(0), fMomNeg(0),
71   fTpcHitsPos(0), fTpcHitsNeg(0), fOnFlyStatusV0(0),
72   fChi2V0(0),  fClV0(0),  fChi2Pos(0),  fClPos(0),  fChi2Neg(0),  fClNeg(0), fCosPointingAngle(0),
73   fDedxPos(0),  fErrDedxPos(0),  fLenDedxPos(0),
74   fDedxNeg(0),  fErrDedxNeg(0),  fLenDedxNeg(0),
75   fNufDedxPos(0), fNufDedxNeg(0),
76   fHelixPos(), fHelixNeg(), 
77   fMomV0(0), fEtaV0(0), fPhiV0(0), fYV0(0),
78   fAlphaV0(0),  fPtArmV0(0),
79   fELambda(0),  fEK0Short(0),  
80   fEPosProton(0),  fEPosPion(0),
81   fENegProton(0),  fENegPion(0),
82   fMassLambda(0),  fMassAntiLambda(0),
83   fMassK0Short(0),  fRapLambda(0),
84   fRapK0Short(0),  fCTauLambda(0),
85   fCTauK0Short(0),  fPtV0(0),  fPtotV0(0),
86   fPtPos(0),  fPtotPos(0),
87   fPtNeg(0),  fPtotNeg(0),
88   fEtaPos(0), fEtaNeg(0), fTPCNclsPos(0), fTPCNclsNeg(0), fClustersPos(0), fClustersNeg(0), fSharingPos(0), fSharingNeg(0), fNdofPos(0), fNdofNeg(0), fStatusPos(0), fStatusNeg(0),
89   fPosNSigmaTPCK(0), fPosNSigmaTPCPi(0), fPosNSigmaTPCP(0), fNegNSigmaTPCK(0), fNegNSigmaTPCPi(0), fNegNSigmaTPCP(0),
90   fPosNSigmaTOFK(0), fPosNSigmaTOFPi(0), fPosNSigmaTOFP(0), fNegNSigmaTOFK(0), fNegNSigmaTOFPi(0), fNegNSigmaTOFP(0),
91   fKeyNeg(0),   fKeyPos(0),
92   fNominalTpcEntrancePointPos(0,0,0),fNominalTpcExitPointPos(0,0,0),
93   fNominalTpcEntrancePointNeg(0,0,0),fNominalTpcExitPointNeg(0,0,0),
94   fTPCMomentumPos(0), fTPCMomentumNeg(0),
95   fTOFProtonTimePos(0), fTOFPionTimePos(0), fTOFKaonTimePos(0),
96   fTOFProtonTimeNeg(0), fTOFPionTimeNeg(0), fTOFKaonTimeNeg(0), 
97   fImpactDprimPos(0), fImpactDweakPos(0), fImpactDmatPos(0), fImpactDprimNeg(0), fImpactDweakNeg(0), fImpactDmatNeg(0),
98   fHiddenInfo(0)  /***/
99
100   // copy constructor
101   fDecayLengthV0 = v.fDecayLengthV0;
102   fDecayVertexV0 = v.fDecayVertexV0;
103   fDcaV0Daughters = v.fDcaV0Daughters;
104   fDcaV0ToPrimVertex = v.fDcaV0ToPrimVertex;
105   fDcaPosToPrimVertex = v.fDcaPosToPrimVertex;
106   fDcaNegToPrimVertex = v.fDcaNegToPrimVertex;
107   fMomPos = v.fMomPos;
108   fMomNeg = v.fMomNeg;
109
110   fEtaV0 = v.fEtaV0;
111   fPhiV0 = v.fPhiV0;
112   fYV0 = v.fYV0;
113   fCosPointingAngle = v.fCosPointingAngle;
114
115   fTrackTopologyMapPos[0] = v.fTrackTopologyMapPos[0];
116   fTrackTopologyMapPos[1] = v.fTrackTopologyMapPos[1];
117   fTrackTopologyMapNeg[0] = v.fTrackTopologyMapNeg[0];
118   fTrackTopologyMapNeg[1] = v.fTrackTopologyMapNeg[1];
119    
120   fKeyPos = v.fKeyPos;
121   fKeyNeg = v.fKeyNeg;
122   fEtaPos = v.fEtaPos; 
123   fEtaNeg = v.fEtaNeg; 
124   fTPCNclsPos = v.fTPCNclsPos; 
125   fTPCNclsNeg = v.fTPCNclsNeg; 
126   fClustersPos = v.fClustersPos;
127   fClustersNeg = v.fClustersNeg;
128   fSharingPos = v.fSharingPos;
129   fSharingNeg = v.fSharingNeg;
130   fNdofPos = v.fNdofPos; 
131   fNdofNeg = v.fNdofNeg; 
132   fStatusPos = v.fStatusPos; 
133   fStatusNeg = v.fStatusNeg;
134   fOnFlyStatusV0 = v.fOnFlyStatusV0;
135
136   fPosNSigmaTPCK =  v.fPosNSigmaTPCK;
137   fPosNSigmaTPCPi = v.fPosNSigmaTPCPi ; 
138   fPosNSigmaTPCP = v.fPosNSigmaTPCP ; 
139   fNegNSigmaTPCK = v.fNegNSigmaTPCK ; 
140   fNegNSigmaTPCPi = v.fNegNSigmaTPCPi ; 
141   fNegNSigmaTPCP = v.fNegNSigmaTPCP ;
142   fPosNSigmaTOFK = v.fPosNSigmaTOFK ; 
143   fPosNSigmaTOFPi = v.fPosNSigmaTOFPi ; 
144   fPosNSigmaTOFP = v.fPosNSigmaTOFP ; 
145   fNegNSigmaTOFK = v.fNegNSigmaTOFK ; 
146   fNegNSigmaTOFPi = v.fNegNSigmaTOFPi ; 
147   fNegNSigmaTOFP = v.fNegNSigmaTOFP ;
148
149
150   fTpcHitsPos = v.fTpcHitsPos;
151   fTpcHitsNeg = v.fTpcHitsNeg;
152
153   fChi2V0 = v.fChi2V0;
154   fClV0 = v.fClV0;
155   fChi2Pos = v.fChi2Pos;
156   fClPos = v.fClPos;
157   fChi2Neg = v.fChi2Neg;
158   fClNeg = v.fClNeg;
159   fDedxPos = v.fDedxPos;
160   fErrDedxPos = v.fErrDedxPos;//Gael 04Fev2002
161   fLenDedxPos = v.fLenDedxPos;//Gael 04Fev2002
162   fDedxNeg = v.fDedxNeg;
163   fErrDedxNeg = v.fErrDedxNeg;//Gael 04Fev2002
164   fLenDedxNeg = v.fLenDedxNeg;//Gael 04Fev2002
165
166   fNufDedxPos = v.fNufDedxPos;
167   fNufDedxNeg = v.fNufDedxNeg;
168
169   fHelixPos = v.fHelixPos;// Gael 12 Sept
170   fHelixNeg = v.fHelixNeg;// Gael 12 Sept
171
172   fNominalTpcEntrancePointPos = v.fNominalTpcEntrancePointPos;
173   fNominalTpcExitPointPos = v.fNominalTpcExitPointPos;
174   fNominalTpcEntrancePointNeg = v.fNominalTpcEntrancePointNeg;
175   fNominalTpcExitPointNeg = v.fNominalTpcExitPointNeg;
176
177   fTPCMomentumPos = v.fTPCMomentumPos;
178   fTPCMomentumNeg = v.fTPCMomentumNeg;
179
180   fTOFProtonTimePos=v.fTOFProtonTimePos; fTOFPionTimePos=v.fTOFPionTimePos; fTOFKaonTimePos=v.fTOFKaonTimePos;
181   fTOFProtonTimeNeg=v.fTOFProtonTimeNeg; fTOFPionTimeNeg=v.fTOFPionTimeNeg; fTOFKaonTimeNeg=v.fTOFKaonTimeNeg;
182
183
184   for(int i=0;i<9;i++)
185     {
186       fNominalTpcPointsPos[i].SetX(v.fNominalTpcPointsPos[i].x());
187       fNominalTpcPointsPos[i].SetY(v.fNominalTpcPointsPos[i].y());
188       fNominalTpcPointsPos[i].SetZ(v.fNominalTpcPointsPos[i].z());
189       fNominalTpcPointsNeg[i].SetX(v.fNominalTpcPointsNeg[i].x());
190       fNominalTpcPointsNeg[i].SetY(v.fNominalTpcPointsNeg[i].y());
191       fNominalTpcPointsNeg[i].SetZ(v.fNominalTpcPointsNeg[i].z());
192     }
193
194   fImpactDprimPos = v.fImpactDprimPos;
195   fImpactDweakPos = v.fImpactDweakPos;
196   fImpactDmatPos = v.fImpactDmatPos;
197   fImpactDprimNeg = v.fImpactDprimNeg;
198   fImpactDweakNeg = v.fImpactDweakNeg;
199   fImpactDmatNeg = v.fImpactDmatNeg;
200
201   fHiddenInfo = v.fHiddenInfo? v.fHiddenInfo->Clone() : 0;// GR 11 DEC 02
202   UpdateV0();
203 }
204 AliFemtoV0& AliFemtoV0::operator=(const AliFemtoV0& aV0)
205 {
206   // assignment operator
207   if (this == &aV0)
208     return *this;
209   fDecayLengthV0 = aV0.fDecayLengthV0;
210   fDecayVertexV0 = aV0.fDecayVertexV0;
211   fDcaV0Daughters = aV0.fDcaV0Daughters;
212   fDcaV0ToPrimVertex = aV0.fDcaV0ToPrimVertex;
213   fDcaPosToPrimVertex = aV0.fDcaPosToPrimVertex;
214   fDcaNegToPrimVertex = aV0.fDcaNegToPrimVertex;
215   fMomPos = aV0.fMomPos;
216   fMomNeg = aV0.fMomNeg;
217
218   fTrackTopologyMapPos[0] = aV0.fTrackTopologyMapPos[0];
219   fTrackTopologyMapPos[1] = aV0.fTrackTopologyMapPos[1];
220   fTrackTopologyMapNeg[0] = aV0.fTrackTopologyMapNeg[0];
221   fTrackTopologyMapNeg[1] = aV0.fTrackTopologyMapNeg[1];
222    
223   fKeyPos = aV0.fKeyPos;
224   fKeyNeg = aV0.fKeyNeg;
225
226   fEtaPos = aV0.fEtaPos; 
227   fEtaNeg = aV0.fEtaNeg; 
228   fTPCNclsPos = aV0.fTPCNclsPos; 
229   fTPCNclsNeg = aV0.fTPCNclsNeg;
230   fClustersPos = aV0.fClustersPos;
231   fClustersNeg = aV0.fClustersNeg;
232   fSharingPos = aV0.fSharingPos;
233   fSharingNeg = aV0.fSharingNeg;
234   fNdofPos = aV0.fNdofPos; 
235   fNdofNeg = aV0.fNdofNeg; 
236   fStatusPos = aV0.fStatusPos; 
237   fStatusNeg = aV0.fStatusNeg;
238   fOnFlyStatusV0 = aV0.fOnFlyStatusV0;
239
240   fPosNSigmaTPCK =  aV0.fPosNSigmaTPCK;
241   fPosNSigmaTPCPi = aV0.fPosNSigmaTPCPi ; 
242   fPosNSigmaTPCP = aV0.fPosNSigmaTPCP ; 
243   fNegNSigmaTPCK = aV0.fNegNSigmaTPCK ; 
244   fNegNSigmaTPCPi = aV0.fNegNSigmaTPCPi ; 
245   fNegNSigmaTPCP = aV0.fNegNSigmaTPCP ;
246   fPosNSigmaTOFK = aV0.fPosNSigmaTOFK ; 
247   fPosNSigmaTOFPi = aV0.fPosNSigmaTOFPi ; 
248   fPosNSigmaTOFP = aV0.fPosNSigmaTOFP ; 
249   fNegNSigmaTOFK = aV0.fNegNSigmaTOFK ; 
250   fNegNSigmaTOFPi = aV0.fNegNSigmaTOFPi ; 
251   fNegNSigmaTOFP = aV0.fNegNSigmaTOFP ;
252
253   fEtaV0 = aV0.fEtaV0;
254   fPhiV0 = aV0.fPhiV0;
255   fYV0 = aV0.fYV0;
256   fCosPointingAngle = aV0.fCosPointingAngle;
257      
258   fTpcHitsPos = aV0.fTpcHitsPos;
259   fTpcHitsNeg = aV0.fTpcHitsNeg;
260
261   fChi2V0 = aV0.fChi2V0;
262   fClV0 = aV0.fClV0;
263   fChi2Pos = aV0.fChi2Pos;
264   fClPos = aV0.fClPos;
265   fChi2Neg = aV0.fChi2Neg;
266   fClNeg = aV0.fClNeg;
267   fDedxPos = aV0.fDedxPos;
268   fErrDedxPos = aV0.fErrDedxPos;//Gael 04Fev2002
269   fLenDedxPos = aV0.fLenDedxPos;//Gael 04Fev2002
270   fDedxNeg = aV0.fDedxNeg;
271   fErrDedxNeg = aV0.fErrDedxNeg;//Gael 04Fev2002
272   fLenDedxNeg = aV0.fLenDedxNeg;//Gael 04Fev2002
273
274   fNufDedxPos = aV0.fNufDedxPos;
275   fNufDedxNeg = aV0.fNufDedxNeg;
276
277   fHelixPos = aV0.fHelixPos;// Gael 12 Sept
278   fHelixNeg = aV0.fHelixNeg;// Gael 12 Sept
279
280   fNominalTpcEntrancePointPos = aV0.fNominalTpcEntrancePointPos;
281   fNominalTpcExitPointPos = aV0.fNominalTpcExitPointPos;
282   fNominalTpcEntrancePointPos = aV0.fNominalTpcEntrancePointPos;
283   fNominalTpcExitPointPos = aV0.fNominalTpcExitPointPos;
284   fNominalTpcEntrancePointNeg = aV0.fNominalTpcEntrancePointNeg;
285   fNominalTpcExitPointNeg = aV0.fNominalTpcExitPointNeg;
286
287   fTPCMomentumPos = aV0.fTPCMomentumPos;
288   fTPCMomentumNeg = aV0.fTPCMomentumNeg;
289
290   fTOFProtonTimePos=aV0.fTOFProtonTimePos; fTOFPionTimePos=aV0.fTOFPionTimePos; fTOFKaonTimePos=aV0.fTOFKaonTimePos;
291   fTOFProtonTimeNeg=aV0.fTOFProtonTimeNeg; fTOFPionTimeNeg=aV0.fTOFPionTimeNeg; fTOFKaonTimeNeg=aV0.fTOFKaonTimeNeg;
292  
293   for(int i=0;i<9;i++)
294     {
295       fNominalTpcPointsPos[i].SetX(aV0.fNominalTpcPointsPos[i].x());
296       fNominalTpcPointsPos[i].SetY(aV0.fNominalTpcPointsPos[i].y());
297       fNominalTpcPointsPos[i].SetZ(aV0.fNominalTpcPointsPos[i].z());
298       fNominalTpcPointsNeg[i].SetX(aV0.fNominalTpcPointsNeg[i].x());
299       fNominalTpcPointsNeg[i].SetY(aV0.fNominalTpcPointsNeg[i].y());
300       fNominalTpcPointsNeg[i].SetZ(aV0.fNominalTpcPointsNeg[i].z());
301     }
302
303   fImpactDprimPos = aV0.fImpactDprimPos;
304   fImpactDweakPos = aV0.fImpactDweakPos;
305   fImpactDmatPos = aV0.fImpactDmatPos;
306   fImpactDprimNeg = aV0.fImpactDprimNeg;
307   fImpactDweakNeg = aV0.fImpactDweakNeg;
308   fImpactDmatNeg = aV0.fImpactDmatNeg;
309
310   if (fHiddenInfo) delete fHiddenInfo;
311   fHiddenInfo = aV0.fHiddenInfo? aV0.fHiddenInfo->Clone() : 0;// GR 11 DEC 02
312   UpdateV0();
313   
314   return *this;
315 }
316
317 // -----------------------------------------------------------------------
318 void AliFemtoV0::UpdateV0(){
319   //Calc. derived memebers of the v0 class
320   float tMomNegAlongV0, tMomPosAlongV0;
321
322    fMomV0  = fMomPos + fMomNeg;
323    fPtV0   = fMomV0.Perp();
324    fPtotV0 = fMomV0.Mag();
325    fPtPos  = fMomPos.Perp();
326    fPtotPos= fMomPos.Mag();
327    fPtNeg  = fMomNeg.Perp();
328    fPtotNeg= fMomNeg.Mag();
329    fELambda= ::sqrt(fPtotV0*fPtotV0+kMLAMBDA*kMLAMBDA);
330    fEK0Short= ::sqrt(fPtotV0*fPtotV0+kMKAON0SHORT*kMKAON0SHORT);
331    fEPosProton = ::sqrt(fPtotPos*fPtotPos+kMPROTON*kMPROTON);
332    fENegProton = ::sqrt(fPtotNeg*fPtotNeg+kMPROTON*kMPROTON);
333    fEPosPion = ::sqrt(fPtotPos*fPtotPos+kMPIONPLUS*kMPIONPLUS);
334    fENegPion = ::sqrt(fPtotNeg*fPtotNeg+kMPIONMINUS*kMPIONMINUS);
335   
336    tMomNegAlongV0 =  fMomNeg*fMomV0 / ::sqrt(::pow(fPtotV0,2));
337    tMomPosAlongV0 =  fMomPos*fMomV0 / ::sqrt(::pow(fPtotV0,2));
338
339    if(tMomPosAlongV0+tMomNegAlongV0!=0)
340    fAlphaV0 = (tMomPosAlongV0-tMomNegAlongV0)/(tMomPosAlongV0+tMomNegAlongV0);
341
342    //printf("%1.15f\n",fPtotPos);
343    //printf("%1.15f\n",tMomPosAlongV0);   
344    
345    if(fPtotPos<tMomPosAlongV0) fPtArmV0=0; else
346      { 
347        fPtArmV0 =  ::sqrt(fPtotPos*fPtotPos - tMomPosAlongV0*tMomPosAlongV0);
348      }
349    fMassLambda = ::sqrt(::pow(fEPosProton+fENegPion,2)-::pow(fPtotV0,2));
350    fMassAntiLambda = ::sqrt(::pow(fENegProton+fEPosPion,2)-::pow(fPtotV0,2));
351    fMassK0Short = ::sqrt(::pow(fENegPion+fEPosPion,2)-::pow(fPtotV0,2));
352    fRapLambda = 0.5*::log( (fELambda+fMomV0.z()) / (fELambda-fMomV0.z()) );
353
354    fCTauLambda = kMLAMBDA*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.Mag(),2.) );
355    
356    fRapK0Short = 0.5*::log( (fEK0Short+fMomV0.z()) / (fEK0Short-fMomV0.z()) );
357    fCTauK0Short = kMKAON0SHORT*(fDecayLengthV0) / ::sqrt( ::pow((double)fMomV0.Mag(),2.) );
358
359 }
360 // -----------------------------------------------------------------------
361 #ifndef __NO_STAR_DEPENDENCE_ALLOWED__
362 #ifdef __ROOT__
363 #include "StStrangeMuDstMaker/StV0MuDst.h"
364 AliFemtoV0::AliFemtoV0( StV0MuDst& v){ // from strangess micro dst structure
365   fDecayLengthV0 = v.decayLengthV0();
366   fDecayVertexV0 = AliFemtoThreeVector( v.decayVertexV0X(), v.decayVertexV0Y(), v.decayVertexV0Z() );
367   fDcaV0Daughters = v.dcaV0Daughters();
368   fDcaV0ToPrimVertex = v.dcaV0ToPrimVertex();
369   fDcaPosToPrimVertex = v.dcaPosToPrimVertex();
370   fDcaNegToPrimVertex = v.dcaNegToPrimVertex();
371   fMomPos = AliFemtoThreeVector( v.momPosX(), v.momPosY(), v.momPosZ() );
372   fMomNeg = AliFemtoThreeVector( v.momNegX(), v.momNegY(), v.momNegZ() ); 
373 #ifdef STHBTDEBUG
374   cout << " hist pos ";
375   cout << v.topologyMapPos().numberOfHits(kTpcId); 
376   cout << " hist neg ";
377   cout << v.topologyMapNeg().numberOfHits(kTpcId) << endl;
378 #endif
379   fTpcHitsPos = ( v.topologyMapPos().numberOfHits(kTpcId) );
380   fTpcHitsNeg = ( v.topologyMapNeg().numberOfHits(kTpcId) );
381   fTrackTopologyMapPos[0] = ( v.topologyMapPos().data(0) );
382   fTrackTopologyMapPos[1] = ( v.topologyMapPos().data(1) );
383   fTrackTopologyMapNeg[0] = ( v.topologyMapNeg().data(0) );
384   fTrackTopologyMapNeg[1] = ( v.topologyMapNeg().data(1) );
385   fKeyPos = v.keyPos();
386   fKeyNeg = v.keyNeg();
387   fChi2V0 = v.chi2V0();
388   fClV0 = v.clV0();
389   fChi2Pos = v.chi2Pos();
390   fClPos = v.clPos();
391   fChi2Neg = v.chi2Neg();
392   fClNeg = v.clNeg();
393   fDedxPos = v.dedxPos();
394   fErrDedxPos = v.errDedxPos();//Gael 04Fev2002
395   fLenDedxPos = v.lenDedxPos();//Gael 04Fev2002
396   fDedxNeg = v.dedxNeg();
397   fErrDedxNeg = v.errDedxNeg();//Gael 04Fev2002
398   fLenDedxNeg = v.lenDedxNeg();//Gael 04Fev2002
399   fNufDedxPos = v.nufDedxPos();
400   fNufDedxNeg = v.nufDedxNeg();
401   fHiddenInfo =  0;//GR 11 DEC 02
402
403 #ifdef STHBTDEBUG
404   cout << " keyPos " << v.keyPos() << endl;
405   cout << " keyNeg " << v.keyNeg() << endl;
406 #endif
407   fMomV0 = AliFemtoThreeVector( v.momV0X(), v.momV0Y(), v.momV0Z() );
408 #ifdef STHBTDEBUG
409   cout << " alpha  ";
410   cout << v.alphaV0();
411   cout << " ptArm  ";
412   cout << v.ptArmV0() << endl;
413 #endif
414   fAlphaV0 = v.alphaV0();
415   fPtArmV0 = v.ptArmV0();
416   fELambda = v.eLambda();
417   fEK0Short = v.eK0Short();
418   fEPosProton = v.ePosProton();
419   fEPosPion = v.ePosPion();
420   fENegPion = v.eNegPion();
421   fENegProton = v.eNegProton();
422   fMassLambda = v.massLambda();
423   fMassAntiLambda = v.massAntiLambda();
424   fMassK0Short = v.massK0Short();
425   fRapLambda = v.rapLambda();
426   fRapK0Short = v.rapK0Short();
427   fCTauLambda = v.cTauLambda();
428   fCTauK0Short = v.cTauK0Short();
429   fPtV0 = v.ptV0();
430   fPtotV0 = v.ptotV0();
431   fPtPos = v.ptPos();
432   fPtotPos = v.ptotPos();
433   fDedxPos = v.dedxPos();
434   fPtNeg = v.ptNeg();
435   fPtotNeg = v.ptotNeg();
436   fDedxNeg = v.dedxNeg();
437 }
438 #endif // __ROOT__
439 #endif  //  __NO_STAR_DEPENDENCE_ALLOWED__
440
441
442
443 void AliFemtoV0::SetHelixPos(const AliFmPhysicalHelixD& h){fHelixPos = h;}// Gael 12 Sept 02
444 const AliFmPhysicalHelixD& AliFemtoV0::HelixPos() const {return fHelixPos;}// Gael 12 Sept 02
445 void AliFemtoV0::SetHelixNeg(const AliFmPhysicalHelixD& h){fHelixNeg = h;}// Gael 12 Sept 02
446 const AliFmPhysicalHelixD& AliFemtoV0::HelixNeg() const {return fHelixNeg;}// Gael 12 Sept 02
447
448 void AliFemtoV0::SetHiddenInfo(AliFemtoHiddenInfo* aHiddenInfo) {fHiddenInfo=aHiddenInfo;}
449 bool AliFemtoV0::ValidHiddenInfo() const { if (fHiddenInfo) return true; else return false; }
450 AliFemtoHiddenInfo* AliFemtoV0::GetHiddenInfo() const {return fHiddenInfo;}
451
452 AliFemtoThreeVector AliFemtoV0::NominalTpcPointPos(int i) { 
453   if(i<0) 
454     return fNominalTpcPointsPos[0]; 
455   if(i>8) 
456     return fNominalTpcPointsPos[8]; 
457   return fNominalTpcPointsPos[i];
458 }
459 AliFemtoThreeVector AliFemtoV0::NominalTpcPointNeg(int i) {
460   if(i<0) 
461     return fNominalTpcPointsNeg[0]; 
462   if(i>8) 
463     return fNominalTpcPointsNeg[8]; 
464   return fNominalTpcPointsNeg[i];
465 }