00001 00003 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h" 00004 #include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h" 00005 00006 #include "FWCore/Framework/interface/EventSetup.h" 00007 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00008 #include "MagneticField/Engine/interface/MagneticField.h" 00009 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateTransform.h" 00010 #include "TrackingTools/GsfTracking/interface/GsfMultiStateUpdator.h" 00011 #include "TrackingTools/GsfTracking/interface/GsfChi2MeasurementEstimator.h" 00012 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00013 #include "DataFormats/VertexReco/interface/Vertex.h" 00014 #include "RecoTracker/TransientTrackingRecHit/interface/TRecHit2DPosConstraint.h" 00015 00016 class TrackerGeometry; 00017 class MagneticField; 00018 class GsfPropagatorAdapter; 00019 class TransverseImpactPointExtrapolator; 00020 00021 class GsfConstraintAtVertex { 00022 public: 00023 explicit GsfConstraintAtVertex (const edm::EventSetup&); 00024 ~GsfConstraintAtVertex(); 00025 00027 TrajectoryStateOnSurface constrainAtBeamSpot (const reco::GsfTrack&, 00028 const reco::BeamSpot&) const; 00030 TrajectoryStateOnSurface constrainAtVertex (const reco::GsfTrack&, 00031 const reco::Vertex&) const; 00033 TrajectoryStateOnSurface constrainAtPoint (const reco::GsfTrack&, 00034 const GlobalPoint& globalPosition, 00035 const GlobalError& globalError) const; 00036 00037 private: 00038 00039 MultiTrajectoryStateTransform multiStateTransformer_; 00040 GsfMultiStateUpdator gsfUpdator_; 00041 const TrackerGeometry* geometry_; 00042 const MagneticField* magField_; 00043 GsfPropagatorAdapter* gsfPropagator_; 00044 TransverseImpactPointExtrapolator* tipExtrapolator_; 00045 00046 }; 00047