CMS 3D CMS Logo

SeedFromProtoTrack.cc
Go to the documentation of this file.
2 
5 
9 
12 
15 
18 
20 
22  : theValid(true) {
23  for (unsigned int i = 0, n = hits.size(); i < n; ++i) {
24  const TrackingRecHit* trh = hits[i]->hit();
25  theHits.push_back(trh->clone());
26  }
27  init(proto, es);
28 }
29 
31  const TrackingRecHit* hit = nullptr;
32  for (unsigned int iHit = 0, nHits = proto.recHitsSize(); iHit < nHits; ++iHit) {
33  TrackingRecHitRef refHit = proto.recHit(iHit);
34  hit = &(*refHit);
35  theHits.push_back(hit->clone());
36  }
37  init(proto, es);
38 }
39 
40 void SeedFromProtoTrack::init(const reco::Track& proto, const edm::EventSetup& es) {
42  es.get<TrackerDigiGeometryRecord>().get(tracker);
43 
44  edm::ESHandle<Propagator> propagatorHandle;
45  es.get<TrackingComponentsRecord>().get("PropagatorWithMaterial", propagatorHandle);
46  const Propagator* propagator = &(*propagatorHandle);
47 
49  es.get<IdealMagneticFieldRecord>().get(field); //fixme
50 
51  const reco::TrackBase::Point& vtx = proto.referencePoint();
52  const reco::TrackBase::Vector& mom = proto.momentum();
54  GlobalPoint(vtx.x(), vtx.y(), vtx.z()), GlobalVector(mom.x(), mom.y(), mom.z()), proto.charge(), &(*field));
55 
57 
58  FreeTrajectoryState fts(gtp, err);
59 
60  const TrackingRecHit& lastHit = theHits.back();
61 
62  TrajectoryStateOnSurface outerState =
63  propagator->propagate(fts, tracker->idToDet(lastHit.geographicalId())->surface());
64 
65  if (!outerState.isValid()) {
66  const Surface& surface = tracker->idToDet(lastHit.geographicalId())->surface();
67  edm::LogError("SeedFromProtoTrack") << " was trying to create a seed from:\n"
68  << fts << "\n propagating to: " << std::hex << lastHit.geographicalId().rawId()
69  << std::dec << ' ' << surface.position();
70  theValid = false;
71  return;
72  }
73  theValid = true;
74 
76 }
77 
80 }
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:632
reference back()
Definition: OwnVector.h:431
void init(const reco::Track &proto, const edm::EventSetup &es)
PTrajectoryStateOnDet thePTraj
size_t recHitsSize() const
Get number of RecHits. (Warning, this includes invalid hits, which are not physical hits)...
Definition: Track.h:97
PTrajectoryStateOnDet const & trajectoryState() const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:629
SeedFromProtoTrack(const reco::Track &proto, const edm::EventSetup &)
TrajectorySeed trajectorySeed() const
void push_back(D *&d)
Definition: OwnVector.h:326
RecHitContainer theHits
CovarianceMatrix covariance() const
return track covariance matrix
Definition: TrackBase.h:677
virtual TrackingRecHit * clone() const =0
math::XYZPoint Point
point in the space
Definition: TrackBase.h:80
const RecHitContainer & hits() const
PropagationDirection direction() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
TrackingRecHitRef recHit(size_t i) const
Get i-th hit on the track.
Definition: Track.h:94
T get() const
Definition: EventSetup.h:73
unsigned int size() const
Definition: SeedingHitSet.h:41
const TrackerGeomDet * idToDet(DetId) const override
int charge() const
track electric charge
Definition: TrackBase.h:575
DetId geographicalId() const
const PositionType & position() const
math::XYZVector Vector
spatial vector
Definition: TrackBase.h:77
Global3DVector GlobalVector
Definition: GlobalVector.h:10