Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:25:05

0001 #ifndef SimG4Core_SensitiveDetector_SensitiveDetectorMaker_h
0002 #define SimG4Core_SensitiveDetector_SensitiveDetectorMaker_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     SensitiveDetector
0006 // Class  :     SensitiveDetectorMaker
0007 //
0008 //
0009 // Original Author:
0010 //         Created:  Mon Nov 14 11:56:05 EST 2005
0011 //
0012 
0013 // user include files
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 // forward declarations
0022 class SimTrackManager;
0023 class SimActivityRegistry;
0024 class SensitiveDetectorCatalog;
0025 
0026 namespace edm {
0027   class EventSetup;
0028   class ParameterSet;
0029 }  // namespace edm
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   // ---------- const member functions ---------------------
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