Skip to content

Commit

Permalink
Merge pull request #26736 from Dr15Jones/consumesMTDGeometryBuilder
Browse files Browse the repository at this point in the history
Modernized EventSetup modules in Geometry/MTDGeometryBuilder
  • Loading branch information
cmsbuild committed May 15, 2019
2 parents ec7e7da + 0d34f03 commit 000d651
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 108 deletions.
99 changes: 67 additions & 32 deletions Geometry/MTDGeometryBuilder/plugins/MTDDigiGeometryESModule.cc
@@ -1,4 +1,8 @@
#include "MTDDigiGeometryESModule.h"
#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "Geometry/Records/interface/MTDDigiGeometryRecord.h"
#include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h"

#include "Geometry/MTDGeometryBuilder/interface/MTDGeomBuilderFromGeometricTimingDet.h"
#include "Geometry/MTDGeometryBuilder/interface/MTDGeometry.h"
#include "Geometry/MTDNumberingBuilder/interface/GeometricTimingDet.h"
Expand Down Expand Up @@ -28,26 +32,65 @@
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"

#include <memory>
#include <string>

class MTDDigiGeometryESModule: public edm::ESProducer{
public:
MTDDigiGeometryESModule(const edm::ParameterSet & p);
std::unique_ptr<MTDGeometry> produce(const MTDDigiGeometryRecord &);

static void fillDescriptions(edm::ConfigurationDescriptions & descriptions);

private:
/// Called when geometry description changes
const std::string alignmentsLabel_;
const std::string myLabel_;

edm::ESGetToken<GeometricTimingDet,IdealGeometryRecord> geomTimingDetToken_;
edm::ESGetToken<MTDTopology,MTDTopologyRcd> mtdTopoToken_;
edm::ESGetToken<PMTDParameters,PMTDParametersRcd> pmtdParamsToken_;

//alignment
edm::ESGetToken<Alignments,GlobalPositionRcd> globalAlignToken_;
edm::ESGetToken<Alignments,MTDAlignmentRcd> mtdAlignToken_;
edm::ESGetToken<AlignmentErrorsExtended, MTDAlignmentErrorExtendedRcd> alignErrorsToken_;
edm::ESGetToken<AlignmentSurfaceDeformations, MTDSurfaceDeformationRcd> deformationsToken_;

const bool applyAlignment_; // Switch to apply alignment corrections
const bool fromDDD_;
};

//__________________________________________________________________
MTDDigiGeometryESModule::MTDDigiGeometryESModule(const edm::ParameterSet & p)
: alignmentsLabel_(p.getParameter<std::string>("alignmentsLabel")),
myLabel_(p.getParameter<std::string>("appendToDataLabel"))
myLabel_(p.getParameter<std::string>("appendToDataLabel")),
applyAlignment_(p.getParameter<bool>("applyAlignment")),
fromDDD_(p.getParameter<bool>("fromDDD"))

{
applyAlignment_ = p.getParameter<bool>("applyAlignment");
fromDDD_ = p.getParameter<bool>("fromDDD");

setWhatProduced(this);
auto cc = setWhatProduced(this);
const edm::ESInputTag kEmpty;
geomTimingDetToken_ = cc.consumesFrom<GeometricTimingDet,IdealGeometryRecord>(kEmpty);
mtdTopoToken_ = cc.consumesFrom<MTDTopology,MTDTopologyRcd>(kEmpty);
pmtdParamsToken_ = cc.consumesFrom<PMTDParameters,PMTDParametersRcd>(kEmpty);

edm::LogInfo("Geometry") << "@SUB=MTDDigiGeometryESModule"
<< "Label '" << myLabel_ << "' "
<< (applyAlignment_ ? "looking for" : "IGNORING")
<< " alignment labels '" << alignmentsLabel_ << "'.";
{
const edm::ESInputTag kAlignTag{"",alignmentsLabel_};
globalAlignToken_ = cc.consumesFrom<Alignments,GlobalPositionRcd>(kAlignTag);
mtdAlignToken_ = cc.consumesFrom<Alignments,MTDAlignmentRcd>(kAlignTag);
alignErrorsToken_ = cc.consumesFrom<AlignmentErrorsExtended, MTDAlignmentErrorExtendedRcd>(kAlignTag);
deformationsToken_ = cc.consumesFrom<AlignmentSurfaceDeformations, MTDSurfaceDeformationRcd>(kAlignTag);
}


edm::LogInfo("Geometry") << "@SUB=MTDDigiGeometryESModule"
<< "Label '" << myLabel_ << "' "
<< (applyAlignment_ ? "looking for" : "IGNORING")
<< " alignment labels '" << alignmentsLabel_ << "'.";
}

//__________________________________________________________________
MTDDigiGeometryESModule::~MTDDigiGeometryESModule() {}

