CMS 3D CMS Logo

HGCalTriggerGeometryESProducer.cc
Go to the documentation of this file.
1 
2 #include <memory>
3 
7 
9 
11 
13 public:
16 
17  typedef std::unique_ptr<HGCalTriggerGeometryBase> ReturnType;
18 
19  ReturnType produce(const CaloGeometryRecord&);
20 
21 private:
29 };
30 
32  : geometry_config_(iConfig.getParameterSet("TriggerGeometry")),
33  geometry_name_(geometry_config_.getParameter<std::string>("TriggerGeometryName")),
34  isV9Geometry_(iConfig.getParameter<bool>("isV9Geometry")) {
35  auto cc = setWhatProduced(this);
36  if (isV9Geometry_) {
37  cc.setConsumes(ee_geometry_token_, edm::ESInputTag{"", "HGCalEESensitive"})
38  .setConsumes(hsi_geometry_token_, edm::ESInputTag{"", "HGCalHESiliconSensitive"})
39  .setConsumes(hsc_geometry_token_, edm::ESInputTag{"", "HGCalHEScintillatorSensitive"});
40  } else {
41  cc.setConsumes(calo_geometry_token_);
42  }
43 }
44 
46  // do anything here that needs to be done at desctruction time
47  // (e.g. close files, deallocate resources etc.)
48 }
49 
51  //using namespace edm::es;
53  if (isV9Geometry_) {
54  // Initialize trigger geometry for V9 HGCAL geometry
55  geometry->initialize(
56  &iRecord.get(ee_geometry_token_), &iRecord.get(hsi_geometry_token_), &iRecord.get(hsc_geometry_token_));
57  } else {
58  // Initialize trigger geometry for V7/V8 HGCAL geometry
59  const auto& calo_geometry = iRecord.get(calo_geometry_token_);
60  if (not(calo_geometry.getSubdetectorGeometry(DetId::Forward, HGCEE) &&
61  calo_geometry.getSubdetectorGeometry(DetId::Forward, HGCHEF) &&
62  calo_geometry.getSubdetectorGeometry(DetId::Hcal, HcalEndcap))) {
63  throw cms::Exception("LogicError")
64  << "Configuration asked for non-V9 geometry, but the CaloGeometry does not look like one";
65  }
66  geometry->initialize(&calo_geometry);
67  }
68  return geometry;
69 }
70 
71 //define this as a plug-in
ReturnType produce(const CaloGeometryRecord &)
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:138
def create(alignables, pedeDump, additionalData, outputFile, config)
HGCalTriggerGeometryESProducer(const edm::ParameterSet &)
ParameterSet const & getParameterSet(ParameterSetID const &id)
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > calo_geometry_token_
edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > hsi_geometry_token_
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:60
std::unique_ptr< HGCalTriggerGeometryBase > ReturnType
ESHandle< TrackerGeometry > geometry
edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > hsc_geometry_token_
edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > ee_geometry_token_