Skip to content

Commit

Permalink
Merge pull request #24746 from wddgit/concurrentIOVsMisalignedMuonESP…
Browse files Browse the repository at this point in the history
…roducer

Prepare for concurrent IOVs, MisalignedMuonESProducer
  • Loading branch information
cmsbuild committed Oct 11, 2018
2 parents ea5f912 + 2010daf commit 497653c
Show file tree
Hide file tree
Showing 14 changed files with 47 additions and 62 deletions.
Expand Up @@ -158,9 +158,9 @@ AlignmentMonitorAsAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSe
DTGeometryBuilderFromDDD DTGeometryBuilder;
CSCGeometryBuilderFromDDD CSCGeometryBuilder;
auto theMuonDT = std::make_shared<DTGeometry>();
DTGeometryBuilder.build(theMuonDT, &(*cpv), *mdc);
DTGeometryBuilder.build(*theMuonDT, &(*cpv), *mdc);
auto theMuonCSC = std::make_shared<CSCGeometry>();
CSCGeometryBuilder.build(theMuonCSC, &(*cpv), *mdc);
CSCGeometryBuilder.build(*theMuonCSC, &(*cpv), *mdc);

edm::ESHandle<Alignments> globalPositionRcd;
iSetup.get<GlobalPositionRcd>().get(globalPositionRcd);
Expand Down
Expand Up @@ -538,9 +538,9 @@ AlignmentProducerBase::createGeometries(const edm::EventSetup& iSetup,
DTGeometryBuilderFromDDD DTGeometryBuilder;
CSCGeometryBuilderFromDDD CSCGeometryBuilder;
muonDTGeometry_ = std::make_shared<DTGeometry>();
DTGeometryBuilder.build(muonDTGeometry_, &(*cpv), *mdc);
DTGeometryBuilder.build(*muonDTGeometry_, &(*cpv), *mdc);
muonCSCGeometry_ = std::make_shared<CSCGeometry>();
CSCGeometryBuilder.build(muonCSCGeometry_, &(*cpv), *mdc );
CSCGeometryBuilder.build(*muonCSCGeometry_, &(*cpv), *mdc );
}
}

Expand Down
21 changes: 8 additions & 13 deletions Alignment/MuonAlignment/plugins/MisalignedMuonESProducer.cc
Expand Up @@ -49,8 +49,8 @@ class MisalignedMuonESProducer: public edm::ESProducer
~MisalignedMuonESProducer() override;

/// Produce the misaligned Muon geometry and store it
edm::ESProducts< std::shared_ptr<DTGeometry>,
std::shared_ptr<CSCGeometry> > produce( const MuonGeometryRecord& );
edm::ESProducts< std::unique_ptr<DTGeometry>,
std::unique_ptr<CSCGeometry> > produce( const MuonGeometryRecord& );

/// Save alignemnts and error to database
void saveToDB();
Expand All @@ -61,9 +61,6 @@ class MisalignedMuonESProducer: public edm::ESProducer

std::string theDTAlignRecordName, theDTErrorRecordName;
std::string theCSCAlignRecordName, theCSCErrorRecordName;

std::shared_ptr<DTGeometry> theDTGeometry;
std::shared_ptr<CSCGeometry> theCSCGeometry;

Alignments* dt_Alignments;
AlignmentErrorsExtended* dt_AlignmentErrorsExtended;
Expand Down Expand Up @@ -97,7 +94,7 @@ MisalignedMuonESProducer::~MisalignedMuonESProducer() {}


