00001 #ifndef gen_Pythia6Hadronizer_h 00002 #define gen_Pythia6Hadronizer_h 00003 00004 // -*- C++ -*- 00005 00006 // class Pythia6Hadronizer is an example of a class that models the 00007 // Hadronizer concept. 00008 00009 #include <memory> 00010 00011 #include <boost/shared_ptr.hpp> 00012 00013 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h" 00014 00015 #include "GeneratorInterface/Core/interface/BaseHadronizer.h" 00016 00017 namespace lhef 00018 { 00019 class LHERunInfo; 00020 class LHEEvent; 00021 } 00022 00023 class LHEEventProduct; 00024 00025 namespace HepMC 00026 { 00027 class GenEvent; 00028 } 00029 00030 00031 namespace gen 00032 { 00033 00034 class Pythia6Service; 00035 class JetMatching; 00036 00037 class Pythia6Hadronizer : public BaseHadronizer 00038 { 00039 00040 public: 00041 Pythia6Hadronizer(edm::ParameterSet const& ps); 00042 ~Pythia6Hadronizer(); 00043 00044 // bool generatePartons(); 00045 bool generatePartonsAndHadronize(); 00046 bool hadronize(); 00047 bool decay(); 00048 bool residualDecay(); 00049 bool initializeForExternalPartons(); 00050 bool initializeForInternalPartons(); 00051 bool declareStableParticles( const std::vector<int> ); 00052 bool declareSpecialSettings( const std::vector<std::string> ); 00053 00054 static JetMatching* getJetMatching() { return fJetMatching; } 00055 00056 void finalizeEvent(); 00057 00058 void statistics(); 00059 00060 const char* classname() const; 00061 00062 private: 00063 // methods 00064 // 00065 void flushTmpStorage(); 00066 void fillTmpStorage(); 00067 00068 void imposeProperTime(); 00069 00070 // data members 00071 // 00072 00073 Pythia6Service* fPy6Service; 00074 00075 // the following 3 params are common for all generators(interfaces) 00076 // probably better to wrap them up in a class and reuse ? 00077 // (the event/run pointers are already moved to BaseHadronizer) 00078 // 00079 double fCOMEnergy ; // this one is irrelevant for setting py6 as hadronizer 00080 // or if anything, it should be picked up from LHERunInfoProduct ! 00081 00082 static JetMatching* fJetMatching; 00083 00084 bool fHepMCVerbosity; 00085 unsigned int fMaxEventsToPrint ; 00086 00087 // this is the only one specific to Pythia6 00088 // 00089 unsigned int fPythiaListVerbosity ; 00090 bool fDisplayPythiaBanner; 00091 bool fDisplayPythiaCards; 00092 00093 // these two params control stop- and r-handron features, 00094 // that are "custom" add-ons to Py6; 00095 // I doubt they should drag along Py6Int main library... 00096 // 00097 bool fStopHadronsEnabled; 00098 bool fGluinoHadronsEnabled; 00099 00100 // this is a "trick" to generate enriched mu-samples and the likes 00101 bool fImposeProperTime; 00102 00103 // and final touch - conversion of Py6 PID's into PDG convension 00104 bool fConvertToPDG; 00105 00106 // tmp stuff, to deal with EvtGen corrupting pyjets 00107 // int NPartsBeforeDecays; 00108 00109 }; 00110 } 00111 00112 #endif