CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
DTGeometryESModule Class Reference
Inheritance diagram for DTGeometryESModule:
edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

Public Member Functions

 DTGeometryESModule (const edm::ParameterSet &p)
 Constructor. More...
 
std::shared_ptr< DTGeometryproduce (const MuonGeometryRecord &record)
 Produce DTGeometry. More...
 
- Public Member Functions inherited from edm::ESProducer
 ESProducer ()
 
 ESProducer (const ESProducer &)=delete
 
ESProxyIndex const * getTokenIndices (unsigned int iIndex) const
 
ESRecordIndex const * getTokenRecordIndices (unsigned int iIndex) const
 
bool hasMayConsumes () const noexcept
 
size_t numberOfTokenIndices (unsigned int iIndex) const
 
ESProducer const & operator= (const ESProducer &)=delete
 
SerialTaskQueueChainqueue ()
 
template<typename Record >
std::optional< std::vector< ESProxyIndex > > updateFromMayConsumes (unsigned int iIndex, const Record &iRecord) const
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &) final
 
 ~ESProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::ESProxyFactoryProducer
 ESProxyFactoryProducer ()
 
 ESProxyFactoryProducer (const ESProxyFactoryProducer &)=delete
 
const ESProxyFactoryProduceroperator= (const ESProxyFactoryProducer &)=delete
 
 ~ESProxyFactoryProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::eventsetup::DataProxyProvider
