CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/GeneratorInterface/Pythia6Interface/plugins/Pythia6Hadronizer.h

Go to the documentation of this file.
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