File indexing completed on 2024-04-06 12:13:42
0001
0002
0003
0004
0005 #ifndef GeneratorInterface_Herwig7Interface_Herwig7Interface_h
0006 #define GeneratorInterface_Herwig7Interface_Herwig7Interface_h
0007
0008 #include <memory>
0009 #include <string>
0010
0011 #include <HepMC/GenEvent.h>
0012 #include <HepMC/PdfInfo.h>
0013 #include <HepMC/IO_BaseClass.h>
0014
0015 #include <ThePEG/Repository/EventGenerator.h>
0016 #include <ThePEG/EventRecord/Event.h>
0017 #include <ThePEG/Vectors/HepMCTraits.h>
0018
0019 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0020
0021 #include "GeneratorInterface/Herwig7Interface/interface/RandomEngineGlue.h"
0022 #include "GeneratorInterface/Herwig7Interface/interface/HerwigUIProvider.h"
0023
0024 namespace ThePEG {
0025
0026 template <>
0027 struct HepMCTraits<HepMC::GenEvent> : public HepMCTraitsBase<HepMC::GenEvent,
0028 HepMC::GenParticle,
0029 HepMC::GenParticle *,
0030 HepMC::GenVertex,
0031 HepMC::GenVertex *,
0032 HepMC::Polarization,
0033 HepMC::PdfInfo> {};
0034
0035 }
0036
0037 namespace CLHEP {
0038 class HepRandomEngine;
0039 }
0040
0041 class Herwig7Interface {
0042 public:
0043 Herwig7Interface(const edm::ParameterSet ¶ms);
0044 ~Herwig7Interface() noexcept;
0045
0046 void setPEGRandomEngine(CLHEP::HepRandomEngine *);
0047
0048 ThePEG::EGPtr eg_;
0049
0050 protected:
0051 void initRepository(const edm::ParameterSet ¶ms);
0052 bool initGenerator();
0053 void flushRandomNumberGenerator();
0054
0055 static std::unique_ptr<HepMC::GenEvent> convert(const ThePEG::EventPtr &event);
0056
0057 static double pthat(const ThePEG::EventPtr &event);
0058
0059 std::unique_ptr<HepMC::IO_BaseClass> iobc_;
0060
0061
0062 std::shared_ptr<Herwig::HerwigUIProvider> HwUI_;
0063
0064
0065
0066
0067
0068
0069 void callHerwigGenerator();
0070
0071
0072 void createInputFile(const edm::ParameterSet ¶ms);
0073
0074 private:
0075 std::shared_ptr<ThePEG::RandomEngineGlue::Proxy> randomEngineGlueProxy_;
0076
0077 const std::string dataLocation_;
0078 const std::string generator_;
0079 const std::string run_;
0080
0081 std::string dumpConfig_;
0082 const unsigned int skipEvents_;
0083 CLHEP::HepRandomEngine *randomEngine;
0084 };
0085
0086 #endif