CMS 3D CMS Logo

GeometryProducer.h
Go to the documentation of this file.
1 #ifndef SimG4Core_GeometryProducer_H
2 #define SimG4Core_GeometryProducer_H
3 
11 
16 
17 #include <memory>
18 #include <unordered_map>
19 
20 namespace sim {
21  class FieldBuilder;
22 }
23 
24 namespace cms {
25  class DDCompactView;
26 }
27 
28 class SimWatcher;
29 class SimProducer;
30 class DDDWorld;
31 class G4RunManagerKernel;
32 class SimTrackManager;
34 class DDCompactView;
35 
36 class GeometryProducer : public edm::one::EDProducer<edm::one::SharedResources, edm::one::WatchRuns> {
37 public:
38  typedef std::vector<std::shared_ptr<SimProducer>> Producers;
39 
40  explicit GeometryProducer(edm::ParameterSet const &p);
41  ~GeometryProducer() override;
42  void beginRun(const edm::Run &r, const edm::EventSetup &c) override;
43  void endRun(const edm::Run &r, const edm::EventSetup &c) override;
44  void produce(edm::Event &e, const edm::EventSetup &c) override;
46 
47  std::vector<std::shared_ptr<SimProducer>> producers() const { return m_producers; }
48  std::vector<SensitiveTkDetector *> &sensTkDetectors() { return m_sensTkDets; }
49  std::vector<SensitiveCaloDetector *> &sensCaloDetectors() { return m_sensCaloDets; }
50 
51 private:
52  void updateMagneticField(edm::EventSetup const &es);
53 
54  G4RunManagerKernel *m_kernel;
57  std::vector<std::shared_ptr<SimWatcher>> m_watchers;
58  std::vector<std::shared_ptr<SimProducer>> m_producers;
59  std::unique_ptr<sim::FieldBuilder> m_fieldBuilder;
60  std::unique_ptr<SimTrackManager> m_trackManager;
61  std::vector<SensitiveTkDetector *> m_sensTkDets;
62  std::vector<SensitiveCaloDetector *> m_sensCaloDets;
63  std::unordered_map<std::string, std::unique_ptr<SensitiveDetectorMakerBase>> m_sdMakers;
65 
66  mutable const DDCompactView *m_pDD;
67  mutable const cms::DDCompactView *m_pDD4hep;
68 
69  bool m_firstRun;
73 };
74 
75 #endif
GeometryProducer::beginLuminosityBlock
void beginLuminosityBlock(edm::LuminosityBlock &, edm::EventSetup const &)
Definition: GeometryProducer.cc:106
SimTrackManager
Definition: SimTrackManager.h:35
Handle.h
GeometryProducer::m_pDD4hep
const cms::DDCompactView * m_pDD4hep
Definition: GeometryProducer.h:67
GeometryProducer::m_p
edm::ParameterSet m_p
Definition: GeometryProducer.h:64
EDProducer.h
GeometryProducer::m_pUseSensitiveDetectors
bool m_pUseSensitiveDetectors
Definition: GeometryProducer.h:71
GeometryProducer::m_sensCaloDets
std::vector< SensitiveCaloDetector * > m_sensCaloDets
Definition: GeometryProducer.h:62
SensitiveCaloDetector.h
GeometryProducer::m_pGeoFromDD4hep
bool m_pGeoFromDD4hep
Definition: GeometryProducer.h:72
DDDWorld
Definition: DDDWorld.h:14
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
edm::Run
Definition: Run.h:45
GeometryProducer::m_registry
SimActivityRegistry m_registry
Definition: GeometryProducer.h:56
GeometryProducer::producers
std::vector< std::shared_ptr< SimProducer > > producers() const
Definition: GeometryProducer.h:47
GeometryProducer::m_sdMakers
std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase > > m_sdMakers
Definition: GeometryProducer.h:63
GeometryProducer::sensTkDetectors
std::vector< SensitiveTkDetector * > & sensTkDetectors()
Definition: GeometryProducer.h:48
edm::one::EDProducer
Definition: EDProducer.h:30
GeometryProducer::produce
void produce(edm::Event &e, const edm::EventSetup &c) override
Definition: GeometryProducer.cc:120
SensitiveTkDetector.h
SimActivityRegistry.h
MakerMacros.h
DDCompactView
Compact representation of the geometrical detector hierarchy.
Definition: DDCompactView.h:81
Run.h
GeometryProducer::Producers
std::vector< std::shared_ptr< SimProducer > > Producers
Definition: GeometryProducer.h:38
GeometryProducer::endRun
void endRun(const edm::Run &r, const edm::EventSetup &c) override
Definition: GeometryProducer.cc:118
GeometryProducer::updateMagneticField
void updateMagneticField(edm::EventSetup const &es)
Definition: GeometryProducer.cc:89
edm::ParameterSet
Definition: ParameterSet.h:47
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
Event.h
SimProducer
Definition: SimProducer.h:64
sim
Definition: GeometryProducer.h:20
SensitiveDetectorMakerBase
Definition: SensitiveDetectorMakerBase.h:28
GeometryProducer::GeometryProducer
GeometryProducer(edm::ParameterSet const &p)
Definition: GeometryProducer.cc:65
GeometryProducer::m_fieldBuilder
std::unique_ptr< sim::FieldBuilder > m_fieldBuilder
Definition: GeometryProducer.h:59
SimWatcher
Definition: SimWatcher.h:27
GeometryProducer::m_kernel
G4RunManagerKernel * m_kernel
Definition: GeometryProducer.h:54
edm::EventSetup
Definition: EventSetup.h:58
GeometryProducer::m_sensTkDets
std::vector< SensitiveTkDetector * > m_sensTkDets
Definition: GeometryProducer.h:61
GeometryProducer::m_pDD
const DDCompactView * m_pDD
Definition: GeometryProducer.h:66
alignCSCRings.r
r
Definition: alignCSCRings.py:93
GeometryProducer::sensCaloDetectors
std::vector< SensitiveCaloDetector * > & sensCaloDetectors()
Definition: GeometryProducer.h:49
GeometryProducer::m_producers
std::vector< std::shared_ptr< SimProducer > > m_producers
Definition: GeometryProducer.h:58
GeometryProducer::m_firstRun
bool m_firstRun
Definition: GeometryProducer.h:69
GeometryProducer::beginRun
void beginRun(const edm::Run &r, const edm::EventSetup &c) override
Definition: GeometryProducer.cc:111
SimActivityRegistry
Definition: SimActivityRegistry.h:39
SensitiveDetector.h
cms::DDCompactView
Definition: DDCompactView.h:31
EventSetup.h
GeometryProducer::m_watchers
std::vector< std::shared_ptr< SimWatcher > > m_watchers
Definition: GeometryProducer.h:57
ParameterSet.h
GeometryProducer
Definition: GeometryProducer.h:36
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
GeometryProducer::m_trackManager
std::unique_ptr< SimTrackManager > m_trackManager
Definition: GeometryProducer.h:60
edm::Event
Definition: Event.h:73
GeometryProducer::m_pUseMagneticField
bool m_pUseMagneticField
Definition: GeometryProducer.h:70
GeometryProducer::~GeometryProducer
~GeometryProducer() override
Definition: GeometryProducer.cc:87
cms
Namespace of DDCMS conversion namespace.
Definition: ProducerAnalyzer.cc:21
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
GeometryProducer::m_pField
edm::ParameterSet m_pField
Definition: GeometryProducer.h:55