00001 #ifndef GEOMETRY_FWRECO_GEOMETRY_ES_PRODUCER_H 00002 # define GEOMETRY_FWRECO_GEOMETRY_ES_PRODUCER_H 00003 00004 # include "boost/shared_ptr.hpp" 00005 00006 # include "FWCore/Framework/interface/ESProducer.h" 00007 # include "FWCore/Framework/interface/ESHandle.h" 00008 # include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00009 00010 namespace edm 00011 { 00012 class ParameterSet; 00013 } 00014 00015 class CaloGeometry; 00016 class GlobalTrackingGeometry; 00017 class TrackerGeometry; 00018 class FWRecoGeometry; 00019 class FWRecoGeometryRecord; 00020 class GeomDet; 00021 00022 class FWRecoGeometryESProducer : public edm::ESProducer 00023 { 00024 public: 00025 FWRecoGeometryESProducer( const edm::ParameterSet& ); 00026 virtual ~FWRecoGeometryESProducer( void ); 00027 00028 boost::shared_ptr<FWRecoGeometry> produce( const FWRecoGeometryRecord& ); 00029 00030 private: 00031 FWRecoGeometryESProducer( const FWRecoGeometryESProducer& ); 00032 const FWRecoGeometryESProducer& operator=( const FWRecoGeometryESProducer& ); 00033 00034 void addCSCGeometry( void ); 00035 void addDTGeometry( void ); 00036 void addRPCGeometry( void ); 00037 void addPixelBarrelGeometry( void ); 00038 void addPixelForwardGeometry( void ); 00039 void addTIBGeometry( void ); 00040 void addTOBGeometry( void ); 00041 void addTIDGeometry( void ); 00042 void addTECGeometry( void ); 00043 void addCaloGeometry( void ); 00044 00045 unsigned int insert_id( unsigned int id ); 00046 void fillPoints( unsigned int id, std::vector<GlobalPoint>::const_iterator begin, std::vector<GlobalPoint>::const_iterator end ); 00047 void fillShapeAndPlacement( unsigned int id, const GeomDet *det ); 00048 00049 edm::ESHandle<GlobalTrackingGeometry> m_geomRecord; 00050 edm::ESHandle<CaloGeometry> m_caloGeom; 00051 const TrackerGeometry* m_trackerGeom; 00052 boost::shared_ptr<FWRecoGeometry> m_fwGeometry; 00053 00054 unsigned int m_current; 00055 }; 00056 00057 #endif // GEOMETRY_FWRECO_GEOMETRY_ES_PRODUCER_H