CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
CaloGeometryBuilder Class Reference

#include <tmp/CaloGeometryBuilder/interface/CaloGeometryBuilder.h>

Inheritance diagram for CaloGeometryBuilder:
edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

Public Types

using ReturnType = std::unique_ptr< CaloGeometry >
 

Public Member Functions

 CaloGeometryBuilder (const edm::ParameterSet &iConfig)
 
ReturnType produceAligned (const CaloGeometryRecord &iRecord)
 
 ~CaloGeometryBuilder () override
 
- Public Member Functions inherited from edm::ESProducer
 ESProducer ()
 
 ESProducer (const ESProducer &)=delete
 
ESProxyIndex const * getTokenIndices (unsigned int iIndex) const
 
ESProducer const & operator= (const ESProducer &)=delete
 
template<typename Record >
void updateFromMayConsumes (unsigned int iIndex, const Record &iRecord)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &) final
 
 ~ESProducer ()(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)
 

Private Attributes

edm::ESGetToken< CaloSubdetectorGeometry, CaloTowerGeometryRecordcaloTowerToken_
 
edm::ESGetToken< CaloSubdetectorGeometry, CastorGeometryRecordcastorToken_
 
edm::ESGetToken< CaloSubdetectorGeometry, EcalBarrelGeometryRecordecalBarrelToken_
 
edm::ESGetToken< CaloSubdetectorGeometry, EcalEndcapGeometryRecordecalEndcapToken_
 
edm::ESGetToken< CaloSubdetectorGeometry, EcalPreshowerGeometryRecordecalPreshowerToken_
 
edm::ESGetToken< CaloSubdetectorGeometry, HcalGeometryRecordhcalToken_
 
std::vector< std::pair< edm::ESGetToken< HGCalGeometry, IdealGeometryRecord >, std::string > > hgcalTokens_
 
edm::ESGetToken< CaloSubdetectorGeometry, ZDCGeometryRecordzdcToken_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::eventsetup::DataProxyProvider
static void prevalidate (ConfigurationDescriptions &)
 
- 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={})
 
- 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

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 38 of file CaloGeometryBuilder.h.

Member Typedef Documentation

Definition at line 40 of file CaloGeometryBuilder.h.

Constructor & Destructor Documentation

CaloGeometryBuilder::CaloGeometryBuilder ( const edm::ParameterSet iConfig)

Definition at line 52 of file CaloGeometryBuilder.cc.

References caloTowerToken_, castorToken_, edm::ESConsumesCollector::consumesFrom(), ecalBarrelToken_, ecalEndcapToken_, ecalPreshowerToken_, HTMLExport::elem(), edm::ParameterSet::getParameter(), hcalToken_, hgcalTokens_, produceAligned(), CaloTowerGeometry::producerTag(), ZdcGeometry::producerTag(), CastorGeometry::producerTag(), EcalPreshowerGeometry::producerTag(), HcalGeometry::producerTag(), EcalEndcapGeometry::producerTag(), EcalBarrelGeometry::producerTag(), HGCalGeometry::producerTag(), edm::ESProducer::setWhatProduced(), AlCaHLTBitMon_QueryRunRegistry::string, and zdcToken_.

