File indexing completed on 2024-04-06 12:14:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.h"
0012 #include "Geometry/GEMGeometryBuilder/src/ME0GeometryBuilderFromCondDB.h"
0013 #include "Geometry/GEMGeometry/interface/ME0Geometry.h"
0014
0015 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0016 #include "Geometry/Records/interface/ME0RecoGeometryRcd.h"
0017 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0018 #include "Geometry/MuonNumbering/interface/MuonGeometryConstants.h"
0019 #include "DetectorDescription/Core/interface/DDCompactView.h"
0020 #include "DetectorDescription/DDCMS/interface/DDCompactView.h"
0021
0022 #include "CondFormats/GeometryObjects/interface/RecoIdealGeometry.h"
0023
0024 #include "FWCore/Framework/interface/EventSetup.h"
0025 #include "FWCore/Framework/interface/ESTransientHandle.h"
0026 #include "FWCore/Framework/interface/ModuleFactory.h"
0027 #include "FWCore/Framework/interface/ESProducer.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0029 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0030
0031 #include <memory>
0032
0033 class ME0GeometryESModule : public edm::ESProducer {
0034 public:
0035 ME0GeometryESModule(const edm::ParameterSet& p);
0036
0037 static void fillDescriptions(edm::ConfigurationDescriptions&);
0038
0039 std::unique_ptr<ME0Geometry> produce(const MuonGeometryRecord& record);
0040
0041 private:
0042 edm::ESGetToken<DDCompactView, IdealGeometryRecord> cpvToken_;
0043 edm::ESGetToken<MuonGeometryConstants, IdealGeometryRecord> mdcToken_;
0044 edm::ESGetToken<cms::DDCompactView, IdealGeometryRecord> dd4hepcpvToken_;
0045 edm::ESGetToken<RecoIdealGeometry, ME0RecoGeometryRcd> rigme0Token_;
0046
0047 bool fromDDD_;
0048 bool fromDD4hep_;
0049 };
0050
0051 ME0GeometryESModule::ME0GeometryESModule(const edm::ParameterSet& p) {
0052 fromDDD_ = p.getParameter<bool>("fromDDD");
0053 fromDD4hep_ = p.getParameter<bool>("fromDD4hep");
0054 auto cc = setWhatProduced(this);
0055 if (fromDDD_) {
0056 cpvToken_ = cc.consumes();
0057 mdcToken_ = cc.consumes();
0058 } else if (fromDD4hep_) {
0059 dd4hepcpvToken_ = cc.consumes();
0060 mdcToken_ = cc.consumes();
0061 } else {
0062 rigme0Token_ = cc.consumes();
0063 }
0064 edm::LogVerbatim("GEMGeometry") << "ME0GeometryESModule::initailized with flags " << fromDDD_ << ":" << fromDD4hep_;
0065 }
0066
0067 void ME0GeometryESModule::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0068 edm::ParameterSetDescription desc;
0069 desc.add<bool>("fromDDD", true);
0070 desc.add<bool>("fromDD4hep", false);
0071 descriptions.add("me0Geometry", desc);
0072 }
0073
0074 std::unique_ptr<ME0Geometry> ME0GeometryESModule::produce(const MuonGeometryRecord& record) {
0075 edm::LogVerbatim("GEMGeometry") << "ME0GeometryESModule::produce with fromDDD = " << fromDDD_ << " fromDD4hep "
0076 << fromDD4hep_;
0077 if (fromDDD_) {
0078 edm::LogVerbatim("ME0GeometryESModule") << "(0) ME0GeometryESModule - DDD ";
0079 edm::LogVerbatim("GEMGeometry") << "ME0GeometryESModule::produce :: ME0GeometryBuilder builder";
0080 auto cpv = record.getTransientHandle(cpvToken_);
0081 const auto& mdc = record.get(mdcToken_);
0082 ME0GeometryBuilder builder;
0083 return std::unique_ptr<ME0Geometry>(builder.build(cpv.product(), mdc));
0084 } else if (fromDD4hep_) {
0085 edm::LogVerbatim("ME0GeometryESModule") << "(0) ME0GeometryESModule - DD4hep ";
0086 edm::LogVerbatim("GEMGeometry") << "ME0GeometryESModule::produce :: ME0GeometryBuilder builder DD4hep";
0087 auto cpv = record.getTransientHandle(dd4hepcpvToken_);
0088 const auto& mdc = record.get(mdcToken_);
0089 ME0GeometryBuilder builder;
0090 return std::unique_ptr<ME0Geometry>(builder.build(cpv.product(), mdc));
0091 } else {
0092 edm::LogVerbatim("ME0GeometryESModule") << "(0) ME0GeometryESModule - DB ";
0093 edm::LogVerbatim("GEMGeometry") << "ME0GeometryESModule::produce :: ME0GeometryBuilderFromCondDB builder";
0094 const auto& rigme0 = record.get(rigme0Token_);
0095 ME0GeometryBuilderFromCondDB builder;
0096 return std::unique_ptr<ME0Geometry>(builder.build(rigme0));
0097 }
0098 }
0099
0100 DEFINE_FWK_EVENTSETUP_MODULE(ME0GeometryESModule);