![]() |
![]() |
00001 00002 #include "IOMC/RandomEngine/src/RandomEngineStateProducer.h" 00003 #include "FWCore/ServiceRegistry/interface/Service.h" 00004 #include "FWCore/Utilities/interface/RandomNumberGenerator.h" 00005 #include "SimDataFormats/RandomEngine/interface/RandomEngineStates.h" 00006 #include "FWCore/Framework/interface/Event.h" 00007 #include "FWCore/Framework/interface/LuminosityBlock.h" 00008 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" 00010 00011 #include <memory> 00012 00013 RandomEngineStateProducer::RandomEngineStateProducer(edm::ParameterSet const& pset) { 00014 produces<edm::RandomEngineStates, edm::InLumi>("beginLumi"); 00015 produces<edm::RandomEngineStates>(); 00016 } 00017 00018 RandomEngineStateProducer::~RandomEngineStateProducer() { 00019 } 00020 00021 void 00022 RandomEngineStateProducer::produce(edm::Event& ev, edm::EventSetup const& es) { 00023 edm::Service<edm::RandomNumberGenerator> randomService; 00024 if (randomService.isAvailable()) { 00025 std::auto_ptr<edm::RandomEngineStates> states(new edm::RandomEngineStates); 00026 states->setRandomEngineStates(randomService->getEventCache()); 00027 ev.put(states); 00028 } 00029 } 00030 00031 void 00032 RandomEngineStateProducer::beginLuminosityBlock(edm::LuminosityBlock& lb, edm::EventSetup const& es) { 00033 edm::Service<edm::RandomNumberGenerator> randomService; 00034 if (randomService.isAvailable()) { 00035 std::auto_ptr<edm::RandomEngineStates> states(new edm::RandomEngineStates); 00036 states->setRandomEngineStates(randomService->getLumiCache()); 00037 lb.put(states, "beginLumi"); 00038 } 00039 } 00040 00041 void 00042 RandomEngineStateProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { 00043 edm::ParameterSetDescription desc; 00044 descriptions.add("randomEngineStateProducer", desc); 00045 }