16 #include "StTrackTopologyMap.h"
17 #include "StFlowPicoEvent.h"
18 #include "StEventTypes.h"
19 #include "StFlowCutTrack.h"
20 #include "StFlowMaker.h"
21 #include "PhysicalConstants.h"
23 #include "SystemOfUnits.h"
24 #include "StThreeVectorD.hh"
25 #include "StMuDSTMaker/COMMON/StMuTrack.h"
26 #define PR(x) cout << "##### FlowCutTrack: " << (#x) << " = " << (x) << endl;
34 Float_t StFlowCutTrack::mFitOverMaxCuts[2] = {0.52, 1.05};
35 Float_t StFlowCutTrack::mChiSqTpcCuts[2] = {0., 0.};
36 Float_t StFlowCutTrack::mPtTpcCuts[2] = {0.15, 12.};
37 Float_t StFlowCutTrack::mEtaTpcCuts[2] = {-1.3, 1.3};
38 Int_t StFlowCutTrack::mChgTpcCuts[2] = {0, 0};
40 Bool_t StFlowCutTrack::mFtpcTrackCut = kFALSE;
41 Int_t StFlowCutTrack::mFitPtsFtpcCuts[2] = {5, 11};
42 Float_t StFlowCutTrack::mChiSqFtpcCuts[2] = {0., 0.};
43 Float_t StFlowCutTrack::mDcaFtpcCuts[2] = {0., 0.};
44 Float_t StFlowCutTrack::mDcaGlobalFtpcCuts[2] = {0., 2.};
45 Float_t StFlowCutTrack::mPtFtpcCuts[2] = {0.15, 6.};
46 Float_t StFlowCutTrack::mEtaFtpcCuts[4] = {-4.0, -2.5, 2.5, 4.0};
47 Int_t StFlowCutTrack::mChgFtpcCuts[2] = {0, 0};
49 UInt_t StFlowCutTrack::mTrackN = 0;
50 UInt_t StFlowCutTrack::mTpcTrackN = 0;
51 UInt_t StFlowCutTrack::mFtpcTrackN = 0;
52 UInt_t StFlowCutTrack::mFtpcWestTrackN = 0;
53 UInt_t StFlowCutTrack::mFtpcEastTrackN = 0;
54 UInt_t StFlowCutTrack::mGoodTrackN = 0;
55 UInt_t StFlowCutTrack::mGoodTpcTrackN = 0;
56 UInt_t StFlowCutTrack::mGoodFtpcTrackN = 0;
57 UInt_t StFlowCutTrack::mEtaSymPosTpcN = 0;
58 UInt_t StFlowCutTrack::mEtaSymNegTpcN = 0;
59 UInt_t StFlowCutTrack::mEtaSymPosFtpcN = 0;
60 UInt_t StFlowCutTrack::mEtaSymNegFtpcN = 0;
61 UInt_t StFlowCutTrack::mFitPtsTpcCutN = 0;
62 UInt_t StFlowCutTrack::mFitPtsFtpcCutN = 0;
63 UInt_t StFlowCutTrack::mFitOverMaxCutN = 0;
64 UInt_t StFlowCutTrack::mFitOverMaxTpcCutN = 0;
65 UInt_t StFlowCutTrack::mFitOverMaxFtpcCutN = 0;
66 UInt_t StFlowCutTrack::mChiSqTpcCutN = 0;
67 UInt_t StFlowCutTrack::mChiSqFtpcCutN = 0;
68 UInt_t StFlowCutTrack::mDcaFtpcCutN = 0;
69 UInt_t StFlowCutTrack::mDcaGlobalFtpcCutN = 0;
70 UInt_t StFlowCutTrack::mPtTpcCutN = 0;
71 UInt_t StFlowCutTrack::mPtFtpcCutN = 0;
72 UInt_t StFlowCutTrack::mEtaTpcCutN = 0;
73 UInt_t StFlowCutTrack::mChgTpcCutN = 0;
74 UInt_t StFlowCutTrack::mEtaFtpcCutN = 0;
75 UInt_t StFlowCutTrack::mTpcTrackCutN = 0;
76 UInt_t StFlowCutTrack::mFtpcTrackCutN = 0;
77 UInt_t StFlowCutTrack::mChgFtpcCutN = 0;
82 StFlowCutTrack::StFlowCutTrack() {
88 StFlowCutTrack::~StFlowCutTrack() {
93 Int_t StFlowCutTrack::CheckTrack(
StTrack* pTrack) {
98 float charge = pTrack->geometry()->charge();
99 float eta = p.pseudoRapidity();
100 float dca = pTrack->impactParameter();
101 float dcaGlobal = pTrack->node()->track(global)->impactParameter();
103 float chiSq = (float)(pTrack->fitTraits().chi2());
105 Int_t nFitPoints = pTrack->fitTraits().numberOfFitPoints() -
106 pTrack->fitTraits().numberOfFitPoints(kSvtId) -
107 pTrack->fitTraits().numberOfFitPoints(kSsdId) - 1;
108 Int_t nMaxPoints = pTrack->numberOfPossiblePoints() -
109 pTrack->numberOfPossiblePoints(kSvtId) -
110 pTrack->numberOfPossiblePoints(kSsdId) - 1;
111 float fitOverMax = (nMaxPoints) ? (
float)nFitPoints/(float)nMaxPoints : 0.0;
113 if (map.hasHitInDetector(kTpcId) || (map.data(0) == 0 && map.data(1) == 0)) {
116 }
else if (map.trackFtpcEast()) {
119 }
else if (map.trackFtpcWest()) {
126 if (map.hasHitInDetector(kTpcId) || (map.data(0) == 0 && map.data(1) == 0)) {
136 if (mPtTpcCuts[1] > mPtTpcCuts[0] &&
137 (pt < mPtTpcCuts[0] || pt >= mPtTpcCuts[1])) {
143 if (mChiSqTpcCuts[1] > mChiSqTpcCuts[0] &&
144 (chiSq < mChiSqTpcCuts[0] || chiSq >= mChiSqTpcCuts[1])) {
150 if (mFitPtsTpcCuts[1] > mFitPtsTpcCuts[0] &&
151 (nFitPoints < mFitPtsTpcCuts[0] || nFitPoints >= mFitPtsTpcCuts[1])) {
157 if (mFitOverMaxCuts[1] > mFitOverMaxCuts[0] &&
158 (fitOverMax < mFitOverMaxCuts[0] || fitOverMax >= mFitOverMaxCuts[1])) {
159 mFitOverMaxTpcCutN++;
165 if (mEtaTpcCuts[1] > mEtaTpcCuts[0] &&
166 (eta < mEtaTpcCuts[0] || eta >= mEtaTpcCuts[1])) {
172 if (mChgTpcCuts[1] > mChgTpcCuts[0] &&
173 (charge < mChgTpcCuts[0] || charge > mChgTpcCuts[1])) {
188 else if (map.trackFtpcEast() || map.trackFtpcWest()) {
198 if (mDcaFtpcCuts[1] > mDcaFtpcCuts[0] &&
199 (dca < mDcaFtpcCuts[0] || dca >= mDcaFtpcCuts[1])) {
205 if (mDcaGlobalFtpcCuts[1] > mDcaGlobalFtpcCuts[0] &&
206 (dcaGlobal < mDcaGlobalFtpcCuts[0] || dcaGlobal >= mDcaGlobalFtpcCuts[1])) {
207 mDcaGlobalFtpcCutN++;
212 if (mPtFtpcCuts[1] > mPtFtpcCuts[0] &&
213 (pt < mPtFtpcCuts[0] || pt >= mPtFtpcCuts[1])) {
219 if (mChiSqFtpcCuts[1] > mChiSqFtpcCuts[0] &&
220 (chiSq < mChiSqFtpcCuts[0] || chiSq >= mChiSqFtpcCuts[1])) {
226 if (mFitPtsFtpcCuts[1] > mFitPtsFtpcCuts[0] &&
227 (nFitPoints < mFitPtsFtpcCuts[0] || nFitPoints >= mFitPtsFtpcCuts[1])) {
233 if (mFitOverMaxCuts[1] > mFitOverMaxCuts[0] &&
234 (fitOverMax < mFitOverMaxCuts[0] || fitOverMax >= mFitOverMaxCuts[1])) {
235 mFitOverMaxFtpcCutN++;
241 if ((eta < 0 && mEtaFtpcCuts[1] > mEtaFtpcCuts[0] &&
242 (eta < mEtaFtpcCuts[0] || eta >= mEtaFtpcCuts[1])) ||
243 (eta > 0 && mEtaFtpcCuts[3] > mEtaFtpcCuts[2] &&
244 (eta < mEtaFtpcCuts[2] || eta >= mEtaFtpcCuts[3]))) {
250 if (mChgFtpcCuts[1] > mChgFtpcCuts[0] &&
251 (charge < mChgFtpcCuts[0] || charge > mChgFtpcCuts[1])) {
277 float charge = (float) (pPicoTrack->Charge());
278 float eta = pPicoTrack->Eta();
279 float dca = pPicoTrack->Dca();
280 float dcaGlobal = pPicoTrack->DcaGlobal();
281 float pt = pPicoTrack->Pt();
282 float chiSq = pPicoTrack->Chi2();
283 Int_t nFitPoints = pPicoTrack->FitPts() - 1;
284 Int_t nMaxPoints = pPicoTrack->MaxPts();
285 float fitOverMax = (nMaxPoints) ? (
float)nFitPoints/(float)nMaxPoints : 0.0;
288 if (map.hasHitInDetector(kTpcId) || (map.data(0) == 0 && map.data(1) == 0)) {
291 }
else if (map.trackFtpcEast()) {
294 }
else if (map.trackFtpcWest()) {
301 if (map.hasHitInDetector(kTpcId) || (map.data(0) == 0 && map.data(1) == 0)) {
311 if (mPtTpcCuts[1] > mPtTpcCuts[0] &&
312 (pt < mPtTpcCuts[0] || pt >= mPtTpcCuts[1])) {
318 if (mChiSqTpcCuts[1] > mChiSqTpcCuts[0] &&
319 (chiSq < mChiSqTpcCuts[0] || chiSq >= mChiSqTpcCuts[1])) {
325 if (mFitPtsTpcCuts[1] > mFitPtsTpcCuts[0] &&
326 (nFitPoints < mFitPtsTpcCuts[0] || nFitPoints >= mFitPtsTpcCuts[1])) {
332 if (mFitOverMaxCuts[1] > mFitOverMaxCuts[0] &&
333 (fitOverMax < mFitOverMaxCuts[0] || fitOverMax >= mFitOverMaxCuts[1])) {
334 mFitOverMaxTpcCutN++;
340 if (mEtaTpcCuts[1] > mEtaTpcCuts[0] &&
341 (eta < mEtaTpcCuts[0] || eta >= mEtaTpcCuts[1])) {
347 if (mChgTpcCuts[1] > mChgTpcCuts[0] &&
348 (charge < mChgTpcCuts[0] || charge > mChgTpcCuts[1])) {
363 else if (map.trackFtpcEast() || map.trackFtpcWest()) {
373 if (mDcaFtpcCuts[1] > mDcaFtpcCuts[0] &&
374 (dca < mDcaFtpcCuts[0] || dca >= mDcaFtpcCuts[1])) {
380 if (mDcaGlobalFtpcCuts[1] > mDcaGlobalFtpcCuts[0] &&
381 (dcaGlobal < mDcaGlobalFtpcCuts[0] || dcaGlobal >= mDcaGlobalFtpcCuts[1])) {
382 mDcaGlobalFtpcCutN++;
387 if (mPtFtpcCuts[1] > mPtFtpcCuts[0] &&
388 (pt < mPtFtpcCuts[0] || pt >= mPtFtpcCuts[1])) {
394 if (mChiSqFtpcCuts[1] > mChiSqFtpcCuts[0] &&
395 (chiSq < mChiSqFtpcCuts[0] || chiSq >= mChiSqFtpcCuts[1])) {
401 if (mFitPtsFtpcCuts[1] > mFitPtsFtpcCuts[0] &&
402 (nFitPoints < mFitPtsFtpcCuts[0] || nFitPoints >= mFitPtsFtpcCuts[1])) {
408 if (mFitOverMaxCuts[1] > mFitOverMaxCuts[0] &&
409 (fitOverMax < mFitOverMaxCuts[0] || fitOverMax >= mFitOverMaxCuts[1])) {
410 mFitOverMaxFtpcCutN++;
416 if ((eta < 0 && mEtaFtpcCuts[1] > mEtaFtpcCuts[0] &&
417 (eta < mEtaFtpcCuts[0] || eta >= mEtaFtpcCuts[1])) ||
418 (eta > 0 && mEtaFtpcCuts[3] > mEtaFtpcCuts[2] &&
419 (eta < mEtaFtpcCuts[2] || eta >= mEtaFtpcCuts[3]))) {
425 if (mChgFtpcCuts[1] > mChgFtpcCuts[0] &&
426 (charge < mChgFtpcCuts[0] || charge > mChgFtpcCuts[1])) {
449 Int_t StFlowCutTrack::CheckTrack(
StMuTrack* pMuTrack) {
452 float charge = (float) (pMuTrack->
charge());
453 float eta = pMuTrack->
eta();
454 float dca = pMuTrack->
dca().mag();
455 float dcaGlobal = pMuTrack->
dcaGlobal().mag();
456 float pt = pMuTrack->
pt();
457 float chiSq = pMuTrack->
chi2xy();
459 Int_t nFitPoints = pMuTrack->
nHitsFit() -
462 Int_t nMaxPoints = pMuTrack->
nHitsPoss() -
465 float fitOverMax = (nMaxPoints) ? (
float)nFitPoints/(float)nMaxPoints : 0.0;
467 if (map.hasHitInDetector(kTpcId) || (map.data(0) == 0 && map.data(1) == 0)) {
470 }
else if (map.trackFtpcEast()) {
473 }
else if (map.trackFtpcWest()) {
480 if (map.hasHitInDetector(kTpcId) || (map.data(0) == 0 && map.data(1) == 0)) {
490 if (mPtTpcCuts[1] > mPtTpcCuts[0] &&
491 (pt < mPtTpcCuts[0] || pt >= mPtTpcCuts[1])) {
497 if (mChiSqTpcCuts[1] > mChiSqTpcCuts[0] &&
498 (chiSq < mChiSqTpcCuts[0] || chiSq >= mChiSqTpcCuts[1])) {
504 if (mFitPtsTpcCuts[1] > mFitPtsTpcCuts[0] &&
505 (nFitPoints < mFitPtsTpcCuts[0] || nFitPoints >= mFitPtsTpcCuts[1])) {
511 if (mFitOverMaxCuts[1] > mFitOverMaxCuts[0] &&
512 (fitOverMax < mFitOverMaxCuts[0] || fitOverMax >= mFitOverMaxCuts[1])) {
513 mFitOverMaxTpcCutN++;
519 if (mEtaTpcCuts[1] > mEtaTpcCuts[0] &&
520 (eta < mEtaTpcCuts[0] || eta >= mEtaTpcCuts[1])) {
526 if (mChgTpcCuts[1] > mChgTpcCuts[0] &&
527 (charge < mChgTpcCuts[0] || charge > mChgTpcCuts[1])) {
542 else if (map.trackFtpcEast() || map.trackFtpcWest()) {
552 if (mDcaFtpcCuts[1] > mDcaFtpcCuts[0] &&
553 (dca < mDcaFtpcCuts[0] || dca >= mDcaFtpcCuts[1])) {
559 if (mDcaGlobalFtpcCuts[1] > mDcaGlobalFtpcCuts[0] &&
560 (dcaGlobal < mDcaGlobalFtpcCuts[0] || dcaGlobal >= mDcaGlobalFtpcCuts[1])) {
561 mDcaGlobalFtpcCutN++;
566 if (mPtFtpcCuts[1] > mPtFtpcCuts[0] &&
567 (pt < mPtFtpcCuts[0] || pt >= mPtFtpcCuts[1])) {
573 if (mChiSqFtpcCuts[1] > mChiSqFtpcCuts[0] &&
574 (chiSq < mChiSqFtpcCuts[0] || chiSq >= mChiSqFtpcCuts[1])) {
580 if (mFitPtsFtpcCuts[1] > mFitPtsFtpcCuts[0] &&
581 (nFitPoints < mFitPtsFtpcCuts[0] || nFitPoints >= mFitPtsFtpcCuts[1])) {
587 if (mFitOverMaxCuts[1] > mFitOverMaxCuts[0] &&
588 (fitOverMax < mFitOverMaxCuts[0] || fitOverMax >= mFitOverMaxCuts[1])) {
589 mFitOverMaxFtpcCutN++;
595 if ((eta < 0 && mEtaFtpcCuts[1] > mEtaFtpcCuts[0] &&
596 (eta < mEtaFtpcCuts[0] || eta >= mEtaFtpcCuts[1])) ||
597 (eta > 0 && mEtaFtpcCuts[3] > mEtaFtpcCuts[2] &&
598 (eta < mEtaFtpcCuts[2] || eta >= mEtaFtpcCuts[3]))) {
604 if (mChgFtpcCuts[1] > mChgFtpcCuts[0] &&
605 (charge < mChgFtpcCuts[0] || charge > mChgFtpcCuts[1])) {
628 void StFlowCutTrack::PrintCutList() {
632 cout <<
"#######################################################" << endl;
633 cout <<
"# Track Cut List:" << endl;
636 cout <<
"# Include Tpc tracks= FALSE :\t\t ";
639 cout <<
"# Include Tpc tracks= TRUE :\t\t ";
641 cout << setprecision(3) << (float)mTpcTrackCutN/(
float)mTrackN/perCent <<
"%\t ("
642 << setprecision(3) << (float)mTpcTrackCutN/(
float)mTpcTrackN/perCent <<
"% Tpc) cut" << endl;
643 cout <<
"# FitPts (Tpc) cuts= " << mFitPtsTpcCuts[0] <<
", " << mFitPtsTpcCuts[1]
644 <<
" :\t\t " << setprecision(3) << (float)mFitPtsTpcCutN/(
float)mTrackN/perCent
645 <<
"%\t (" << setprecision(3) << (float)mFitPtsTpcCutN/(
float)mTpcTrackN/perCent <<
"% Tpc) cut" << endl;
646 cout <<
"# FitOverMax cuts= " << mFitOverMaxCuts[0] <<
", " << mFitOverMaxCuts[1]
647 <<
" :\t " << setprecision(3) << (float)mFitOverMaxCutN/(
float)mTrackN/perCent
648 <<
"%\t (" << setprecision(3) << (float)mFitOverMaxTpcCutN/(
float)mTpcTrackN/perCent <<
"% Tpc, "
649 << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mFitOverMaxFtpcCutN/(float)mFtpcTrackN/perCent)
650 <<
"% Ftpc) cut" << endl;
651 cout <<
"# ChiSq (Tpc) cuts= " << mChiSqTpcCuts[0] <<
", " << mChiSqTpcCuts[1]
652 <<
" :\t\t " << setprecision(3) << (float)mChiSqTpcCutN/(
float)mTrackN/perCent
653 <<
"%\t (" << setprecision(3) << (float)mChiSqTpcCutN/(
float)mTpcTrackN/perCent <<
"% Tpc) cut" << endl;
654 cout <<
"# Pt (Tpc) cuts= " << mPtTpcCuts[0] <<
", " << mPtTpcCuts[1]
655 <<
" :\t\t " << setprecision(3) << (float)mPtTpcCutN/(
float)mTrackN/perCent
656 <<
"%\t (" << setprecision(3) << (float)mPtTpcCutN/(
float)mTpcTrackN/perCent <<
"% Tpc) cut" << endl;
657 cout <<
"# Eta (Tpc) cuts= " << mEtaTpcCuts[0] <<
", " << mEtaTpcCuts[1]
658 <<
" :\t\t " << setprecision(3) << (float)mEtaTpcCutN/(
float)mTrackN/perCent
659 <<
"%\t (" << setprecision(3) << (float)mEtaTpcCutN/(
float)mTpcTrackN/perCent <<
"% Tpc) cut" << endl;
660 cout <<
"# Chg (Tpc) cuts= " << mChgTpcCuts[0] <<
", " << mChgTpcCuts[1]
661 <<
" :\t\t " << setprecision(3) << (float)mChgTpcCutN/(
float)mTrackN/perCent
662 <<
"%\t (" << setprecision(3) << (float)mChgTpcCutN/(
float)mTpcTrackN/perCent <<
"% Tpc) cut" << endl;
665 cout <<
"# Include Ftpc tracks= FALSE :\t\t ";
668 cout <<
"# Include Ftpc tracks= TRUE :\t\t ";
670 cout << setprecision(3) << (float)mFtpcTrackCutN/(
float)mTrackN/perCent <<
"%\t ("
671 << setprecision(3) << (float)mFtpcTrackCutN/(
float)mFtpcTrackN/perCent <<
"% Ftpc) cut" << endl;
672 cout <<
"# FitPts (Ftpc) cuts= " << mFitPtsFtpcCuts[0] <<
", " << mFitPtsFtpcCuts[1]
673 <<
" :\t\t " << setprecision(3) << (float)mFitPtsFtpcCutN/(
float)mTrackN/perCent
674 <<
"%\t (" << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mFitPtsFtpcCutN/(float)mFtpcTrackN/perCent)
675 <<
"% Ftpc) cut" << endl;
676 cout <<
"# ChiSq (Ftpc) cuts= " << mChiSqFtpcCuts[0] <<
", " << mChiSqFtpcCuts[1]
677 <<
" :\t\t " << setprecision(3) << (float)mChiSqFtpcCutN/(
float)mTrackN/perCent
678 <<
"%\t (" << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mChiSqFtpcCutN/(float)mFtpcTrackN/perCent)
679 <<
"% Ftpc) cut" << endl;
680 cout <<
"# Dca (Ftpc) cuts= " << mDcaFtpcCuts[0] <<
", " << mDcaFtpcCuts[1]
681 <<
" :\t\t " << setprecision(3) << (float)mDcaFtpcCutN/(
float)mTrackN/perCent
682 <<
"%\t (" << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mDcaFtpcCutN/(float)mFtpcTrackN/perCent)
683 <<
"% Ftpc) cut" << endl;
684 cout <<
"# Dca global (Ftpc) cuts= " << mDcaGlobalFtpcCuts[0] <<
", " << mDcaGlobalFtpcCuts[1]
685 <<
" :\t " << setprecision(3) << (float)mDcaGlobalFtpcCutN/(
float)mTrackN/perCent
686 <<
"%\t (" << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mDcaGlobalFtpcCutN/(float)mFtpcTrackN/perCent)
687 <<
"% Ftpc) cut" << endl;
688 cout <<
"# Pt (Ftpc) cuts= " << mPtFtpcCuts[0] <<
", " << mPtFtpcCuts[1]
689 <<
" :\t\t " << setprecision(3) << (float)mPtFtpcCutN/(
float)mTrackN/perCent
690 <<
"%\t (" << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mPtFtpcCutN/(float)mFtpcTrackN/perCent)
691 <<
"% Ftpc) cut" << endl;
692 cout <<
"# Eta (Ftpc) cuts= " << mEtaFtpcCuts[0] <<
", " << mEtaFtpcCuts[1]
693 <<
"; " << mEtaFtpcCuts[2] <<
", " << mEtaFtpcCuts[3]
694 <<
" :\t " << setprecision(3) << (float)mEtaFtpcCutN/(
float)mTrackN/perCent
695 <<
"%\t (" << setprecision(3) << ((mFtpcTrackN == 0)?0.:(
float)mEtaFtpcCutN/(float)mFtpcTrackN/perCent)
696 <<
"% Ftpc) cut" << endl;
697 cout <<
"# Chg (Ftpc) cuts= " << mChgFtpcCuts[0] <<
", " << mChgFtpcCuts[1]
698 <<
" :\t\t " << setprecision(3) << (float)mChgFtpcCutN/(
float)mTrackN/perCent
699 <<
"%\t (" << setprecision(3) << (float)mChgFtpcCutN/(
float)mFtpcTrackN/perCent <<
"% Ftpc) cut" << endl;
700 cout <<
"# Good Tpc Tracks =\t " << (float)mGoodTpcTrackN/(
float)mTpcTrackN/perCent
702 cout << "
# Good Ftpc Tracks =\t " << ((mFtpcTrackN == 0)?0.:(float)mGoodFtpcTrackN/(float)mFtpcTrackN/perCent)
704 cout <<
"# Good Tracks =\t\t " << (float)mGoodTrackN/(
float)mTrackN/perCent
706 cout << "
#######################################################" << endl;
Double_t pt() const
Returns pT at point of dca to primary vertex.
UShort_t nHitsFit() const
Return total number of hits used in fit.
Short_t charge() const
Returns charge.
Double_t eta() const
Returns pseudo rapidity at point of dca to primary vertex.
UShort_t nHitsPoss() const
Return number of possible hits on track.
Double_t chi2xy() const
Returns chi2 of fit. ATTENTIONS: does not return xy chi2 (historic)
StThreeVectorF dca(Int_t vtx_id=-1) const
Returns 3D distance of closest approach to primary vertex.
StThreeVectorF dcaGlobal(Int_t vtx_id=-1) const
Returns 3D distance of closest approach to primary vertex of associated global track.
StTrackTopologyMap topologyMap() const
Returns topology map.