00001 #ifndef TrackingTools_GeomPropagators_SmartPropagatorESProducer_H 00002 #define TrackingTools_GeomPropagators_SmartPropagatorESProducer_H 00003 00012 #include "FWCore/Framework/interface/ESProducer.h" 00013 00014 #include "TrackingTools/GeomPropagators/interface/SmartPropagator.h" 00015 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" 00016 00017 #include <boost/shared_ptr.hpp> 00018 00019 00020 namespace edm {class ParameterSet;} 00021 00022 class TrackingComponentsRecord; 00023 00024 class SmartPropagatorESProducer: public edm::ESProducer{ 00025 00026 public: 00027 00029 SmartPropagatorESProducer(const edm::ParameterSet &); 00030 00032 virtual ~SmartPropagatorESProducer(); 00033 00034 // Operations 00035 boost::shared_ptr<Propagator> produce(const TrackingComponentsRecord &); 00036 00037 private: 00038 boost::shared_ptr<Propagator> thePropagator; 00039 PropagationDirection thePropagationDirection; 00040 std::string theTrackerPropagatorName; 00041 std::string theMuonPropagatorName; 00042 double theEpsilon; 00043 }; 00044 00045 #endif 00046