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/PatternTools/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 : 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 std::vector<Trajectory> trajectories(const Trajectory& aTraj) const;
00047 const Propagator* propagator() const {
00048 if ( thePropagator) return thePropagator;
00049 else return theGeomPropagator;
00050 }
00051 const TrajectoryStateUpdator* updator() const {return theUpdator;}
00052 const MeasurementEstimator* estimator() const {return theEstimator;}
00053
00054 virtual GsfTrajectorySmoother* clone() const
00055 {
00056 return new GsfTrajectorySmoother(*thePropagator,*theUpdator,*theEstimator,
00057 *theMerger,theErrorRescaling,theMatBeforeUpdate,theGeometry);
00058 }
00059
00060 private:
00061 GsfPropagatorWithMaterial* thePropagator;
00062 const GsfPropagatorAdapter* theGeomPropagator;
00063 const FullConvolutionWithMaterial* theConvolutor;
00064 const TrajectoryStateUpdator* theUpdator;
00065 const MeasurementEstimator* theEstimator;
00066 const MultiTrajectoryStateMerger* theMerger;
00067
00068 bool theTiming;
00069 bool theMatBeforeUpdate;
00070 float theErrorRescaling;
00071
00072 const DetLayerGeometry dummyGeometry;
00073 const DetLayerGeometry* theGeometry;
00074
00075 };
00076
00077 #endif //TR_GsfTrajectorySmoother_H_