CMS 3D CMS Logo

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
bool noFiles () const override
 
 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 ()(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 ()(false) override
 
- Public Member Functions inherited from edm::PuttableSourceBase
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
 PuttableSourceBase (ParameterSet const &, InputSourceDescription const &)
 
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...
 
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< LuminosityBlockAuxiliaryluminosityBlockAuxiliary () 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...
 
InputSourceoperator= (InputSource const &)=delete
 
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::unique_ptr< FileBlockreadFile ()
 Read next file. More...
 
void readLuminosityBlock (LuminosityBlockPrincipal &lumiPrincipal, HistoryAppender &historyAppender)
 Read next luminosity block (new lumi) More...
 
std::shared_ptr< LuminosityBlockAuxiliaryreadLuminosityBlockAuxiliary ()
 Read next luminosity block Auxilary. 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();
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.reset(new std::ifstream(fileName.c_str()));
61 
62  produces<LHEEventProduct>();
63  produces<LHERunInfoProduct, edm::Transition::BeginRun>();
64 }
T getParameter(std::string const &) const
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::vector< std::string > const & fileNames() const
Definition: FromFiles.h:22
std::string fileName
Name of the input file.
Definition: MCatNLOSource.h:56
std::unique_ptr< std::ifstream > reader
Definition: MCatNLOSource.h:71
unsigned int skipEvents
Number of events to skip.
Definition: MCatNLOSource.h:62
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, lhe2HepMCConverter_cff::LHERunInfoProduct, 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
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:108
def move(src, dest)
Definition: eostools.py:511
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.

References DEFINE_FWK_INPUT_SOURCE.

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, lhe2HepMCConverter_cff::LHEEventProduct, 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)
static void readHEPEUP(HEPEUP *hepeup)
double XWGTUP
Definition: LesHouches.h:194
def move(src, dest)
Definition: eostools.py:511
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().