00001 #ifndef Pythia_Producer_h 00002 #define Pythia_Producer_h 00003 00015 #define PYCOMP pycomp_ 00016 00017 #include "FWCore/Framework/interface/EDProducer.h" 00018 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00019 #include <map> 00020 #include <string> 00021 #include "HepMC/GenEvent.h" 00022 00023 #include "GeneratorInterface/CommonInterface/interface/TauolaInterface.h" 00024 #include "GeneratorInterface/Pythia6Interface/interface/PtYDistributor.h" 00025 00026 class Run; 00027 namespace CLHEP { 00028 class HepRandomEngine; 00029 class RandFlat; 00030 } 00031 00032 namespace edm 00033 { 00034 class PythiaProducer : public EDProducer { 00035 public: 00036 00038 PythiaProducer(const ParameterSet &); 00040 virtual ~PythiaProducer(); 00041 00042 void endRun( Run& r, const EventSetup& es); 00043 00044 private: 00045 00047 bool call_pygive(const std::string& iParm ); 00048 bool call_txgive(const std::string& iParm ); 00049 bool call_txgive_init(); 00050 bool call_slhagive(const std::string& iParm ); 00051 bool call_slha_init(); 00052 00053 private: 00054 00055 virtual void produce(Event & e, const EventSetup& es); 00056 void clear(); 00057 00058 HepMC::GenEvent *evt; 00059 00060 // for pyinit 00061 std::string fFrame ; 00062 std::string fBeam1; 00063 std::string fBeam2; 00064 double fCOMEnergy; 00065 00067 unsigned int pythiaPylistVerbosity_; 00069 bool pythiaHepMCVerbosity_; 00071 bool imposeProperTimes_; 00073 unsigned int maxEventsToPrint_; 00074 00075 // external cross section and filter efficiency 00076 double extCrossSect; 00077 double extFilterEff; 00078 00079 // for single particle generation in pythia 00080 int particleID; 00081 bool doubleParticle; 00082 std::string kinedata; 00083 double ptmin, ptmax; 00084 double etamin, etamax; 00085 double phimin, phimax; 00086 double emin, emax; 00087 double ymin, ymax; 00088 bool flatEnergy; 00089 00090 // external generators (tauola,...) 00091 bool useExternalGenerators_ ; 00092 bool useTauola_ ; 00093 bool useTauolaPolarization_ ; 00094 TauolaInterface tauola_ ; 00095 00096 bool stopHadronsEnabled; 00097 bool gluinoHadronsEnabled; 00098 00099 CLHEP::HepRandomEngine& fRandomEngine; 00100 CLHEP::RandFlat* fRandomGenerator; 00101 PtYDistributor* fPtYGenerator; 00102 int eventNumber_; 00103 }; 00104 } 00105 00106 #endif