00001 #ifndef MultiStatePropagation_h_ 00002 #define MultiStatePropagation_h_ 00003 00004 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00005 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateAssembler.h" 00006 #include "TrackingTools/GeomPropagators/interface/PropagationDirectionFromPath.h" 00007 00014 template <class T> 00015 class MultiStatePropagation { 00016 00017 public: 00020 MultiStatePropagation(const Propagator& aPropagator) : 00021 thePropagator(aPropagator) {} 00022 00023 ~MultiStatePropagation() {}; 00024 00027 std::pair<TrajectoryStateOnSurface,double> 00028 propagateWithPath (const TrajectoryStateOnSurface& tsos, 00029 const T& surface) const; 00030 00031 private: 00033 TrajectoryStateOnSurface setWeight (const TrajectoryStateOnSurface, 00034 const double) const; 00035 00036 private: 00037 // Single state propagator 00038 const Propagator& thePropagator; 00039 00040 typedef std::pair<TrajectoryStateOnSurface,double> TsosWP; 00041 typedef std::vector<TrajectoryStateOnSurface> MultiTSOS; 00042 }; 00043 00044 #include "TrackingTools/GsfTools/src/MultiStatePropagation.icc" 00045 #endif