CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/IOMC/ParticleGuns/src/FlatBaseThetaGunSource.cc

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     // The Service has already instantiated an engine.  Make contact with it.
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   // The Service has already instantiated an engine.  Use it.
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 }