00001 #ifndef gen_Cascade2Hadronizer_h 00002 #define gen_Cascade2Hadronizer_h 00003 00004 #include <memory> 00005 00006 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h" 00007 #include "GeneratorInterface/Core/interface/ParameterCollector.h" 00008 #include "GeneratorInterface/Core/interface/BaseHadronizer.h" 00009 #include "CLHEP/Random/RandomEngine.h" 00010 00011 namespace HepMC { 00012 class GenEvent; 00013 } 00014 00015 namespace CLHEP { 00016 class RandFlat; 00017 } 00018 00019 namespace gen { 00020 00021 class Pythia6Service; 00022 00023 class Cascade2Hadronizer : public BaseHadronizer { 00024 00025 public: 00026 00027 Cascade2Hadronizer(edm::ParameterSet const& ps); 00028 ~Cascade2Hadronizer(); 00029 00030 bool readSettings(int); 00031 bool initializeForExternalPartons(); //-- initializer for the LHE input 00032 bool initializeForInternalPartons(); 00033 00034 //-- Read the parameters and pass them to the common blocks 00035 bool cascadeReadParameters(const std::string& ParameterString); 00036 void cascadePrintParameters(); 00037 void pythia6PrintParameters(); 00038 bool declareStableParticles(const std::vector<int>); 00039 bool declareSpecialSettings( const std::vector<std::string> ) { return true; } 00040 void statistics(); 00041 00042 bool generatePartonsAndHadronize(); 00043 bool hadronize(); //-- hadronizer for the LHE input 00044 bool decay(); 00045 bool residualDecay(); 00046 void finalizeEvent(); 00047 00048 const char* classname() const; 00049 00050 private: 00051 00052 //-- methods 00053 00054 void flushTmpStorage(); 00055 void fillTmpStorage(); 00056 void imposeProperTime(); //-- to correctly treat particle decay 00057 00058 //-- data members 00059 00060 edm::ParameterSet fParameters; 00061 00062 Pythia6Service* fPy6Service; 00063 00064 CLHEP::RandFlat* fFlat; 00065 00066 double fComEnergy ; //-- irrelevant for setting py6 as hadronizer (or if anything, it should be picked up from LHERunInfoProduct) 00067 double fextCrossSection; 00068 double fextCrossSectionError; 00069 double fFilterEfficiency; 00070 00071 unsigned int fMaxEventsToPrint ; 00072 bool fHepMCVerbosity; 00073 unsigned int fPythiaListVerbosity ; //-- p6 specific 00074 00075 bool fDisplayPythiaBanner; //-- p6 specific 00076 bool fDisplayPythiaCards; //-- p6 specific 00077 00078 bool fConvertToPDG; //-- conversion of Py6 PID's into PDG convention 00079 }; 00080 } 00081 00082 #endif