00001 #ifndef CSCGeometryBuilder_CSCGeometryESModule_h 00002 #define CSCGeometryBuilder_CSCGeometryESModule_h 00003 00011 #include <FWCore/Framework/interface/ESProducer.h> 00012 #include <FWCore/ParameterSet/interface/ParameterSet.h> 00013 #include <Geometry/Records/interface/MuonGeometryRecord.h> 00014 #include <Geometry/CSCGeometry/interface/CSCGeometry.h> 00015 #include <boost/shared_ptr.hpp> 00016 00017 #include <string> 00018 00019 class CSCGeometryESModule : public edm::ESProducer { 00020 public: 00022 CSCGeometryESModule(const edm::ParameterSet& p); 00023 00025 virtual ~CSCGeometryESModule(); 00026 00028 boost::shared_ptr<CSCGeometry> produce(const MuonGeometryRecord& record); 00029 00030 private: 00031 00033 void muonNumberingChanged_( const MuonNumberingRecord& ); 00034 void cscRecoGeometryChanged_( const CSCRecoGeometryRcd& ); 00035 void cscRecoDigiParametersChanged_( const CSCRecoDigiParametersRcd& ); 00036 00037 void initCSCGeometry_(const MuonGeometryRecord& ); 00038 boost::shared_ptr<CSCGeometry> cscGeometry; 00039 bool recreateGeometry_; 00040 00041 // Flags for controlling geometry modelling during build of CSCGeometry 00042 bool useRealWireGeometry; 00043 bool useOnlyWiresInME1a; 00044 bool useGangedStripsInME1a; 00045 bool useCentreTIOffsets; 00046 bool debugV; 00047 bool applyAlignment_; // Switch to apply alignment corrections 00048 bool useDDD_; // whether to build from DDD or DB 00049 const std::string alignmentsLabel_; 00050 const std::string myLabel_; 00051 00052 }; 00053 #endif 00054 00055 00056 00057 00058 00059