Go to the documentation of this file.00001 #include <ostream>
00002
00003 #include "IOMC/ParticleGuns/interface/FlatBaseThetaGunSource.h"
00004
00005 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00006
00007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00008
00009 #include "FWCore/ServiceRegistry/interface/Service.h"
00010 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
00011
00012 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
00013
00014 #include "FWCore/Utilities/interface/Exception.h"
00015
00016 #include <iostream>
00017
00018 using namespace edm;
00019
00020 namespace {
00021
00022 CLHEP::HepRandomEngine& getEngineReference() {
00023
00024 edm::Service<edm::RandomNumberGenerator> rng;
00025 if(!rng.isAvailable()) {
00026 throw cms::Exception("Configuration")
00027 << "The RandomNumberProducer module requires the RandomNumberGeneratorService\n"
00028 "which appears to be absent. Please add that service to your configuration\n"
00029 "or remove the modules that require it.";
00030 }
00031
00032
00033 return (rng->getEngine());
00034 }
00035 }
00036
00037 FlatBaseThetaGunSource::FlatBaseThetaGunSource(const edm::ParameterSet& pset,
00038 const edm::InputSourceDescription& desc ) :
00039 GeneratedInputSource (pset, desc),
00040 fEvt(0),
00041 fRandomEngine(getEngineReference()),
00042 fRandomGenerator(0) {
00043
00044 edm::ParameterSet defpset ;
00045 edm::ParameterSet pgun_params =
00046 pset.getUntrackedParameter<edm::ParameterSet>("PGunParameters", defpset ) ;
00047
00048 std::vector<int> defids ;
00049 defids.push_back(13) ;
00050 fPartIDs = pgun_params.getUntrackedParameter<std::vector<int> >("PartID",defids);
00051 fMinTheta = pgun_params.getUntrackedParameter<double>("MinTheta",0.0);
00052 fMaxTheta = pgun_params.getUntrackedParameter<double>("MaxTheta",3.14159265358979323846);
00053 fMinPhi = pgun_params.getUntrackedParameter<double>("MinPhi",-3.14159265358979323846);
00054 fMaxPhi = pgun_params.getUntrackedParameter<double>("MaxPhi", 3.14159265358979323846);
00055 fVerbosity = pset.getUntrackedParameter<int>( "Verbosity",0 ) ;
00056
00057
00058 fRandomGenerator = new CLHEP::RandFlat(fRandomEngine) ;
00059 fAddAntiParticle = pset.getUntrackedParameter<bool>("AddAntiParticle",false);
00060 }
00061
00062 FlatBaseThetaGunSource::~FlatBaseThetaGunSource() {
00063 if ( fRandomGenerator != NULL ) delete fRandomGenerator;
00064 }
00065
00066
00067 void FlatBaseThetaGunSource::beginRun( edm::Run & r, const edm::EventSetup& es ) {
00068 es.getData( fPDGTable ) ;
00069 }