StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFwdTrack.cxx
1 #include "StFwdTrack.h"
2 #include "StEvent/StFcsCluster.h"
3 #include "St_base/StMessMgr.h"
4 
5 StFwdTrack::StFwdTrack() {}
6 
7 StFwdTrack::~StFwdTrack() {}
8 
9 /* momentum
10  * get the track momentum at the first point (PV if included)
11  */
12 StThreeVectorD StFwdTrack::momentum() const{
13  return mPrimaryMomentum;
14 }
15 
16 /* momentumAt
17  * get the track momentum at the nthh point (if available)
18  */
19 StThreeVectorD StFwdTrack::momentumAt(size_t _id) const{
20  if ( _id >= mProjections.size() )
21  return StThreeVectorD( 0, 0, 0 );
22 
23  return mProjections[_id].mMom;
24 }
25 
26 char StFwdTrack::charge() const{
27  return mCharge;
28 }
29 
30 bool StFwdTrack::didFitConverge() const {
31  return mDidFitConverge;
32 }
33 
34 bool StFwdTrack::didFitConvergeFully() const {
35  return mDidFitConvergeFully;
36 }
37 
38 short StFwdTrack::numberOfFailedPoints() const {
39  return mNumberOfFailedPoints;
40 }
41 
42 double StFwdTrack::chi2() const {
43  return mChi2;
44 }
45 
46 double StFwdTrack::ndf() const {
47  return mNDF;
48 }
49 
50 double StFwdTrack::pval() const {
51  return mPval;
52 }
53 
54 short StFwdTrack::numberOfFitPoints() const {
55  return mNumberOfFitPoints;
56 }
57 
58 short StFwdTrack::numberOfSeedPoints() const {
59  return mNumberOfSeedPoints;
60 }
61 
62 
63 StPtrVecFcsCluster& StFwdTrack::ecalClusters() { return mEcalClusters; }
64 const StPtrVecFcsCluster& StFwdTrack::ecalClusters() const { return mEcalClusters; }
65 void StFwdTrack::addEcalCluster(StFcsCluster* p){mEcalClusters.push_back(p);}
66 void StFwdTrack::sortEcalClusterByET() {
67  std::sort(mEcalClusters.begin(), mEcalClusters.end(), [](StFcsCluster* a, StFcsCluster* b) {
68  return b->fourMomentum().perp() < a->fourMomentum().perp();
69  });
70 }
71 
72 StPtrVecFcsCluster& StFwdTrack::hcalClusters() { return mHcalClusters; }
73 const StPtrVecFcsCluster& StFwdTrack::hcalClusters() const { return mHcalClusters; }
74 void StFwdTrack::addHcalCluster(StFcsCluster* p){mHcalClusters.push_back(p);}
75 void StFwdTrack::sortHcalClusterByET() {
76  std::sort(mHcalClusters.begin(), mHcalClusters.end(), [](StFcsCluster* a, StFcsCluster* b) {
77  return b->fourMomentum().perp() < a->fourMomentum().perp();
78  });
79 }
80 
81 StFwdTrackProjection StFwdTrack::getProjectionFor( int detectorId,
82  size_t index ){
83  StFwdTrackProjection result;
84  size_t count = 0;
85  for ( auto proj : mProjections ){
86  if (proj.mDetId == detectorId){
87  result.set( proj );
88  if ( count == index )
89  return result;
90  count++;
91  }
92  }
93  StFwdTrackProjection resultNull;
94  return resultNull;
95 }