CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/FastSimulation/ParticleDecay/interface/PythiaDecays.h

Go to the documentation of this file.
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