52  {
53  //the following line is needed to tell the framework what
54  // data is being produced
56 
57  //now do what ever other initialization is needed
58  auto caloList = iConfig.getParameter<std::vector<std::string> >("SelectedCalos");
59  if (caloList.empty())
60  throw cms::Exception("Configuration") << "No calorimeter specified for geometry, aborting";
61 
62  makeToken(cc, caloList, HcalGeometry::producerTag(), hcalToken_);
63  makeToken(cc, caloList, ZdcGeometry::producerTag(), zdcToken_);
64  makeToken(cc, caloList, CastorGeometry::producerTag(), castorToken_);
65  makeToken(cc, caloList, EcalBarrelGeometry::producerTag(), ecalBarrelToken_);
66  makeToken(cc, caloList, EcalEndcapGeometry::producerTag(), ecalEndcapToken_);
67  makeToken(cc, caloList, EcalPreshowerGeometry::producerTag(), ecalPreshowerToken_);
68  makeToken(cc, caloList, CaloTowerGeometry::producerTag(), caloTowerToken_);
69 
70  // Move HGC elements to the end
71  auto hgcBegin = std::partition(caloList.begin(), caloList.end(), [](std::string const& elem) {
72  return elem.find(HGCalGeometry::producerTag()) == std::string::npos;
73  });
74  // Process HGC elements
75  for (auto iter = hgcBegin; iter != caloList.end(); ++iter) {
76  hgcalTokens_.emplace_back(cc.consumesFrom<HGCalGeometry, IdealGeometryRecord>(edm::ESInputTag{"", *iter}), *iter);
77  }
78  // Erase HGC elements
79  caloList.erase(hgcBegin, caloList.end());
80 
81  // Throw if any elements are left
82  if (not caloList.empty()) {
83  cms::Exception ex{"Configuration"};
84  ex << "Reconstruction geometry requested for a not implemented sub-detectors:";
85  for (auto const& elem : caloList) {
86  ex << " " << elem;
87  }
88  throw ex;
89  }
90 }
T getParameter(std::string const &) const
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:138
static std::string producerTag()
Definition: ZdcGeometry.h:44
static std::string producerTag()
static std::string producerTag()
Definition: HcalGeometry.h:63
edm::ESGetToken< CaloSubdetectorGeometry, CaloTowerGeometryRecord > caloTowerToken_
static std::string producerTag()
edm::ESGetToken< CaloSubdetectorGeometry, HcalGeometryRecord > hcalToken_
static std::string producerTag()
static std::string producerTag()
std::vector< std::pair< edm::ESGetToken< HGCalGeometry, IdealGeometryRecord >, std::string > > hgcalTokens_
def elem(elemtype, innerHTML='', html_class='', kwargs)
Definition: HTMLExport.py:19
edm::ESGetToken< CaloSubdetectorGeometry, CastorGeometryRecord > castorToken_
static std::string producerTag()
edm::ESGetToken< CaloSubdetectorGeometry, EcalBarrelGeometryRecord > ecalBarrelToken_
edm::ESGetToken< CaloSubdetectorGeometry, ZDCGeometryRecord > zdcToken_
static std::string producerTag()
edm::ESGetToken< CaloSubdetectorGeometry, EcalPreshowerGeometryRecord > ecalPreshowerToken_
edm::ESGetToken< CaloSubdetectorGeometry, EcalEndcapGeometryRecord > ecalEndcapToken_
ReturnType produceAligned(const CaloGeometryRecord &iRecord)
CaloGeometryBuilder::~CaloGeometryBuilder ( )
inlineoverride

Definition at line 44 of file CaloGeometryBuilder.h.

References produceAligned().

44 {};

Member Function Documentation

CaloGeometryBuilder::ReturnType CaloGeometryBuilder::produceAligned ( const CaloGeometryRecord iRecord)

Definition at line 94 of file CaloGeometryBuilder.cc.

References DetId::Calo, caloTowerToken_, castorToken_, DetId::Ecal, EcalBarrel, ecalBarrelToken_, EcalEndcap, ecalEndcapToken_, EcalPreshower, ecalPreshowerToken_, edm::eventsetup::DependentRecordImplementation< RecordT, ListT >::get(), DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, hcalToken_, hgcalTokens_, edm::ESGetToken< ESProduct, ESRecord >::isInitialized(), HcalZDCDetId::SubdetectorId, HcalCastorDetId::SubdetectorId, and zdcToken_.

Referenced by CaloGeometryBuilder(), and ~CaloGeometryBuilder().

