CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
Herwig7Hadronizer Class Reference
Inheritance diagram for Herwig7Hadronizer:
Herwig7Interface gen::BaseHadronizer

Public Member Functions

void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
const char * classname () const
 
bool decay ()
 
bool declareSpecialSettings (const std::vector< std::string >)
 
bool declareStableParticles (const std::vector< int > &pdgIds)
 
void finalizeEvent ()
 
bool generatePartonsAndHadronize ()
 
std::unique_ptr< GenLumiInfoHeadergetGenLumiInfoHeader () const override
 
bool hadronize ()
 
 Herwig7Hadronizer (const edm::ParameterSet &params)
 
bool initializeForExternalPartons ()
 
bool initializeForInternalPartons ()
 
void randomizeIndex (edm::LuminosityBlock const &lumi, CLHEP::HepRandomEngine *rengine)
 
bool readSettings (int)
 
bool residualDecay ()
 
void statistics ()
 
 ~Herwig7Hadronizer () override
 
- Public Member Functions inherited from Herwig7Interface
 Herwig7Interface (const edm::ParameterSet &params)
 
void setPEGRandomEngine (CLHEP::HepRandomEngine *)
 
 ~Herwig7Interface () noexcept
 
- Public Member Functions inherited from gen::BaseHadronizer
 BaseHadronizer (edm::ParameterSet const &ps)
 
void cleanLHE ()
 
void generateLHE (edm::LuminosityBlock const &lumi, CLHEP::HepRandomEngine *rengine, unsigned int ncpu)
 
edm::EventgetEDMEvent () const
 
std::unique_ptr< HepMC::GenEventgetGenEvent ()
 
std::unique_ptr< GenEventInfoProductgetGenEventInfo ()
 
GenRunInfoProductgetGenRunInfo ()
 
std::unique_ptr< lhef::LHEEventgetLHEEvent ()
 
const std::shared_ptr< lhef::LHERunInfo > & getLHERunInfo () const
 
const std::string & gridpackPath () const
 
int randomIndex () const
 
const std::string & randomInitConfigDescription () const
 
void randomizeIndex (edm::LuminosityBlock const &lumi, CLHEP::HepRandomEngine *rengine)
 
void resetEvent (std::unique_ptr< HepMC::GenEvent > event)
 
void resetEventInfo (std::unique_ptr< GenEventInfoProduct > eventInfo)
 
virtual bool select (HepMC::GenEvent *) const
 
void setEDMEvent (edm::Event &event)
 
void setLHEEvent (std::unique_ptr< lhef::LHEEvent > event)
 
void setLHERunInfo (std::unique_ptr< lhef::LHERunInfo > runInfo)
 
void setRandomEngine (CLHEP::HepRandomEngine *v)
 
std::vector< std::string > const & sharedResources () const
 
virtual ~BaseHadronizer ()(false)
 

Private Member Functions

void doSetRandomEngine (CLHEP::HepRandomEngine *v) override
 

Private Attributes

unsigned int currentLumiBlock =0
 
unsigned int eventsToPrint
 
unsigned int firstLumiBlock =0
 
const std::string handlerDirectory_
 
edm::ParameterSet paramSettings
 
std::shared_ptr< lhef::LHEProxyproxy_
 
const std::string runFileName
 
ThePEG::EventPtr thepegEvent
 

Additional Inherited Members

- Public Attributes inherited from Herwig7Interface
ThePEG::EGPtr eg_
 
- Protected Member Functions inherited from Herwig7Interface
void callHerwigGenerator ()
 
void createInputFile (const edm::ParameterSet &params)
 
void flushRandomNumberGenerator ()
 
bool initGenerator ()
 
void initRepository (const edm::ParameterSet &params)
 
- Protected Member Functions inherited from gen::BaseHadronizer
std::unique_ptr< HepMC::GenEvent > & event ()
 
std::unique_ptr< GenEventInfoProduct > & eventInfo ()
 
lhef::LHEEventlheEvent ()
 
lhef::LHERunInfolheRunInfo ()
 
GenRunInfoProductrunInfo ()
 
- Static Protected Member Functions inherited from Herwig7Interface
static std::unique_ptr< HepMC::GenEventconvert (const ThePEG::EventPtr &event)
 
static double pthat (const ThePEG::EventPtr &event)
 
- Protected Attributes inherited from Herwig7Interface
std::shared_ptr< Herwig::HerwigUIProviderHwUI_
 
std::unique_ptr< HepMC::IO_BaseClass > iobc_
 
- Protected Attributes inherited from gen::BaseHadronizer
std::string lheFile_
 
int randomIndex_
 

Detailed Description

Definition at line 35 of file Herwig7Hadronizer.cc.

Constructor & Destructor Documentation

Herwig7Hadronizer::Herwig7Hadronizer ( const edm::ParameterSet params)

Definition at line 78 of file Herwig7Hadronizer.cc.

References Herwig7Interface::initRepository(), paramSettings, and muonDTDigis_cfi::pset.

