|
|
Go to the documentation of this file.
27 #include "G4RunManagerKernel.hh"
28 #include "G4TransportationManager.hh"
34 std::vector<std::shared_ptr<SimWatcher>> &oWatchers,
35 std::vector<std::shared_ptr<SimProducer>> &oProds) {
38 std::vector<ParameterSet> watchers;
40 watchers = iP.
getParameter<vector<ParameterSet>>(
"Watchers");
44 for (std::vector<ParameterSet>::iterator itWatcher = watchers.begin(); itWatcher != watchers.end(); ++itWatcher) {
45 std::unique_ptr<SimWatcherMakerBase> maker(
47 if (maker.get() ==
nullptr) {
48 throw cms::Exception(
"SimG4CoreGeometryProducer",
" createWatchers: Unable to find the requested Watcher");
51 std::shared_ptr<SimWatcher> watcherTemp;
52 std::shared_ptr<SimProducer> producerTemp;
53 maker->make(*itWatcher, iReg, watcherTemp, producerTemp);
54 oWatchers.push_back(watcherTemp);
56 oProds.push_back(producerTemp);
62 m_pUseMagneticField(
p.getParameter<
bool>(
"UseMagneticField")),
64 m_pUseSensitiveDetectors(
p.getParameter<
bool>(
"UseSensitiveDetectors")),
92 G4TransportationManager *tM = G4TransportationManager::GetTransportationManager();
93 tM->SetFieldManager(fieldManager);
94 fieldBuilder.build(fieldManager, tM->GetPropagatorInField());
95 edm::LogInfo(
"GeometryProducer") <<
"Magentic field is built";
113 edm::LogInfo(
"GeometryProducer") <<
"Producing G4 Geom";
115 m_kernel = G4RunManagerKernel::GetRunManagerKernel();
117 m_kernel =
new G4RunManagerKernel();
118 edm::LogInfo(
"GeometryProducer") <<
" GeometryProducer initializing ";
131 edm::LogInfo(
"GeometryProducer") <<
" instantiating sensitive detectors ";
137 std::pair<std::vector<SensitiveTkDetector *>, std::vector<SensitiveCaloDetector *>> sensDets =
145 <<
" Tk type Producers, and " <<
m_sensCaloDets.size() <<
" Calo type producers ";
149 (*itProd)->produce(
e, es);
T const * product() const
void beginLuminosityBlock(edm::LuminosityBlock &, edm::EventSetup const &)
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
bool m_pUseSensitiveDetectors
std::vector< SensitiveCaloDetector * > m_sensCaloDets
SimActivityRegistry m_registry
DDDWorldSignal dddWorldSignal_
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > create(const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *, SimActivityRegistry ®) const
void produce(edm::Event &e, const edm::EventSetup &c) override
def create(alignables, pedeDump, additionalData, outputFile, config)
#define DEFINE_FWK_MODULE(type)
void endRun(const edm::Run &r, const edm::EventSetup &c) override
void updateMagneticField(edm::EventSetup const &es)
GeometryProducer(edm::ParameterSet const &p)
G4RunManagerKernel * m_kernel
std::vector< SensitiveTkDetector * > m_sensTkDets
static void createWatchers(const edm::ParameterSet &iP, SimActivityRegistry &iReg, std::vector< std::shared_ptr< SimWatcher >> &oWatchers, std::vector< std::shared_ptr< SimProducer >> &oProds)
T getParameter(std::string const &) const
std::vector< std::shared_ptr< SimProducer > > m_producers
void beginRun(const edm::Run &r, const edm::EventSetup &c) override
void connect(Observer< const BeginOfJob * > *iObject)
std::vector< std::shared_ptr< SimWatcher > > m_watchers
std::unique_ptr< SimTrackManager > m_trackManager
~GeometryProducer() override
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
edm::ParameterSet m_pField