00001 #ifndef AGILE_FPYTHIA_HH 00002 #define AGILE_FPYTHIA_HH 00003 00004 #include "AGILe/Generator.hh" 00005 #include "HepMC/IO_HEPEVT.h" 00006 00007 namespace AGILe { 00008 00011 class FPythia : public Generator { 00012 public: 00014 FPythia(); 00015 00017 virtual ~FPythia() { } 00018 00020 void setGenSpecificInitialState(PdgCode p1 = PROTON, double e1 = 7000.0, 00021 PdgCode p2 = PROTON, double e2 = 7000.0); 00022 00023 const string getName() const { 00024 return "PYTHIA"; 00025 } 00026 00027 00029 void makeEvent(HepMC::GenEvent& evt); 00030 00031 00033 virtual void setSeed(const int value) { 00034 setParam("MRPY(1)", value); 00035 } 00036 00037 00039 using Generator::setParam; 00040 00041 00043 virtual bool setParam(const string& name, const string& value); 00044 00045 string getPDFSet(PdgCode pid); 00046 int getPDFMember(PdgCode pid); 00047 string getPDFScheme(PdgCode pid)const; 00048 00050 virtual const double getCrossSection(); 00051 00052 virtual const string getVersion(); 00053 00055 void finalize(); 00056 00057 protected: 00059 void initialize(); 00060 00062 void fillEvent(HepMC::GenEvent& evt); 00063 00065 string _particleName1, _particleName2; 00066 double _e1, _e2; 00067 00069 int _nevt; 00070 00072 HepMC::IO_HEPEVT _hepevt; 00073 }; 00074 00075 } 00076 00077 #endif