00001 #ifndef RecoMuon_StandAloneTrackFinder_StandAloneMuonSmoother_H 00002 #define RecoMuon_StandAloneTrackFinder_StandAloneMuonSmoother_H 00003 00015 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00016 00017 class MuonServiceProxy; 00018 class TrajectoryStateUpdator; 00019 class MeasurementEstimator; 00020 class Propagator; 00021 class TrajectorySmoother; 00022 00023 #include <string> 00024 00025 namespace edm {class ParameterSet; class Event;} 00026 00027 //class StandAloneMuonSmoother: public KFTrajectorySmoother { 00028 class StandAloneMuonSmoother{ 00029 00030 typedef std::pair<bool,Trajectory> SmoothingResult; 00031 00032 public: 00034 StandAloneMuonSmoother(const edm::ParameterSet& par, const MuonServiceProxy* service); 00035 00037 virtual ~StandAloneMuonSmoother(); 00038 00039 // Operations 00040 00042 SmoothingResult smooth(const Trajectory&); 00043 00045 TrajectoryStateUpdator *updator() const {return theUpdator;} 00046 00048 const Propagator *propagator() const; 00049 00051 MeasurementEstimator *estimator() const {return theEstimator;} 00052 00054 TrajectorySmoother *smoother() const {return theSmoother;} 00055 00056 protected: 00057 00058 private: 00059 void renewTheSmoother(); 00060 00061 std::string thePropagatorName; 00062 00064 double theMaxChi2; 00065 00068 double theNSigma; 00069 00074 MeasurementEstimator *theEstimator; 00075 00076 double theErrorRescaling; 00077 00078 TrajectoryStateUpdator *theUpdator; 00079 00080 const MuonServiceProxy* theService; 00081 00082 TrajectorySmoother *theSmoother; 00083 00084 }; 00085 #endif 00086