diff --git a/Geometry/GEMGeometryBuilder/plugins/ME0GeometryESModule.cc b/Geometry/GEMGeometryBuilder/plugins/ME0GeometryESModule.cc index d3f6fcf539bb2..4d61e9d697a14 100644 --- a/Geometry/GEMGeometryBuilder/plugins/ME0GeometryESModule.cc +++ b/Geometry/GEMGeometryBuilder/plugins/ME0GeometryESModule.cc @@ -14,9 +14,10 @@ #include "Geometry/Records/interface/IdealGeometryRecord.h" #include "Geometry/MuonNumbering/interface/MuonGeometryConstants.h" #include "DetectorDescription/Core/interface/DDCompactView.h" +#include "DetectorDescription/DDCMS/interface/DDCompactView.h" -#include "Geometry/MuonNumbering/interface/DD4hep_MuonNumbering.h" -#include +#include "Geometry/MuonNumbering/interface/MuonDDDNumbering.h" +#include "Geometry/MuonNumbering/interface/MuonBaseNumber.h" #include "Geometry/Records/interface/ME0RecoGeometryRcd.h" #include "Geometry/Records/interface/MuonGeometryRecord.h" @@ -32,8 +33,6 @@ #include -using namespace edm; - class ME0GeometryESModule : public edm::ESProducer { public: ME0GeometryESModule(const edm::ParameterSet& p); @@ -45,7 +44,6 @@ class ME0GeometryESModule : public edm::ESProducer { edm::ESGetToken cpvToken_; edm::ESGetToken mdcToken_; edm::ESGetToken dd4hepcpvToken_; - edm::ESGetToken dd4hepmdcToken_; edm::ESGetToken rigme0Token_; // use the DDD or DD4hep as Geometry source bool useDDD_; @@ -56,10 +54,8 @@ ME0GeometryESModule::ME0GeometryESModule(const edm::ParameterSet& p) { useDDD_ = p.getParameter("useDDD"); useDD4hep_ = p.getUntrackedParameter("useDD4hep", false); auto cc = setWhatProduced(this); - if (useDDD_) { + if (useDDD_ || useDD4hep_) { cc.setConsumes(cpvToken_).setConsumes(mdcToken_); - } else if (useDD4hep_) { - cc.setConsumes(dd4hepcpvToken_).setConsumes(dd4hepmdcToken_); } else { cc.setConsumes(rigme0Token_); } @@ -68,21 +64,21 @@ ME0GeometryESModule::ME0GeometryESModule(const edm::ParameterSet& p) { ME0GeometryESModule::~ME0GeometryESModule() {} std::unique_ptr ME0GeometryESModule::produce(const MuonGeometryRecord& record) { - LogTrace("ME0GeometryESModule") << "ME0GeometryESModule::produce with useDDD = " << useDDD_; + edm::LogVerbatim("ME0GeometryESModule") << "ME0GeometryESModule::produce with useDDD = " << useDDD_; if (useDDD_) { - LogTrace("ME0GeometryESModule") << "ME0GeometryESModule::produce :: ME0GeometryBuilder builder"; + edm::LogVerbatim("ME0GeometryESModule") << "ME0GeometryESModule::produce :: ME0GeometryBuilder builder"; auto cpv = record.getTransientHandle(cpvToken_); const auto& mdc = record.get(mdcToken_); ME0GeometryBuilder builder; return std::unique_ptr(builder.build(cpv.product(), mdc)); } else if (useDD4hep_) { - LogTrace("ME0GeometryESModule") << "ME0GeometryESModule::produce :: ME0GeometryBuilder builder DD4hep"; + edm::LogVerbatim("ME0GeometryESModule") << "ME0GeometryESModule::produce :: ME0GeometryBuilder builder DD4hep"; auto cpv = record.getTransientHandle(dd4hepcpvToken_); - const auto& mdc = record.get(dd4hepmdcToken_); + const auto& mdc = record.get(mdcToken_); ME0GeometryBuilder builder; return std::unique_ptr(builder.build(cpv.product(), mdc)); } else { - LogTrace("ME0GeometryESModule") << "ME0GeometryESModule::produce :: ME0GeometryBuilderFromCondDB builder"; + edm::LogVerbatim("ME0GeometryESModule") << "ME0GeometryESModule::produce :: ME0GeometryBuilderFromCondDB builder"; const auto& rigme0 = record.get(rigme0Token_); ME0GeometryBuilderFromCondDB builder; return std::unique_ptr(builder.build(rigme0)); diff --git a/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.cc b/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.cc index 86ba9928f8d6e..e342222e4e4c9 100644 --- a/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.cc +++ b/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.cc @@ -14,6 +14,9 @@ #include "DetectorDescription/Core/interface/DDFilter.h" #include "DetectorDescription/Core/interface/DDFilteredView.h" #include "DetectorDescription/Core/interface/DDSolid.h" +#include "DetectorDescription/DDCMS/interface/DDFilteredView.h" +#include "DetectorDescription/DDCMS/interface/DDCompactView.h" +#include "DetectorDescription/DDCMS/interface/DDSpecParRegistry.h" #include "Geometry/MuonNumbering/interface/MuonDDDNumbering.h" #include "Geometry/MuonNumbering/interface/MuonBaseNumber.h" @@ -27,12 +30,6 @@ #include #include -#include -#include -#include "Geometry/MuonNumbering/interface/DD4hep_MuonNumbering.h" -#include "DetectorDescription/DDCMS/interface/DDSpecParRegistry.h" -#include "Geometry/MuonNumbering/interface/DD4hep_ME0NumberingScheme.h" - using namespace geant_units::operators; ME0GeometryBuilder::ME0GeometryBuilder() {} @@ -48,7 +45,7 @@ ME0Geometry* ME0GeometryBuilder::build(const DDCompactView* cview, const MuonGeo } // for DD4hep -ME0Geometry* ME0GeometryBuilder::build(const cms::DDCompactView* cview, const cms::MuonNumbering& muonConstants) { +ME0Geometry* ME0GeometryBuilder::build(const cms::DDCompactView* cview, const MuonGeometryConstants& muonConstants) { std::string attribute = "MuStructure"; std::string value = "MuonEndCapME0"; cms::DDFilteredView fview(cview->detector(), cview->detector()->worldVolume()); @@ -365,16 +362,15 @@ ME0GeometryBuilder::ME0BoundPlane ME0GeometryBuilder::boundPlane(const DDFiltere // dd4hep -ME0Geometry* ME0GeometryBuilder::buildGeometry(cms::DDFilteredView& fv, const cms::MuonNumbering& muonConstants) { +ME0Geometry* ME0GeometryBuilder::buildGeometry(cms::DDFilteredView& fv, const MuonGeometryConstants& muonConstants) { ME0Geometry* geometry = new ME0Geometry(); + MuonDDDNumbering mdddnum(muonConstants); + ME0NumberingScheme me0Num(muonConstants); bool doChambers = fv.firstChild(); //loop over chambers while (doChambers) { - MuonBaseNumber mbn = muonConstants.geoHistoryToBaseNumber(fv.history()); - cms::ME0NumberingScheme me0Num(muonConstants.values()); - me0Num.baseNumberToUnitNumber(mbn); - ME0DetId detId = ME0DetId(me0Num.getDetId()); + ME0DetId detId = ME0DetId(me0Num.baseNumberToUnitNumber(mdddnum.geoHistoryToBaseNumber(fv.history()))); ME0DetId detIdCh = detId.chamberId(); // build chamber @@ -384,10 +380,7 @@ ME0Geometry* ME0GeometryBuilder::buildGeometry(cms::DDFilteredView& fv, const cm bool doLayers = fv.nextSibling(); // loop over layers of the chamber while (doLayers) { - MuonBaseNumber mbn = muonConstants.geoHistoryToBaseNumber(fv.history()); - cms::ME0NumberingScheme me0Num(muonConstants.values()); - me0Num.baseNumberToUnitNumber(mbn); - ME0DetId detId = ME0DetId(me0Num.getDetId()); + ME0DetId detId = ME0DetId(me0Num.baseNumberToUnitNumber(mdddnum.geoHistoryToBaseNumber(fv.history()))); ME0DetId detIdLa = detId.layerId(); // build layer @@ -398,10 +391,7 @@ ME0Geometry* ME0GeometryBuilder::buildGeometry(cms::DDFilteredView& fv, const cm fv.down(); // down to the first eta partion // build first eta partition - MuonBaseNumber mbnbis = muonConstants.geoHistoryToBaseNumber(fv.history()); - cms::ME0NumberingScheme me0Numbis(muonConstants.values()); - me0Numbis.baseNumberToUnitNumber(mbnbis); - ME0DetId detIdbis = ME0DetId(me0Numbis.getDetId()); + ME0DetId detIdbis = ME0DetId(me0Num.baseNumberToUnitNumber(mdddnum.geoHistoryToBaseNumber(fv.history()))); ME0EtaPartition* etaPart = buildEtaPartition(fv, detIdbis); me0Layer->add(etaPart); geometry->add(etaPart); @@ -410,10 +400,7 @@ ME0Geometry* ME0GeometryBuilder::buildGeometry(cms::DDFilteredView& fv, const cm // loop over the other eta partions while (doEtaParts) { - MuonBaseNumber mbn = muonConstants.geoHistoryToBaseNumber(fv.history()); - cms::ME0NumberingScheme me0Num(muonConstants.values()); - me0Num.baseNumberToUnitNumber(mbn); - ME0DetId detId = ME0DetId(me0Num.getDetId()); + ME0DetId detId = ME0DetId(me0Num.baseNumberToUnitNumber(mdddnum.geoHistoryToBaseNumber(fv.history()))); // build other eta partitions ME0EtaPartition* etaPart = buildEtaPartition(fv, detId); me0Layer->add(etaPart); diff --git a/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.h b/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.h index e08d527e7d554..64b71dc44101b 100644 --- a/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.h +++ b/Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.h @@ -20,9 +20,6 @@ class DDFilteredView; namespace cms { class DDFilteredView; class DDCompactView; - class MuonNumbering; - struct DDSpecPar; - struct DDSpecParRegistry; } // namespace cms class ME0Geometry; class ME0DetId; @@ -39,7 +36,7 @@ class ME0GeometryBuilder { ME0Geometry* build(const DDCompactView* cview, const MuonGeometryConstants& muonConstants); //dd4hep - ME0Geometry* build(const cms::DDCompactView* cview, const cms::MuonNumbering& muonConstants); + ME0Geometry* build(const cms::DDCompactView* cview, const MuonGeometryConstants& muonConstants); private: ME0Geometry* buildGeometry(DDFilteredView& fview, const MuonGeometryConstants& muonConstants); @@ -55,7 +52,7 @@ class ME0GeometryBuilder { ME0EtaPartition* buildEtaPartition(DDFilteredView& fv, ME0DetId detId) const; //dd4hep - ME0Geometry* buildGeometry(cms::DDFilteredView& fview, const cms::MuonNumbering& muonConstants); + ME0Geometry* buildGeometry(cms::DDFilteredView& fview, const MuonGeometryConstants& muonConstants); ME0BoundPlane boundPlane(const cms::DDFilteredView& fv, Bounds* bounds, bool isOddChamber) const; diff --git a/Geometry/MuonNumbering/interface/DD4hep_ME0NumberingScheme.h b/Geometry/MuonNumbering/interface/DD4hep_ME0NumberingScheme.h deleted file mode 100644 index e2283a41eb358..0000000000000 --- a/Geometry/MuonNumbering/interface/DD4hep_ME0NumberingScheme.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef GEOMETRY_MUON_NUMBERING_ME0_NUMBERING_SCHEME_H -#define GEOMETRY_MUON_NUMBERING_ME0_NUMBERING_SCHEME_H - -/* -//\class ME0NumberingScheme - -Description: ME0 Numbering Scheme for DD4hep - -// -// Author: Sergio Lo Meo (sergio.lo.meo@cern.ch) following what Ianna Osborne made for DTs (DD4HEP migration) -// Created: 29 Apr 2020 -*/ - -#include "Geometry/MuonNumbering/interface/DD4hep_MuonNumbering.h" - -class MuonBaseNumber; -class MuonConstants; - -namespace cms { - class ME0NumberingScheme { - public: - ME0NumberingScheme(const MuonConstants& muonConstants); - void baseNumberToUnitNumber(const MuonBaseNumber&); - int getDetId() const { return detId; } - - private: - const int get(const char*, const MuonConstants&) const; - void initMe(const MuonConstants& muonConstants); - void setDetId(int idnew) { detId = idnew; } - - int theRegionLevel; - int theSectorLevel; - int theLayerLevel; - int theRollLevel; - int theNEtaPart; - - int detId; - }; -} // namespace cms -#endif diff --git a/Geometry/MuonNumbering/src/DD4hep_ME0NumberingScheme.cc b/Geometry/MuonNumbering/src/DD4hep_ME0NumberingScheme.cc deleted file mode 100644 index 72b31a8af42d7..0000000000000 --- a/Geometry/MuonNumbering/src/DD4hep_ME0NumberingScheme.cc +++ /dev/null @@ -1,62 +0,0 @@ -/* -//\class ME0NumberingScheme - -Description: ME0 Numbering Scheme for DD4hep - -// -// Author: Sergio Lo Meo (sergio.lo.meo@cern.ch) following what Ianna Osburne made for DTs (DD4HEP migration) -// Created: 29 Apr 2020 -*/ -#include "Geometry/MuonNumbering/interface/DD4hep_ME0NumberingScheme.h" -#include "Geometry/MuonNumbering/interface/DD4hep_MuonNumbering.h" -#include "Geometry/MuonNumbering/interface/MuonBaseNumber.h" -#include "DataFormats/MuonDetId/interface/ME0DetId.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/Exception.h" -#include - -using namespace cms; - -ME0NumberingScheme::ME0NumberingScheme(const MuonConstants& muonConstants) { initMe(muonConstants); } - -void ME0NumberingScheme::initMe(const MuonConstants& muonConstants) { - int theLevelPart = get("level", muonConstants); - - assert(theLevelPart != 0); - - theRegionLevel = get("m0_region", muonConstants) / theLevelPart; - theLayerLevel = get("m0_layer", muonConstants) / theLevelPart; - theSectorLevel = get("m0_sector", muonConstants) / theLevelPart; - theRollLevel = get("m0_roll", muonConstants) / theLevelPart; - theNEtaPart = get("m0_nroll", muonConstants); -} - -void ME0NumberingScheme::baseNumberToUnitNumber(const MuonBaseNumber& num) { - int region = 0; - int layer = 0; - int chamber = 0; - int roll = 0; - - //decode significant ME0 levels - - if (num.getBaseNo(theRegionLevel) == 0) - region = 1; - else - region = -1; - layer = num.getBaseNo(theLayerLevel) + 1; - chamber = num.getBaseNo(theSectorLevel) + 1; - roll = num.getBaseNo(theRollLevel) + 1; - - // Build the actual numbering - ME0DetId id(region, layer, chamber, roll); - - setDetId(id.rawId()); -} - -const int ME0NumberingScheme::get(const char* key, const MuonConstants& muonConstants) const { - int result(0); - auto const& it = (muonConstants.find(key)); - if (it != end(muonConstants)) - result = it->second; - return result; -}