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
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 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
std::vector< ConsumesInfoconsumesInfo () const
 
 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
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) 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
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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 65 of file ExternalLHEProducer.cc.

Constructor & Destructor Documentation

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

Definition at line 125 of file ExternalLHEProducer.cc.

References args_, and npars_.

125  :
126  scriptName_((iConfig.getParameter<edm::FileInPath>("scriptName")).fullPath().c_str()),
127  outputFile_(iConfig.getParameter<std::string>("outputFile")),
128  args_(iConfig.getParameter<std::vector<std::string> >("args")),
129  npars_(iConfig.getParameter<uint32_t>("numberOfParameters")),
130  nEvents_(iConfig.getUntrackedParameter<uint32_t>("nEvents"))
131 {
132  if (npars_ != args_.size())
133  throw cms::Exception("ExternalLHEProducer") << "Problem with configuration: " << args_.size() << " script arguments given, expected " << npars_;
134  produces<LHEXMLStringProduct, edm::InRun>("LHEScriptOutput");
135 
136  produces<LHEEventProduct>();
137  produces<LHERunInfoProduct, edm::InRun>();
138 }
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 141 of file ExternalLHEProducer.cc.

142 {
143 }

Member Function Documentation

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

Definition at line 211 of file ExternalLHEProducer.cc.

References LHERunInfoProduct::addComment(), LHERunInfoProduct::addHeader(), args_, 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.

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

References dqmPostProcessing_online::DIR, dir, ztee::fd, and NULL.

Referenced by executeScript().

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

Definition at line 288 of file ExternalLHEProducer.cc.

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

289 {
290 
291  if (!runInfoProducts.empty()) {
292  std::auto_ptr<LHERunInfoProduct> product(runInfoProducts.pop_front().release());
293  run.put(product);
294  }
295 
296  nextEvent();
297  if (partonLevel) {
298  throw cms::Exception("ExternalLHEProducer") << "Error in ExternalLHEProducer::endRunProduce(). "
299  << "Event loop is over, but there are still lhe events to process."
300  << "This could happen if lhe file contains more events than requested. This is never expected to happen.";
301  }
302 
303  reader_.reset();
304 
305  if (unlink(outputFile_.c_str())) {
306  throw cms::Exception("OutputDeleteError") << "Unable to delete original script output file " << outputFile_ << " (errno=" << errno << ", " << strerror(errno) << ").";
307  }
308 
309 }
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 352 of file ExternalLHEProducer.cc.

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

Referenced by beginRunProduce().

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

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

465  {
466  //The following says we do not know what parameters are allowed so do no validation
467  // Please change this to state exactly what you do use, even if it is no parameters
469  desc.setComment("Executes an external script and places its output file into an EDM collection");
470 
471  edm::FileInPath thePath;
472  desc.add<edm::FileInPath>("scriptName", thePath);
473  desc.add<std::string>("outputFile", "myoutput");
474  desc.add<std::vector<std::string> >("args");
475  desc.add<uint32_t>("numberOfParameters");
476  desc.addUntracked<uint32_t>("nEvents");
477 
478  descriptions.addDefault(desc);
479 }
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 481 of file ExternalLHEProducer.cc.

References partonLevel, reader_, runInfo, and runInfoLast.

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

482 {
483 
484  if (partonLevel)
485  return;
486 
487  partonLevel = reader_->next();
488  if (!partonLevel)
489  return;
490 
491  boost::shared_ptr<lhef::LHERunInfo> runInfoThis = partonLevel->getRunInfo();
492  if (runInfoThis != runInfoLast) {
493  runInfo = runInfoThis;
494  runInfoLast = runInfoThis;
495  }
496 }
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 152 of file ExternalLHEProducer.cc.

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

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

References BUFSIZE, Exception, ztee::fd, gen::n, outputFile_, SiPixelLorentzAngle_cfi::read, contentValuesCheck::ss, and AlCaHLTBitMon_QueryRunRegistry::string.

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

Member Data Documentation

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

Definition at line 90 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce().

uint32_t ExternalLHEProducer::npars_
private

Definition at line 89 of file ExternalLHEProducer.cc.

Referenced by ExternalLHEProducer().

std::string ExternalLHEProducer::outputContents_
private

Definition at line 91 of file ExternalLHEProducer.cc.

std::string ExternalLHEProducer::outputFile_
private

Definition at line 87 of file ExternalLHEProducer.cc.

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

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

Definition at line 96 of file ExternalLHEProducer.cc.

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

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

Definition at line 93 of file ExternalLHEProducer.cc.

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

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

Definition at line 95 of file ExternalLHEProducer.cc.

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

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

Definition at line 94 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), and nextEvent().

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

Definition at line 97 of file ExternalLHEProducer.cc.

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

std::string ExternalLHEProducer::scriptName_
private

Definition at line 86 of file ExternalLHEProducer.cc.

Referenced by executeScript().

bool ExternalLHEProducer::wasMerged
private

Definition at line 98 of file ExternalLHEProducer.cc.

Referenced by beginRunProduce(), and produce().