CMS 3D CMS Logo

GsfConstraintAtVertex.cc
Go to the documentation of this file.
2 
4 
12 // #include "TrackingTools/GsfTools/interface/GaussianSumUtilities1D.h"
13 // #include "TrackingTools/GsfTools/interface/MultiGaussianState1D.h"
14 // #include "TrackingTools/GsfTools/interface/MultiGaussianStateTransform.h"
19 
21  edm::ESHandle<TrackerGeometry> geometryHandle;
22  setup.get<TrackerDigiGeometryRecord>().get(geometryHandle);
23  geometry_ = geometryHandle.product();
24 
25  edm::ESHandle<MagneticField> magFieldHandle;
26  setup.get<IdealMagneticFieldRecord>().get(magFieldHandle);
27  magField_ = magFieldHandle.product();
28 
29  // edm::ESHandle<Propagator> propagatorHandle;
30  // setup.get<TrackingComponentsRecord>().get(propagatorName_,propagatorHandle);
31  // propagator_ = propagatorHandle.product();
34 }
35 
37  delete tipExtrapolator_;
38  delete gsfPropagator_;
39 }
40 
42  const reco::BeamSpot& beamSpot) const {
43  //
44  // Beamspot (global co-ordinates)
45  //
46  GlobalPoint bsPosGlobal(beamSpot.x0(), beamSpot.y0(), beamSpot.z0());
47  GlobalError bsCovGlobal(beamSpot.rotatedCovariance3D());
48  //
49  return constrainAtPoint(track, bsPosGlobal, bsCovGlobal);
50 }
51 
53  const reco::Vertex& vertex) const {
54  //
55  // Beamspot (global co-ordinates)
56  //
57  GlobalPoint vtxPosGlobal(vertex.position().x(), vertex.position().y(), vertex.position().z());
58  GlobalError vtxCovGlobal(vertex.covariance());
59  //
60  return constrainAtPoint(track, vtxPosGlobal, vtxCovGlobal);
61 }
62 
64  const GlobalPoint& globalPosition,
65  const GlobalError& globalError) const {
66  //
67  // Track on TIP plane
68  //
70  if (!innerState.isValid())
71  return TrajectoryStateOnSurface();
72  TrajectoryStateOnSurface tipState = tipExtrapolator_->extrapolate(innerState, globalPosition);
73  if (!tipState.isValid())
74  return TrajectoryStateOnSurface();
75  //
76  // RecHit from beam spot
77  //
78  LocalError bsCovLocal = ErrorFrameTransformer().transform(globalError, tipState.surface());
79  auto bsHit =
80  TRecHit2DPosConstraint::build(tipState.surface().toLocal(globalPosition), bsCovLocal, &tipState.surface());
81  //
82  // update with constraint
83  //
85  if (!updatedState.isValid()) {
86  edm::LogWarning("GsfConstraintAtVertex") << " GSF update with vertex constraint failed";
87  return TrajectoryStateOnSurface();
88  }
89 
90  return updatedState;
91 }
TrajectoryStateOnSurface constrainAtBeamSpot(const reco::GsfTrack &, const reco::BeamSpot &) const
(multi)TSOS after including the beamspot
double z0() const
z coordinate
Definition: BeamSpot.h:65
static GlobalError transform(const LocalError &le, const Surface &surf)
TransverseImpactPointExtrapolator * tipExtrapolator_
static RecHitPointer build(const LocalPoint &pos, const LocalError &err, const Surface *surface)
GsfConstraintAtVertex(const edm::EventSetup &)
double covariance(int i, int j) const
(i, j)-th element of error matrix, i, j = 0, ... 2
Definition: Vertex.h:134
GsfPropagatorAdapter * gsfPropagator_
const Point & position() const
position
Definition: Vertex.h:113
TrajectoryStateOnSurface constrainAtPoint(const reco::GsfTrack &, const GlobalPoint &globalPosition, const GlobalError &globalError) const
(multi)TSOS after including a point with covariance matrix
const SurfaceType & surface() const
LocalPoint toLocal(const GlobalPoint &gp) const
MultiTrajectoryStateTransform multiStateTransformer_
const MagneticField * magField_
const TrackerGeometry * geometry_
TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState &fts, const GlobalPoint &vtx) const
extrapolation with default (=geometrical) propagator
TrajectoryStateOnSurface innerStateOnSurface(const reco::GsfTrack &tk) const
GsfMultiStateUpdator gsfUpdator_
TrajectoryStateOnSurface constrainAtVertex(const reco::GsfTrack &, const reco::Vertex &) const
(multi)TSOS after include a vertex
T get() const
Definition: EventSetup.h:73
double y0() const
y coordinate
Definition: BeamSpot.h:63
Covariance3DMatrix rotatedCovariance3D() const
Definition: BeamSpot.cc:73
T const * product() const
Definition: ESHandle.h:86
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
double x0() const
x coordinate
Definition: BeamSpot.h:61