78  :
81  eventsToPrint(pset.getUntrackedParameter<unsigned int>("eventsToPrint", 0)),
82  handlerDirectory_(pset.getParameter<std::string>("eventHandlers")),
83  runFileName(pset.getParameter<std::string>("run"))
84 {
87 }
void initRepository(const edm::ParameterSet &params)
BaseHadronizer(edm::ParameterSet const &ps)
unsigned int eventsToPrint
edm::ParameterSet paramSettings
Herwig7Interface(const edm::ParameterSet &params)
const std::string handlerDirectory_
const std::string runFileName
Herwig7Hadronizer::~Herwig7Hadronizer ( )
override

Definition at line 89 of file Herwig7Hadronizer.cc.

90 {
91 }

Member Function Documentation

void Herwig7Hadronizer::beginLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
)
const char* Herwig7Hadronizer::classname ( ) const
inline

Definition at line 54 of file Herwig7Hadronizer.cc.

54 { return "Herwig7Hadronizer"; }
bool Herwig7Hadronizer::decay ( )

Definition at line 219 of file Herwig7Hadronizer.cc.

220 {
221  return true;
222 }
bool Herwig7Hadronizer::declareSpecialSettings ( const std::vector< std::string >  )
inline

Definition at line 44 of file Herwig7Hadronizer.cc.

References SelectingProcedure_cff::decay, and myMessageLogger_cff::statistics.

44 { return true; }
bool Herwig7Hadronizer::declareStableParticles ( const std::vector< int > &  pdgIds)

Definition at line 123 of file Herwig7Hadronizer.cc.

124 {
125  return false;
126 }
void Herwig7Hadronizer::doSetRandomEngine ( CLHEP::HepRandomEngine *  v)
inlineoverrideprivatevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 63 of file Herwig7Hadronizer.cc.

void setPEGRandomEngine(CLHEP::HepRandomEngine *)
void Herwig7Hadronizer::finalizeEvent ( )

Definition at line 202 of file Herwig7Hadronizer.cc.

References gen::BaseHadronizer::event(), gen::BaseHadronizer::eventInfo(), eventsToPrint, Herwig7Interface::iobc_, Herwig7Interface::pthat(), and thepegEvent.

203 {
204  eventInfo().reset(new GenEventInfoProduct(event().get()));
205  eventInfo()->setBinningValues(
206  std::vector<double>(1, pthat(thepegEvent)));
207 
208  if (eventsToPrint) {
209  eventsToPrint--;
210  event()->print();
211  }
212 
213  if (iobc_.get())
214  iobc_->write_event(event().get());
215 
216  edm::LogInfo("Generator|Herwig7Hadronizer") << "Event produced";
217 }
static double pthat(const ThePEG::EventPtr &event)
std::unique_ptr< HepMC::IO_BaseClass > iobc_
unsigned int eventsToPrint
std::unique_ptr< HepMC::GenEvent > & event()
std::unique_ptr< GenEventInfoProduct > & eventInfo()
ThePEG::EventPtr thepegEvent
Definition: event.py:1
bool Herwig7Hadronizer::generatePartonsAndHadronize ( )

Definition at line 137 of file Herwig7Hadronizer.cc.

References Herwig7Interface::convert(), Herwig7Interface::eg_, gen::BaseHadronizer::event(), cppFunctionSkipper::exception, and thepegEvent.

138 {
139  edm::LogInfo("Generator|Herwig7Hadronizer") << "Start production";
140 
141  try {
142  thepegEvent = eg_->shoot();
143  } catch (std::exception& exc) {
144  edm::LogWarning("Generator|Herwig7Hadronizer") << "EGPtr::shoot() thrown an exception, event skipped: " << exc.what();
145  return false;
146  }
147 
148  if (!thepegEvent) {
149  edm::LogWarning("Generator|Herwig7Hadronizer") << "thepegEvent not initialized";
150  return false;
151  }
152 
154  if (!event().get()) {
155  edm::LogWarning("Generator|Herwig7Hadronizer") << "genEvent not initialized";
156  return false;
157  }
158 
159  return true;
160 }
ThePEG::EGPtr eg_
static std::unique_ptr< HepMC::GenEvent > convert(const ThePEG::EventPtr &event)
std::unique_ptr< HepMC::GenEvent > & event()
ThePEG::EventPtr thepegEvent
std::unique_ptr< GenLumiInfoHeader > Herwig7Hadronizer::getGenLumiInfoHeader ( ) const
overridevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 169 of file Herwig7Hadronizer.cc.

References genWeightsTable_cfi::genLumiInfoHeader, and thepegEvent.

169  {
170  auto genLumiInfoHeader = BaseHadronizer::getGenLumiInfoHeader();
171 
172  if (thepegEvent)
173  {
174  int weights_number = thepegEvent->optionalWeights().size();
175 
176  if(weights_number > 1){
177  genLumiInfoHeader->weightNames().reserve(weights_number + 1);
178  genLumiInfoHeader->weightNames().push_back("nominal");
179  std::map<std::string,double> weights_map = thepegEvent->optionalWeights();
180  for (std::map<std::string,double>::iterator it = weights_map.begin(); it != weights_map.end(); it++)
181  {
182  genLumiInfoHeader->weightNames().push_back(it->first);
183  }
184  }
185  }
186 
187  return genLumiInfoHeader;
188 }
ThePEG::EventPtr thepegEvent
bool Herwig7Hadronizer::hadronize ( )

