File indexing completed on 2024-04-06 12:30:05
0001
0002
0003
0004 #include "SimG4Core/SensitiveDetector/interface/SensitiveDetectorMakerBase.h"
0005 #include "SimG4Core/Notification/interface/SimActivityRegistryEnroller.h"
0006 #include "SimG4Core/SensitiveDetector/interface/SensitiveDetectorPluginFactory.h"
0007
0008 #include "Geometry/HcalTestBeamData/interface/HcalTB02Parameters.h"
0009 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0010 #include "SimG4CMS/HcalTestBeam/interface/HcalTB02SD.h"
0011
0012 #include "FWCore/Framework/interface/ConsumesCollector.h"
0013 #include "FWCore/Utilities/interface/ESGetToken.h"
0014 #include "FWCore/PluginManager/interface/ModuleDef.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016
0017 class HcalTB02SensitiveDetectorBuilder : public SensitiveDetectorMakerBase {
0018 public:
0019 explicit HcalTB02SensitiveDetectorBuilder(edm::ParameterSet const& p, edm::ConsumesCollector cc)
0020 : ebParToken_{cc.esConsumes<HcalTB02Parameters, IdealGeometryRecord, edm::Transition::BeginRun>(
0021 edm::ESInputTag{"", "EcalHitsEB"})},
0022 hcParToken_{cc.esConsumes<HcalTB02Parameters, IdealGeometryRecord, edm::Transition::BeginRun>(
0023 edm::ESInputTag{"", "HcalHits"})},
0024 ebPar_{nullptr},
0025 hcPar_{nullptr} {}
0026
0027 void beginRun(const edm::EventSetup& es) final {
0028 ebPar_ = &es.getData(ebParToken_);
0029 hcPar_ = &es.getData(hcParToken_);
0030 }
0031
0032 std::unique_ptr<SensitiveDetector> make(const std::string& iname,
0033 const SensitiveDetectorCatalog& clg,
0034 const edm::ParameterSet& p,
0035 const SimTrackManager* man,
0036 SimActivityRegistry& reg) const final {
0037 auto par = ((iname == "EcalHitsEB") ? ebPar_ : ((iname == "HcalHits") ? hcPar_ : nullptr));
0038 auto sd = std::make_unique<HcalTB02SD>(iname, par, clg, p, man);
0039 SimActivityRegistryEnroller::enroll(reg, sd.get());
0040 return sd;
0041 }
0042
0043 private:
0044 const edm::ESGetToken<HcalTB02Parameters, IdealGeometryRecord> ebParToken_;
0045 const edm::ESGetToken<HcalTB02Parameters, IdealGeometryRecord> hcParToken_;
0046 const HcalTB02Parameters* ebPar_;
0047 const HcalTB02Parameters* hcPar_;
0048 };
0049
0050 typedef HcalTB02SD HcalTB02SensitiveDetector;
0051 DEFINE_SENSITIVEDETECTORBUILDER(HcalTB02SensitiveDetectorBuilder, HcalTB02SensitiveDetector);