00001 #ifndef gen_Py8InterfaceBase_h 00002 #define gen_Py8InterfaceBase_h 00003 00004 #include <vector> 00005 #include <string> 00006 00007 #include "GeneratorInterface/Core/interface/ParameterCollector.h" 00008 00009 #include <Pythia.h> 00010 #include <HepMCInterface.h> 00011 00012 namespace gen { 00013 00014 class Py8InterfaceBase { 00015 00016 public: 00017 00018 Py8InterfaceBase( edm::ParameterSet const& ps ); 00019 ~Py8InterfaceBase() {} 00020 00021 virtual bool generatePartonsAndHadronize() = 0; 00022 bool decay() { return true; } // NOT used - let's call it "design imperfection" 00023 bool readSettings( int ); // common func 00024 virtual bool initializeForInternalPartons() = 0; 00025 bool declareStableParticles( const std::vector<int>& ); // common func 00026 bool declareSpecialSettings( const std::vector<std::string>& ); // common func 00027 virtual void finalizeEvent() = 0; 00028 virtual void statistics(); 00029 virtual const char* classname() const = 0; 00030 00031 protected: 00032 00033 std::auto_ptr<Pythia8::Pythia> fMasterGen; 00034 std::auto_ptr<Pythia8::Pythia> fDecayer; 00035 HepMC::I_Pythia8 toHepMC; 00036 ParameterCollector fParameters; 00037 00038 unsigned int pythiaPylistVerbosity; 00039 bool pythiaHepMCVerbosity; 00040 unsigned int maxEventsToPrint; 00041 00042 }; 00043 00044 } 00045 00046 #endif // gen_Py8InterfaceBase_h