Go to the documentation of this file.00001 #ifndef _TrajectoryFitter_H_
00002 #define _TrajectoryFitter_H_
00003
00004 #include "TrackingTools/PatternTools/interface/Trajectory.h"
00005 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00006
00007 class TrajectorySeed;
00008 class TrajectoryStateOnSurface;
00009
00014 #include "TrackingTools/TrackFitters/interface/TrajectoryFitterRecord.h"
00015
00016 class TrajectoryFitter {
00017 public:
00018 enum fitType {standard=0, looper=1};
00019
00020 typedef TrajectoryFitterRecord Record;
00021 typedef Trajectory::RecHitContainer RecHitContainer;
00022
00023 virtual ~TrajectoryFitter() {}
00024
00025 virtual std::vector<Trajectory> fit(const Trajectory&) const = 0;
00026 virtual std::vector<Trajectory> fit(const Trajectory& traj, fitType type) const {return fit(traj);}
00027
00028
00029 virtual std::vector<Trajectory> fit(const TrajectorySeed&,
00030 const RecHitContainer&) const = 0;
00031 virtual std::vector<Trajectory> fit(const TrajectorySeed& seed,
00032 const RecHitContainer& hits, fitType type) const {return fit(seed,hits);}
00033
00034
00035 virtual std::vector<Trajectory> fit(const TrajectorySeed&,
00036 const RecHitContainer&,
00037 const TrajectoryStateOnSurface&) const = 0;
00038 virtual std::vector<Trajectory> fit(const TrajectorySeed& seed,
00039 const RecHitContainer& hits,
00040 const TrajectoryStateOnSurface& tsos,
00041 fitType type) const {return fit(seed,hits,tsos);}
00042
00043
00044 virtual TrajectoryFitter* clone() const = 0;
00045 };
00046
00047 #endif