CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
ExternalLHEProducer Class Reference

#include <Example/ExternalLHEProducer/src/ExternalLHEProducer.cc>

Inheritance diagram for ExternalLHEProducer:
edm::one::EDProducer< edm::BeginRunProducer, edm::EndRunProducer > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

class  FileCloseSentry
 

Public Member Functions

 ExternalLHEProducer (const edm::ParameterSet &iConfig)
 
virtual ~ExternalLHEProducer ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::BeginRunProducer, edm::EndRunProducer >
 EDProducer ()=default
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

virtual void beginRunProduce (edm::Run &run, edm::EventSetup const &es) override
 
int closeDescriptors (int preserve)
 
virtual void endRunProduce (edm::Run &, edm::EventSetup const &) override
 
void executeScript ()
 
virtual void nextEvent ()
 
virtual void produce (edm::Event &, const edm::EventSetup &) override
 
std::auto_ptr< std::string > readOutput ()
 

Private Attributes

std::vector< std::string > args_
 
uint32_t nEvents_
 
uint32_t npars_
 
std::string outputContents_
 
std::string outputFile_
 
boost::shared_ptr< lhef::LHEEventpartonLevel
 
std::auto_ptr< lhef::LHEReaderreader_
 
boost::shared_ptr
< lhef::LHERunInfo
runInfo
 
boost::shared_ptr
< lhef::LHERunInfo
runInfoLast
 
boost::ptr_deque
< LHERunInfoProduct
runInfoProducts
 
std::string scriptName_
 
bool wasMerged
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 64 of file ExternalLHEProducer.cc.

Constructor & Destructor Documentation

ExternalLHEProducer::ExternalLHEProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 124 of file ExternalLHEProducer.cc.

References args_, and npars_.

