00001 #ifndef SimG4Core_OscarProducer_H 00002 #define SimG4Core_OscarProducer_H 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/Framework/interface/Event.h" 00006 // #include "DataFormats/Common/interface/Handle.h" 00007 #include "DataFormats/Common/interface/Handle.h" 00008 #include "FWCore/Framework/interface/MakerMacros.h" 00009 #include "FWCore/Framework/interface/EventSetup.h" 00010 #include "FWCore/Framework/interface/Run.h" 00011 00012 #include "SimG4Core/Application/interface/RunManager.h" 00013 00014 #include "SimG4Core/Application/interface/CustomUIsession.h" 00015 00016 namespace CLHEP { 00017 class HepRandomEngine; 00018 } 00019 00020 class OscarProducer : public edm::EDProducer 00021 { 00022 public: 00023 typedef std::vector<boost::shared_ptr<SimProducer> > Producers; 00024 00025 explicit OscarProducer(edm::ParameterSet const & p); 00026 virtual ~OscarProducer(); 00027 virtual void beginRun(edm::Run & r,const edm::EventSetup & c); 00028 virtual void beginJob(); 00029 virtual void endJob(); 00030 virtual void produce(edm::Event & e, const edm::EventSetup & c); 00031 protected: 00032 RunManager* m_runManager; 00033 Producers m_producers; 00034 CustomUIsession* m_UIsession; 00035 00036 private: 00037 CLHEP::HepRandomEngine* m_engine; 00038 }; 00039 00040 #endif