00001 #ifndef PythiaDecays_h 00002 #define PythiaDecays_h 00003 00004 #include <vector> 00005 00006 // Needed for Pythia8 00007 #include <HepMC/GenEvent.h> 00008 #include <HepMC/GenParticle.h> 00009 #include <Pythia.h> 00010 #include <HepMCInterface.h> 00011 #include "FWCore/Utilities/interface/RandomNumberGenerator.h" 00012 #include "GeneratorInterface/Core/interface/RNDMEngineAccess.h" 00013 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" 00014 #include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h" 00015 #include "GeneratorInterface/ExternalDecays/interface/ExternalDecayDriver.h" 00016 00017 class ParticlePropagator; 00018 class Pythia6jets; 00019 class RawParticle; 00020 00021 typedef std::vector<RawParticle> DaughterParticleList; 00022 typedef DaughterParticleList::const_iterator DaughterParticleIterator; 00023 00024 namespace gen { class Pythia6Service; } // remove? 00025 //using namespace gen; 00026 00027 class PythiaDecays 00028 { 00029 public: 00030 PythiaDecays(std::string program); 00031 ~PythiaDecays(); 00032 00033 const DaughterParticleList& 00034 particleDaughtersPy6(ParticlePropagator& particle); 00035 const DaughterParticleList& 00036 particleDaughtersPy8(ParticlePropagator& particle); 00037 00038 private: 00039 DaughterParticleList theList; 00040 std::string program_; 00041 // for Pythia6: 00042 gen::Pythia6Service *pyservice; 00043 Pythia6jets* pyjets; 00044 // for Pythia8: 00045 std::auto_ptr<Pythia8::Pythia> pythia; 00046 std::auto_ptr<Pythia8::Pythia> decayer; 00047 00048 }; 00049 #endif