File indexing completed on 2024-04-06 12:19:01
0001
0002
0003
0004
0005 #include "IOMC/EventVertexGenerators/interface/PassThroughEvtVtxGenerator.h"
0006
0007 #include "FWCore/Framework/interface/Event.h"
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009
0010 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0011 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0012
0013 #include "FWCore/ServiceRegistry/interface/Service.h"
0014 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
0015
0016 #include "FWCore/Utilities/interface/Exception.h"
0017
0018 #include "DataFormats/Provenance/interface/Provenance.h"
0019 #include "FWCore/Utilities/interface/EDMException.h"
0020
0021
0022
0023
0024
0025 using namespace edm;
0026 using namespace CLHEP;
0027
0028
0029 PassThroughEvtVtxGenerator::PassThroughEvtVtxGenerator(const ParameterSet& pset) : BaseEvtVtxGenerator(pset) {
0030 Service<RandomNumberGenerator> rng;
0031 if (!rng.isAvailable()) {
0032 throw cms::Exception("Configuration")
0033 << "The PassThroughEvtVtxGenerator requires the RandomNumberGeneratorService\n"
0034 "which is not present in the configuration file. \n"
0035 "You must add the service\n"
0036 "in the configuration file or remove the modules that require it.";
0037 }
0038 sourceToken = consumes<edm::HepMCProduct>(pset.getParameter<edm::InputTag>("src"));
0039 }
0040
0041 PassThroughEvtVtxGenerator::~PassThroughEvtVtxGenerator() {}
0042
0043 HepMC::FourVector PassThroughEvtVtxGenerator::newVertex(CLHEP::HepRandomEngine*) const {
0044 return HepMC::FourVector(0., 0., 0., 0);
0045 }
0046
0047 void PassThroughEvtVtxGenerator::produce(Event& evt, const EventSetup&) {
0048 edm::Service<edm::RandomNumberGenerator> rng;
0049
0050 Handle<HepMCProduct> HepUnsmearedMCEvt;
0051
0052 evt.getByToken(sourceToken, HepUnsmearedMCEvt);
0053
0054
0055 HepMC::GenEvent* genevt = new HepMC::GenEvent(*HepUnsmearedMCEvt->GetEvent());
0056 std::unique_ptr<edm::HepMCProduct> HepMCEvt(new edm::HepMCProduct(genevt));
0057
0058 evt.put(std::move(HepMCEvt));
0059
0060 return;
0061 }