Skip to content

Commit

Permalink
Correct ME0GeometryBuilder to take care of DDD and DD4HEP
Browse files Browse the repository at this point in the history
  • Loading branch information
Sunanda committed May 21, 2020
1 parent 9da67b4 commit f04cf6f
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 144 deletions.
22 changes: 9 additions & 13 deletions Geometry/GEMGeometryBuilder/plugins/ME0GeometryESModule.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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 <DetectorDescription/DDCMS/interface/DDCompactView.h>
#include "Geometry/MuonNumbering/interface/MuonDDDNumbering.h"
#include "Geometry/MuonNumbering/interface/MuonBaseNumber.h"

#include "Geometry/Records/interface/ME0RecoGeometryRcd.h"
#include "Geometry/Records/interface/MuonGeometryRecord.h"
Expand All @@ -32,8 +33,6 @@

#include <memory>

using namespace edm;

class ME0GeometryESModule : public edm::ESProducer {
public:
ME0GeometryESModule(const edm::ParameterSet& p);
Expand All @@ -45,7 +44,6 @@ class ME0GeometryESModule : public edm::ESProducer {
edm::ESGetToken<DDCompactView, IdealGeometryRecord> cpvToken_;
edm::ESGetToken<MuonGeometryConstants, IdealGeometryRecord> mdcToken_;
edm::ESGetToken<cms::DDCompactView, IdealGeometryRecord> dd4hepcpvToken_;
edm::ESGetToken<cms::MuonNumbering, MuonNumberingRecord> dd4hepmdcToken_;
edm::ESGetToken<RecoIdealGeometry, ME0RecoGeometryRcd> rigme0Token_;
// use the DDD or DD4hep as Geometry source
bool useDDD_;
Expand All @@ -56,10 +54,8 @@ ME0GeometryESModule::ME0GeometryESModule(const edm::ParameterSet& p) {
useDDD_ = p.getParameter<bool>("useDDD");
useDD4hep_ = p.getUntrackedParameter<bool>("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_);
}
Expand All @@ -68,21 +64,21 @@ ME0GeometryESModule::ME0GeometryESModule(const edm::ParameterSet& p) {
ME0GeometryESModule::~ME0GeometryESModule() {}

std::unique_ptr<ME0Geometry> 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<ME0Geometry>(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<ME0Geometry>(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<ME0Geometry>(builder.build(rigme0));
Expand Down
35 changes: 11 additions & 24 deletions Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -27,12 +30,6 @@
#include <iostream>
#include <string>

#include <DetectorDescription/DDCMS/interface/DDFilteredView.h>
#include <DetectorDescription/DDCMS/interface/DDCompactView.h>
#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() {}
Expand All @@ -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());
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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);
Expand All @@ -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);
Expand Down
7 changes: 2 additions & 5 deletions Geometry/GEMGeometryBuilder/src/ME0GeometryBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@ class DDFilteredView;
namespace cms {
class DDFilteredView;
class DDCompactView;
class MuonNumbering;
struct DDSpecPar;
struct DDSpecParRegistry;
} // namespace cms
class ME0Geometry;
class ME0DetId;
Expand All @@ -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);
Expand All @@ -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;

Expand Down
40 changes: 0 additions & 40 deletions Geometry/MuonNumbering/interface/DD4hep_ME0NumberingScheme.h

This file was deleted.

62 changes: 0 additions & 62 deletions Geometry/MuonNumbering/src/DD4hep_ME0NumberingScheme.cc

This file was deleted.

0 comments on commit f04cf6f

Please sign in to comment.