00001 #ifndef Pyquen_Hadronizer_h 00002 #define Pyquen_Hadronizer_h 00003 00013 #include "GeneratorInterface/Core/interface/BaseHadronizer.h" 00014 #include "GeneratorInterface/HiGenCommon/interface/BaseHiGenEvtSelector.h" 00015 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00016 #include "FWCore/Utilities/interface/InputTag.h" 00017 #include <map> 00018 #include <string> 00019 #include "HepMC/GenEvent.h" 00020 00021 namespace gen 00022 { 00023 class Pythia6Service; 00024 00025 class PyquenHadronizer : public BaseHadronizer { 00026 public: 00027 00028 PyquenHadronizer(const edm::ParameterSet &); 00029 virtual ~PyquenHadronizer(); 00030 00031 bool generatePartonsAndHadronize(); 00032 bool hadronize(); 00033 bool decay(); 00034 bool residualDecay(); 00035 bool readSettings( int ); 00036 bool initializeForExternalPartons(); 00037 bool initializeForInternalPartons(); 00038 bool declareStableParticles( const std::vector<int> ); 00039 bool declareSpecialSettings( const std::vector<std::string> ) { return true; } 00040 virtual bool select(HepMC::GenEvent* evtTry) const { return selector_->filter(evtTry); } 00041 void finalizeEvent(); 00042 void statistics(); 00043 const char* classname() const; 00044 00045 private: 00046 void add_heavy_ion_rec(HepMC::GenEvent *evt); 00047 00048 bool pyqpythia_init(const edm::ParameterSet &pset); 00049 bool pyquen_init(const edm::ParameterSet &pset); 00050 const char* nucleon(); 00051 void rotateEvtPlane(HepMC::GenEvent* evt, double angle); 00052 00053 edm::ParameterSet pset_; 00054 double abeamtarget_; 00055 unsigned int angularspecselector_; 00056 00057 00058 00059 double bmin_; 00060 double bmax_; 00061 double bfixed_; 00062 int cflag_; 00063 double comenergy; 00064 bool doquench_; 00065 bool doradiativeenloss_; 00066 bool docollisionalenloss_; 00067 bool doIsospin_; 00068 bool embedding_; 00069 double evtPlane_; 00070 double pfrac_; 00071 00072 unsigned int nquarkflavor_; 00073 00074 double qgpt0_; 00075 00076 double qgptau0_; 00077 00078 unsigned int maxEventsToPrint_; 00079 bool pythiaHepMCVerbosity_; 00080 unsigned int pythiaPylistVerbosity_; 00081 00082 // CLHEP::HepRandomEngine* fRandomEngine; 00083 edm::InputTag src_; 00084 Pythia6Service* pythia6Service_; 00085 std::string filterType_; 00086 BaseHiGenEvtSelector* selector_; 00087 }; 00088 } /*end namespace*/ 00089 00090 #endif