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_