File indexing completed on 2024-04-06 12:20:40
0001
0002 #include <memory>
0003
0004 #include "FWCore/Framework/interface/ESProducer.h"
0005 #include "FWCore/Framework/interface/ESProducts.h"
0006 #include "FWCore/Framework/interface/ModuleFactory.h"
0007
0008 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0009
0010 #include "L1Trigger/L1THGCal/interface/HGCalTriggerGeometryBase.h"
0011
0012 class HGCalTriggerGeometryESProducer : public edm::ESProducer {
0013 public:
0014 HGCalTriggerGeometryESProducer(const edm::ParameterSet&);
0015 ~HGCalTriggerGeometryESProducer() override;
0016
0017 typedef std::unique_ptr<HGCalTriggerGeometryBase> ReturnType;
0018
0019 ReturnType produce(const CaloGeometryRecord&);
0020
0021 private:
0022 edm::ParameterSet geometry_config_;
0023 std::string geometry_name_;
0024 edm::ESGetToken<HGCalGeometry, IdealGeometryRecord> ee_geometry_token_;
0025 edm::ESGetToken<HGCalGeometry, IdealGeometryRecord> hsi_geometry_token_;
0026 edm::ESGetToken<HGCalGeometry, IdealGeometryRecord> hsc_geometry_token_;
0027 edm::ESGetToken<HGCalGeometry, IdealGeometryRecord> nose_geometry_token_;
0028 bool isV9Geometry_;
0029 };
0030
0031 HGCalTriggerGeometryESProducer::HGCalTriggerGeometryESProducer(const edm::ParameterSet& iConfig)
0032 : geometry_config_(iConfig.getParameterSet("TriggerGeometry")),
0033 geometry_name_(geometry_config_.getParameter<std::string>("TriggerGeometryName")) {
0034 auto cc = setWhatProduced(this);
0035 ee_geometry_token_ = cc.consumes(edm::ESInputTag{"", "HGCalEESensitive"});
0036 hsi_geometry_token_ = cc.consumes(edm::ESInputTag{"", "HGCalHESiliconSensitive"});
0037 hsc_geometry_token_ = cc.consumes(edm::ESInputTag{"", "HGCalHEScintillatorSensitive"});
0038 nose_geometry_token_ = cc.consumes(edm::ESInputTag{"", "HGCalHFNoseSensitive"});
0039 }
0040
0041 HGCalTriggerGeometryESProducer::~HGCalTriggerGeometryESProducer() {
0042
0043
0044 }
0045
0046 HGCalTriggerGeometryESProducer::ReturnType HGCalTriggerGeometryESProducer::produce(const CaloGeometryRecord& iRecord) {
0047 ReturnType geometry(HGCalTriggerGeometryFactory::get()->create(geometry_name_, geometry_config_));
0048
0049
0050 if (iRecord.getHandle(nose_geometry_token_)) {
0051 geometry->setWithNoseGeometry(true);
0052 geometry->initialize(&iRecord.get(ee_geometry_token_),
0053 &iRecord.get(hsi_geometry_token_),
0054 &iRecord.get(hsc_geometry_token_),
0055 &iRecord.get(nose_geometry_token_));
0056 } else {
0057 geometry->initialize(
0058 &iRecord.get(ee_geometry_token_), &iRecord.get(hsi_geometry_token_), &iRecord.get(hsc_geometry_token_));
0059 }
0060 return geometry;
0061 }
0062
0063
0064 DEFINE_FWK_EVENTSETUP_MODULE(HGCalTriggerGeometryESProducer);