94  {
96 
97  ReturnType pCalo = std::make_unique<CaloGeometry>();
98 
99  // look for HCAL parts
100  // assume 'HCAL' for all of HCAL.
101  if (hcalToken_.isInitialized()) {
102  edm::LogVerbatim("CaloGeometryBuilder") << "Building HCAL reconstruction geometry";
103 
104  auto const& pG = iRecord.get(hcalToken_);
105  pCalo->setSubdetGeometry(DetId::Hcal, HcalBarrel, &pG);
106  pCalo->setSubdetGeometry(DetId::Hcal, HcalEndcap, &pG);
107  pCalo->setSubdetGeometry(DetId::Hcal, HcalOuter, &pG);
108  pCalo->setSubdetGeometry(DetId::Hcal, HcalForward, &pG);
109  }
110  if (zdcToken_.isInitialized()) {
111  edm::LogVerbatim("CaloGeometryBuilder") << "Building ZDC reconstruction geometry";
112  auto const& pG = iRecord.get(zdcToken_);
113  pCalo->setSubdetGeometry(DetId::Calo, HcalZDCDetId::SubdetectorId, &pG);
114  }
115  if (castorToken_.isInitialized()) {
116  edm::LogVerbatim("CaloGeometryBuilder") << "Building CASTOR reconstruction geometry";
117  auto const& pG = iRecord.get(castorToken_);
118  pCalo->setSubdetGeometry(DetId::Calo, HcalCastorDetId::SubdetectorId, &pG);
119  }
120 
121  // look for Ecal Barrel
123  edm::LogVerbatim("CaloGeometryBuilder") << "Building EcalBarrel reconstruction geometry";
124  auto const& pG = iRecord.get(ecalBarrelToken_);
125  pCalo->setSubdetGeometry(DetId::Ecal, EcalBarrel, &pG);
126  }
127  // look for Ecal Endcap
129  edm::LogVerbatim("CaloGeometryBuilder") << "Building EcalEndcap reconstruction geometry";
130  auto const& pG = iRecord.get(ecalEndcapToken_);
131  pCalo->setSubdetGeometry(DetId::Ecal, EcalEndcap, &pG);
132  }
133  // look for Ecal Preshower
135  edm::LogVerbatim("CaloGeometryBuilder") << "Building EcalPreshower reconstruction geometry";
136  const auto& pG = iRecord.get(ecalPreshowerToken_);
137  pCalo->setSubdetGeometry(DetId::Ecal, EcalPreshower, &pG);
138  }
139 
140  // look for TOWER parts
142  edm::LogVerbatim("CaloGeometryBuilder") << "Building TOWER reconstruction geometry";
143  const auto& pG = iRecord.get(caloTowerToken_);
144  pCalo->setSubdetGeometry(DetId::Calo, 1, &pG);
145  }
146 
147  for (auto const& hgcTokenLabel : hgcalTokens_) {
148  edm::LogVerbatim("CaloGeometryBuilder") << "Building " << hgcTokenLabel.second << " reconstruction geometry";
149  auto const& pHG = iRecord.get(hgcTokenLabel.first);
150  const auto& topo = pHG.topology();
151  pCalo->setSubdetGeometry(topo.detector(), topo.subDetector(), &pHG);
152  }
153 
154  return pCalo;
155 }
edm::ESGetToken< CaloSubdetectorGeometry, CaloTowerGeometryRecord > caloTowerToken_
edm::ESGetToken< CaloSubdetectorGeometry, HcalGeometryRecord > hcalToken_
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
static const int SubdetectorId
std::vector< std::pair< edm::ESGetToken< HGCalGeometry, IdealGeometryRecord >, std::string > > hgcalTokens_
edm::ESGetToken< CaloSubdetectorGeometry, CastorGeometryRecord > castorToken_
edm::ESGetToken< CaloSubdetectorGeometry, EcalBarrelGeometryRecord > ecalBarrelToken_
static const int SubdetectorId
Definition: HcalZDCDetId.h:25
edm::ESGetToken< CaloSubdetectorGeometry, ZDCGeometryRecord > zdcToken_
std::unique_ptr< CaloGeometry > ReturnType
edm::ESGetToken< CaloSubdetectorGeometry, EcalPreshowerGeometryRecord > ecalPreshowerToken_
constexpr bool isInitialized() const noexcept
Definition: ESGetToken.h:52
edm::ESGetToken< CaloSubdetectorGeometry, EcalEndcapGeometryRecord > ecalEndcapToken_

Member Data Documentation

edm::ESGetToken<CaloSubdetectorGeometry, CaloTowerGeometryRecord> CaloGeometryBuilder::caloTowerToken_
private

Definition at line 57 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

edm::ESGetToken<CaloSubdetectorGeometry, CastorGeometryRecord> CaloGeometryBuilder::castorToken_
private

Definition at line 53 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

edm::ESGetToken<CaloSubdetectorGeometry, EcalBarrelGeometryRecord> CaloGeometryBuilder::ecalBarrelToken_
private

Definition at line 54 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

edm::ESGetToken<CaloSubdetectorGeometry, EcalEndcapGeometryRecord> CaloGeometryBuilder::ecalEndcapToken_
private

Definition at line 55 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

edm::ESGetToken<CaloSubdetectorGeometry, EcalPreshowerGeometryRecord> CaloGeometryBuilder::ecalPreshowerToken_
private

Definition at line 56 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

edm::ESGetToken<CaloSubdetectorGeometry, HcalGeometryRecord> CaloGeometryBuilder::hcalToken_
private

Definition at line 51 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

std::vector<std::pair<edm::ESGetToken<HGCalGeometry, IdealGeometryRecord>, std::string> > CaloGeometryBuilder::hgcalTokens_
private

Definition at line 58 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().

edm::ESGetToken<CaloSubdetectorGeometry, ZDCGeometryRecord> CaloGeometryBuilder::zdcToken_
private

Definition at line 52 of file CaloGeometryBuilder.h.

Referenced by CaloGeometryBuilder(), and produceAligned().