124  :
125  scriptName_((iConfig.getParameter<edm::FileInPath>("scriptName")).fullPath().c_str()),
126  outputFile_(iConfig.getParameter<std::string>("outputFile")),
127  args_(iConfig.getParameter<std::vector<std::string> >("args")),
128  npars_(iConfig.getParameter<uint32_t>("numberOfParameters")),
129  nEvents_(iConfig.getUntrackedParameter<uint32_t>("nEvents"))
130 {
131  if (npars_ != args_.size())
132  throw cms::Exception("ExternalLHEProducer") << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_;
133  produces<LHEXMLStringProduct, edm::InRun>("LHEScriptOutput");
134 
135  produces<LHEEventProduct>();
136  produces<LHERunInfoProduct, edm::InRun>();
137 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::vector< std::string > args_
ExternalLHEProducer::~ExternalLHEProducer ( )
virtual

Definition at line 140 of file ExternalLHEProducer.cc.

141 {
142 }

Member Function Documentation

void ExternalLHEProducer::beginRunProduce ( edm::Run run,
edm::EventSetup const &  es 
)
overrideprivatevirtual

Definition at line 210 of file ExternalLHEProducer.cc.

References LHERunInfoProduct::addComment(), LHERunInfoProduct::addHeader(), args_, edm::hlt::Exception, executeScript(), edm::Service< T >::isAvailable(), LogDebug, edm::RandomNumberGenerator::mySeed(), nEvents_, nextEvent(), outputFile_, AlCaHLTBitMon_ParallelJobs::p, edm::Run::put(), reader_, runInfo, runInfoLast, runInfoProducts, runGlobalFakeInputProducer::skip, and wasMerged.

211 {
212 
213  // pass the number of events as previous to last argument
214 
215  std::ostringstream eventStream;
216  eventStream << nEvents_;
217  args_.push_back(eventStream.str());
218 
219  // pass the random number generator seed as last argument
220 
222 
223  if ( ! rng.isAvailable()) {
224  throw cms::Exception("Configuration")
225  << "The ExternalLHEProducer module requires the RandomNumberGeneratorService\n"
226  "which is not present in the configuration file. You must add the service\n"
227  "in the configuration file if you want to run ExternalLHEProducer";
228  }
229  std::ostringstream randomStream;
230  randomStream << rng->mySeed();
231  args_.push_back(randomStream.str());
232 
233  for ( unsigned int iArg = 0; iArg < args_.size() ; iArg++ ) {
234  LogDebug("LHEInputArgs") << "arg [" << iArg << "] = " << args_[iArg];
235  }
236 
237  executeScript();
238 
239  //fill LHEXMLProduct (streaming read directly into compressed buffer to save memory)
240  std::auto_ptr<LHEXMLStringProduct> p(new LHEXMLStringProduct);
241  std::ifstream instream(outputFile_);
242  if (!instream) {
243  throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << ".";
244  }
245  instream.seekg (0, instream.end);
246  int insize = instream.tellg();
247  instream.seekg (0, instream.beg);
248  p->fillCompressedContent(instream, 0.25*insize);
249  instream.close();
250  run.put(p, "LHEScriptOutput");
251 
252  // LHE C++ classes translation
253  // (read back uncompressed file from disk in streaming mode again to save memory)
254 
255  std::vector<std::string> infiles(1, outputFile_);
256  unsigned int skip = 0;
257  std::auto_ptr<lhef::LHEReader> thisRead( new lhef::LHEReader(infiles, skip ) );
258  reader_ = thisRead;
259 
260  nextEvent();
261  if (runInfoLast) {
263 
264  std::auto_ptr<LHERunInfoProduct> product(new LHERunInfoProduct(*runInfo->getHEPRUP()));
265  std::for_each(runInfo->getHeaders().begin(),
266  runInfo->getHeaders().end(),
267  boost::bind(&LHERunInfoProduct::addHeader,
268  product.get(), _1));
269  std::for_each(runInfo->getComments().begin(),
270  runInfo->getComments().end(),
271  boost::bind(&LHERunInfoProduct::addComment,
272  product.get(), _1));
273 
274  // keep a copy around in case of merging
275  runInfoProducts.push_back(new LHERunInfoProduct(*product));
276  wasMerged = false;
277 
278  run.put(product);
279 
280  runInfo.reset();
281  }
282 
283 }
#define LogDebug(id)
void addHeader(const Header &header)
std::vector< std::string > args_
std::auto_ptr< lhef::LHEReader > reader_
boost::shared_ptr< lhef::LHERunInfo > runInfoLast
virtual std::uint32_t mySeed() const =0
bool isAvailable() const
Definition: Service.h:46
boost::shared_ptr< lhef::LHERunInfo > runInfo
void addComment(const std::string &line)
void put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Run.h:107
boost::ptr_deque< LHERunInfoProduct > runInfoProducts
int ExternalLHEProducer::closeDescriptors ( int  preserve)
private

Definition at line 312 of file ExternalLHEProducer.cc.

References dqmPostProcessing_online::DIR, dir, and NULL.

Referenced by executeScript().

313 {
314  int maxfd = 1024;
315  int fd;
316 #ifdef __linux__
317  DIR * dir;
318  struct dirent *dp;
319  maxfd = preserve;
320  if ((dir = opendir("/proc/self/fd"))) {
321  errno = 0;
322  while ((dp = readdir (dir)) != NULL) {
323  if ((strcmp(dp->d_name, ".") == 0) || (strcmp(dp->d_name, "..") == 0)) {
324  continue;
325  }
326  if (sscanf(dp->d_name, "%d", &fd) != 1) {
327  //throw cms::Exception("closeDescriptors") << "Found unexpected filename in /proc/self/fd: " << dp->d_name;
328  return -1;
329  }
330  if (fd > maxfd) {
331  maxfd = fd;
332  }
333  }
334  if (errno) {
335  //throw cms::Exception("closeDescriptors") << "Unable to determine the number of fd (errno=" << errno << ", " << strerror(errno) << ").";
336  return errno;
337  }
338  closedir(dir);
339  }
340 #endif
341  // TODO: assert for an unreasonable number of fds?
342  for (fd=3; fd<maxfd+1; fd++) {
343  if (fd != preserve)
344  close(fd);
345  }
346  return 0;
347 }
#define NULL
Definition: scimark2.h:8
dbl *** dir
Definition: mlp_gen.cc:35
void ExternalLHEProducer::endRunProduce ( edm::Run run,
edm::EventSetup const &  es 
)
overrideprivatevirtual

Definition at line 287 of file ExternalLHEProducer.cc.

References edm::hlt::Exception, nextEvent(), outputFile_, partonLevel, edm::Run::put(), reader_, and runInfoProducts.

288 {
289 
290  if (!runInfoProducts.empty()) {
291  std::auto_ptr<LHERunInfoProduct> product(runInfoProducts.pop_front().release());
292  run.put(product);
293  }
294 
295  nextEvent();
296  if (partonLevel) {
297  throw cms::Exception("ExternalLHEProducer") << "Error in ExternalLHEProducer::endRunProduce(). "
298  << "Event loop is over, but there are still lhe events to process."
299  << "This could happen if lhe file contains more events than requested. This is never expected to happen.";
300  }
301 
302  reader_.reset();
303 
304  if (unlink(outputFile_.c_str())) {
305  throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ").";
306  }
307 
308 }
boost::shared_ptr< lhef::LHEEvent > partonLevel
std::auto_ptr< lhef::LHEReader > reader_
void put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Run.h:107
boost::ptr_deque< LHERunInfoProduct > runInfoProducts
void ExternalLHEProducer::executeScript ( )
private

Definition at line 351 of file ExternalLHEProducer.cc.

References dir2webdir::argc, args_, getDQMSummary::argv, closeDescriptors(), edm::hlt::Exception, i, NULL, sysUtil::pid, pipe::pipe(), SiPixelLorentzAngle_cfi::read, scriptName_, ntuplemaker::status, and TablePrint::write.

Referenced by beginRunProduce().

352 {
353 
354  // Fork a script, wait until it finishes.
355 
356  int rc = 0, rc2 = 0;
357  int filedes[2], fd_flags;
358  unsigned int argc;
359 
360  if (pipe(filedes)) {
361  throw cms::Exception("Unable to create a new pipe");
362  }
363  FileCloseSentry sentry1(filedes[0]), sentry2(filedes[1]);
364 
365  if ((fd_flags = fcntl(filedes[1], F_GETFD, NULL)) == -1) {
366  throw cms::Exception("ExternalLHEProducer") << "Failed to get pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")";
367  }
368  if (fcntl(filedes[1], F_SETFD, fd_flags | FD_CLOEXEC) == -1) {
369  throw cms::Exception("ExternalLHEProducer") << "Failed to set pipe file descriptor flags (errno=" << rc << ", " << strerror(rc) << ")";
370  }
371 
372  argc = 1 + args_.size();
373  // TODO: assert that we have a reasonable number of arguments
374  char **argv = new char *[argc+1];
375  argv[0] = strdup(scriptName_.c_str());
376  for (unsigned int i=1; i<argc; i++) {
377  argv[i] = strdup(args_[i-1].c_str());
378  }
379  argv[argc] = NULL;
380 
381  pid_t pid = fork();
382  if (pid == 0) {
383  // The child process
384  if (!(rc = closeDescriptors(filedes[1]))) {
385  execvp(argv[0], argv); // If execv returns, we have an error.
386  rc = errno;
387  }
388  while ((write(filedes[1], &rc, sizeof(int)) == -1) && (errno == EINTR)) {}
389  _exit(1);
390  }
391 
392  // Free the arg vector ASAP
393  for (unsigned int i=0; i<args_.size()+1; i++) {
394  free(argv[i]);
395  }
396  delete [] argv;
397 
398  if (pid == -1) {
399  throw cms::Exception("ForkException") << "Unable to fork a child (errno=" << errno << ", " << strerror(errno) << ")";
400  }
401 
402  close(filedes[1]);
403  // If the exec succeeds, the read will fail.
404  while (((rc2 = read(filedes[0], &rc, sizeof(int))) == -1) && (errno == EINTR)) { rc2 = 0; }
405  if ((rc2 == sizeof(int)) && rc) {
406  throw cms::Exception("ExternalLHEProducer") << "Failed to execute script (errno=" << rc << ", " << strerror(rc) << ")";
407  }
408  close(filedes[0]);
409 
410  int status = 0;
411  errno = 0;
412  do {
413  if (waitpid(pid, &status, 0) < 0) {
414  if (errno == EINTR) {
415  continue;
416  } else {
417  throw cms::Exception("ExternalLHEProducer") << "Failed to read child status (errno=" << errno << ", " << strerror(errno) << ")";
418  }
419  }
420  if (WIFSIGNALED(status)) {
421  throw cms::Exception("ExternalLHEProducer") << "Child exited due to signal " << WTERMSIG(status) << ".";
422  }
423  if (WIFEXITED(status)) {
424  rc = WEXITSTATUS(status);
425  break;
426  }
427  } while (true);
428  if (rc) {
429  throw cms::Exception("ExternalLHEProducer") << "Child failed with exit code " << rc << ".";
430  }
431 
432 }
int i
Definition: DBlmapReader.cc:9
def pipe
Definition: pipe.py:5
#define NULL
Definition: scimark2.h:8
std::vector< std::string > args_
int closeDescriptors(int preserve)
tuple pid
Definition: sysUtil.py:22
tuple argc
Definition: dir2webdir.py:38
tuple status
Definition: ntuplemaker.py:245
void ExternalLHEProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 464 of file ExternalLHEProducer.cc.

