CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/GeneratorInterface/HijingInterface/interface/HijingHadronizer.h

Go to the documentation of this file.
00001 #ifndef HijingHadronizer_h
00002 #define HijingHadronizer_h
00003 
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include "GeneratorInterface/Core/interface/BaseHadronizer.h"
00006 #include "CLHEP/Random/RandomEngine.h"
00007 
00008 #include <map>
00009 #include <string>
00010 #include <vector>
00011 #include <math.h>
00012 
00013 namespace HepMC {
00014   class GenEvent;
00015   class GenParticle;
00016   class GenVertex;
00017 }
00018 
00019 extern CLHEP::HepRandomEngine* hijRandomEngine;
00020 
00021 namespace gen
00022 {
00023   extern "C" {
00024     double hijran_(int*);
00025   }
00026 
00027   class HijingHadronizer : public BaseHadronizer {
00028   public:
00029     HijingHadronizer(const edm::ParameterSet &);
00030     virtual ~HijingHadronizer();
00031 
00032     bool generatePartonsAndHadronize();
00033     bool hadronize();
00034     bool decay();
00035     bool residualDecay();
00036     bool initializeForExternalPartons();
00037     bool initializeForInternalPartons();
00038     bool declareStableParticles( const std::vector<int> );
00039     bool declareSpecialSettings( const std::vector<std::string> ) { return true; }
00040     
00041     void finalizeEvent();
00042     void statistics();
00043     const char* classname() const;
00044 
00045   private:
00046     
00047     void                                        add_heavy_ion_rec(HepMC::GenEvent *evt);
00048     HepMC::GenParticle*                         build_hijing( int index, int barcode ); 
00049     HepMC::GenVertex*                           build_hijing_vertex(int i, int id);
00050     bool                                        get_particles(HepMC::GenEvent* evt);
00051     bool                                        call_hijset(double efrm, std::string frame, std::string proj, 
00052                                                             std::string targ, int iap, int izp, int iat, int izt);
00053     //    inline double                         nuclear_radius() const;
00054     void                                        rotateEvtPlane();
00055 
00056     HepMC::GenEvent   *evt;
00057     edm::ParameterSet pset_;
00058     double            bmax_;                  // max impact param; 
00059                                               // units of nucl radius
00060     double            bmin_;                  // min impact param; 
00061                                               // units of nucl radius
00062     double            efrm_;                  // collision energy  
00063     std::string       frame_;
00064     std::string       proj_;
00065     std::string       targ_;
00066     int               iap_;
00067     int               izp_;
00068     int               iat_;
00069     int               izt_;    
00070 
00071 //    unsigned int      maxEventsToPrint_;      // Events to print if verbosity  
00072 //    unsigned int      pythiaPylistVerbosity_; // pythia verbosity; def=1 
00073 
00074     double            phi0_;                  // Event plane angle
00075     double            sinphi0_;
00076     double            cosphi0_;
00077     bool              rotate_;                // Switch to rotate event plane
00078 
00079     //    unsigned int      shadowingswitch_;       // shadowing switcher
00080                                               // 1-ON, 0-OFF
00081     //    double            signn_;                 // inelastic nucleon nucleon cross section [mb]
00082                                               // DEFAULT= 58 mb
00083     //    CLHEP::HepRandomEngine* fRandomEngine;
00084 //    Pythia6Service* pythia6Service_;
00085   };
00086 
00087 } /*end namespace*/
00088 
00089 #endif