![]() |
![]() |
#include <LHESource.h>
Public Member Functions | |
LHESource (const edm::ParameterSet ¶ms, const edm::InputSourceDescription &desc) | |
virtual | ~LHESource () |
Private Member Functions | |
virtual void | beginRun (edm::Run &run) |
virtual void | endJob () |
virtual void | endRun (edm::Run &run) |
virtual void | nextEvent () |
virtual void | produce (edm::Event &event) |
virtual bool | setRunAndEventInfo (edm::EventID &, edm::TimeValue_t &) |
Private Attributes | |
boost::shared_ptr< lhef::LHEEvent > | partonLevel |
std::auto_ptr< lhef::LHEReader > | reader |
boost::shared_ptr < lhef::LHERunInfo > | runInfo |
boost::shared_ptr < lhef::LHERunInfo > | runInfoLast |
boost::ptr_deque < LHERunInfoProduct > | runInfoProducts |
bool | wasMerged |
Definition at line 24 of file LHESource.h.
LHESource::LHESource | ( | const edm::ParameterSet & | params, |
const edm::InputSourceDescription & | desc | ||
) | [explicit] |
Definition at line 31 of file LHESource.cc.
: ProducerSourceFromFiles(params, desc, false), reader(new LHEReader(fileNames(), params.getUntrackedParameter<unsigned int>("skipEvents", 0))), wasMerged(false) { produces<LHEEventProduct>(); produces<LHERunInfoProduct, edm::InRun>(); }
LHESource::~LHESource | ( | ) | [virtual] |
Definition at line 41 of file LHESource.cc.
{ }
void LHESource::beginRun | ( | edm::Run & | run | ) | [private, virtual] |
Reimplemented from edm::ProducerSourceBase.
Definition at line 68 of file LHESource.cc.
References LHERunInfoProduct::addComment(), LHERunInfoProduct::addHeader(), nextEvent(), edm::Run::put(), runInfo, runInfoLast, runInfoProducts, and wasMerged.
{ nextEvent(); if (runInfoLast) { runInfo = runInfoLast; std::auto_ptr<LHERunInfoProduct> product( new LHERunInfoProduct(*runInfo->getHEPRUP())); std::for_each(runInfo->getHeaders().begin(), runInfo->getHeaders().end(), boost::bind( &LHERunInfoProduct::addHeader, product.get(), _1)); std::for_each(runInfo->getComments().begin(), runInfo->getComments().end(), boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); // keep a copy around in case of merging runInfoProducts.push_back(new LHERunInfoProduct(*product)); wasMerged = false; run.put(product); runInfo.reset(); } }
void LHESource::endJob | ( | void | ) | [private, virtual] |
Reimplemented from edm::InputSource.
Definition at line 45 of file LHESource.cc.
References reader.
{ reader.reset(); }
void LHESource::endRun | ( | edm::Run & | run | ) | [private, virtual] |
Reimplemented from edm::ProducerSourceBase.
Definition at line 96 of file LHESource.cc.
References edm::Run::put(), and runInfoProducts.
{ if (!runInfoProducts.empty()) { std::auto_ptr<LHERunInfoProduct> product( runInfoProducts.pop_front().release()); run.put(product); } }
void LHESource::nextEvent | ( | ) | [private, virtual] |
Definition at line 50 of file LHESource.cc.
References edm::ProducerSourceFromFiles::incrementFileIndex(), partonLevel, reader, runInfo, and runInfoLast.
Referenced by beginRun(), and setRunAndEventInfo().
{ if (partonLevel) return; bool newFileOpened = false; partonLevel = reader->next(&newFileOpened); if(newFileOpened) incrementFileIndex(); if (!partonLevel) return; boost::shared_ptr<LHERunInfo> runInfoThis = partonLevel->getRunInfo(); if (runInfoThis != runInfoLast) { runInfo = runInfoThis; runInfoLast = runInfoThis; } }
void LHESource::produce | ( | edm::Event & | event | ) | [private, virtual] |
Implements edm::ProducerSourceBase.
Definition at line 113 of file LHESource.cc.
References LHERunInfoProduct::addComment(), LHEEventProduct::addComment(), LHERunInfoProduct::addHeader(), partonLevel, runInfo, runInfoProducts, and wasMerged.
{ std::auto_ptr<LHEEventProduct> product( new LHEEventProduct(*partonLevel->getHEPEUP())); if (partonLevel->getPDF()) product->setPDF(*partonLevel->getPDF()); std::for_each(partonLevel->getComments().begin(), partonLevel->getComments().end(), boost::bind(&LHEEventProduct::addComment, product.get(), _1)); event.put(product); if (runInfo) { std::auto_ptr<LHERunInfoProduct> product( new LHERunInfoProduct(*runInfo->getHEPRUP())); std::for_each(runInfo->getHeaders().begin(), runInfo->getHeaders().end(), boost::bind( &LHERunInfoProduct::addHeader, product.get(), _1)); std::for_each(runInfo->getComments().begin(), runInfo->getComments().end(), boost::bind(&LHERunInfoProduct::addComment, product.get(), _1)); if (!runInfoProducts.empty()) { runInfoProducts.front().mergeProduct(*product); if (!wasMerged) { runInfoProducts.pop_front(); runInfoProducts.push_front(product); wasMerged = true; } } runInfo.reset(); } partonLevel.reset(); }
bool LHESource::setRunAndEventInfo | ( | edm::EventID & | , |
edm::TimeValue_t & | |||
) | [private, virtual] |
Implements edm::ProducerSourceBase.
Definition at line 105 of file LHESource.cc.
References nextEvent(), and partonLevel.
{ nextEvent(); if (!partonLevel) return false; return true; }
boost::shared_ptr<lhef::LHEEvent> LHESource::partonLevel [private] |
Definition at line 43 of file LHESource.h.
Referenced by nextEvent(), produce(), and setRunAndEventInfo().
std::auto_ptr<lhef::LHEReader> LHESource::reader [private] |
Definition at line 39 of file LHESource.h.
Referenced by endJob(), and nextEvent().
boost::shared_ptr<lhef::LHERunInfo> LHESource::runInfo [private] |
Definition at line 42 of file LHESource.h.
Referenced by beginRun(), nextEvent(), and produce().
boost::shared_ptr<lhef::LHERunInfo> LHESource::runInfoLast [private] |
Definition at line 41 of file LHESource.h.
Referenced by beginRun(), and nextEvent().
boost::ptr_deque<LHERunInfoProduct> LHESource::runInfoProducts [private] |
Definition at line 45 of file LHESource.h.
Referenced by beginRun(), endRun(), and produce().
bool LHESource::wasMerged [private] |
Definition at line 46 of file LHESource.h.
Referenced by beginRun(), and produce().