//__________________________________________________________________________________________________
edm::ESProducts< std::shared_ptr<DTGeometry>, std::shared_ptr<CSCGeometry> >
edm::ESProducts< std::unique_ptr<DTGeometry>, std::unique_ptr<CSCGeometry> >
MisalignedMuonESProducer::produce( const MuonGeometryRecord& iRecord )
{

Expand All @@ -114,11 +111,10 @@ MisalignedMuonESProducer::produce( const MuonGeometryRecord& iRecord )
DTGeometryBuilderFromDDD DTGeometryBuilder;
CSCGeometryBuilderFromDDD CSCGeometryBuilder;

theDTGeometry = std::make_shared<DTGeometry>();
DTGeometryBuilder.build(theDTGeometry, &(*cpv), *mdc );
theCSCGeometry = std::make_shared<CSCGeometry>();
CSCGeometryBuilder.build( theCSCGeometry, &(*cpv), *mdc );

auto theDTGeometry = std::make_unique<DTGeometry>();
DTGeometryBuilder.build(*theDTGeometry, &(*cpv), *mdc);
auto theCSCGeometry = std::make_unique<CSCGeometry>();
CSCGeometryBuilder.build(*theCSCGeometry, &(*cpv), *mdc);

// Create the alignable hierarchy
AlignableMuon* theAlignableMuon = new AlignableMuon( &(*theDTGeometry) , &(*theCSCGeometry) );
Expand Down Expand Up @@ -151,8 +147,7 @@ MisalignedMuonESProducer::produce( const MuonGeometryRecord& iRecord )

edm::LogInfo("MisalignedMuon") << "Producer done";

return edm::es::products( theDTGeometry, theCSCGeometry );

return edm::es::products( std::move(theDTGeometry), std::move(theCSCGeometry) );
}


Expand Down
4 changes: 2 additions & 2 deletions Alignment/MuonAlignment/src/MuonAlignmentInputMethod.cc
Expand Up @@ -75,7 +75,7 @@ std::shared_ptr<DTGeometry> MuonAlignmentInputMethod::idealDTGeometry(const edm:
DTGeometryBuilderFromDDD DTGeometryBuilder;

auto boost_dtGeometry = std::make_shared<DTGeometry>();
DTGeometryBuilder.build(boost_dtGeometry, &(*cpv), *mdc);
DTGeometryBuilder.build(*boost_dtGeometry, &(*cpv), *mdc);

return boost_dtGeometry;
}
Expand All @@ -89,7 +89,7 @@ std::shared_ptr<CSCGeometry> MuonAlignmentInputMethod::idealCSCGeometry(const ed
CSCGeometryBuilderFromDDD CSCGeometryBuilder;

auto boost_cscGeometry = std::make_shared<CSCGeometry>();
CSCGeometryBuilder.build(boost_cscGeometry, &(*cpv), *mdc);
CSCGeometryBuilder.build(*boost_cscGeometry, &(*cpv), *mdc);

return boost_cscGeometry;
}
Expand Down
4 changes: 2 additions & 2 deletions Alignment/MuonAlignment/src/MuonAlignmentOutputXML.cc
Expand Up @@ -131,10 +131,10 @@ void MuonAlignmentOutputXML::write(AlignableMuon *alignableMuon, const edm::Even
CSCGeometryBuilderFromDDD CSCGeometryBuilder;

auto dtGeometry = std::make_shared<DTGeometry>();
DTGeometryBuilder.build(dtGeometry, &(*cpv), *mdc);
DTGeometryBuilder.build(*dtGeometry, &(*cpv), *mdc);

auto boost_cscGeometry = std::make_shared<CSCGeometry>();
CSCGeometryBuilder.build(boost_cscGeometry, &(*cpv), *mdc);
CSCGeometryBuilder.build(*boost_cscGeometry, &(*cpv), *mdc);

AlignableMuon ideal_alignableMuon(&(*dtGeometry), &(*boost_cscGeometry));

Expand Down
4 changes: 2 additions & 2 deletions Alignment/MuonAlignment/test/TestReader.cpp
Expand Up @@ -123,9 +123,9 @@ TestMuonReader::analyze( const edm::Event& iEvent, const edm::EventSetup& iSetup
CSCGeometryBuilderFromDDD CSCGeometryBuilder;

auto dtGeometry = std::make_shared<DTGeometry>();
DTGeometryBuilder.build(dtGeometry, &(*cpv), *mdc);
DTGeometryBuilder.build(*dtGeometry, &(*cpv), *mdc);
auto cscGeometry = std::make_shared<CSCGeometry>();
CSCGeometryBuilder.build(cscGeometry, &(*cpv), *mdc);
CSCGeometryBuilder.build(*cscGeometry, &(*cpv), *mdc);

AlignableMuon ideal_alignableMuon(&(*dtGeometry), &(*cscGeometry));

Expand Down
4 changes: 2 additions & 2 deletions Geometry/CSCGeometryBuilder/plugins/CSCGeometryESModule.cc
Expand Up @@ -131,7 +131,7 @@ void CSCGeometryESModule::initCSCGeometry_( const MuonGeometryRecord& record, st
record.getRecord<IdealGeometryRecord>().get(cpv);
rec.get(mdc);
CSCGeometryBuilderFromDDD builder;
builder.build(host, &(*cpv), *mdc);
builder.build(*host, &(*cpv), *mdc);
});
} else {
bool recreateGeometry = false;
Expand All @@ -153,7 +153,7 @@ void CSCGeometryESModule::initCSCGeometry_( const MuonGeometryRecord& record, st
record.getRecord<CSCRecoGeometryRcd>().get(rig);
record.getRecord<CSCRecoDigiParametersRcd>().get(rdp);
CSCGeometryBuilder cscgb;
cscgb.build(host, *rig, *rdp);
cscgb.build(*host, *rig, *rdp);
}
}
}
Expand Down
18 changes: 9 additions & 9 deletions Geometry/CSCGeometryBuilder/src/CSCGeometryBuilder.cc
Expand Up @@ -16,7 +16,7 @@ CSCGeometryBuilder::CSCGeometryBuilder() : myName("CSCGeometryBuilder"){}
CSCGeometryBuilder::~CSCGeometryBuilder(){}


