CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/GeneratorInterface/CascadeInterface/plugins/Cascade2Hadronizer.h

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