CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrackBase.h
Go to the documentation of this file.
1 #ifndef TrackReco_TrackBase_h
2 #define TrackReco_TrackBase_h
3 
58 
59 namespace reco
60 {
61 
62 class TrackBase
63 {
64 
65 public:
67  enum { dimension = 5 };
68 
70  enum { covarianceSize = dimension * (dimension + 1) / 2 };
71 
74 
77 
80 
83 
85  enum {
86  i_qoverp = 0,
91  };
92 
94  typedef unsigned int index;
95 
98  undefAlgorithm = 0, ctf = 1, rs = 2, cosmics = 3, iter0 = 4,
99  iter1 = 5, iter2 = 6, iter3 = 7, iter4 = 8, iter5 = 9, iter6 = 10, iter7 = 11, iter8 = 12, iter9 = 13, iter10 = 14,
101  nuclInter = 17,
105  beamhalo = 28,
106  gsf = 29,
107  algoSize = 30
108  };
109 
110  static const std::string algoNames[];
111 
115  loose = 0,
116  tight = 1,
123  };
124 
125  static const std::string qualityNames[];
126 
128  TrackBase();
129 
131  TrackBase(double chi2, double ndof, const Point &vertex,
132  const Vector &momentum, int charge, const CovarianceMatrix &cov,
134  signed char nloops = 0);
135 
137  virtual ~TrackBase();
138 
140  double chi2() const;
141 
143  double ndof() const;
144 
146  double normalizedChi2() const;
147 
149  int charge() const;
150 
152  double qoverp() const;
153 
155  double theta() const;
156 
158  double lambda() const;
159 
161  double dxy() const;
162 
164  double d0() const;
165 
167  double dsz() const;
168 
170  double dz() const;
171 
173  double p() const;
174 
176  double pt() const;
177 
179  double px() const;
180 
182  double py() const;
183 
185  double pz() const;
186 
188  double phi() const;
189 
191  double eta() const;
192 
194  double vx() const;
195 
197  double vy() const;
198 
200  double vz() const;
201 
203  const Vector &momentum() const;
204 
206  const Point &referencePoint() const;
207 
209  const Point &vertex() const ;
210  //__attribute__((deprecated("This method is DEPRECATED, please use referencePoint() instead.")));
211 
213  double dxy(const Point &myBeamSpot) const;
214 
216  double dxy(const BeamSpot &theBeamSpot) const;
217 
219  double dsz(const Point &myBeamSpot) const;
220 
222  double dz(const Point &myBeamSpot) const;
223 
225  ParameterVector parameters() const;
226 
228  CovarianceMatrix covariance() const;
229 
231  double parameter(int i) const;
232 
234  double covariance(int i, int j) const;
235 
237  double error(int i) const;
238 
240  double qoverpError() const;
241 
243  double ptError() const;
244 
246  double thetaError() const;
247 
249  double lambdaError() const;
250 
252  double etaError() const;
253 
255  double phiError() const;
256 
258  double dxyError() const;
259 
261  double d0Error() const;
262 
264  double dszError() const;
265 
267  double dzError() const;
268 
270  CovarianceMatrix &fill(CovarianceMatrix &v) const;
271 
273  static index covIndex(index i, index j);
274 
276  const HitPattern &hitPattern() const;
277 
279  unsigned short numberOfValidHits() const;
280 
282  unsigned short numberOfLostHits() const;
283 
285  double validFraction() const;
286 
288  template<typename C>
289  bool appendHits(const C &c);
290 
291  template<typename I>
292  bool appendHits(const I &begin, const I &end);
293 
295  bool appendHitPattern(const TrackingRecHit &hit);
296  bool appendHitPattern(const DetId &id, TrackingRecHit::Type hitType);
297 
299  void resetHitPattern();
300 
302  void setAlgorithm(const TrackAlgorithm a, bool set = true);
303 
304  TrackAlgorithm algo() const ;
305 
306  std::string algoName() const;
307 
309 
310  static TrackAlgorithm algoByName(const std::string &name);
311 
313  bool quality(const TrackQuality) const;
314 
315  void setQuality(const TrackQuality, bool set = true);
316 
318 
320 
321  int qualityMask() const;
322 
323  void setQualityMask(int qualMask);
324 
325  void setNLoops(signed char value);
326 
327  bool isLooper() const;
328 
329  signed char nLoops() const;
330 
331 private:
334 
337 
339  float chi2_;
340 
342  Point vertex_;
343 
345  Vector momentum_;
346 
348  float ndof_;
349 
351  char charge_;
352 
354  uint8_t algorithm_;
355 
357  uint8_t quality_;
358 
360  signed char nLoops_; // I use signed char because I don't expect more than 128 loops and I could use a negative value for a special purpose.
361 };
362 
363 // Access the hit pattern, indicating in which Tracker layers the track has hits.
364 inline const HitPattern & TrackBase::hitPattern() const
365 {
366  return hitPattern_;
367 }
368 
370 {
371  return hitPattern_.appendHit(id, hitType);
372 }
373 
375 {
376  return hitPattern_.appendHit(hit);
377 }
378 
380 {
381  hitPattern_.clear();
382 }
383 
384 template<typename I>
385 bool TrackBase::appendHits(const I &begin, const I &end)
386 {
387  return hitPattern_.appendHits(begin, end);
388 }
389 
390 template<typename C>
392 {
393  return setHitPattern(c.begin(), c.end());
394 }
395 
397 {
398  int a = (i <= j ? i : j);
399  int b = (i <= j ? j : i);
400  return b * (b + 1) / 2 + a;
401 }
402 
404 {
405  return (TrackAlgorithm) algorithm_;
406 }
407 
409 {
410  // I'd like to do:
411  // return TrackBase::algoName(algorithm_);
412  // but I cannot define a const static function. Why???
413 
414  switch (algorithm_) {
415  case undefAlgorithm:
416  return "undefAlgorithm";
417  case ctf:
418  return "ctf";
419  case rs:
420  return "rs";
421  case cosmics:
422  return "cosmics";
423  case beamhalo:
424  return "beamhalo";
425  case iter0:
426  return "iter0";
427  case iter1:
428  return "iter1";
429  case iter2:
430  return "iter2";
431  case iter3:
432  return "iter3";
433  case iter4:
434  return "iter4";
435  case iter5:
436  return "iter5";
437  case iter6:
438  return "iter6";
439  case iter7:
440  return "iter7";
441  case iter8:
442  return "iter8";
443  case iter9:
444  return "iter9";
445  case iter10:
446  return "iter10";
447  case outInEcalSeededConv:
448  return "outInEcalSeededConv";
449  case inOutEcalSeededConv:
450  return "inOutEcalSeededConv";
451  case nuclInter:
452  return "nuclInter";
453  case standAloneMuon:
454  return "standAloneMuon";
455  case globalMuon:
456  return "globalMuon";
458  return "cosmicStandAloneMuon";
459  case cosmicGlobalMuon:
460  return "cosmicGlobalMuon";
461  case iter1LargeD0:
462  return "iter1LargeD0";
463  case iter2LargeD0:
464  return "iter2LargeD0";
465  case iter3LargeD0:
466  return "iter3LargeD0";
467  case iter4LargeD0:
468  return "iter4LargeD0";
469  case iter5LargeD0:
470  return "iter5LargeD0";
471  case bTagGhostTracks:
472  return "bTagGhostTracks";
473  case gsf:
474  return "gsf";
475  }
476  return "undefAlgorithm";
477 }
478 
480 {
481  switch (q) {
482  case undefQuality:
483  return (quality_ == 0);
484  case goodIterative:
485  return (((quality_ & (1 << TrackBase::confirmed)) >> TrackBase::confirmed) ||
487  default:
488  return (quality_ & (1 << q)) >> q;
489  }
490  return false;
491 }
492 
493 inline void TrackBase::setQuality(const TrackBase::TrackQuality q, bool set)
494 {
495  if (q == undefQuality) {
496  quality_ = 0;
497  } else {
498  //regular OR if setting value to true
499  if (set) {
500  quality_ |= (1 << q);
501  } else {
502  // doing "half-XOR" if unsetting value
503  quality_ &= (~(1 << q));
504  }
505  }
506 }
507 
509 {
510  if (int(q) < int(qualitySize) && int(q) >= 0) {
511  return qualityNames[int(q)];
512  }
513  return "undefQuality";
514 }
515 
517 {
518  if (int(a) < int(algoSize) && int(a) > 0) {
519  return algoNames[int(a)];
520  }
521  return "undefAlgorithm";
522 }
523 
524 // chi-squared of the fit
525 inline double TrackBase::chi2() const
526 {
527  return chi2_;
528 }
529 
530 // number of degrees of freedom of the fit
531 inline double TrackBase::ndof() const
532 {
533  return ndof_;
534 }
535 
536 // chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
537 inline double TrackBase::normalizedChi2() const
538 {
539  return ndof_ != 0 ? chi2_ / ndof_ : chi2_ * 1e6;
540 }
541 
542 // track electric charge
543 inline int TrackBase::charge() const
544 {
545  return charge_;
546 }
547 
548 // q / p
549 inline double TrackBase::qoverp() const
550 {
551  return charge() / p();
552 }
553 
554 // polar angle
555 inline double TrackBase::theta() const
556 {
557  return momentum_.theta();
558 }
559 
560 // Lambda angle
561 inline double TrackBase::lambda() const
562 {
563  return M_PI_2 - momentum_.theta();
564 }
565 
566 // dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close to (0,0,0): see parametrization definition above for details). See also function dxy(myBeamSpot) below.
567 inline double TrackBase::dxy() const
568 {
569  return (-vx() * py() + vy() * px()) / pt();
570 }
571 
572 // dxy parameter in perigee convention (d0 = -dxy)
573 inline double TrackBase::d0() const
574 {
575  return -dxy();
576 }
577 
578 // dsz parameter (THIS IS NOT the SZ impact parameter to (0,0,0) if refPoint is far from (0,0,0): see parametrization definition above for details)
579 inline double TrackBase::dsz() const
580 {
581  return vz() * pt() / p() - (vx() * px() + vy() * py()) / pt() * pz() / p();
582 }
583 
584 // dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to (0,0,0). See also function dz(myBeamSpot) below.
585 inline double TrackBase::dz() const
586 {
587  return vz() - (vx() * px() + vy() * py()) / pt() * (pz() / pt());
588 }
589 
590 // momentum vector magnitude
591 inline double TrackBase::p() const
592 {
593  return momentum_.R();
594 }
595 
596 // track transverse momentum
597 inline double TrackBase::pt() const
598 {
599  return sqrt(momentum_.Perp2());
600 }
601 
602 // x coordinate of momentum vector
603 inline double TrackBase::px() const
604 {
605  return momentum_.x();
606 }
607 
608 // y coordinate of momentum vector
609 inline double TrackBase::py() const
610 {
611  return momentum_.y();
612 }
613 
614 // z coordinate of momentum vector
615 inline double TrackBase::pz() const
616 {
617  return momentum_.z();
618 }
619 
620 // azimuthal angle of momentum vector
621 inline double TrackBase::phi() const
622 {
623  return momentum_.Phi();
624 }
625 
626 // pseudorapidity of momentum vector
627 inline double TrackBase::eta() const
628 {
629  return momentum_.Eta();
630 }
631 
632 // x coordinate of the reference point on track
633 inline double TrackBase::vx() const
634 {
635  return vertex_.x();
636 }
637 
638 // y coordinate of the reference point on track
639 inline double TrackBase::vy() const
640 {
641  return vertex_.y();
642 }
643 
644 // z coordinate of the reference point on track
645 inline double TrackBase::vz() const
646 {
647  return vertex_.z();
648 }
649 
650 // track momentum vector
652 {
653  return momentum_;
654 }
655 
656 // Reference point on the track
658 {
659  return vertex_;
660 }
661 
662 // reference point on the track. This method is DEPRECATED, please use referencePoint() instead
663 inline const TrackBase::Point & TrackBase::vertex() const
664 {
665  return vertex_;
666 }
667 
668 // dxy parameter with respect to a user-given beamSpot
669 // (WARNING: this quantity can only be interpreted as a minimum transverse distance if beamSpot, if the beam spot is reasonably close to the refPoint, since linear approximations are involved).
670 // This is a good approximation for Tracker tracks.
671 inline double TrackBase::dxy(const Point &myBeamSpot) const
672 {
673  return (-(vx() - myBeamSpot.x()) * py() + (vy() - myBeamSpot.y()) * px()) / pt();
674 }
675 
676 // dxy parameter with respect to the beamSpot taking into account the beamspot slopes
677 // (WARNING: this quantity can only be interpreted as a minimum transverse distance if beamSpot, if the beam spot is reasonably close to the refPoint, since linear approximations are involved).
678 // This is a good approximation for Tracker tracks.
679 inline double TrackBase::dxy(const BeamSpot &theBeamSpot) const
680 {
681  return dxy(theBeamSpot.position(vz()));
682 }
683 
684 // dsz parameter with respect to a user-given beamSpot
685 // (WARNING: this quantity can only be interpreted as the distance in the S-Z plane to the beamSpot, if the beam spot is reasonably close to the refPoint, since linear approximations are involved).
686 // This is a good approximation for Tracker tracks.
687 inline double TrackBase::dsz(const Point &myBeamSpot) const
688 {
689  return (vz() - myBeamSpot.z()) * pt() / p() - ((vx() - myBeamSpot.x()) * px() + (vy() - myBeamSpot.y()) * py()) / pt() * pz() / p();
690 }
691 
692 // dz parameter with respect to a user-given beamSpot
693 // (WARNING: this quantity can only be interpreted as the track z0, if the beamSpot is reasonably close to the refPoint, since linear approximations are involved).
694 // This is a good approximation for Tracker tracks.
695 inline double TrackBase::dz(const Point &myBeamSpot) const
696 {
697  return (vz() - myBeamSpot.z()) - ((vx() - myBeamSpot.x()) * px() + (vy() - myBeamSpot.y()) * py()) / pt() * pz() / pt();
698 }
699 
700 // Track parameters with one-to-one correspondence to the covariance matrix
702 {
703  return TrackBase::ParameterVector(qoverp(), lambda(), phi(), dxy(), dsz());
704 }
705 
706 // return track covariance matrix
708 {
710  fill(m);
711  return m;
712 }
713 
714 // i-th parameter ( i = 0, ... 4 )
715 inline double TrackBase::parameter(int i) const
716 {
717  return parameters()[i];
718 }
719 
720 // (i,j)-th element of covariance matrix (i, j = 0, ... 4)
721 inline double TrackBase::covariance(int i, int j) const
722 {
723  return covariance_[covIndex(i, j)];
724 }
725 
726 // error on specified element
727 inline double TrackBase::error(int i) const
728 {
729  return sqrt(covariance_[covIndex(i, i)]);
730 }
731 
732 // error on signed transverse curvature
733 inline double TrackBase::qoverpError() const
734 {
735  return error(i_qoverp);
736 }
737 
738 // error on Pt (set to 1000 TeV if charge==0 for safety)
739 inline double TrackBase::ptError() const
740 {
741  return (charge() != 0) ? sqrt(
742  pt() * pt() * p() * p() / charge() / charge() * covariance(i_qoverp, i_qoverp)
743  + 2 * pt() * p() / charge() * pz() * covariance(i_qoverp, i_lambda)
744  + pz() * pz() * covariance(i_lambda, i_lambda)) : 1.e6;
745 }
746 
747 // error on theta
748 inline double TrackBase::thetaError() const
749 {
750  return error(i_lambda);
751 }
752 
753 // error on lambda
754 inline double TrackBase::lambdaError() const
755 {
756  return error(i_lambda);
757 }
758 
759 // error on eta
760 inline double TrackBase::etaError() const
761 {
762  return error(i_lambda) * p() / pt();
763 }
764 
765 // error on phi
766 inline double TrackBase::phiError() const
767 {
768  return error(i_phi);
769 }
770 
771 // error on dxy
772 inline double TrackBase::dxyError() const
773 {
774  return error(i_dxy);
775 }
776 
777 // error on d0
778 inline double TrackBase::d0Error() const
779 {
780  return error(i_dxy);
781 }
782 
783 // error on dsz
784 inline double TrackBase::dszError() const
785 {
786  return error(i_dsz);
787 }
788 
789 // error on dz
790 inline double TrackBase::dzError() const
791 {
792  return error(i_dsz) * p() / pt();
793 }
794 
795 // number of valid hits found
796 inline unsigned short TrackBase::numberOfValidHits() const
797 {
799 }
800 
801 // number of cases where track crossed a layer without getting a hit.
802 inline unsigned short TrackBase::numberOfLostHits() const
803 {
805 }
806 
807 // fraction of valid hits on the track
808 inline double TrackBase::validFraction() const
809 {
814 
815  if ((valid + lost + lostIn + lostOut) == 0) {
816  return -1;
817  }
818 
819  return valid / (double)(valid + lost + lostIn + lostOut);
820 }
821 
822 //Track algorithm
824 {
825  if (set) {
826  algorithm_ = a;
827  } else {
829  }
830 }
831 
832 inline int TrackBase::qualityMask() const
833 {
834  return quality_;
835 }
836 
837 inline void TrackBase::setQualityMask(int qualMask)
838 {
839  quality_ = qualMask;
840 }
841 
842 inline void TrackBase::setNLoops(signed char value)
843 {
844  nLoops_ = value;
845 }
846 
847 inline bool TrackBase::isLooper() const
848 {
849  return (nLoops_ > 0);
850 }
851 
852 inline signed char TrackBase::nLoops() const
853 {
854  return nLoops_;
855 }
856 
857 } // namespace reco
858 
859 #endif
860 
double qoverp() const
q / p
Definition: TrackBase.h:549
double p() const
momentum vector magnitude
Definition: TrackBase.h:591
float chi2_
chi-squared
Definition: TrackBase.h:339
void setQualityMask(int qualMask)
Definition: TrackBase.h:837
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:657
int i
Definition: DBlmapReader.cc:9
double d0Error() const
error on d0
Definition: TrackBase.h:778
static std::string qualityName(TrackQuality)
Definition: TrackBase.h:508
unsigned int index
index type
Definition: TrackBase.h:94
bool isLooper() const
Definition: TrackBase.h:847
static index covIndex(index i, index j)
covariance matrix index in array
Definition: TrackBase.h:396
uint8_t quality_
track quality
Definition: TrackBase.h:357
double validFraction() const
fraction of valid hits on the track
Definition: TrackBase.h:808
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:573
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:537
TrackBase()
default constructor
Definition: TrackBase.cc:52
TrackQuality
track quality
Definition: TrackBase.h:113
double theta() const
polar angle
Definition: TrackBase.h:555
double dxyError() const
error on dxy
Definition: TrackBase.h:772
char charge_
electric charge
Definition: TrackBase.h:351
int numberOfValidHits() const
Definition: HitPattern.h:737
Point vertex_
innermost (reference) point on track
Definition: TrackBase.h:342
double etaError() const
error on eta
Definition: TrackBase.h:760
#define M_PI_2
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:621
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:802
ErrorD< N >::type type
Definition: Error.h:39
math::Vector< dimension >::type ParameterVector
parameter vector
Definition: TrackBase.h:73
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:603
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:651
double dsz() const
dsz parameter (THIS IS NOT the SZ impact parameter to (0,0,0) if refPoint is far from (0...
Definition: TrackBase.h:579
signed char nLoops_
number of loops made during the building of the trajectory of a looper particle
Definition: TrackBase.h:360
TrackAlgorithm
track algorithm
Definition: TrackBase.h:97
int numberOfLostTrackerHits(HitCategory category) const
Definition: HitPattern.h:812
TrackAlgorithm algo() const
Definition: TrackBase.h:403
void setNLoops(signed char value)
Definition: TrackBase.h:842
bool appendHits(const C &c)
append hit patterns from vector of hit references
Definition: TrackBase.h:391
const Point & vertex() const
reference point on the track. This method is DEPRECATED, please use referencePoint() instead ...
Definition: TrackBase.h:663
double dszError() const
error on dsz
Definition: TrackBase.h:784
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:627
void setQuality(const TrackQuality, bool set=true)
Definition: TrackBase.h:493
static const std::string qualityNames[]
Definition: TrackBase.h:125
fixed size vector
Definition: Vector.h:31
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:525
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:531
CovarianceMatrix covariance() const
return track covariance matrix
Definition: TrackBase.h:707
T sqrt(T t)
Definition: SSEVec.h:48
double pt() const
track transverse momentum
Definition: TrackBase.h:597
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:739
double phiError() const
error on phi
Definition: TrackBase.h:766
int qualityMask() const
Definition: TrackBase.h:832
int j
Definition: DBlmapReader.cc:9
bool appendHitPattern(const TrackingRecHit &hit)
append a single hit to the HitPattern
Definition: TrackBase.h:374
double lambda() const
Lambda angle.
Definition: TrackBase.h:561
const std::complex< double > I
Definition: I.h:8
double error(int i) const
error on specified element
Definition: TrackBase.h:727
bool appendHits(const I &begin, const I &end)
Definition: HitPattern.h:438
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:796
void resetHitPattern()
Sets HitPattern as empty.
Definition: TrackBase.h:379
#define end
Definition: vmac.h:37
math::XYZPoint Point
point in the space
Definition: TrackBase.h:82
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:615
double parameter(int i) const
i-th parameter ( i = 0, ... 4 )
Definition: TrackBase.h:715
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:733
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:585
double dzError() const
error on dz
Definition: TrackBase.h:790
double vz() const
z coordinate of the reference point on track
Definition: TrackBase.h:645
Definition: DetId.h:18
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:102
virtual ~TrackBase()
virtual destructor
Definition: TrackBase.cc:91
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:364
signed char nLoops() const
Definition: TrackBase.h:852
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::string algoName() const
Definition: TrackBase.h:408
This class analyses the reconstruction quality for a given track.
Definition: TrackQuality.h:28
double b
Definition: hdecay.h:120
float ndof_
number of degrees of freedom
Definition: TrackBase.h:348
static const std::string algoNames[]
Definition: TrackBase.h:110
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:479
int numberOfLostHits(HitCategory category) const
Definition: HitPattern.h:807
int numberOfValidTrackerHits() const
Definition: HitPattern.h:742
ParameterVector parameters() const
Track parameters with one-to-one correspondence to the covariance matrix.
Definition: TrackBase.h:701
double lambdaError() const
error on lambda
Definition: TrackBase.h:754
double vy() const
y coordinate of the reference point on track
Definition: TrackBase.h:639
float covariance_[covarianceSize]
perigee 5x5 covariance matrix
Definition: TrackBase.h:336
#define begin
Definition: vmac.h:30
HitPattern hitPattern_
hit pattern
Definition: TrackBase.h:333
void setAlgorithm(const TrackAlgorithm a, bool set=true)
Track algorithm.
Definition: TrackBase.h:823
double a
Definition: hdecay.h:121
CovarianceMatrix & fill(CovarianceMatrix &v) const
fill SMatrix
Definition: TrackBase.cc:97
static TrackAlgorithm algoByName(const std::string &name)
Definition: TrackBase.cc:114
bool appendHit(const TrackingRecHit &hit)
Definition: HitPattern.cc:166
Vector momentum_
momentum vector at innermost point
Definition: TrackBase.h:345
int charge() const
track electric charge
Definition: TrackBase.h:543
const Point & position() const
position
Definition: BeamSpot.h:62
uint8_t algorithm_
track algorithm
Definition: TrackBase.h:354
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:567
math::XYZVector Vector
spatial vector
Definition: TrackBase.h:79
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:609
double vx() const
x coordinate of the reference point on track
Definition: TrackBase.h:633
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Definition: TrackBase.h:76
double thetaError() const
error on theta
Definition: TrackBase.h:748