00001 #ifndef RecoMuon_TrackingTools_MuonUpdatorAtVertex_H
00002 #define RecoMuon_TrackingTools_MuonUpdatorAtVertex_H
00003
00029 class TrajectoryStateOnSurface;
00030 class FreeTrajectoryState;
00031 class SteppingHelixPropagator;
00032 class MuonServiceProxy;
00033
00034 #include "RecoVertex/KalmanVertexFit/interface/SingleTrackVertexConstraint.h"
00035 #include "TrackingTools/TransientTrack/interface/TransientTrackFromFTSFactory.h"
00036 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00037
00038 #include <string>
00039
00040 namespace edm {class ParameterSet; class Event;}
00041
00042 class MuonUpdatorAtVertex {
00043 public:
00045 MuonUpdatorAtVertex(const edm::ParameterSet& pset, const MuonServiceProxy *service);
00046
00048 virtual ~MuonUpdatorAtVertex();
00049
00050
00051
00053 std::pair<bool,FreeTrajectoryState>
00054 propagate(const TrajectoryStateOnSurface &tsos,
00055 const GlobalPoint &vtxPosition);
00056
00058 std::pair<bool,FreeTrajectoryState>
00059 propagate(const TrajectoryStateOnSurface &tsos, const reco::BeamSpot & beamSpot);
00060
00062 std::pair<bool,FreeTrajectoryState>
00063 update(const reco::TransientTrack &track, const reco::BeamSpot & beamSpot);
00064
00066 std::pair<bool,FreeTrajectoryState>
00067 update(const FreeTrajectoryState& ftsAtVtx, const reco::BeamSpot & beamSpot);
00068
00070 std::pair<bool,FreeTrajectoryState>
00071 propagateWithUpdate(const TrajectoryStateOnSurface &tsos,
00072 const GlobalPoint &vtxPosition,
00073 const reco::BeamSpot & beamSpot);
00074
00076 std::pair<bool,FreeTrajectoryState>
00077 propagateWithUpdate(const TrajectoryStateOnSurface &tsos,
00078 const reco::BeamSpot & beamSpot);
00079
00081 std::pair<bool,FreeTrajectoryState>
00082 propagateToNominalLine(const TrajectoryStateOnSurface &tsos);
00083
00085 std::pair<bool,FreeTrajectoryState>
00086 propagate(const TrajectoryStateOnSurface &tsos) __attribute__((deprecated));
00087
00088
00089
00090 protected:
00091
00092 private:
00093
00094 const MuonServiceProxy *theService;
00095
00096
00097
00098
00099
00100 SteppingHelixPropagator *thePropagator;
00101 std::string thePropagatorName;
00102
00103
00104
00105 bool theFirstTime;
00106
00107
00108
00109 void setPropagator();
00110
00111 TransientTrackFromFTSFactory theTransientTrackFactory;
00112 SingleTrackVertexConstraint theConstrictor;
00113 double theChi2Cut;
00114
00115 GlobalError thePositionErrors;
00116 GlobalPoint thePosition;
00117 };
00118 #endif
00119