CMS 3D CMS Logo

PFTrack.cc
Go to the documentation of this file.
2 #include "Math/GenVector/PositionVector3D.h"
6 
7 using namespace reco;
8 using namespace std;
9 
10 const unsigned PFTrack::nMaxTrackingLayers_ = 17;
11 
12 PFTrack::PFTrack() : charge_(0.), indexInnermost_(0), indexOutermost_(0) {
13  // prepare vector of trajectory points for propagated positions
15 }
16 
17 PFTrack::PFTrack(double charge) : charge_(charge), indexInnermost_(0), indexOutermost_(0) {
18  // prepare vector of trajectory points for propagated positions
20 }
21 
23  : charge_(other.charge_),
24  trajectoryPoints_(other.trajectoryPoints_),
25  indexInnermost_(other.indexInnermost_),
26  indexOutermost_(other.indexOutermost_) {}
27 
28 void PFTrack::addPoint(const PFTrajectoryPoint& trajPt) {
29  if (trajPt.isTrackerLayer()) {
30  if (!indexOutermost_) { // first time a measurement is added
32  PFTrajectoryPoint dummyPt;
33  for (unsigned iPt = trajectoryPoints_.size(); iPt < PFTrajectoryPoint::BeamPipeOrEndVertex + 1; iPt++)
34  trajectoryPoints_.push_back(dummyPt);
36  edm::LogWarning("PFTrack") << "trajectoryPoints_.size() is too large = " << trajectoryPoints_.size();
37  }
39  } else
41  }
42  // Use push_back instead of insert in order to gain time
43  trajectoryPoints_.push_back(trajPt);
44 }
45 
46 const reco::PFTrajectoryPoint& PFTrack::extrapolatedPoint(unsigned layerid) const {
47  const unsigned offset_layerid = nTrajectoryMeasurements() + layerid;
48  if (layerid >= reco::PFTrajectoryPoint::NLayers || offset_layerid >= trajectoryPoints_.size()) {
49  throw cms::Exception("SizeError") << "PFRecTrack::extrapolatedPoint: cannot access " << layerid
50  << " #traj meas = " << nTrajectoryMeasurements()
51  << " #traj points = " << trajectoryPoints_.size() << endl
52  << (*this);
53  }
54  if (layerid < indexInnermost_)
55  return trajectoryPoints_[layerid];
56  else
57  return trajectoryPoints_[offset_layerid];
58 }
59 
60 ostream& reco::operator<<(ostream& out, const PFTrack& track) {
61  if (!out)
62  return out;
63 
64  const reco::PFTrajectoryPoint& closestApproach = track.trajectoryPoint(reco::PFTrajectoryPoint::ClosestApproach);
65 
66  out << "Track charge = " << track.charge() << ", Pt = " << closestApproach.momentum().Pt()
67  << ", P = " << closestApproach.momentum().P() << endl
68  << "\tR0 = " << closestApproach.position().Rho() << " Z0 = " << closestApproach.position().Z() << endl
69  << "\tnumber of tracker measurements = " << track.nTrajectoryMeasurements() << endl;
70  for (unsigned i = 0; i < track.trajectoryPoints().size(); i++)
71  out << track.trajectoryPoints()[i] << endl;
72 
73  return out;
74 }
reco::PFTrack::extrapolatedPoint
const reco::PFTrajectoryPoint & extrapolatedPoint(unsigned layerid) const
Definition: PFTrack.cc:46
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
MessageLogger.h
reco::PFTrajectoryPoint::momentum
const math::XYZTLorentzVector & momentum() const
4-momenta quadrivector
Definition: PFTrajectoryPoint.h:109
reco::PFTrack::addPoint
void addPoint(const reco::PFTrajectoryPoint &trajPt)
Definition: PFTrack.cc:28
reco::PFTrack
Base class for particle flow input reconstructed tracks and simulated particles.
Definition: PFTrack.h:63
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
reco::PFTrajectoryPoint::NLayers
Definition: PFTrajectoryPoint.h:56
reco::PFTrajectoryPoint::BeamPipeOrEndVertex
Definition: PFTrajectoryPoint.h:37
trackingPlots.other
other
Definition: trackingPlots.py:1460
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
reco::PFTrack::PFTrack
PFTrack()
Definition: PFTrack.cc:12
reco::PFTrajectoryPoint::position
const math::XYZPoint & position() const
cartesian position (x, y, z)
Definition: PFTrajectoryPoint.h:100
reco::operator<<
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:66
reco::PFTrack::nTrajectoryMeasurements
unsigned int nTrajectoryMeasurements() const
Definition: PFTrack.h:87
std
Definition: JetResolutionObject.h:76
PFTrack.h
reco::PFTrajectoryPoint
A PFTrack holds several trajectory points, which basically contain the position and momentum of a tra...
Definition: PFTrajectoryPoint.h:26
reco::PFTrack::trajectoryPoints_
std::vector< reco::PFTrajectoryPoint > trajectoryPoints_
vector of trajectory points
Definition: PFTrack.h:119
Exception
Definition: hltDiff.cc:245
reco::PFTrack::indexOutermost_
unsigned int indexOutermost_
index outermost tracker measurement
Definition: PFTrack.h:125
Point3D.h
Exception.h
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
reco::PFTrajectoryPoint::ClosestApproach
Point of closest approach from beam axis (initial point in the case of PFSimParticle)
Definition: PFTrajectoryPoint.h:36
reco::PFTrack::indexInnermost_
unsigned int indexInnermost_
index innermost tracker measurement
Definition: PFTrack.h:122
reco::PFTrack::nMaxTrackingLayers_
static const unsigned int nMaxTrackingLayers_
maximal number of tracking layers
Definition: PFTrack.h:113
reco::PFTrajectoryPoint::isTrackerLayer
bool isTrackerLayer() const
is this point corresponding to an intersection with a tracker layer ?
Definition: PFTrajectoryPoint.h:92