Definition at line 162 of file Herwig7Hadronizer.cc.

163 {
164 
165  edm::LogError("Herwig7 interface") << "Read in of LHE files is not supported in this way. You can read them manually if necessary.";
166  return false;
167 }
bool Herwig7Hadronizer::initializeForExternalPartons ( )

Definition at line 117 of file Herwig7Hadronizer.cc.

118 {
119  edm::LogError("Herwig7 interface") << "Read in of LHE files is not supported in this way. You can read them manually if necessary.";
120  return false;
121 }
bool Herwig7Hadronizer::initializeForInternalPartons ( )

Definition at line 93 of file Herwig7Hadronizer.cc.

References currentLumiBlock, cmsRelvalreport::exit, firstLumiBlock, Herwig7Interface::initGenerator(), Herwig7Interface::initRepository(), paramSettings, and runFileName.

94 {
96  {
98  }
99  if (!initGenerator())
100  {
101  edm::LogInfo("Generator|Herwig7Hadronizer") << "No run step for Herwig chosen. Program will be aborted.";
102  exit(0);
103  std::ifstream runFile(runFileName+".run");
104  if (runFile.fail()) //required for showering of LHE files
105  {
107  }
108  if (!initGenerator())
109  {
110  edm::LogInfo("Generator|Herwig7Hadronizer") << "No run step for Herwig chosen. Program will be aborted.";
111  exit(0);
112  }
113  }
114  return true;
115 }
void initRepository(const edm::ParameterSet &params)
unsigned int firstLumiBlock
edm::ParameterSet paramSettings
unsigned int currentLumiBlock
const std::string runFileName
void Herwig7Hadronizer::randomizeIndex ( edm::LuminosityBlock const &  lumi,
CLHEP::HepRandomEngine *  rengine 
)

Definition at line 190 of file Herwig7Hadronizer.cc.

References currentLumiBlock, firstLumiBlock, edm::LuminosityBlockBase::id(), and edm::LuminosityBlockID::luminosityBlock().

191 {
192  BaseHadronizer::randomizeIndex(lumi, rengine);
193 
194  if (firstLumiBlock==0)
195  {
196  firstLumiBlock=lumi.id().luminosityBlock();
197  }
198  currentLumiBlock=lumi.id().luminosityBlock();
199 
200 }
unsigned int firstLumiBlock
unsigned int currentLumiBlock
bool Herwig7Hadronizer::readSettings ( int  )
inline

Definition at line 40 of file Herwig7Hadronizer.cc.

40 { return true; }
bool Herwig7Hadronizer::residualDecay ( )

Definition at line 224 of file Herwig7Hadronizer.cc.

225 {
226  return true;
227 }
void Herwig7Hadronizer::statistics ( )

Definition at line 128 of file Herwig7Hadronizer.cc.

References Herwig7Interface::eg_, gen::BaseHadronizer::runInfo(), and GenRunInfoProduct::setInternalXSec().

129 {
130  if(eg_){
132  eg_->integratedXSec() / ThePEG::picobarn,
133  eg_->integratedXSecErr() / ThePEG::picobarn));
134  }
135 }
void setInternalXSec(const XSec &xsec)
GenRunInfoProduct & runInfo()
ThePEG::EGPtr eg_

Member Data Documentation

unsigned int Herwig7Hadronizer::currentLumiBlock =0
private

Definition at line 75 of file Herwig7Hadronizer.cc.

Referenced by initializeForInternalPartons(), and randomizeIndex().

unsigned int Herwig7Hadronizer::eventsToPrint
private

Definition at line 65 of file Herwig7Hadronizer.cc.

Referenced by finalizeEvent().

unsigned int Herwig7Hadronizer::firstLumiBlock =0
private

Definition at line 74 of file Herwig7Hadronizer.cc.

Referenced by initializeForInternalPartons(), and randomizeIndex().

const std::string Herwig7Hadronizer::handlerDirectory_
private

Definition at line 70 of file Herwig7Hadronizer.cc.

edm::ParameterSet Herwig7Hadronizer::paramSettings
private

Definition at line 71 of file Herwig7Hadronizer.cc.

Referenced by Herwig7Hadronizer(), and initializeForInternalPartons().

std::shared_ptr<lhef::LHEProxy> Herwig7Hadronizer::proxy_
private

Definition at line 69 of file Herwig7Hadronizer.cc.

const std::string Herwig7Hadronizer::runFileName
private

Definition at line 72 of file Herwig7Hadronizer.cc.

Referenced by initializeForInternalPartons().

ThePEG::EventPtr Herwig7Hadronizer::thepegEvent
private