00001 #ifndef GsfTrajectoryFitter_H_ 00002 #define GsfTrajectoryFitter_H_ 00003 00004 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00005 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00006 #include "TrackingTools/PatternTools/interface/TrajectoryStateUpdator.h" 00007 #include "TrackingTools/PatternTools/interface/Trajectory.h" 00008 #include "TrackingTools/PatternTools/interface/TrajectoryFitter.h" 00009 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h" 00010 #include "TrackingTools/PatternTools/interface/MeasurementEstimator.h" 00011 00012 #include <vector> 00013 00014 class MultiTrajectoryStateMerger; 00015 00019 class GsfTrajectoryFitter : public TrajectoryFitter { 00020 00021 private: 00022 typedef TrajectoryStateOnSurface TSOS; 00023 typedef TrajectoryMeasurement TM; 00024 00025 public: 00026 00030 GsfTrajectoryFitter(const Propagator& aPropagator, 00031 const TrajectoryStateUpdator& aUpdator, 00032 const MeasurementEstimator& aEstimator, 00033 const MultiTrajectoryStateMerger& aMerger); 00034 00035 virtual ~GsfTrajectoryFitter(); 00036 00037 virtual std::vector<Trajectory> fit(const Trajectory& aTraj) const; 00038 virtual std::vector<Trajectory> fit(const TrajectorySeed& aSeed, 00039 const RecHitContainer& hits) const; 00040 virtual std::vector<Trajectory> fit(const TrajectorySeed& aSeed, 00041 const RecHitContainer& hits, 00042 const TSOS& firstPredTsos) const; 00043 00044 const Propagator* propagator() const {return thePropagator;} 00045 const TrajectoryStateUpdator* updator() const {return theUpdator;} 00046 const MeasurementEstimator* estimator() const {return theEstimator;} 00047 const MultiTrajectoryStateMerger* merger() const {return theMerger;} 00048 00049 virtual GsfTrajectoryFitter* clone() const 00050 { 00051 return new GsfTrajectoryFitter(*thePropagator,*theUpdator,*theEstimator,*theMerger); 00052 } 00053 00054 private: 00055 const Propagator* thePropagator; 00056 const TrajectoryStateUpdator* theUpdator; 00057 const MeasurementEstimator* theEstimator; 00058 const MultiTrajectoryStateMerger* theMerger; 00059 00060 bool theTiming; 00061 }; 00062 00063 #endif //TR_GsfTrajectoryFitter_H_