00001 #ifndef Comphep_Source_h 00002 #define Comphep_Source_h 00003 00017 #define PYCOMP pycomp_ 00018 00019 #include "FWCore/Framework/interface/GeneratedInputSource.h" 00020 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00021 #include <map> 00022 #include <string> 00023 #include "HepMC/GenEvent.h" 00024 00025 00026 namespace CLHEP 00027 { 00028 class RandFlat ; 00029 class HepRandomEngine; 00030 } 00031 00032 namespace edm 00033 { 00034 class ComphepSource : public GeneratedInputSource { 00035 public: 00036 00038 ComphepSource(const ParameterSet &, const InputSourceDescription &); 00040 virtual ~ComphepSource(); 00041 00042 00043 private: 00044 00046 bool call_pygive(const std::string& iParm ); 00047 bool call_txgive(const std::string& iParm ); 00048 bool call_txgive_init(); 00049 00050 private: 00051 00052 virtual bool produce(Event & e); 00053 void clear(); 00054 00055 HepMC::GenEvent *evt; 00056 00058 unsigned int pythiaPylistVerbosity_; 00060 bool pythiaHepMCVerbosity_; 00062 unsigned int maxEventsToPrint_; 00064 std::string CHFile_; 00066 bool getInputFromMCDB_; 00068 int MCDBArticleID_; 00069 00070 00071 00072 // for single particle generation in pythia 00073 int particleID; 00074 bool doubleParticle; 00075 double ptmin, ptmax; 00076 double etamin, etamax; 00077 double phimin, phimax; 00078 00079 CLHEP::HepRandomEngine* fRandomEngine; 00080 CLHEP::RandFlat* fRandomGenerator; 00081 00082 }; 00083 } 00084 00085 #endif