void
MTDDigiGeometryESModule::fillDescriptions(edm::ConfigurationDescriptions & descriptions)
{
Expand All @@ -73,51 +116,43 @@ MTDDigiGeometryESModule::produce(const MTDDigiGeometryRecord & iRecord)
//
// Called whenever the alignments, alignment errors or global positions change
//
edm::ESHandle<GeometricTimingDet> gD;
iRecord.getRecord<IdealGeometryRecord>().get( gD );
GeometricTimingDet const& gD = iRecord.get( geomTimingDetToken_ );

edm::ESHandle<MTDTopology> tTopoHand;
iRecord.getRecord<MTDTopologyRcd>().get(tTopoHand);
const MTDTopology *tTopo=tTopoHand.product();
MTDTopology const& tTopo = iRecord.get( mtdTopoToken_ );

edm::ESHandle<PMTDParameters> ptp;
iRecord.getRecord<PMTDParametersRcd>().get( ptp );
PMTDParameters const& ptp = iRecord.get( pmtdParamsToken_ );

MTDGeomBuilderFromGeometricTimingDet builder;
std::unique_ptr<MTDGeometry> mtd(builder.build(&(*gD), *ptp, tTopo));
std::unique_ptr<MTDGeometry> mtd(builder.build(&(gD), ptp, &tTopo));

if (applyAlignment_) {
// Since fake is fully working when checking for 'empty', we should get rid of applyAlignment_!
edm::ESHandle<Alignments> globalPosition;
iRecord.getRecord<GlobalPositionRcd>().get(alignmentsLabel_, globalPosition);
edm::ESHandle<Alignments> alignments;
iRecord.getRecord<MTDAlignmentRcd>().get(alignmentsLabel_, alignments);
edm::ESHandle<AlignmentErrorsExtended> alignmentErrors;
iRecord.getRecord<MTDAlignmentErrorExtendedRcd>().get(alignmentsLabel_, alignmentErrors);
Alignments const& globalPosition = iRecord.get( globalAlignToken_ );
Alignments const& alignments = iRecord.get( mtdAlignToken_ );
AlignmentErrorsExtended const& alignmentErrors = iRecord.get( alignErrorsToken_ );
// apply if not empty:
if (alignments->empty() && alignmentErrors->empty() && globalPosition->empty()) {
if (alignments.empty() && alignmentErrors.empty() && globalPosition.empty()) {
edm::LogInfo("Config") << "@SUB=MTDDigiGeometryRecord::produce"
<< "Alignment(Error)s and global position (label '"
<< alignmentsLabel_ << "') empty: Geometry producer (label "
<< "'" << myLabel_ << "') assumes fake and does not apply.";
} else {
GeometryAligner ali;
ali.applyAlignments<MTDGeometry>(&(*mtd), &(*alignments), &(*alignmentErrors),
align::DetectorGlobalPosition(*globalPosition,
ali.applyAlignments<MTDGeometry>(mtd.get(), &(alignments), &(alignmentErrors),
align::DetectorGlobalPosition(globalPosition,
DetId(DetId::Forward)));
}

edm::ESHandle<AlignmentSurfaceDeformations> surfaceDeformations;
iRecord.getRecord<MTDSurfaceDeformationRcd>().get(alignmentsLabel_, surfaceDeformations);
AlignmentSurfaceDeformations const& surfaceDeformations = iRecord.get( deformationsToken_ );
// apply if not empty:
if (surfaceDeformations->empty()) {
if (surfaceDeformations.empty()) {
edm::LogInfo("Config") << "@SUB=MTDDigiGeometryRecord::produce"
<< "AlignmentSurfaceDeformations (label '"
<< alignmentsLabel_ << "') empty: Geometry producer (label "
<< "'" << myLabel_ << "') assumes fake and does not apply.";
} else {
GeometryAligner ali;
ali.attachSurfaceDeformations<MTDGeometry>(&(*mtd), &(*surfaceDeformations));
ali.attachSurfaceDeformations<MTDGeometry>(mtd.get(), &(surfaceDeformations));
}
}

Expand Down
32 changes: 0 additions & 32 deletions Geometry/MTDGeometryBuilder/plugins/MTDDigiGeometryESModule.h

This file was deleted.

34 changes: 23 additions & 11 deletions Geometry/MTDGeometryBuilder/plugins/MTDParametersESModule.cc
@@ -1,6 +1,7 @@
#include "MTDParametersESModule.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/Framework/interface/ModuleFactory.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/ESTransientHandle.h"
Expand All @@ -10,15 +11,28 @@
#include "Geometry/MTDGeometryBuilder/interface/MTDParametersFromDD.h"
#include "CondFormats/GeometryObjects/interface/PMTDParameters.h"

MTDParametersESModule::MTDParametersESModule( const edm::ParameterSet& pset)
#include <memory>

class MTDParametersESModule: public edm::ESProducer
{
edm::LogInfo("TRACKER") << "MTDParametersESModule::MTDParametersESModule";
public:
MTDParametersESModule( const edm::ParameterSet & );

setWhatProduced(this);
}
using ReturnType = std::unique_ptr<PMTDParameters>;

static void fillDescriptions( edm::ConfigurationDescriptions & );

ReturnType produce( const PMTDParametersRcd & );

private:
MTDParametersFromDD builder;
const edm::ESGetToken<DDCompactView, IdealGeometryRecord> compactViewToken_;
};

MTDParametersESModule::~MTDParametersESModule()
{
MTDParametersESModule::MTDParametersESModule( const edm::ParameterSet& pset) :
compactViewToken_{ setWhatProduced(this).consumesFrom<DDCompactView, IdealGeometryRecord>(edm::ESInputTag()) }
{
edm::LogInfo("TRACKER") << "MTDParametersESModule::MTDParametersESModule";
}

void
Expand All @@ -32,11 +46,9 @@ MTDParametersESModule::ReturnType
MTDParametersESModule::produce( const PMTDParametersRcd& iRecord )
{
edm::LogInfo("MTDParametersESModule") << "MTDParametersESModule::produce(const PMTDParametersRcd& iRecord)" << std::endl;
edm::ESTransientHandle<DDCompactView> cpv;
iRecord.getRecord<IdealGeometryRecord>().get( cpv );

auto cpv = iRecord.getTransientHandle( compactViewToken_ );
auto ptp = std::make_unique<PMTDParameters>();
builder.build( &(*cpv), *ptp );
builder.build( cpv.product(), *ptp );

return ptp;
}
Expand Down
33 changes: 0 additions & 33 deletions Geometry/MTDGeometryBuilder/plugins/MTDParametersESModule.h

This file was deleted.

0 comments on commit 000d651

Please sign in to comment.