CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_4/src/TrackingTools/TrackFitters/interface/TrajectoryFitter.h

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