00001 #ifndef RecoMuon_TrackingTools_MuonServiceProxy_H 00002 #define RecoMuon_TrackingTools_MuonServiceProxy_H 00003 00016 #include "FWCore/Framework/interface/ESHandle.h" 00017 00018 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h" 00019 #include "MagneticField/Engine/interface/MagneticField.h" 00020 #include "RecoMuon/DetLayers/interface/MuonDetLayerGeometry.h" 00021 #include "TrackingTools/GeomPropagators/interface/Propagator.h" 00022 #include "RecoMuon/Navigation/interface/MuonNavigationSchool.h" 00023 00024 namespace edm {class ParameterSet; class EventSetup;} 00025 00026 class MuonServiceProxy { 00027 public: 00029 MuonServiceProxy(const edm::ParameterSet& par); 00030 00032 virtual ~MuonServiceProxy(); 00033 00034 // Operations 00035 00037 void update(const edm::EventSetup& setup); 00038 00040 edm::ESHandle<MagneticField> magneticField() const {return theMGField;} 00041 00043 edm::ESHandle<GlobalTrackingGeometry> trackingGeometry() const {return theTrackingGeometry;} 00044 00046 edm::ESHandle<MuonDetLayerGeometry> detLayerGeometry() const {return theDetLayerGeometry;} 00047 00049 edm::ESHandle<Propagator> propagator(std::string propagatorName) const; 00050 00052 const edm::EventSetup &eventSetup() const {return *theEventSetup;} 00053 00055 bool isTrackingComponentsRecordChanged() const {return theChangeInTrackingComponentsRecord;} 00056 00057 const MuonNavigationSchool *muonNavigationSchool() const{ 00058 return theSchool; 00059 } 00060 00061 protected: 00062 00063 private: 00064 typedef std::map<std::string, edm::ESHandle<Propagator> > propagators; 00065 00066 edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry; 00067 edm::ESHandle<MagneticField> theMGField; 00068 edm::ESHandle<MuonDetLayerGeometry> theDetLayerGeometry; 00069 const edm::EventSetup *theEventSetup; 00070 bool theMuonNavigationFlag; 00071 bool theRPCLayer; 00072 const MuonNavigationSchool* theSchool; 00073 00074 propagators thePropagators; 00075 00076 unsigned long long theCacheId_GTG; 00077 unsigned long long theCacheId_MG; 00078 unsigned long long theCacheId_DG; 00079 unsigned long long theCacheId_P; 00080 00081 bool theChangeInTrackingComponentsRecord; 00082 00083 }; 00084 #endif 00085