References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::addDefault(), edm::ParameterSetDescription::addUntracked(), edm::ParameterSetDescription::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

464  {
465  //The following says we do not know what parameters are allowed so do no validation
466  // Please change this to state exactly what you do use, even if it is no parameters
468  desc.setComment("Executes an external script and places its output file into an EDM collection");
469 
470  edm::FileInPath thePath;
471  desc.add<edm::FileInPath>("scriptName", thePath);
472  desc.add<std::string>("outputFile", "myoutput");
473  desc.add<std::vector<std::string> >("args");
474  desc.add<uint32_t>("numberOfParameters");
475  desc.addUntracked<uint32_t>("nEvents");
476 
477  descriptions.addDefault(desc);
478 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setComment(std::string const &value)
void addDefault(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void ExternalLHEProducer::nextEvent ( )
privatevirtual

Definition at line 480 of file ExternalLHEProducer.cc.

References partonLevel, reader_, runInfo, and runInfoLast.

Referenced by beginRunProduce(), endRunProduce(), and produce().

481 {
482 
483  if (partonLevel)
484  return;
485 
486  partonLevel = reader_->next();
487  if (!partonLevel)
488  return;
489 
490  boost::shared_ptr<lhef::LHERunInfo> runInfoThis = partonLevel->getRunInfo();
491  if (runInfoThis != runInfoLast) {
492  runInfo = runInfoThis;
493  runInfoLast = runInfoThis;
494  }
495 }
boost::shared_ptr< lhef::LHEEvent > partonLevel
std::auto_ptr< lhef::LHEReader > reader_
boost::shared_ptr< lhef::LHERunInfo > runInfoLast
boost::shared_ptr< lhef::LHERunInfo > runInfo
void ExternalLHEProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDProducerBase.

Definition at line 151 of file ExternalLHEProducer.cc.

References LHEEventProduct::addComment(), LHERunInfoProduct::addComment(), LHERunInfoProduct::addHeader(), LHEEventProduct::addWeight(), edm::hlt::Exception, nextEvent(), partonLevel, edm::Event::put(), runInfo, runInfoProducts, and wasMerged.

152 {
153  nextEvent();
154  if (!partonLevel) {
155  throw cms::Exception("ExternalLHEProducer") << "No lhe event found in ExternalLHEProducer::produce(). "
156  << "The likely cause is that the lhe file contains fewer events than were requested, which is possible "
157  << "in case of phase space integration or uneweighting efficiency problems.";
158  }
159 
160  std::auto_ptr<LHEEventProduct> product(
161  new LHEEventProduct(*partonLevel->getHEPEUP(),
162  partonLevel->originalXWGTUP())
163  );
164  if (partonLevel->getPDF()) {
165  product->setPDF(*partonLevel->getPDF());
166  }
167  std::for_each(partonLevel->weights().begin(),
168  partonLevel->weights().end(),
169  boost::bind(&LHEEventProduct::addWeight,
170  product.get(), _1));
171  product->setScales(partonLevel->scales());
172  product->setNpLO(partonLevel->npLO());
173  product->setNpNLO(partonLevel->npNLO());
174  std::for_each(partonLevel->getComments().begin(),
175  partonLevel->getComments().end(),
176  boost::bind(&LHEEventProduct::addComment,
177  product.get(), _1));
178 
179  iEvent.put(product);
180 
181  if (runInfo) {
182  std::auto_ptr<LHERunInfoProduct> product(new LHERunInfoProduct(*runInfo->getHEPRUP()));
183  std::for_each(runInfo->getHeaders().begin(),
184  runInfo->getHeaders().end(),
185  boost::bind(&LHERunInfoProduct::addHeader,
186  product.get(), _1));
187  std::for_each(runInfo->getComments().begin(),
188  runInfo->getComments().end(),
189  boost::bind(&LHERunInfoProduct::addComment,
190  product.get(), _1));
191 
192  if (!runInfoProducts.empty()) {
193  runInfoProducts.front().mergeProduct(*product);
194  if (!wasMerged) {
195  runInfoProducts.pop_front();
196  runInfoProducts.push_front(product);
197  wasMerged = true;
198  }
199  }
200 
201  runInfo.reset();
202  }
203 
204  partonLevel.reset();
205  return;
206 }
boost::shared_ptr< lhef::LHEEvent > partonLevel
void addHeader(const Header &header)
void addComment(const std::string &line)
void addWeight(const WGT &wgt)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
boost::shared_ptr< lhef::LHERunInfo > runInfo
void addComment(const std::string &line)
boost::ptr_deque< LHERunInfoProduct > runInfoProducts
std::auto_ptr< std::string > ExternalLHEProducer::readOutput ( )
private

Definition at line 436 of file ExternalLHEProducer.cc.

References BUFSIZE, edm::hlt::Exception, n, outputFile_, SiPixelLorentzAngle_cfi::read, contentValuesCheck::ss, and AlCaHLTBitMon_QueryRunRegistry::string.

437 {
438  int fd;
439  ssize_t n;
440  char buf[BUFSIZE];
441 
442  if ((fd = open(outputFile_.c_str(), O_RDONLY)) == -1) {
443  throw cms::Exception("OutputOpenError") << "Unable to open script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ").";
444  }
445 
446  std::stringstream ss;
447  while ((n = read(fd, buf, BUFSIZE)) > 0 || (n == -1 && errno == EINTR)) {
448  if (n > 0)
449  ss.write(buf, n);
450  }
451  if (n == -1) {
452  throw cms::Exception("OutputOpenError") << "Unable to read from script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ").";
453  }
454 
455  if (unlink(outputFile_.c_str())) {
456  throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ").";
457  }
458 
459  return std::auto_ptr<std::string>(new std::string(ss.str()));
460 }
#define BUFSIZE

