CMS 3D CMS Logo

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

#include <MCatNLOSource.h>

Inheritance diagram for MCatNLOSource:
edm::ProducerSourceFromFiles gen::Herwig6Instance edm::ProducerSourceBase edm::FromFiles gen::FortranInstance edm::IDGeneratorSourceBase< PuttableSourceBase > edm::PuttableSourceBase edm::InputSource edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

 MCatNLOSource (const edm::ParameterSet &params, const edm::InputSourceDescription &desc)
 
 ~MCatNLOSource () override
 
- Public Member Functions inherited from edm::ProducerSourceFromFiles
 ProducerSourceFromFiles (ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
 
 ~ProducerSourceFromFiles () override
 
- Public Member Functions inherited from edm::ProducerSourceBase
 ProducerSourceBase (ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
 
 ~ProducerSourceBase () noexcept(false) override
 
- Public Member Functions inherited from edm::IDGeneratorSourceBase< PuttableSourceBase >
EventNumber_t event () const
 
unsigned int eventCreationDelay () const
 
EventID const & eventID () const
 
 IDGeneratorSourceBase (ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
 
LuminosityBlockNumber_t luminosityBlock () const
 
unsigned int numberEventsInLumi () const
 
unsigned int numberEventsInRun () const
 
unsigned int numberEventsInThisLumi () const
 
unsigned int numberEventsInThisRun () const
 
TimeValue_t presentTime () const
 
RunNumber_t run () const
 
unsigned int timeBetweenEvents () const
 
 ~IDGeneratorSourceBase () noexcept(false) override
 
- Public Member Functions inherited from edm::PuttableSourceBase
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
PuttableSourceBaseoperator= (const PuttableSourceBase &)=delete
 
 PuttableSourceBase (ParameterSet const &, InputSourceDescription const &)
 
 PuttableSourceBase (const PuttableSourceBase &)=delete
 
void registerProducts () final
 Register any produced products. More...
 
- Public Member Functions inherited from edm::InputSource
std::shared_ptr< ActivityRegistryactReg () const
 Accessor for Activity Registry. More...
 
std::shared_ptr
< BranchIDListHelper const > 
branchIDListHelper () const
 Accessors for branchIDListHelper. More...
 
std::shared_ptr
< BranchIDListHelper > & 
branchIDListHelper ()
 
void closeFile (FileBlock *, bool cleaningUpAfterException)
 close current file More...
 
void doBeginJob ()
 Called by framework at beginning of job. More...
 
void doEndJob ()
 Called by framework at end of job. More...
 
void fillProcessBlockHelper ()
 Fill the ProcessBlockHelper with info for the current file. More...
 
ProcessingController::ForwardState forwardState () const
 
bool goToEvent (EventID const &eventID)
 
 InputSource (ParameterSet const &, InputSourceDescription const &)
 Constructor. More...
 
 InputSource (InputSource const &)=delete
 
void issueReports (EventID const &eventID, StreamID streamID)
 issue an event report More...
 
LuminosityBlockNumber_t luminosityBlock () const
 Accessor for current luminosity block number. More...
 
std::shared_ptr
< LuminosityBlockAuxiliary
luminosityBlockAuxiliary () const
 Called by the framework to merge or insert lumi in principal cache. More...
 
int maxEvents () const
 
int maxLuminosityBlocks () const
 
ModuleDescription const & moduleDescription () const
 Accessor for 'module' description. More...
 
ItemType nextItemType ()
 Advances the source to the next item. More...
 
bool nextProcessBlock (ProcessBlockPrincipal &)
 Next process block, return false if there is none, sets the processName in the principal. More...
 
InputSourceoperator= (InputSource const &)=delete
 
std::shared_ptr
< ProcessBlockHelper const > 
processBlockHelper () const
 Accessors for processBlockHelper. More...
 
std::shared_ptr
< ProcessBlockHelper > & 
processBlockHelper ()
 
ProcessConfiguration const & processConfiguration () const
 Accessor for Process Configuration. More...
 
std::string const & processGUID () const
 Accessor for global process identifier. More...
 
ProcessHistoryRegistry const & processHistoryRegistry () const
 Accessors for process history registry. More...
 
ProcessHistoryRegistryprocessHistoryRegistry ()
 
ProcessingMode processingMode () const
 RunsLumisAndEvents (default), RunsAndLumis, or Runs. More...
 
std::shared_ptr
< ProductRegistry const > 
productRegistry () const
 Accessors for product registry. More...
 
std::shared_ptr
< ProductRegistry > & 
productRegistry ()
 
bool randomAccess () const
 
void readAndMergeLumi (LuminosityBlockPrincipal &lbp)
 Read next luminosity block (same as a prior lumi) More...
 
void readAndMergeRun (RunPrincipal &rp)
 Read next run (same as a prior run) More...
 
void readEvent (EventPrincipal &ep, StreamContext &)
 Read next event. More...
 
bool readEvent (EventPrincipal &ep, EventID const &, StreamContext &)
 Read a specific event. More...
 
std::shared_ptr< FileBlockreadFile ()
 Read next file. More...
 
void readLuminosityBlock (LuminosityBlockPrincipal &lumiPrincipal, HistoryAppender &historyAppender)
 Read next luminosity block (new lumi) More...
 
std::shared_ptr
< LuminosityBlockAuxiliary
readLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. More...
 
void readProcessBlock (ProcessBlockPrincipal &)
 Read next process block. More...
 
void readRun (RunPrincipal &runPrincipal, HistoryAppender &historyAppender)
 Read next run (new run) More...
 
std::shared_ptr< RunAuxiliaryreadRunAuxiliary ()
 Read next run Auxiliary. More...
 
ProcessHistoryID const & reducedProcessHistoryID () const
 
int remainingEvents () const
 
int remainingLuminosityBlocks () const
 
void repeat ()
 Reset the remaining number of events/lumis to the maximum number. More...
 
std::pair
< SharedResourcesAcquirer
*, std::recursive_mutex * > 
resourceSharedWithDelayedReader ()
 Returns nullptr if no resource shared between the Source and a DelayedReader. More...
 
ProcessingController::ReverseState reverseState () const
 
void rewind ()
 Begin again at the first event. More...
 
RunNumber_t run () const
 Accessor for current run number. More...
 
std::shared_ptr< RunAuxiliaryrunAuxiliary () const
 Called by the framework to merge or insert run in principal cache. More...
 
void setLuminosityBlockNumber_t (LuminosityBlockNumber_t lb)
 Set the luminosity block ID. More...
 
void setRunNumber (RunNumber_t r)
 Set the run number. More...
 
void skipEvents (int offset)
 
std::shared_ptr
< ThinnedAssociationsHelper
const > 
thinnedAssociationsHelper () const
 Accessors for thinnedAssociationsHelper. More...
 
std::shared_ptr
< ThinnedAssociationsHelper > & 
thinnedAssociationsHelper ()
 
Timestamp const & timestamp () const
 Accessor for the current time, as seen by the input source. More...
 
virtual ~InputSource () noexcept(false)
 Destructor. More...
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector
< edm::ProductResolverIndex >
const & 
indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector
< edm::ProductResolverIndex >
const & 
putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from gen::Herwig6Instance
bool callWithTimeout (unsigned int secs, void(*fn)())
 
bool give (const std::string &line)
 
 Herwig6Instance ()
 
void openParticleSpecFile (const std::string fileName)
 
void setHerwigRandomEngine (CLHEP::HepRandomEngine *v)
 
 ~Herwig6Instance () override
 
- Public Member Functions inherited from gen::FortranInstance
void call (void(&fn)())
 
template<typename T >
T call (T(&fn)())
 
template<typename A >
void call (void(&fn)(A), A a)
 
template<typename T , typename A >
T call (T(&fn)(A), A a)
 
template<typename A1 , typename A2 >
void call (void(&fn)(A1, A2), A1 a1, A2 a2)
 
template<typename T , typename A1 , typename A2 >
T call (T(&fn)(A1, A2), A1 a1, A2 a2)
 
virtual void enter ()
 
 FortranInstance ()
 
virtual void leave ()
 
virtual void upEvnt ()
 
virtual void upInit ()
 
virtual bool upVeto ()
 
virtual ~FortranInstance () noexcept(false)
 

Private Member Functions

void beginRun (edm::Run &run) override
 
void endJob () override
 
bool hwwarn (const std::string &fn, int code) override
 
void nextEvent ()
 
void produce (edm::Event &event) override
 
bool setRunAndEventInfo (edm::EventID &, edm::TimeValue_t &, edm::EventAuxiliary::ExperimentType &) override
 

Private Attributes

std::shared_ptr< lhef::LHEEventevent
 
std::string fileName
 Name of the input file. More...
 
int ihpro
 
std::unique_ptr< std::ifstream > inputFile
 Pointer to the input file. More...
 
unsigned int nEvents
 Number of events. More...
 
int processCode
 
std::unique_ptr< std::ifstream > reader
 
std::shared_ptr< lhef::LHERunInforunInfo
 
unsigned int skipEvents
 Number of events to skip. More...
 

Additional Inherited Members

- Public Types inherited from edm::InputSource
enum  ItemType {
  IsInvalid, IsStop, IsFile, IsRun,
  IsLumi, IsEvent, IsRepeat, IsSynchronize
}
 
enum  ProcessingMode { Runs, RunsAndLumis, RunsLumisAndEvents }
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::ProducerSourceFromFiles
static void fillDescription (ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::IDGeneratorSourceBase< PuttableSourceBase >
static void fillDescription (ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::InputSource
static const std::string & baseType ()
 
static void fillDescription (ParameterSetDescription &desc)
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Static Public Member Functions inherited from gen::FortranInstance
template<typename T >
static TgetInstance ()
 
- Public Attributes inherited from edm::InputSource
signalslot::Signal< void(StreamContext
const &, ModuleCallingContext
const &)> 
postEventReadFromSourceSignal_
 
signalslot::Signal< void(StreamContext
const &, ModuleCallingContext
const &)> 
preEventReadFromSourceSignal_
 
- Static Public Attributes inherited from gen::FortranInstance
static const std::string kFortranInstance = "FortranInstance"
 
- Protected Member Functions inherited from edm::IDGeneratorSourceBase< PuttableSourceBase >
void doReadEvent (EventPrincipal &eventPrincipal, F &&f)
 
- Protected Member Functions inherited from edm::InputSource
void decreaseRemainingEventsBy (int iSkipped)
 
bool eventCached () const
 
bool newLumi () const
 
bool newRun () const
 
ProcessHistoryRegistryprocessHistoryRegistryForUpdate ()
 
ProductRegistryproductRegistryUpdate ()
 
void reset () const
 
void resetEventCached ()
 
void resetLuminosityBlockAuxiliary (bool isNewLumi=true) const
 
void resetNewLumi ()
 
void resetNewRun ()
 
void resetRunAuxiliary (bool isNewRun=true) const
 
void setEventCached ()
 Called by the framework to merge or ached() const {return eventCached_;}. More...
 
void setLuminosityBlockAuxiliary (LuminosityBlockAuxiliary *lbp)
 
void setNewLumi ()
 
void setNewRun ()
 
void setRunAuxiliary (RunAuxiliary *rp)
 
void setTimestamp (Timestamp const &theTime)
 To set the current time, as seen by the input source. More...
 
ItemType state () const
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 

Detailed Description

Definition at line 40 of file MCatNLOSource.h.

Constructor & Destructor Documentation

MCatNLOSource::MCatNLOSource ( const edm::ParameterSet params,
const edm::InputSourceDescription desc 
)
explicit

Definition at line 38 of file MCatNLOSource.cc.

References fileName, edm::FromFiles::fileNames(), and reader.

39  : ProducerSourceFromFiles(params, desc, false),
41  skipEvents(params.getUntrackedParameter<unsigned int>("skipEvents", 0)),
42  nEvents(0),
43  ihpro(0),
44  processCode(params.getParameter<int>("processCode")) {
45  std::vector<std::string> allFileNames = fileNames(0);
46 
47  // Only one filename
48  if (allFileNames.size() != 1)
49  throw cms::Exception("Generator|MCatNLOInterface")
50  << "MCatNLOSource needs exactly one file specified. " << std::endl;
51 
52  fileName = allFileNames[0];
53 
54  // Strip the "file:" prefix
55  if (fileName.find("file:") != 0)
56  throw cms::Exception("Generator|MCatNLOInterface") << "MCatNLOSource only supports the file: scheme. " << std::endl;
57  fileName.erase(0, 5);
58 
59  // open input file
60  reader = std::make_unique<std::ifstream>(fileName.c_str());
61 
62  produces<LHEEventProduct>();
63  produces<LHERunInfoProduct, edm::Transition::BeginRun>();
64 }
unsigned int nEvents
Number of events.
Definition: MCatNLOSource.h:65
T getUntrackedParameter(std::string const &, T const &) const
ProducerSourceFromFiles(ParameterSet const &pset, InputSourceDescription const &desc, bool realData)
std::string fileName
Name of the input file.
Definition: MCatNLOSource.h:56
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::unique_ptr< std::ifstream > reader
Definition: MCatNLOSource.h:71
unsigned int skipEvents
Number of events to skip.
Definition: MCatNLOSource.h:62
std::vector< std::string > fileNames(unsigned iCatalog) const
Definition: FromFiles.h:22
MCatNLOSource::~MCatNLOSource ( )
override

Definition at line 66 of file MCatNLOSource.cc.

66 {}

Member Function Documentation

void MCatNLOSource::beginRun ( edm::Run run)
overrideprivatevirtual

Reimplemented from edm::PuttableSourceBase.

Definition at line 86 of file MCatNLOSource.cc.

References funct::abs(), LHERunInfoProduct::Header::addLine(), MCPARS_::emmax, MCPARS_::emmaxs, MCPARS_::emmin, MCPARS_::emmins, fileName, MCPARS_::gammax, MCPARS_::gammaxs, MCPARS_::gamw, MCPARS_::gamws, MCPARS_::gamz, MCPARS_::gamzs, mps_fire::i, makeConfigLine(), mcatnloupinit_(), mcpars_, eostools::move(), processCode, edm::Run::put(), lhef::CommonBlocks::readHEPRUP(), MCPARS_::rmass, MCPARS_::rmasss, runInfo, and wrapper.

86  {
87  InstanceWrapper wrapper(this);
88 
89  // call UPINIT privided by MC@NLO (v3.4)
90  mcatnloupinit_(&processCode, fileName.c_str(), fileName.length());
91 
92  // fill HEPRUP common block and store in edm::Run
93  lhef::HEPRUP heprup;
95 
96  // make sure we write a valid LHE header, Herwig6Hadronizer
97  // will interpret it correctly and set up LHAPDF
98  heprup.PDFGUP.first = 0;
99  heprup.PDFGUP.second = 0;
100 
101  std::unique_ptr<LHERunInfoProduct> runInfo(new LHERunInfoProduct(heprup));
102 
103  LHERunInfoProduct::Header hw6header("herwig6header");
104  hw6header.addLine("\n");
105  hw6header.addLine("# Herwig6 parameters\n");
106  hw6header.addLine(makeConfigLine("IPROC", processCode));
107  // add lines for parameter that have been touched by UPINIT
108  if (mcpars_.emmins)
109  hw6header.addLine(makeConfigLine("EMMIN", mcpars_.emmin));
110  if (mcpars_.emmaxs)
111  hw6header.addLine(makeConfigLine("EMMAX", mcpars_.emmax));
112  if (mcpars_.gammaxs)
113  hw6header.addLine(makeConfigLine("GAMMAX", mcpars_.gammax));
114  if (mcpars_.gamzs)
115  hw6header.addLine(makeConfigLine("GAMZ", mcpars_.gamz));
116  if (mcpars_.gamws)
117  hw6header.addLine(makeConfigLine("GAMW", mcpars_.gamw));
118  for (unsigned int i = 0; i < 1000; ++i) {
119  if (mcpars_.rmasss[i])
120  hw6header.addLine(makeConfigLine("RMASS", i + 1, mcpars_.rmass[i]));
121  }
122 
123  // other needed MC@NLO defaults (from mcatnlo_hwdriver.f v3.4)
124  hw6header.addLine(makeConfigLine("SOFTME", false));
125  hw6header.addLine(makeConfigLine("NOWGT", false));
126  hw6header.addLine(makeConfigLine("NEGWTS", true));
127  if (abs(processCode) == 1705 || abs(processCode) == 11705)
128  hw6header.addLine(makeConfigLine("PSPLT", 2, 0.5));
129  double wgtmax_ = 1.000001;
130  hw6header.addLine(makeConfigLine("WGTMAX", wgtmax_));
131  hw6header.addLine(makeConfigLine("AVABW", wgtmax_));
132  hw6header.addLine(makeConfigLine("RLTIM", 6, 1.0E-23));
133  hw6header.addLine(makeConfigLine("RLTIM", 12, 1.0E-23));
134 
135  runInfo->addHeader(hw6header);
136 
137  run.put(std::move(runInfo));
138 
139  return;
140 }
static std::string makeConfigLine(const char *var, T value)
struct MCPARS_ mcpars_
int emmaxs
Definition: MCatNLOSource.h:27
double rmass[1000]
Definition: MCatNLOSource.h:23
void mcatnloupinit_(int *, const char *, int)
int emmins
Definition: MCatNLOSource.h:26
std::shared_ptr< lhef::LHERunInfo > runInfo
Definition: MCatNLOSource.h:73
double gammax
Definition: MCatNLOSource.h:22
double emmin
Definition: MCatNLOSource.h:20
static void readHEPRUP(HEPRUP *heprup)
int rmasss[1000]
Definition: MCatNLOSource.h:29
def move
Definition: eostools.py:511
int gammaxs
Definition: MCatNLOSource.h:28
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double gamz
Definition: MCatNLOSource.h:25
double emmax
Definition: MCatNLOSource.h:21
double gamw
Definition: MCatNLOSource.h:24
std::string fileName
Name of the input file.
Definition: MCatNLOSource.h:56
void put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Run.h:109
static HepMC::HEPEVT_Wrapper wrapper
void MCatNLOSource::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::InputSource.

Definition at line 68 of file MCatNLOSource.cc.

References reader.

68 { reader.reset(); }
std::unique_ptr< std::ifstream > reader
Definition: MCatNLOSource.h:71
bool MCatNLOSource::hwwarn ( const std::string &  fn,
int  code 
)
overrideprivatevirtual

Reimplemented from gen::Herwig6Instance.

Definition at line 178 of file MCatNLOSource.cc.

178  {
179  // dummy ignoring useless HERWIG warnings
180  return true;
181 }
void MCatNLOSource::nextEvent ( )
private

Definition at line 70 of file MCatNLOSource.cc.

70 { return; }
void MCatNLOSource::produce ( edm::Event event)
overrideprivatevirtual

Implements edm::ProducerSourceBase.

Definition at line 164 of file MCatNLOSource.cc.

References lhef::HEPEUP::IDPRUP, ihpro, lhef::HEPRUP::LPRUP, makeConfigLine(), eostools::move(), lhef::CommonBlocks::readHEPEUP(), lhef::CommonBlocks::readHEPRUP(), wrapper, and lhef::HEPEUP::XWGTUP.

164  {
165  InstanceWrapper wrapper(this);
166 
167  // fill HEPRUP common block and store in edm::Run
168  lhef::HEPRUP heprup;
169  lhef::HEPEUP hepeup;
172  hepeup.IDPRUP = heprup.LPRUP[0];
173  std::unique_ptr<LHEEventProduct> lhEvent(new LHEEventProduct(hepeup, hepeup.XWGTUP));
174  lhEvent->addComment(makeConfigLine("#IHPRO", ihpro));
175  event.put(std::move(lhEvent));
176 }
static std::string makeConfigLine(const char *var, T value)
static void readHEPRUP(HEPRUP *heprup)
def move
Definition: eostools.py:511
static void readHEPEUP(HEPEUP *hepeup)
double XWGTUP
Definition: LesHouches.h:194
static HepMC::HEPEVT_Wrapper wrapper
std::vector< int > LPRUP
Definition: LesHouches.h:128
bool MCatNLOSource::setRunAndEventInfo ( edm::EventID ,
edm::TimeValue_t ,
edm::EventAuxiliary::ExperimentType  
)
overrideprivatevirtual

Implements edm::IDGeneratorSourceBase< PuttableSourceBase >.

Definition at line 142 of file MCatNLOSource.cc.

References ihpro, mcatnloupevnt_(), processCode, skipEvents, and wrapper.

142  {
143  InstanceWrapper wrapper(this);
144 
145  int lastEventDone = 0;
146  ihpro = 0;
147  // skip events if asked to...
148 
149  while (skipEvents > 0) {
150  skipEvents--;
151  mcatnloupevnt_(&processCode, &lastEventDone, &ihpro);
152  if (lastEventDone)
153  return false;
154  }
155 
156  // call UPINIT privided by MC@NLO (v3.4)
157  mcatnloupevnt_(&processCode, &lastEventDone, &ihpro);
158 
159  if (lastEventDone)
160  return false;
161  return true;
162 }
unsigned int skipEvents
Number of events to skip.
Definition: MCatNLOSource.h:62
void mcatnloupevnt_(int *, int *, int *)
static HepMC::HEPEVT_Wrapper wrapper

Member Data Documentation

std::shared_ptr<lhef::LHEEvent> MCatNLOSource::event
private
std::string MCatNLOSource::fileName
private

Name of the input file.

Definition at line 56 of file MCatNLOSource.h.

Referenced by beginRun(), MCatNLOSource(), and readConfig.fileINI::read().

int MCatNLOSource::ihpro
private

Definition at line 67 of file MCatNLOSource.h.

Referenced by produce(), and setRunAndEventInfo().

std::unique_ptr<std::ifstream> MCatNLOSource::inputFile
private

Pointer to the input file.

Definition at line 59 of file MCatNLOSource.h.

unsigned int MCatNLOSource::nEvents
private

Number of events.

Definition at line 65 of file MCatNLOSource.h.

Referenced by looper.Looper::loop().

int MCatNLOSource::processCode
private

Definition at line 69 of file MCatNLOSource.h.

Referenced by beginRun(), and setRunAndEventInfo().

std::unique_ptr<std::ifstream> MCatNLOSource::reader
private

Definition at line 71 of file MCatNLOSource.h.

Referenced by endJob(), and MCatNLOSource().

std::shared_ptr<lhef::LHERunInfo> MCatNLOSource::runInfo
private

Definition at line 73 of file MCatNLOSource.h.

Referenced by beginRun().

unsigned int MCatNLOSource::skipEvents
private

Number of events to skip.

Definition at line 62 of file MCatNLOSource.h.

Referenced by setRunAndEventInfo().