00001 #ifndef GeneratorInterface_ThePEGInterface_ThePEGInterface_h 00002 #define GeneratorInterface_ThePEGInterface_ThePEGInterface_h 00003 00011 #include <memory> 00012 #include <string> 00013 00014 #include <boost/shared_ptr.hpp> 00015 00016 #include <HepMC/GenEvent.h> 00017 #include <HepMC/PdfInfo.h> 00018 #include <HepMC/IO_BaseClass.h> 00019 00020 #include <ThePEG/Repository/EventGenerator.h> 00021 #include <ThePEG/EventRecord/Event.h> 00022 00023 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00024 00025 #include "GeneratorInterface/ThePEGInterface/interface/RandomEngineGlue.h" 00026 00027 class ThePEGInterface { 00028 public: 00029 ThePEGInterface(const edm::ParameterSet ¶ms); 00030 virtual ~ThePEGInterface(); 00031 00032 protected: 00033 void initRepository(const edm::ParameterSet ¶ms) const; 00034 void initGenerator(); 00035 void flushRandomNumberGenerator(); 00036 00037 static std::auto_ptr<HepMC::GenEvent> 00038 convert(const ThePEG::EventPtr &event); 00039 static void clearAuxiliary(HepMC::GenEvent *hepmc, 00040 HepMC::PdfInfo *pdf); 00041 static void fillAuxiliary(HepMC::GenEvent *hepmc, 00042 HepMC::PdfInfo *pdf, 00043 const ThePEG::EventPtr &event); 00044 00045 static double pthat(const ThePEG::EventPtr &event); 00046 00047 std::string dataFile(const std::string &fileName) const; 00048 std::string dataFile(const edm::ParameterSet &pset, 00049 const std::string ¶mName) const; 00050 00051 ThePEG::EGPtr eg_; 00052 std::auto_ptr<HepMC::IO_BaseClass> iobc_; 00053 00054 private: 00055 boost::shared_ptr<ThePEG::RandomEngineGlue::Proxy> 00056 randomEngineGlueProxy_; 00057 00058 const std::string dataLocation_; 00059 const std::string generator_; 00060 const std::string run_; 00061 const std::string dumpConfig_; 00062 const unsigned int skipEvents_; 00063 }; 00064 00065 #endif // GeneratorInterface_ThePEGInterface_ThePEGInterface_h