26 #include "G4RunManagerKernel.hh"
27 #include "G4TransportationManager.hh"
33 std::vector<std::shared_ptr<SimWatcher> >& oWatchers,
34 std::vector<std::shared_ptr<SimProducer> >& oProds)
38 vector<ParameterSet> watchers;
39 try { watchers = iP.
getParameter<vector<ParameterSet> >(
"Watchers"); }
42 for(vector<ParameterSet>::iterator itWatcher = watchers.begin();
43 itWatcher != watchers.end(); ++itWatcher)
45 std::auto_ptr<SimWatcherMakerBase>
47 if(maker.get()==0) {
throw SimG4Exception(
"Unable to find the requested Watcher"); }
49 std::shared_ptr<SimWatcher> watcherTemp;
50 std::shared_ptr<SimProducer> producerTemp;
51 maker->make(*itWatcher,iReg,watcherTemp,producerTemp);
52 oWatchers.push_back(watcherTemp);
53 if(producerTemp) oProds.push_back(producerTemp);
59 m_pUseMagneticField(p.getParameter<bool>(
"UseMagneticField")),
60 m_pField(p.getParameter<edm::
ParameterSet>(
"MagneticField")),
61 m_pUseSensitiveDetectors(p.getParameter<bool>(
"UseSensitiveDetectors")),
63 m_attach(0), m_p(p), m_firstRun (
true )
87 LogDebug(
"GeometryProducer") <<
"B-field(T) at (0,0,0)(cm): " << pMF->inTesla(g) << std::endl;
91 G4TransportationManager * tM = G4TransportationManager::GetTransportationManager();
93 m_fieldBuilder->build( tM->GetFieldManager(),tM->GetPropagatorInField());
95 LogDebug(
"GeometryProducer") <<
"Magentic field updated" << std::endl;
115 LogDebug(
"GeometryProducer") <<
"Producing G4 Geom" << std::endl;
117 m_kernel = G4RunManagerKernel::GetRunManagerKernel();
119 std::cout <<
" GeometryProducer initializing " << std::endl;
120 LogDebug(
"GeometryProducer") <<
" GeometryProducer initializing " << std::endl;
134 LogDebug(
"GeometryProducer") <<
" instantiating sensitive detectors " << std::endl;
139 std::pair< std::vector<SensitiveTkDetector*>,
140 std::vector<SensitiveCaloDetector*> >
147 LogDebug(
"GeometryProducer") <<
" Sensitive Detector building finished; found " <<
m_sensTkDets.size()
149 <<
" Calo type producers " << std::endl;
154 (*itProd)->produce(e,es);
T getParameter(std::string const &) const
GeometryProducer(edm::ParameterSet const &p)
void connect(Observer< const BeginOfJob * > *iObject)
edm::ParameterSet m_pField
#define DEFINE_FWK_MODULE(type)
virtual ~GeometryProducer() override
bool m_pUseSensitiveDetectors
std::auto_ptr< SimTrackManager > m_trackManager
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
std::vector< std::shared_ptr< SimWatcher > > m_watchers
G4RunManagerKernel * m_kernel
static void createWatchers(const edm::ParameterSet &iP, SimActivityRegistry &iReg, std::vector< std::shared_ptr< SimWatcher > > &oWatchers, std::vector< std::shared_ptr< SimProducer > > &oProds)
std::vector< std::shared_ptr< SimProducer > > m_producers
SimActivityRegistry m_registry
void updateMagneticField(edm::EventSetup const &es)
std::vector< SensitiveTkDetector * > m_sensTkDets
DDDWorldSignal dddWorldSignal_
std::auto_ptr< sim::FieldBuilder > m_fieldBuilder
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > create(const DDDWorld &w, const DDCompactView &cpv, const SensitiveDetectorCatalog &clg, edm::ParameterSet const &p, const SimTrackManager *m, SimActivityRegistry ®) const
void beginLuminosityBlock(edm::LuminosityBlock &, edm::EventSetup const &)
void produce(edm::Event &e, const edm::EventSetup &c)
T get(const Candidate &c)
std::vector< SensitiveCaloDetector * > m_sensCaloDets