File indexing completed on 2025-04-04 01:26:45
0001 #include <iostream>
0002 #include <memory>
0003
0004 #include "FWCore/AbstractServices/interface/RandomNumberGenerator.h"
0005 #include "FWCore/Framework/interface/Run.h"
0006 #include "FWCore/ServiceRegistry/interface/Service.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 #include "FWCore/Utilities/interface/Exception.h"
0009
0010 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0011 #include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h"
0012
0013 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
0014
0015 #include "IOMC/ParticleGuns/interface/FlatBaseThetaGunProducer.h"
0016
0017 using namespace edm;
0018
0019 FlatBaseThetaGunProducer::FlatBaseThetaGunProducer(const edm::ParameterSet& pset)
0020 : fPDGTableToken(esConsumes<Transition::BeginRun>()), fEvt(nullptr) {
0021 edm::ParameterSet pgun_params = pset.getParameter<edm::ParameterSet>("PGunParameters");
0022
0023 fPartIDs = pgun_params.getParameter<std::vector<int> >("PartID");
0024 fMinTheta = pgun_params.getParameter<double>("MinTheta");
0025 fMaxTheta = pgun_params.getParameter<double>("MaxTheta");
0026 fMinPhi = pgun_params.getParameter<double>("MinPhi");
0027 fMaxPhi = pgun_params.getParameter<double>("MaxPhi");
0028 fVerbosity = pset.getUntrackedParameter<int>("Verbosity", 0);
0029
0030 fAddAntiParticle = pset.getParameter<bool>("AddAntiParticle");
0031
0032 edm::Service<edm::RandomNumberGenerator> rng;
0033 if (!rng.isAvailable()) {
0034 throw cms::Exception("Configuration") << "The module inheriting from FlatBaseThetaGunProducer requires the\n"
0035 "RandomNumberGeneratorService, which appears to be absent. Please\n"
0036 "add that service to your configuration or remove the modules that"
0037 "require it.";
0038 }
0039
0040 produces<GenRunInfoProduct, Transition::EndRun>();
0041 }
0042
0043 FlatBaseThetaGunProducer::~FlatBaseThetaGunProducer() {}
0044
0045 void FlatBaseThetaGunProducer::beginRun(const edm::Run& r, const edm::EventSetup& es) {
0046 fPDGTable = es.getHandle(fPDGTableToken);
0047 }
0048 void FlatBaseThetaGunProducer::endRun(const Run& run, const EventSetup& es) {}
0049
0050 void FlatBaseThetaGunProducer::endRunProduce(Run& run, const EventSetup& es) {
0051
0052
0053
0054 std::unique_ptr<GenRunInfoProduct> genRunInfo(new GenRunInfoProduct());
0055 run.put(std::move(genRunInfo));
0056 }