]>
Commit | Line | Data |
---|---|---|
67427ff7 | 1 | /*************************************************************************** |
2 | * | |
3 | * $Id: AliFemtoPair.h,v 1.17 | |
4 | * | |
5 | * Author: Brian Laziuk, Yale University | |
6 | * slightly modified by Mike Lisa | |
7 | *************************************************************************** | |
8 | * | |
9 | * Description: part of STAR HBT Framework: AliFemtoMaker package | |
10 | * the Pair object is passed to the PairCuts for verification, and | |
11 | * then to the AddRealPair and AddMixedPair methods of the | |
12 | * Correlation Functions | |
13 | * | |
14 | *************************************************************************** | |
15 | * | |
16 | * $Log$ | |
0215f606 | 17 | * Revision 1.1.1.1 2007/04/25 15:38:41 panos |
18 | * Importing the HBT code dir | |
19 | * | |
67427ff7 | 20 | * Revision 1.1.1.1 2007/03/07 10:14:49 mchojnacki |
21 | * First version on CVS | |
22 | * | |
23 | * Revision 1.19 2003/01/14 09:44:00 renault | |
24 | * corrections on average separation calculation for tracks which doesn't cross | |
25 | * all 45 padrows. | |
26 | * | |
27 | * Revision 1.18 2002/11/19 23:33:18 renault | |
28 | * Enable average separation calculation for all combinaisons of | |
29 | * V0 daughters and tracks | |
30 | * | |
31 | * Revision 1.16 2002/02/28 14:18:36 rcwells | |
32 | * Added emissionAngle function to AliFemtoPair | |
33 | * | |
34 | * Revision 1.15 2001/12/14 23:11:30 fretiere | |
35 | * Add class HitMergingCut. Add class fabricesPairCut = HitMerginCut + pair purity cuts. Add TpcLocalTransform function which convert to local tpc coord (not pretty). Modify AliFemtoTrack, AliFemtoParticle, AliFemtoHiddenInfo, AliFemtoPair to handle the hit information and cope with my code | |
36 | * | |
37 | * Revision 1.14 2001/04/03 21:04:36 kisiel | |
38 | * | |
39 | * | |
40 | * Changes needed to make the Theoretical code | |
41 | * work. The main code is the ThCorrFctn directory. | |
42 | * The most visible change is the addition of the | |
43 | * HiddenInfo to AliFemtoPair. | |
44 | * | |
45 | * Revision 1.13 2001/03/28 22:35:23 flierl | |
46 | * changes and bugfixes in qYKP* | |
47 | * add pairrapidity | |
48 | * | |
49 | * Revision 1.12 2001/01/22 22:56:40 laue | |
50 | * Yano-Koonin-Podgoretskii Parametrisation added | |
51 | * | |
52 | * Revision 1.11 2000/10/26 16:09:16 lisa | |
53 | * Added OpeningAngle PairCut class and method to AliFemtoPair | |
54 | * | |
55 | * Revision 1.10 2000/10/05 23:09:05 lisa | |
56 | * Added kT-dependent radii to mixed-event simulator AND implemented AverageSeparation Cut and CorrFctn | |
57 | * | |
58 | * Revision 1.9 2000/07/17 20:03:17 lisa | |
59 | * Implemented tools for addressing and assessing trackmerging | |
60 | * | |
61 | * Revision 1.8 2000/04/04 16:13:09 lisa | |
62 | * AliFemtoPair:quality() now returns normalized value (and so is double) and add a CorrFctn which looks at quality() | |
63 | * | |
64 | * Revision 1.7 2000/04/03 22:09:12 rcwells | |
65 | * Add member function ... quality(). | |
66 | * | |
67 | * Revision 1.6 2000/02/13 21:13:34 lisa | |
68 | * changed ambiguous AliFemtoPair::fourMomentum() to fourMomentumSum() and fourMomentumDiff() and fixed related bug in QvecCorrFctn | |
69 | * | |
70 | * Revision 1.5 2000/01/25 17:35:17 laue | |
71 | * I. In order to run the stand alone version of the AliFemtoMaker the following | |
72 | * changes have been done: | |
73 | * a) all ClassDefs and ClassImps have been put into #ifdef __ROOT__ statements | |
74 | * b) unnecessary includes of StMaker.h have been removed | |
75 | * c) the subdirectory AliFemtoMaker/doc/Make has been created including everything | |
76 | * needed for the stand alone version | |
77 | * | |
78 | * II. To reduce the amount of compiler warning | |
79 | * a) some variables have been type casted | |
80 | * b) some destructors have been declared as virtual | |
81 | * | |
82 | * Revision 1.4 1999/07/29 16:16:34 lisa | |
83 | * Selemons upgrade of AliFemtoPair class | |
84 | * | |
85 | * Revision 1.3 1999/07/22 18:49:10 lisa | |
86 | * Implement idea of Fabrice to not create and delete AliFemtoPair all the time | |
87 | * | |
88 | * Revision 1.2 1999/07/06 22:33:22 lisa | |
89 | * Adjusted all to work in pro and new - dev itself is broken | |
90 | * | |
91 | * Revision 1.1.1.1 1999/06/29 16:02:57 lisa | |
92 | * Installation of AliFemtoMaker | |
93 | * | |
94 | **************************************************************************/ | |
95 | ||
96 | #ifndef ST_HBT_PAIR_HH | |
97 | #define ST_HBT_PAIR_HH | |
98 | ||
99 | #include <utility> | |
100 | ||
101 | #include "Infrastructure/AliFemtoParticle.h" | |
102 | #include "Infrastructure/AliFemtoTypes.h" | |
103 | ||
104 | class AliFemtoPair { | |
105 | public: | |
106 | AliFemtoPair(); | |
0215f606 | 107 | AliFemtoPair(const AliFemtoPair& aPair); |
67427ff7 | 108 | AliFemtoPair(AliFemtoParticle*, AliFemtoParticle*); |
67427ff7 | 109 | ~AliFemtoPair(); |
0215f606 | 110 | AliFemtoPair& operator=(const AliFemtoPair& aPair); |
67427ff7 | 111 | |
112 | // track Gets: | |
113 | AliFemtoParticle* track1() const; | |
114 | AliFemtoParticle* track2() const; | |
115 | // track Sets: | |
116 | void SetTrack1(const AliFemtoParticle* trkPtr); | |
117 | void SetTrack2(const AliFemtoParticle* trkPtr); | |
118 | ||
119 | AliFemtoLorentzVector fourMomentumDiff() const; | |
120 | AliFemtoLorentzVector fourMomentumSum() const; | |
121 | double qInv() const; | |
122 | double kT() const; | |
123 | double mInv() const; | |
124 | // pair rapidity | |
125 | double rap() const; | |
126 | double emissionAngle() const; | |
127 | ||
128 | // Bertsch-Pratt momentum components in Pair Frame - written by Bekele/Humanic | |
129 | double qSidePf() const; | |
130 | double qOutPf() const; | |
131 | double qLongPf() const; | |
132 | ||
133 | // Bertsch-Pratt momentum components in Local CMS (longitudinally comoving) frame | |
134 | // - written by Bekele/Humanic | |
135 | double qSideCMS() const; | |
136 | double qOutCMS() const; | |
137 | double qLongCMS() const; | |
138 | ||
139 | double dKSide() const; | |
140 | double dKOut() const; | |
141 | double dKLong() const; | |
142 | ||
143 | // Bertsch-Pratt momentum components in a longitudinally boosted frame | |
144 | // the argument is the beta of the longitudinal boost (default is 0.0, meaning lab frame) | |
145 | // - written by Bekele/Humanic | |
146 | double qSideBf(double beta=0.0) const; | |
147 | double qOutBf(double beta=0.0) const; | |
148 | double qLongBf(double beta=0.0) const; | |
149 | ||
150 | // Yano-Koonin-Podgoretskii Parametrisation | |
151 | // source rest frame (usually lab frame) | |
152 | void qYKPCMS(double& qP, double& qT, double& q0) const ; | |
153 | // longitudinal comoving frame | |
154 | void qYKPLCMS(double& qP, double& qT, double& q0) const ; | |
155 | // pair rest frame | |
156 | void qYKPPF(double& qP, double& qT, double& q0) const ; | |
157 | ||
158 | ||
159 | double quality() const; | |
160 | ||
161 | // the following two methods calculate the "nominal" separation of the tracks | |
162 | // at the inner field cage (EntranceSeparation) and when they exit the TPC, | |
163 | // which may be at the outer field cage, or at the endcaps. | |
164 | // "nominal" means that the tracks are assumed to start at (0,0,0). Making this | |
165 | // assumption is important for the Event Mixing-- it is not a mistake. - MALisa | |
166 | double NominalTpcExitSeparation() const; | |
167 | double NominalTpcEntranceSeparation() const; | |
168 | double NominalTpcAverageSeparation() const; | |
169 | // adapted calculation of Entrance/Exit/Average Tpc separation to V0 daughters | |
170 | double TpcExitSeparationTrackV0Pos() const; | |
171 | double TpcEntranceSeparationTrackV0Pos() const; | |
172 | double TpcAverageSeparationTrackV0Pos() const; | |
173 | ||
174 | double TpcExitSeparationTrackV0Neg() const; | |
175 | double TpcEntranceSeparationTrackV0Neg() const; | |
176 | double TpcAverageSeparationTrackV0Neg() const; | |
177 | ||
178 | double TpcExitSeparationV0PosV0Pos() const; | |
179 | double TpcEntranceSeparationV0PosV0Pos() const; | |
180 | double TpcAverageSeparationV0PosV0Pos() const; | |
181 | ||
182 | double TpcExitSeparationV0PosV0Neg() const; | |
183 | double TpcEntranceSeparationV0PosV0Neg() const; | |
184 | double TpcAverageSeparationV0PosV0Neg() const; | |
185 | ||
186 | double TpcExitSeparationV0NegV0Pos() const; | |
187 | double TpcEntranceSeparationV0NegV0Pos() const; | |
188 | double TpcAverageSeparationV0NegV0Pos() const; | |
189 | ||
190 | double TpcExitSeparationV0NegV0Neg() const; | |
191 | double TpcEntranceSeparationV0NegV0Neg() const; | |
192 | double TpcAverageSeparationV0NegV0Neg() const; | |
193 | ||
194 | double pInv() const; | |
195 | double KStar() const; | |
196 | double KStarFlipped() const; | |
197 | double CVK() const; | |
198 | double CVKFlipped() const; | |
199 | double qInvFlippedXY() const; | |
200 | ||
201 | double OpeningAngle() const; | |
202 | ||
203 | // Fabrice Private <<< | |
204 | double KStarSide() const; | |
205 | double KStarOut() const; | |
206 | double KStarLong() const; | |
207 | ||
208 | float PionPairProbability() const; | |
209 | float ElectronPairProbability() const; | |
210 | float KaonPairProbability() const; | |
211 | float ProtonPairProbability() const; | |
212 | float KaonPionPairProbability() const; | |
213 | ||
214 | double dcaInsideTpc() const; | |
215 | double quality2() const; | |
216 | ||
217 | /* double KStarGlobal() const; | |
218 | double CVKGlobal() const; | |
219 | double KStarSideGlobal() const; | |
220 | double KStarOutGlobal() const; | |
221 | double KStarLongGlobal() const;*/ | |
222 | ||
223 | void setMergingPar(double aMaxDuInner, double aMaxDzInner, | |
224 | double aMaxDuOuter, double aMaxDzOuter); | |
225 | void setDefaultHalfFieldMergingPar(); | |
226 | void setDefaultFullFieldMergingPar(); | |
227 | double getFracOfMergedRow() const; | |
228 | double getClosestRowAtDCA() const; | |
229 | double getWeightedAvSep() const; | |
230 | // >>> | |
231 | double getFracOfMergedRowTrkV0Pos() const; | |
232 | double getClosestRowAtDCATrkV0Pos() const; | |
233 | ||
234 | double getFracOfMergedRowTrkV0Neg() const; | |
235 | double getClosestRowAtDCATrkV0Neg() const; | |
236 | ||
237 | double getFracOfMergedRowV0PosV0Neg() const; | |
238 | double getFracOfMergedRowV0NegV0Pos() const; | |
239 | double getFracOfMergedRowV0PosV0Pos() const; | |
240 | double getFracOfMergedRowV0NegV0Neg() const; | |
241 | ||
242 | private: | |
243 | AliFemtoParticle* fTrack1; | |
244 | AliFemtoParticle* fTrack2; | |
245 | ||
246 | mutable short fNonIdParNotCalculated; | |
247 | mutable double fDKSide; | |
248 | mutable double fDKOut; | |
249 | mutable double fDKLong; | |
250 | mutable double fCVK; | |
251 | mutable double kStarCalc; | |
252 | void calcNonIdPar() const; | |
253 | ||
254 | mutable short fNonIdParNotCalculatedGlobal; | |
255 | /* mutable double fDKSideGlobal; | |
256 | mutable double fDKOutGlobal; | |
257 | mutable double fDKLongGlobal; | |
258 | mutable double kStarCalcGlobal; | |
259 | mutable double fCVKGlobal;*/ | |
260 | //void calcNonIdParGlobal() const; | |
261 | ||
262 | mutable short fMergingParNotCalculated; | |
263 | mutable double fWeightedAvSep; | |
264 | mutable double fFracOfMergedRow; | |
265 | mutable double fClosestRowAtDCA; | |
266 | ||
267 | mutable short fMergingParNotCalculatedTrkV0Pos; | |
268 | mutable double fFracOfMergedRowTrkV0Pos; | |
269 | mutable double fClosestRowAtDCATrkV0Pos; | |
270 | ||
271 | mutable short fMergingParNotCalculatedTrkV0Neg; | |
272 | mutable double fFracOfMergedRowTrkV0Neg; | |
273 | mutable double fClosestRowAtDCATrkV0Neg; | |
274 | ||
275 | mutable short fMergingParNotCalculatedV0PosV0Neg; | |
276 | mutable double fFracOfMergedRowV0PosV0Neg; | |
277 | mutable double fClosestRowAtDCAV0PosV0Neg; | |
278 | ||
279 | mutable short fMergingParNotCalculatedV0NegV0Pos; | |
280 | mutable double fFracOfMergedRowV0NegV0Pos; | |
281 | mutable double fClosestRowAtDCAV0NegV0Pos; | |
282 | ||
283 | mutable short fMergingParNotCalculatedV0PosV0Pos; | |
284 | mutable double fFracOfMergedRowV0PosV0Pos; | |
285 | mutable double fClosestRowAtDCAV0PosV0Pos; | |
286 | ||
287 | mutable short fMergingParNotCalculatedV0NegV0Neg; | |
288 | mutable double fFracOfMergedRowV0NegV0Neg; | |
289 | mutable double fClosestRowAtDCAV0NegV0Neg; | |
290 | ||
291 | static double fMaxDuInner; | |
292 | static double fMaxDzInner; | |
293 | static double fMaxDuOuter; | |
294 | static double fMaxDzOuter; | |
295 | void calcMergingPar() const; | |
296 | ||
297 | void CalcMergingParFctn(short* tmpMergingParNotCalculatedFctn, | |
298 | float* tmpZ1,float* tmpU1, | |
299 | float* tmpZ2,float* tmpU2, | |
300 | int *tmpSect1,int *tmpSect2, | |
301 | double* tmpFracOfMergedRow, | |
302 | double* tmpClosestRowAtDCA | |
303 | ) const; | |
304 | ||
305 | void resetParCalculated(); | |
306 | }; | |
307 | ||
308 | inline void AliFemtoPair::resetParCalculated(){ | |
309 | fNonIdParNotCalculated=1; | |
310 | fNonIdParNotCalculatedGlobal=1; | |
311 | fMergingParNotCalculated=1; | |
312 | fMergingParNotCalculatedTrkV0Pos=1; | |
313 | fMergingParNotCalculatedTrkV0Neg=1; | |
314 | fMergingParNotCalculatedV0PosV0Pos=1; | |
315 | fMergingParNotCalculatedV0NegV0Pos=1; | |
316 | fMergingParNotCalculatedV0PosV0Neg=1; | |
317 | fMergingParNotCalculatedV0NegV0Neg=1; | |
318 | } | |
319 | ||
320 | inline void AliFemtoPair::SetTrack1(const AliFemtoParticle* trkPtr){ | |
321 | fTrack1=(AliFemtoParticle*)trkPtr; | |
322 | resetParCalculated(); | |
323 | } | |
324 | inline void AliFemtoPair::SetTrack2(const AliFemtoParticle* trkPtr){ | |
325 | fTrack2=(AliFemtoParticle*)trkPtr; | |
326 | resetParCalculated(); | |
327 | } | |
328 | ||
329 | inline AliFemtoParticle* AliFemtoPair::track1() const {return fTrack1;} | |
330 | inline AliFemtoParticle* AliFemtoPair::track2() const {return fTrack2;} | |
331 | ||
332 | inline double AliFemtoPair::dKSide() const{ | |
333 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
334 | return fDKSide; | |
335 | } | |
336 | inline double AliFemtoPair::dKOut() const{ | |
337 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
338 | return fDKOut; | |
339 | } | |
340 | inline double AliFemtoPair::dKLong() const{ | |
341 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
342 | return fDKLong; | |
343 | } | |
344 | inline double AliFemtoPair::KStar() const{ | |
345 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
346 | return kStarCalc; | |
347 | } | |
348 | inline double AliFemtoPair::qInv() const { | |
349 | AliFemtoLorentzVector tDiff = (fTrack1->FourMomentum()-fTrack2->FourMomentum()); | |
350 | return ( -1.* tDiff.m()); | |
351 | } | |
352 | ||
353 | // Fabrice private <<< | |
354 | inline double AliFemtoPair::KStarSide() const{ | |
355 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
356 | return fDKSide;//mKStarSide; | |
357 | } | |
358 | inline double AliFemtoPair::KStarOut() const{ | |
359 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
360 | return fDKOut;//mKStarOut; | |
361 | } | |
362 | inline double AliFemtoPair::KStarLong() const{ | |
363 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
364 | return fDKLong;//mKStarLong; | |
365 | } | |
366 | inline double AliFemtoPair::CVK() const{ | |
367 | if(fNonIdParNotCalculated) calcNonIdPar(); | |
368 | return fCVK; | |
369 | } | |
370 | ||
371 | /*inline double AliFemtoPair::KStarGlobal() const{ | |
372 | if(fNonIdParNotCalculatedGlobal) calcNonIdParGlobal(); | |
373 | return kStarCalcGlobal; | |
374 | } | |
375 | inline double AliFemtoPair::KStarSideGlobal() const{ | |
376 | if(fNonIdParNotCalculatedGlobal) calcNonIdParGlobal(); | |
377 | return fDKSideGlobal;//mKStarSide; | |
378 | } | |
379 | inline double AliFemtoPair::KStarOutGlobal() const{ | |
380 | if(fNonIdParNotCalculatedGlobal) calcNonIdParGlobal(); | |
381 | return fDKOutGlobal;//mKStarOut; | |
382 | } | |
383 | inline double AliFemtoPair::KStarLongGlobal() const{ | |
384 | if(fNonIdParNotCalculatedGlobal) calcNonIdParGlobal(); | |
385 | return fDKLongGlobal;//mKStarLong; | |
386 | } | |
387 | inline double AliFemtoPair::CVKGlobal() const{ | |
388 | if(fNonIdParNotCalculatedGlobal) calcNonIdParGlobal(); | |
389 | return fCVKGlobal; | |
390 | }*/ | |
391 | ||
392 | ||
393 | inline float AliFemtoPair::PionPairProbability() const{ | |
394 | return (fTrack1->Track()->PidProbPion()) * | |
395 | (fTrack2->Track()->PidProbPion()); | |
396 | } | |
397 | inline float AliFemtoPair::ElectronPairProbability() const{ | |
398 | return (fTrack1->Track()->PidProbElectron()) * | |
399 | (fTrack2->Track()->PidProbElectron()); | |
400 | } | |
401 | inline float AliFemtoPair::KaonPairProbability() const{ | |
402 | return (fTrack1->Track()->PidProbKaon()) * | |
403 | (fTrack2->Track()->PidProbKaon()); | |
404 | } | |
405 | inline float AliFemtoPair::ProtonPairProbability() const{ | |
406 | return (fTrack1->Track()->PidProbProton()) * | |
407 | (fTrack2->Track()->PidProbProton()); | |
408 | } | |
409 | inline float AliFemtoPair::KaonPionPairProbability() const{ | |
410 | return (fTrack1->Track()->PidProbKaon()) * | |
411 | (fTrack2->Track()->PidProbPion()); | |
412 | } | |
413 | ||
414 | inline double AliFemtoPair::getFracOfMergedRow() const{ | |
415 | if(fMergingParNotCalculated) calcMergingPar(); | |
416 | return fFracOfMergedRow; | |
417 | } | |
418 | inline double AliFemtoPair::getClosestRowAtDCA() const { | |
419 | if(fMergingParNotCalculated) calcMergingPar(); | |
420 | return fClosestRowAtDCA; | |
421 | } | |
422 | inline double AliFemtoPair::getWeightedAvSep() const { | |
423 | if(fMergingParNotCalculated) calcMergingPar(); | |
424 | return fWeightedAvSep; | |
425 | } | |
426 | ||
427 | ||
428 | inline double AliFemtoPair::getFracOfMergedRowTrkV0Pos() const{ | |
429 | if(fMergingParNotCalculatedTrkV0Pos) | |
430 | CalcMergingParFctn(&fMergingParNotCalculatedTrkV0Pos, | |
431 | &(fTrack1->fZ[0]),&(fTrack1->fU[0]), | |
432 | &(fTrack2->fZ[0]),&(fTrack2->fU[0]), | |
433 | &(fTrack1->fSect[0]),&(fTrack2->fSect[0]), | |
434 | &(fFracOfMergedRowTrkV0Pos),&(fClosestRowAtDCATrkV0Pos) | |
435 | ); | |
436 | return fFracOfMergedRowTrkV0Pos; | |
437 | } | |
438 | inline double AliFemtoPair::getClosestRowAtDCATrkV0Pos() const{ | |
439 | if(fMergingParNotCalculatedTrkV0Pos) | |
440 | CalcMergingParFctn(&fMergingParNotCalculatedTrkV0Pos, | |
441 | &(fTrack1->fZ[0]),&(fTrack1->fU[0]), | |
442 | &(fTrack2->fZ[0]),&(fTrack2->fU[0]), | |
443 | &(fTrack1->fSect[0]),&(fTrack2->fSect[0]), | |
444 | &fFracOfMergedRowTrkV0Pos,&fClosestRowAtDCATrkV0Pos | |
445 | ); | |
446 | return fClosestRowAtDCATrkV0Pos; | |
447 | } | |
448 | inline double AliFemtoPair::getFracOfMergedRowTrkV0Neg() const{ | |
449 | if(fMergingParNotCalculatedTrkV0Neg) | |
450 | CalcMergingParFctn(&fMergingParNotCalculatedTrkV0Neg, | |
451 | &(fTrack1->fZ[0]),&(fTrack1->fU[0]), | |
452 | &(fTrack2->fV0NegZ[0]),&(fTrack2->fV0NegU[0]), | |
453 | &(fTrack1->fSect[0]),&(fTrack2->fV0NegSect[0]), | |
454 | &(fFracOfMergedRowTrkV0Neg),&(fClosestRowAtDCATrkV0Neg) | |
455 | ); | |
456 | return fFracOfMergedRowTrkV0Neg; | |
457 | } | |
458 | inline double AliFemtoPair::getClosestRowAtDCATrkV0Neg() const{ | |
459 | if(fMergingParNotCalculatedTrkV0Neg) | |
460 | CalcMergingParFctn(&fMergingParNotCalculatedTrkV0Neg, | |
461 | &(fTrack1->fZ[0]),&(fTrack1->fU[0]), | |
462 | &(fTrack2->fV0NegZ[0]),&(fTrack2->fV0NegU[0]), | |
463 | &(fTrack1->fSect[0]),&(fTrack2->fV0NegSect[0]), | |
464 | &fFracOfMergedRowTrkV0Neg,&fClosestRowAtDCATrkV0Neg | |
465 | ); | |
466 | return fClosestRowAtDCATrkV0Neg; | |
467 | } | |
468 | inline double AliFemtoPair::getFracOfMergedRowV0PosV0Neg() const{ | |
469 | if(fMergingParNotCalculatedV0PosV0Neg) | |
470 | CalcMergingParFctn(&fMergingParNotCalculatedV0PosV0Neg, | |
471 | &(fTrack1->fZ[0]),&(fTrack1->fU[0]), | |
472 | &(fTrack2->fV0NegZ[0]),&(fTrack2->fV0NegU[0]), | |
473 | &(fTrack1->fSect[0]),&(fTrack2->fV0NegSect[0]), | |
474 | &(fFracOfMergedRowV0PosV0Neg), | |
475 | &(fClosestRowAtDCAV0PosV0Neg) | |
476 | ); | |
477 | return fFracOfMergedRowV0PosV0Neg; | |
478 | } | |
479 | inline double AliFemtoPair::getFracOfMergedRowV0NegV0Pos() const{ | |
480 | if(fMergingParNotCalculatedV0NegV0Pos) | |
481 | CalcMergingParFctn(&fMergingParNotCalculatedV0NegV0Pos, | |
482 | &(fTrack1->fV0NegZ[0]),&(fTrack1->fV0NegU[0]), | |
483 | &(fTrack2->fZ[0]),&(fTrack2->fU[0]), | |
484 | &(fTrack1->fV0NegSect[0]), | |
485 | &(fTrack2->fSect[0]), | |
486 | &(fFracOfMergedRowV0NegV0Pos), | |
487 | &(fClosestRowAtDCAV0NegV0Pos) | |
488 | ); | |
489 | return fFracOfMergedRowV0NegV0Pos; | |
490 | } | |
491 | inline double AliFemtoPair::getFracOfMergedRowV0PosV0Pos() const{ | |
492 | if(fMergingParNotCalculatedV0PosV0Pos) | |
493 | CalcMergingParFctn(&fMergingParNotCalculatedV0PosV0Pos, | |
494 | &(fTrack1->fZ[0]),&(fTrack1->fU[0]), | |
495 | &(fTrack2->fZ[0]),&(fTrack2->fU[0]), | |
496 | &(fTrack1->fSect[0]), | |
497 | &(fTrack2->fSect[0]), | |
498 | &(fFracOfMergedRowV0PosV0Pos), | |
499 | &(fClosestRowAtDCAV0PosV0Pos) | |
500 | ); | |
501 | return fFracOfMergedRowV0PosV0Pos; | |
502 | } | |
503 | inline double AliFemtoPair::getFracOfMergedRowV0NegV0Neg() const{ | |
504 | if(fMergingParNotCalculatedV0NegV0Neg) | |
505 | CalcMergingParFctn(&fMergingParNotCalculatedV0NegV0Neg, | |
506 | &(fTrack1->fV0NegZ[0]),&(fTrack1->fV0NegU[0]), | |
507 | &(fTrack2->fV0NegZ[0]),&(fTrack2->fV0NegU[0]), | |
508 | &(fTrack1->fV0NegSect[0]), | |
509 | &(fTrack2->fV0NegSect[0]), | |
510 | &(fFracOfMergedRowV0NegV0Neg), | |
511 | &(fClosestRowAtDCAV0NegV0Neg) | |
512 | ); | |
513 | return fFracOfMergedRowV0NegV0Neg; | |
514 | } | |
515 | ||
516 | #endif |