Go to the documentation of this file.00001 #ifndef gen_EvtGenInterface_h
00002 #define gen_EvtGenInterface_h
00003
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include <memory>
00006
00007
00008 #include "FWCore/Framework/interface/Frameworkfwd.h"
00009 #include "FWCore/Framework/interface/EDProducer.h"
00010
00011 #include "FWCore/Framework/interface/Event.h"
00012 #include "FWCore/Framework/interface/MakerMacros.h"
00013
00014 #include "CLHEP/Random/RandFlat.h"
00015
00016 #include "EvtGen/EvtGen.hh"
00017 #include "EvtGenBase/EvtId.hh"
00018 #include "EvtGenBase/EvtPDL.hh"
00019 #include "EvtGenBase/EvtDecayTable.hh"
00020 #include "EvtGenBase/EvtSpinType.hh"
00021 #include "EvtGenBase/EvtVector4R.hh"
00022 #include "EvtGenBase/EvtParticle.hh"
00023 #include "EvtGenBase/EvtScalarParticle.hh"
00024 #include "EvtGenBase/EvtStringParticle.hh"
00025 #include "EvtGenBase/EvtDiracParticle.hh"
00026 #include "EvtGenBase/EvtVectorParticle.hh"
00027 #include "EvtGenBase/EvtRaritaSchwingerParticle.hh"
00028 #include "EvtGenBase/EvtTensorParticle.hh"
00029 #include "EvtGenBase/EvtHighSpinParticle.hh"
00030 #include "EvtGenBase/EvtStdHep.hh"
00031 #include "EvtGenBase/EvtSecondary.hh"
00032 #include "EvtGenModels/EvtPythia.hh"
00033
00034 namespace CLHEP {
00035 class HepRandomEngine;
00036 class RandFlat;
00037 }
00038
00039 namespace HepMC {
00040 class GenParticle;
00041 class GenEvent;
00042 }
00043
00044 namespace gen {
00045
00046 class Pythia6Service;
00047
00048 class EvtGenInterface
00049 {
00050 public:
00051
00052
00053 EvtGenInterface( const edm::ParameterSet& );
00054 ~EvtGenInterface();
00055
00056 void init();
00057 const std::vector<int>& operatesOnParticles() { return m_PDGs; }
00058 HepMC::GenEvent* decay( HepMC::GenEvent* );
00059 void addToHepMC(HepMC::GenParticle* partHep, EvtId idEvt, HepMC::GenEvent* theEvent, bool del_daug);
00060 void go_through_daughters(EvtParticle* part);
00061 void update_candlist( int theIndex, HepMC::GenParticle *thePart );
00062
00063
00064
00065
00066 private:
00067
00068 Pythia6Service* m_Py6Service;
00069
00070 std::vector<int> m_PDGs;
00071
00072 CLHEP::RandFlat* m_flat;
00073 EvtGen *m_EvtGen;
00074 std::vector<EvtId> forced_Evt;
00075 std::vector<int> forced_Hep;
00076 int nforced;
00077 int ntotal, npartial, nevent;
00078
00079 int nPythia;
00080 bool usePythia;
00081
00082
00083 int nlist;
00084 HepMC::GenParticle *listp[10];
00085 int index[10];
00086
00087 };
00088
00089 }
00090
00091 #endif