Member Data Documentation

std::vector<std::string> ExternalLHEProducer::args_
private
uint32_t ExternalLHEProducer::nEvents_
private

Definition at line 89 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce().

uint32_t ExternalLHEProducer::npars_
private

Definition at line 88 of file ExternalLHEProducer.cc.

Referenced by ExternalLHEProducer().

std::string ExternalLHEProducer::outputContents_
private

Definition at line 90 of file ExternalLHEProducer.cc.

std::string ExternalLHEProducer::outputFile_
private

Definition at line 86 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), endRunProduce(), and readOutput().

boost::shared_ptr<lhef::LHEEvent> ExternalLHEProducer::partonLevel
private

Definition at line 95 of file ExternalLHEProducer.cc.

Referenced by endRunProduce(), nextEvent(), and produce().

std::auto_ptr<lhef::LHEReader> ExternalLHEProducer::reader_
private

Definition at line 92 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), endRunProduce(), and nextEvent().

boost::shared_ptr<lhef::LHERunInfo> ExternalLHEProducer::runInfo
private

Definition at line 94 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), nextEvent(), and produce().

boost::shared_ptr<lhef::LHERunInfo> ExternalLHEProducer::runInfoLast
private

Definition at line 93 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), and nextEvent().

boost::ptr_deque<LHERunInfoProduct> ExternalLHEProducer::runInfoProducts
private

Definition at line 96 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), endRunProduce(), and produce().

std::string ExternalLHEProducer::scriptName_
private

Definition at line 85 of file ExternalLHEProducer.cc.

Referenced by executeScript().

bool ExternalLHEProducer::wasMerged
private

Definition at line 97 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), and produce().