CMS 3D CMS Logo

ThePEGSource Class Reference

Inheritance diagram for ThePEGSource:

edm::GeneratedInputSource ThePEGInterface edm::ConfigurableInputSource edm::InputSource edm::ProductRegistryHelper

List of all members.

Public Member Functions

 ThePEGSource (const edm::ParameterSet &params, const edm::InputSourceDescription &desc)
virtual ~ThePEGSource ()

Private Member Functions

virtual void beginRun (edm::Run &run)
virtual void endRun (edm::Run &run)
virtual bool produce (edm::Event &event)

Private Attributes

unsigned int eventsToPrint
const double extCrossSect
const double extFilterEff


Detailed Description

Definition at line 25 of file ThePEGSource.cc.


Constructor & Destructor Documentation

ThePEGSource::ThePEGSource ( const edm::ParameterSet params,
const edm::InputSourceDescription desc 
)

Definition at line 42 of file ThePEGSource.cc.

References ThePEGInterface::initRepository().

00043                                                                   :
00044         edm::GeneratedInputSource(pset, desc),
00045         ThePEGInterface(pset),
00046         eventsToPrint(pset.getUntrackedParameter<unsigned int>("eventsToPrint", 0)),
00047         extCrossSect(pset.getUntrackedParameter<double>("crossSection", -1.0)),
00048         extFilterEff(pset.getUntrackedParameter<double>("filterEfficiency", -1.0))
00049 {  
00050         initRepository(pset);
00051 
00052         produces<edm::HepMCProduct>();
00053         produces<edm::GenInfoProduct, edm::InRun>();
00054 }

ThePEGSource::~ThePEGSource (  )  [virtual]

Definition at line 56 of file ThePEGSource.cc.

00057 {
00058 }


Member Function Documentation

void ThePEGSource::beginRun ( edm::Run run  )  [private, virtual]

Reimplemented from edm::ConfigurableInputSource.

Definition at line 60 of file ThePEGSource.cc.

References ThePEGInterface::eg_, and ThePEGInterface::initGenerator().

00061 {
00062         initGenerator();
00063 
00064         edm::Service<edm::RandomNumberGenerator> rng;
00065         eg_->setSeed(rng->mySeed());
00066 }

void ThePEGSource::endRun ( edm::Run run  )  [private, virtual]

Reimplemented from edm::ConfigurableInputSource.

Definition at line 68 of file ThePEGSource.cc.

References ThePEGInterface::eg_, extCrossSect, extFilterEff, and edm::Run::put().

00069 {
00070         std::auto_ptr<edm::GenInfoProduct> genInfoProd(new edm::GenInfoProduct);
00071         genInfoProd->set_cross_section(eg_->integratedXSec() / ThePEG::picobarn);
00072         genInfoProd->set_external_cross_section(extCrossSect);
00073         genInfoProd->set_filter_efficiency(extFilterEff);
00074         run.put(genInfoProd);
00075 }

bool ThePEGSource::produce ( edm::Event event  )  [private, virtual]

Implements edm::ConfigurableInputSource.

Definition at line 77 of file ThePEGSource.cc.

References ThePEGInterface::clearAuxiliary(), ThePEGInterface::convert(), ThePEGInterface::eg_, eventsToPrint, ThePEGInterface::fillAuxiliary(), ThePEGInterface::iobc_, edm::ConfigurableInputSource::numberEventsInRun(), edm::InputSource::remainingEvents(), and HLT_VtxMuL3::result.

00078 {
00079         edm::LogInfo("Generator|ThePEGSource") << "Start production";
00080 
00081         ThePEG::EventPtr thepegEvent = eg_->shoot();
00082         if (!thepegEvent) {
00083                 edm::LogWarning("Generator|ThePEGSource") << "thepegEvent not initialized";
00084                 return false;
00085         }
00086 
00087         std::auto_ptr<HepMC::GenEvent> hepmcEvent = convert(thepegEvent);
00088         if (!hepmcEvent.get()) {
00089                 edm::LogWarning("Generator|ThePEGSource") << "hepmcEvent not initialized";
00090                 return false;
00091         }
00092 
00093         HepMC::PdfInfo pdf;
00094         clearAuxiliary(hepmcEvent.get(), &pdf);
00095         hepmcEvent->set_event_number(numberEventsInRun() -
00096                                      remainingEvents() - 1);
00097         fillAuxiliary(hepmcEvent.get(), &pdf, thepegEvent);
00098         hepmcEvent->set_pdf_info(pdf);
00099 
00100         if (eventsToPrint) {
00101                 eventsToPrint--;
00102                 hepmcEvent->print();
00103         }
00104 
00105         if (iobc_.get())
00106                 iobc_->write_event(hepmcEvent.get());
00107 
00108         std::auto_ptr<edm::HepMCProduct> result(new edm::HepMCProduct());
00109         result->addHepMCData(hepmcEvent.release());
00110         event.put(result);
00111         edm::LogInfo("Generator|ThePEGSource") << "Event produced";
00112 
00113         return true;
00114 }


Member Data Documentation

unsigned int ThePEGSource::eventsToPrint [private]

Definition at line 36 of file ThePEGSource.cc.

Referenced by produce().

const double ThePEGSource::extCrossSect [private]

Definition at line 38 of file ThePEGSource.cc.

Referenced by endRun().

const double ThePEGSource::extFilterEff [private]

Definition at line 39 of file ThePEGSource.cc.

Referenced by endRun().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:33:25 2009 for CMSSW by  doxygen 1.5.4