Go to the documentation of this file.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/TrackFitters/interface/TrajectoryFitter.h"
00009 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
00010 #include "TrackingTools/PatternTools/interface/MeasurementEstimator.h"
00011 #include "TrackingTools/DetLayers/interface/DetLayerGeometry.h"
00012
00013 #include <vector>
00014
00015 class MultiTrajectoryStateMerger;
00016
00020 class GsfTrajectoryFitter : public TrajectoryFitter {
00021
00022 private:
00023 typedef TrajectoryStateOnSurface TSOS;
00024 typedef TrajectoryMeasurement TM;
00025
00026 public:
00027
00031 GsfTrajectoryFitter(const Propagator& aPropagator,
00032 const TrajectoryStateUpdator& aUpdator,
00033 const MeasurementEstimator& aEstimator,
00034 const MultiTrajectoryStateMerger& aMerger,
00035 const DetLayerGeometry* detLayerGeometry=0);
00036
00037 virtual ~GsfTrajectoryFitter();
00038
00039 virtual std::vector<Trajectory> fit(const Trajectory& aTraj) const;
00040 virtual std::vector<Trajectory> fit(const TrajectorySeed& aSeed,
00041 const RecHitContainer& hits) const;
00042 virtual std::vector<Trajectory> fit(const TrajectorySeed& aSeed,
00043 const RecHitContainer& hits,
00044 const TSOS& firstPredTsos) const;
00045
00046 const Propagator* propagator() const {return thePropagator;}
00047 const TrajectoryStateUpdator* updator() const {return theUpdator;}
00048 const MeasurementEstimator* estimator() const {return theEstimator;}
00049 const MultiTrajectoryStateMerger* merger() const {return theMerger;}
00050
00051 virtual GsfTrajectoryFitter* clone() const
00052 {
00053 return new GsfTrajectoryFitter(*thePropagator,*theUpdator,*theEstimator,*theMerger,theGeometry);
00054 }
00055
00056 private:
00057 const Propagator* thePropagator;
00058 const TrajectoryStateUpdator* theUpdator;
00059 const MeasurementEstimator* theEstimator;
00060 const MultiTrajectoryStateMerger* theMerger;
00061 const DetLayerGeometry dummyGeometry;
00062 const DetLayerGeometry* theGeometry;
00063
00064 bool theTiming;
00065 };
00066
00067 #endif //TR_GsfTrajectoryFitter_H_