File indexing completed on 2023-03-17 11:25:05
0001 #ifndef SimG4Core_SensitiveDetector_SensitiveDetectorMaker_h
0002 #define SimG4Core_SensitiveDetector_SensitiveDetectorMaker_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "SimG4Core/SensitiveDetector/interface/SensitiveDetectorMakerBase.h"
0015 #include "SimG4Core/SensitiveDetector/interface/SensitiveDetector.h"
0016 #include "SimG4Core/Notification/interface/SimActivityRegistryEnroller.h"
0017
0018 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0019 #include "FWCore/Framework/interface/ConsumesCollector.h"
0020
0021
0022 class SimTrackManager;
0023 class SimActivityRegistry;
0024 class SensitiveDetectorCatalog;
0025
0026 namespace edm {
0027 class EventSetup;
0028 class ParameterSet;
0029 }
0030
0031 template <class T>
0032 class SensitiveDetectorMaker : public SensitiveDetectorMakerBase {
0033 public:
0034 explicit SensitiveDetectorMaker(edm::ParameterSet const&, edm::ConsumesCollector){};
0035 SensitiveDetectorMaker(const SensitiveDetectorMaker&) = delete;
0036 const SensitiveDetectorMaker& operator=(const SensitiveDetectorMaker&) = delete;
0037
0038
0039 std::unique_ptr<SensitiveDetector> make(const std::string& iname,
0040 const edm::EventSetup& es,
0041 const SensitiveDetectorCatalog& clg,
0042 const edm::ParameterSet& p,
0043 const SimTrackManager* man,
0044 SimActivityRegistry& reg) const override {
0045 auto sd = std::make_unique<T>(iname, es, clg, p, man);
0046 SimActivityRegistryEnroller::enroll(reg, sd.get());
0047 return sd;
0048 };
0049 };
0050
0051 #endif