void CSCGeometryBuilder::build( const std::shared_ptr<CSCGeometry>& theGeometry
void CSCGeometryBuilder::build( CSCGeometry& theGeometry
, const RecoIdealGeometry& rig
, const CSCRecoDigiParameters& cscpars ) {

Expand Down Expand Up @@ -109,15 +109,15 @@ void CSCGeometryBuilder::build( const std::shared_ptr<CSCGeometry>& theGeometry
LogTrace(myName) << myName << ": end of wire group info. " ;

// Are we going to apply centre-to-intersection offsets, even if values exist in the specs file?
if ( !theGeometry->centreTIOffsets() ) fupar[30] = 0.; // reset to zero if flagged 'off'
if ( !theGeometry.centreTIOffsets() ) fupar[30] = 0.; // reset to zero if flagged 'off'

buildChamber (theGeometry, detid, fpar, fupar, gtran, grmat, wg ); //, cscpars.pWGPs[cs] );
fupar.clear();
}
}

void CSCGeometryBuilder::buildChamber (
const std::shared_ptr<CSCGeometry>& theGeometry // the geometry container
CSCGeometry& theGeometry // the geometry container
, CSCDetId chamberId // the DetId for this chamber
, const std::vector<float>& fpar // volume parameters hB, hT. hD, hH
, const std::vector<float>& fupar // user parameters
Expand Down Expand Up @@ -153,17 +153,17 @@ void CSCGeometryBuilder::buildChamber (
<< " upar[" << fupar.size()-1 << "]=" << fupar[fupar.size()-1];


const CSCChamber* chamber = theGeometry->chamber( chamberId );
const CSCChamber* chamber = theGeometry.chamber( chamberId );
if ( chamber ){
}
else { // this chamber not yet built/stored

LogTrace(myName) << myName <<": CSCChamberSpecs::build requested for ME" << jstat << jring ;
int chamberType = CSCChamberSpecs::whatChamberType( jstat, jring );
const CSCChamberSpecs* aSpecs = theGeometry->findSpecs( chamberType );
const CSCChamberSpecs* aSpecs = theGeometry.findSpecs( chamberType );
if ( !fupar.empty() && aSpecs == nullptr ) {
// make new one:
aSpecs = theGeometry->buildSpecs (chamberType, fpar, fupar, wg);
aSpecs = theGeometry.buildSpecs (chamberType, fpar, fupar, wg);
} else if ( fupar.empty() && aSpecs == nullptr ) {
edm::LogError(myName) << "SHOULD BE THROW? Error, wg and/or fupar size are 0 BUT this Chamber Spec has not been built!";
}
Expand Down Expand Up @@ -238,7 +238,7 @@ void CSCGeometryBuilder::buildChamber (
Plane::PlanePointer plane = Plane::build(aVec, aRot, bounds);

CSCChamber* chamber = new CSCChamber( plane, chamberId, aSpecs );
theGeometry->addChamber( chamber );
theGeometry.addChamber( chamber );

LogTrace(myName) << myName << ": Create chamber E" << jend << " S" << jstat
<< " R" << jring << " C" << jch
Expand Down Expand Up @@ -267,7 +267,7 @@ void CSCGeometryBuilder::buildChamber (
CSCDetId layerId = CSCDetId( jend, jstat, jring, jch, j );

// extra-careful check that we haven't already built this layer
const CSCLayer* cLayer = dynamic_cast<const CSCLayer*> (theGeometry->idToDet( layerId ) );
const CSCLayer* cLayer = dynamic_cast<const CSCLayer*> (theGeometry.idToDet( layerId ) );

if ( cLayer == nullptr ) {

Expand Down Expand Up @@ -298,7 +298,7 @@ void CSCGeometryBuilder::buildChamber (
<< " adr=" << layer << " layerGeom adr=" << geom ;

chamber->addComponent(j, layer);
theGeometry->addLayer( layer );
theGeometry.addLayer( layer );
}
else {
edm::LogError(myName) << ": ERROR, layer " << j <<
Expand Down
12 changes: 4 additions & 8 deletions Geometry/CSCGeometryBuilder/src/CSCGeometryBuilder.h
Expand Up @@ -15,8 +15,6 @@

#include <string>

#include <memory>

class CSCGeometry;

class CSCGeometryBuilder {
Expand All @@ -28,16 +26,14 @@ class CSCGeometryBuilder {
virtual ~CSCGeometryBuilder();

/// Build the geometry
void build( const std::shared_ptr<CSCGeometry>& theGeometry
, const RecoIdealGeometry& rig
, const CSCRecoDigiParameters& cscpars ) ;

protected:
void build( CSCGeometry& theGeometry
, const RecoIdealGeometry& rig
, const CSCRecoDigiParameters& cscpars ) ;

private:
/// Build one CSC chamber, and its component layers, and add them to the geometry
void buildChamber (
const std::shared_ptr<CSCGeometry>& theGeometry // the geometry container
CSCGeometry& theGeometry // the geometry container
, CSCDetId chamberId // the DetId of this chamber
, const std::vector<float>& fpar // volume parameters
, const std::vector<float>& fupar // user parameters
Expand Down
6 changes: 2 additions & 4 deletions Geometry/CSCGeometryBuilder/src/CSCGeometryBuilderFromDDD.cc
Expand Up @@ -16,7 +16,7 @@ CSCGeometryBuilderFromDDD::CSCGeometryBuilderFromDDD() : myName("CSCGeometryBuil
CSCGeometryBuilderFromDDD::~CSCGeometryBuilderFromDDD(){}


void CSCGeometryBuilderFromDDD::build(std::shared_ptr<CSCGeometry> geom, const DDCompactView* cview, const MuonDDDConstants& muonConstants){
void CSCGeometryBuilderFromDDD::build(CSCGeometry& geom, const DDCompactView* cview, const MuonDDDConstants& muonConstants){

RecoIdealGeometry rig;
CSCRecoDigiParameters rdp;
Expand All @@ -28,7 +28,5 @@ void CSCGeometryBuilderFromDDD::build(std::shared_ptr<CSCGeometry> geom, const D
throw cms::Exception("CSCGeometryBuilderFromDDD", "Failed to build the necessary objects from the DDD");
}
CSCGeometryBuilder realbuilder;
realbuilder.build(std::move(geom), rig, rdp);
// return realbuilder.build(rig, rdp);

realbuilder.build(geom, rig, rdp);
}
4 changes: 2 additions & 2 deletions Geometry/CSCGeometryBuilder/src/CSCGeometryBuilderFromDDD.h
Expand Up @@ -9,7 +9,7 @@
*/

#include <DataFormats/MuonDetId/interface/CSCDetId.h>
#include <memory>

#include <string>

class DDCompactView;
Expand All @@ -25,7 +25,7 @@ class CSCGeometryBuilderFromDDD {
virtual ~CSCGeometryBuilderFromDDD();

/// Build the geometry
void build(std::shared_ptr<CSCGeometry> geom, const DDCompactView* fv, const MuonDDDConstants& muonConstants);
void build(CSCGeometry& geom, const DDCompactView* fv, const MuonDDDConstants& muonConstants);

protected:

Expand Down
2 changes: 1 addition & 1 deletion Geometry/DTGeometryBuilder/plugins/DTGeometryESModule.cc
Expand Up @@ -112,7 +112,7 @@ void DTGeometryESModule::setupGeometry( const MuonNumberingRecord& record,
record.getRecord<IdealGeometryRecord>().get(cpv);

DTGeometryBuilderFromDDD builder;
builder.build(host, &(*cpv), *mdc);
builder.build(*host, &(*cpv), *mdc);
}

void DTGeometryESModule::setupDBGeometry( const DTRecoGeometryRcd& record,
Expand Down
16 changes: 6 additions & 10 deletions Geometry/DTGeometryBuilder/src/DTGeometryBuilderFromDDD.cc
Expand Up @@ -34,7 +34,7 @@ DTGeometryBuilderFromDDD::DTGeometryBuilderFromDDD() {}
DTGeometryBuilderFromDDD::~DTGeometryBuilderFromDDD(){}


void DTGeometryBuilderFromDDD::build(std::shared_ptr<DTGeometry> theGeometry,
void DTGeometryBuilderFromDDD::build(DTGeometry& theGeometry,
const DDCompactView* cview,
const MuonDDDConstants& muonConstants){
// cout << "DTGeometryBuilderFromDDD::build" << endl;
Expand All @@ -48,17 +48,13 @@ void DTGeometryBuilderFromDDD::build(std::shared_ptr<DTGeometry> theGeometry,
DDSpecificsMatchesValueFilter filter{DDValue(attribute, value, 0.0)};

DDFilteredView fview(*cview,filter);
buildGeometry(std::move(theGeometry), fview, muonConstants);
buildGeometry(theGeometry, fview, muonConstants);
}


void DTGeometryBuilderFromDDD::buildGeometry(const std::shared_ptr<DTGeometry>& theGeometry,
void DTGeometryBuilderFromDDD::buildGeometry(DTGeometry& theGeometry,
DDFilteredView& fv,
const MuonDDDConstants& muonConstants) const {
// static const string t0 = "DTGeometryBuilderFromDDD::buildGeometry";
// TimeMe timer(t0,true);

//DTGeometry* theGeometry = new DTGeometry;

bool doChamber = fv.firstChild();

Expand All @@ -82,15 +78,15 @@ void DTGeometryBuilderFromDDD::buildGeometry(const std::shared_ptr<DTGeometry>&
while (doSL) {
SLCounter++;
DTSuperLayer* sl = buildSuperLayer(fv, chamber, type, muonConstants);
theGeometry->add(sl);
theGeometry.add(sl);

bool doL = fv.firstChild();
int LCounter=0;
// Loop on SLs
while (doL) {
LCounter++;
DTLayer* layer = buildLayer(fv, sl, type, muonConstants);
theGeometry->add(layer);
theGeometry.add(layer);

fv.parent();
doL = fv.nextSibling(); // go to next layer
Expand All @@ -99,7 +95,7 @@ void DTGeometryBuilderFromDDD::buildGeometry(const std::shared_ptr<DTGeometry>&
fv.parent();
doSL = fv.nextSibling(); // go to next SL
} // sls
theGeometry->add(chamber);
theGeometry.add(chamber);

fv.parent();
doChamber = fv.nextSibling(); // go to next chamber
Expand Down
6 changes: 3 additions & 3 deletions Geometry/DTGeometryBuilder/src/DTGeometryBuilderFromDDD.h
Expand Up @@ -10,7 +10,7 @@
*/

#include "DataFormats/GeometrySurface/interface/Plane.h"
#include <memory>

#include <vector>

class DTGeometry;
Expand All @@ -31,7 +31,7 @@ class DTGeometryBuilderFromDDD {
virtual ~DTGeometryBuilderFromDDD();

// Operations
void build(std::shared_ptr<DTGeometry> theGeometry,
void build(DTGeometry& theGeometry,
const DDCompactView* cview,
const MuonDDDConstants& muonConstants);

Expand Down Expand Up @@ -61,7 +61,7 @@ class DTGeometryBuilderFromDDD {
RCPPlane plane(const DDFilteredView& fv,
Bounds * bounds) const ;

void buildGeometry(const std::shared_ptr<DTGeometry>& theGeometry,
void buildGeometry(DTGeometry& theGeometry,
DDFilteredView& fv,
const MuonDDDConstants& muonConstants) const;

Expand Down

0 comments on commit 497653c

Please sign in to comment.