CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/TrackingTools/GsfTracking/interface/GsfTrajectoryFitter.h

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_