void createKeyedProxies (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
 DataProxyProvider ()
 
 DataProxyProvider (const DataProxyProvider &)=delete
 
const ComponentDescriptiondescription () const
 
void fillRecordsNotAllowingConcurrentIOVs (std::set< EventSetupRecordKey > &recordsNotAllowingConcurrentIOVs) const
 
virtual void initConcurrentIOVs (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
bool isUsingRecord (const EventSetupRecordKey &key) const
 
KeyedProxieskeyedProxies (const EventSetupRecordKey &iRecordKey, unsigned int iovIndex=0)
 
const DataProxyProvideroperator= (const DataProxyProvider &)=delete
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~DataProxyProvider () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 Creation of configuration file. More...
 
- Static Public Member Functions inherited from edm::eventsetup::DataProxyProvider
static void prevalidate (ConfigurationDescriptions &)
 

Private Types

using HostType = edm::ESProductHost< DTGeometry, MuonNumberingRecord, DTRecoGeometryRcd >
 

Private Member Functions

void setupDBGeometry (DTRecoGeometryRcd const &, std::shared_ptr< HostType > &)
 
void setupDD4hepGeometry (MuonNumberingRecord const &, std::shared_ptr< HostType > &)
 
void setupDDDGeometry (MuonNumberingRecord const &, std::shared_ptr< HostType > &)
 

Private Attributes

edm::ESGetToken< AlignmentErrorsExtended, DTAlignmentErrorExtendedRcdalignmentErrorsToken_
 
const std::string alignmentsLabel_
 
edm::ESGetToken< Alignments, DTAlignmentRcdalignmentsToken_
 
bool applyAlignment_
 
edm::ESGetToken< DDCompactView, IdealGeometryRecordcpvToken_
 
bool fromDD4hep_
 
bool fromDDD_
 
edm::ESGetToken< Alignments, GlobalPositionRcdglobalPositionToken_
 
edm::ReusableObjectHolder< HostTypeholder_
 
const std::string m_attribute
 
edm::ESGetToken< cms::DDDetector, IdealGeometryRecordm_cpvToken
 
edm::ESGetToken< cms::DDSpecParRegistry, DDSpecParRegistryRcdm_registryToken
 
const edm::ESInputTag m_tag
 
const std::string m_value
 
edm::ESGetToken< MuonGeometryConstants, IdealGeometryRecordmdcToken_
 
const std::string myLabel_
 
edm::ESGetToken< RecoIdealGeometry, DTRecoGeometryRcdrigToken_
 

Additional Inherited Members

- Protected Types inherited from edm::ESProxyFactoryProducer
using EventSetupRecordKey = eventsetup::EventSetupRecordKey
 
- Protected Types inherited from edm::eventsetup::DataProxyProvider
using KeyedProxiesVector = std::vector< std::pair< DataKey, std::shared_ptr< DataProxy > >>
 
- Protected Member Functions inherited from edm::ESProducer
template<typename T >
auto setWhatProduced (T *iThis, const es::Label &iLabel={})
 
template<typename T >
auto setWhatProduced (T *iThis, const char *iLabel)
 
template<typename T >
auto setWhatProduced (T *iThis, const std::string &iLabel)
 
template<typename T , typename TDecorator >
auto setWhatProduced (T *iThis, const TDecorator &iDec, const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord >
auto setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord , typename TArg >
ESConsumesCollectorT< TRecord > setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const TArg &iDec, const es::Label &iLabel={})
 
void usesResources (std::vector< std::string > const &)
 
- Protected Member Functions inherited from edm::ESProxyFactoryProducer
template<class TFactory >
void registerFactory (std::unique_ptr< TFactory > iFactory, const std::string &iLabel=std::string())
 
virtual void registerFactoryWithKey (const EventSetupRecordKey &iRecord, std::unique_ptr< eventsetup::ProxyFactoryBase > iFactory, const std::string &iLabel=std::string())
 
KeyedProxiesVector registerProxies (const EventSetupRecordKey &, unsigned int iovIndex) override
 
- Protected Member Functions inherited from edm::eventsetup::DataProxyProvider
template<class T >
void usingRecord ()
 
void usingRecordWithKey (const EventSetupRecordKey &key)
 

Detailed Description

Definition at line 50 of file DTGeometryESModule.cc.

Member Typedef Documentation

◆ HostType

Definition at line 62 of file DTGeometryESModule.cc.

Constructor & Destructor Documentation

◆ DTGeometryESModule()

DTGeometryESModule::DTGeometryESModule ( const edm::ParameterSet p)

Constructor.

Definition at line 89 of file DTGeometryESModule.cc.

References alignmentErrorsToken_, alignmentsLabel_, alignmentsToken_, applyAlignment_, cpvToken_, volumeBasedMagneticField_dd4hep_160812_cfi::DDDetector, fromDD4hep_, fromDDD_, globalPositionToken_, m_cpvToken, m_registryToken, m_tag, mdcToken_, myLabel_, AlCaHLTBitMon_ParallelJobs::p, rigToken_, and edm::ESProducer::setWhatProduced().

90  : m_tag(p.getParameter<edm::ESInputTag>("DDDetector")),
91  alignmentsLabel_(p.getParameter<std::string>("alignmentsLabel")),
92  myLabel_(p.getParameter<std::string>("appendToDataLabel")),
93  m_attribute(p.getParameter<std::string>("attribute")),
94  m_value(p.getParameter<std::string>("value")),
95  fromDDD_(p.getParameter<bool>("fromDDD")),
96  fromDD4hep_(p.getParameter<bool>("fromDD4hep")) {
97  applyAlignment_ = p.getParameter<bool>("applyAlignment");
98 
99  auto cc = setWhatProduced(this);
100  if (applyAlignment_) {
105  }
106  if (fromDDD_) {
109  } else if (fromDD4hep_) {
113  } else {
115  }
116 
117  edm::LogVerbatim("Geometry") << "@SUB=DTGeometryESModule Label '" << myLabel_ << "' "
118  << (applyAlignment_ ? "looking for" : "IGNORING") << " alignment labels '"
119  << alignmentsLabel_ << "'.";
120 }
Log< level::Info, true > LogVerbatim
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:163
edm::ESGetToken< DDCompactView, IdealGeometryRecord > cpvToken_
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:81
edm::ESGetToken< cms::DDSpecParRegistry, DDSpecParRegistryRcd > m_registryToken
dd4hep::SpecParRegistry DDSpecParRegistry
Definition: DDCompactView.h:28
const std::string m_attribute
const std::string myLabel_
edm::ESGetToken< cms::DDDetector, IdealGeometryRecord > m_cpvToken
const edm::ESInputTag m_tag
const std::string alignmentsLabel_
edm::ESGetToken< MuonGeometryConstants, IdealGeometryRecord > mdcToken_
edm::ESGetToken< Alignments, GlobalPositionRcd > globalPositionToken_
const std::string m_value
edm::ESGetToken< Alignments, DTAlignmentRcd > alignmentsToken_
edm::ESGetToken< AlignmentErrorsExtended, DTAlignmentErrorExtendedRcd > alignmentErrorsToken_
edm::ESGetToken< RecoIdealGeometry, DTRecoGeometryRcd > rigToken_

Member Function Documentation

◆ fillDescriptions()

void DTGeometryESModule::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Creation of configuration file.

Definition at line 122 of file DTGeometryESModule.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and AlCaHLTBitMon_QueryRunRegistry::string.

122  {
123  //
124  // This cfi should be included to build the DT geometry model.
125  //
127  desc.add<bool>("fromDDD", true);
128  desc.add<bool>("fromDD4hep", false);
129  desc.add<edm::ESInputTag>("DDDetector", edm::ESInputTag("", ""));
130  desc.add<std::string>("alignmentsLabel", "");
131  desc.add<std::string>("appendToDataLabel", "");
132  desc.add<std::string>("attribute", "MuStructure");
133  desc.add<std::string>("value", "MuonBarrelDT");
134  desc.add<bool>("applyAlignment", true);
135  descriptions.add("DTGeometryESModule", desc);
136 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ produce()

std::shared_ptr< DTGeometry > DTGeometryESModule::produce ( const MuonGeometryRecord record)

Produce DTGeometry.

Definition at line 138 of file DTGeometryESModule.cc.

References GeometryAligner::applyAlignments(), align::DetectorGlobalPosition(), query::host, DetId::Muon, and AlCaHarvesting_cff::record.

138  {
139  auto host = holder_.makeOrGet([]() { return new HostType; });
140 
141  if (fromDDD_) {
142  host->ifRecordChanges<MuonNumberingRecord>(record, [this, &host](auto const& rec) { setupDDDGeometry(rec, host); });
143  } else if (fromDD4hep_) {
144  host->ifRecordChanges<MuonNumberingRecord>(record,
145  [this, &host](auto const& rec) { setupDD4hepGeometry(rec, host); });
146  } else {
147  host->ifRecordChanges<DTRecoGeometryRcd>(record, [this, &host](auto const& rec) { setupDBGeometry(rec, host); });
148  }
149  //
150  // Called whenever the alignments or alignment errors change
151  //
152  if (applyAlignment_) {
153  // applyAlignment_ is scheduled for removal.
154  // Ideal geometry obtained by using 'fake alignment' (with applyAlignment_ = true)
155  const auto& globalPosition = record.get(globalPositionToken_);
156  const auto& alignments = record.get(alignmentsToken_);
157  const auto& alignmentErrors = record.get(alignmentErrorsToken_);
158  // Only apply alignment if values exist
159  if (alignments.empty() && alignmentErrors.empty() && globalPosition.empty()) {
160  edm::LogVerbatim("Geometry") << "@SUB=DTGeometryRecord::produce Alignment(Error)s and global position (label '"
161  << alignmentsLabel_ << "') empty: Geometry producer (label '" << myLabel_
162  << "') assumes fake and does not apply.";
163  } else {
164  GeometryAligner aligner;
165  aligner.applyAlignments<DTGeometry>(
166  &(*host), &alignments, &alignmentErrors, align::DetectorGlobalPosition(globalPosition, DetId(DetId::Muon)));
167  }
168  }
169 
170  return host; // automatically converts to std::shared_ptr<DTGeometry>
171 }
Log< level::Info, true > LogVerbatim
void setupDD4hepGeometry(MuonNumberingRecord const &, std::shared_ptr< HostType > &)
void setupDDDGeometry(MuonNumberingRecord const &, std::shared_ptr< HostType > &)
string host
Definition: query.py:115
Class to update a given geometry with a set of alignments.
edm::ReusableObjectHolder< HostType > holder_
void applyAlignments(const C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
const std::string myLabel_
const std::string alignmentsLabel_
std::shared_ptr< T > makeOrGet(FM &&iMakeFunc)
Takes an object from the queue if one is available, or creates one using iMakeFunc.
edm::ESProductHost< DTGeometry, MuonNumberingRecord, DTRecoGeometryRcd > HostType
void setupDBGeometry(DTRecoGeometryRcd const &, std::shared_ptr< HostType > &)
edm::ESGetToken< Alignments, GlobalPositionRcd > globalPositionToken_
Definition: DetId.h:17
edm::ESGetToken< Alignments, DTAlignmentRcd > alignmentsToken_
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
edm::ESGetToken< AlignmentErrorsExtended, DTAlignmentErrorExtendedRcd > alignmentErrorsToken_

◆ setupDBGeometry()

void DTGeometryESModule::setupDBGeometry ( DTRecoGeometryRcd const &  record,
std::shared_ptr< HostType > &  host 
)
private

Definition at line 201 of file DTGeometryESModule.cc.

References DTGeometryBuilderFromCondDB::build(), query::host, and AlCaHarvesting_cff::record.

201  {
202  //
203  // Called whenever the muon numbering (or ideal geometry) changes
204  //
205 
206  host->clear();
207 
208  const auto& rig = record.get(rigToken_);
209 
211  builder.build(host, rig);
212 }
string host
Definition: query.py:115
void build(const std::shared_ptr< DTGeometry > &theGeometry, const RecoIdealGeometry &rig)
edm::ESGetToken< RecoIdealGeometry, DTRecoGeometryRcd > rigToken_

◆ setupDD4hepGeometry()

void DTGeometryESModule::setupDD4hepGeometry ( MuonNumberingRecord const &  record,
std::shared_ptr< HostType > &  host 
)
private

Definition at line 187 of file DTGeometryESModule.cc.

References DTGeometryBuilderFromDD4hep::build(), query::host, edm::ESTransientHandle< T >::product(), and AlCaHarvesting_cff::record.

187  {
188  host->clear();
189 
190  const auto& mdc = record.get(mdcToken_);
193 
194  cms::DDSpecParRefs myReg;
195  registry->filter(myReg, m_attribute, m_value);
196 
198  builder.build(*host, cpv.product(), mdc, myReg);
199 }
string host
Definition: query.py:115
dd4hep::SpecParRefs DDSpecParRefs
Definition: DDCompactView.h:29
edm::ESGetToken< cms::DDSpecParRegistry, DDSpecParRegistryRcd > m_registryToken
const std::string m_attribute
edm::ESGetToken< cms::DDDetector, IdealGeometryRecord > m_cpvToken
edm::ESGetToken< MuonGeometryConstants, IdealGeometryRecord > mdcToken_
const std::string m_value
T const * product() const
void build(DTGeometry &, const cms::DDDetector *, const MuonGeometryConstants &, const dd4hep::SpecParRefs &)

◆ setupDDDGeometry()

void DTGeometryESModule::setupDDDGeometry ( MuonNumberingRecord const &  record,
std::shared_ptr< HostType > &  host 
)
private

Definition at line 173 of file DTGeometryESModule.cc.

References DTGeometryBuilderFromDDD::build(), query::host, edm::ESTransientHandle< T >::product(), and AlCaHarvesting_cff::record.

173  {
174  //
175  // Called whenever the muon numbering (or ideal geometry) changes
176  //
177 
178  host->clear();
179 
180  const auto& mdc = record.get(mdcToken_);
181  edm::ESTransientHandle<DDCompactView> cpv = record.getTransientHandle(cpvToken_);
182 
183  DTGeometryBuilderFromDDD builder;
184  builder.build(*host, cpv.product(), mdc);
185 }
edm::ESGetToken< DDCompactView, IdealGeometryRecord > cpvToken_
string host
Definition: query.py:115
void build(DTGeometry &theGeometry, const DDCompactView *cview, const MuonGeometryConstants &muonConstants)
edm::ESGetToken< MuonGeometryConstants, IdealGeometryRecord > mdcToken_
T const * product() const

Member Data Documentation

◆ alignmentErrorsToken_

edm::ESGetToken<AlignmentErrorsExtended, DTAlignmentErrorExtendedRcd> DTGeometryESModule::alignmentErrorsToken_
private

Definition at line 72 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ alignmentsLabel_

const std::string DTGeometryESModule::alignmentsLabel_
private

Definition at line 80 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ alignmentsToken_

edm::ESGetToken<Alignments, DTAlignmentRcd> DTGeometryESModule::alignmentsToken_
private

Definition at line 71 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ applyAlignment_

bool DTGeometryESModule::applyAlignment_
private

Definition at line 86 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ cpvToken_

edm::ESGetToken<DDCompactView, IdealGeometryRecord> DTGeometryESModule::cpvToken_
private

Definition at line 74 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ fromDD4hep_

bool DTGeometryESModule::fromDD4hep_
private

Definition at line 85 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ fromDDD_

bool DTGeometryESModule::fromDDD_
private

Definition at line 84 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ globalPositionToken_

edm::ESGetToken<Alignments, GlobalPositionRcd> DTGeometryESModule::globalPositionToken_
private

Definition at line 70 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ holder_

edm::ReusableObjectHolder<HostType> DTGeometryESModule::holder_
private

Definition at line 68 of file DTGeometryESModule.cc.

◆ m_attribute

const std::string DTGeometryESModule::m_attribute
private

Definition at line 82 of file DTGeometryESModule.cc.

◆ m_cpvToken

edm::ESGetToken<cms::DDDetector, IdealGeometryRecord> DTGeometryESModule::m_cpvToken
private

Definition at line 75 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ m_registryToken

edm::ESGetToken<cms::DDSpecParRegistry, DDSpecParRegistryRcd> DTGeometryESModule::m_registryToken
private

Definition at line 76 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ m_tag

const edm::ESInputTag DTGeometryESModule::m_tag
private

Definition at line 79 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ m_value

const std::string DTGeometryESModule::m_value
private

Definition at line 83 of file DTGeometryESModule.cc.

◆ mdcToken_

edm::ESGetToken<MuonGeometryConstants, IdealGeometryRecord> DTGeometryESModule::mdcToken_
private

Definition at line 73 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ myLabel_

const std::string DTGeometryESModule::myLabel_
private

Definition at line 81 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().

◆ rigToken_

edm::ESGetToken<RecoIdealGeometry, DTRecoGeometryRcd> DTGeometryESModule::rigToken_
private

Definition at line 77 of file DTGeometryESModule.cc.

Referenced by DTGeometryESModule().