CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/TrackingTools/GsfTracking/interface/GsfTrajectorySmoother.h

Go to the documentation of this file.
00001 #ifndef GsfTrajectorySmoother_H_
00002 #define GsfTrajectorySmoother_H_
00003 
00004 #include "TrackingTools/PatternTools/interface/TrajectorySmoother.h"
00005 #include "TrackingTools/PatternTools/interface/TrajectoryStateUpdator.h"
00006 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00007 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00008 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h"
00009 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
00010 #include "TrackingTools/GsfTracking/interface/GsfPropagatorWithMaterial.h"
00011 #include "TrackingTools/GsfTools/interface/GsfPropagatorAdapter.h"
00012 #include "TrackingTools/GsfTracking/interface/FullConvolutionWithMaterial.h"
00013 #include "TrackingTools/DetLayers/interface/DetLayerGeometry.h"
00014 
00015 class MultiTrajectoryStateMerger;
00016 
00021 class GsfTrajectorySmoother GCC11_FINAL : public TrajectorySmoother {
00022 
00023 private:
00024 
00025   typedef TrajectoryStateOnSurface TSOS;
00026   typedef TrajectoryMeasurement TM;
00027 
00028 public:
00029 
00033   GsfTrajectorySmoother(const GsfPropagatorWithMaterial& aPropagator,
00034                         const TrajectoryStateUpdator& aUpdator,
00035                         const MeasurementEstimator& aEstimator,
00036                         const MultiTrajectoryStateMerger& merger,
00037                         float errorRescaling,
00038                         const bool materialBeforeUpdate = true,
00039                         const DetLayerGeometry* detLayerGeometry=0);
00040 
00041   virtual ~GsfTrajectorySmoother();
00042 
00043   virtual Trajectory trajectory(const Trajectory& aTraj) const;
00044 
00048   const Propagator* propagator() const {
00049     if ( thePropagator) return thePropagator;
00050     else  return theGeomPropagator;
00051   }
00052   const TrajectoryStateUpdator* updator() const {return theUpdator;}
00053   const MeasurementEstimator* estimator() const {return theEstimator;}
00054 
00055   virtual GsfTrajectorySmoother* clone() const
00056   {
00057     return new GsfTrajectorySmoother(*thePropagator,*theUpdator,*theEstimator,
00058                                      *theMerger,theErrorRescaling,theMatBeforeUpdate,theGeometry);
00059   }
00060 
00061 private:
00062   GsfPropagatorWithMaterial* thePropagator;
00063   const GsfPropagatorAdapter* theGeomPropagator;
00064   const FullConvolutionWithMaterial* theConvolutor;
00065   const TrajectoryStateUpdator* theUpdator;
00066   const MeasurementEstimator* theEstimator;
00067   const MultiTrajectoryStateMerger* theMerger;
00068   
00069   bool theTiming;
00070   bool theMatBeforeUpdate;
00071   float theErrorRescaling;
00072 
00073   const DetLayerGeometry dummyGeometry;
00074   const DetLayerGeometry* theGeometry;
00075 
00076 };
00077 
00078 #endif //TR_GsfTrajectorySmoother_H_