CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/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 readSettings( int ) { return true; }
00037     bool initializeForExternalPartons();
00038     bool initializeForInternalPartons();
00039     bool declareStableParticles( const std::vector<int> );
00040     bool declareSpecialSettings( const std::vector<std::string> ) { return true; }
00041     
00042     void finalizeEvent();
00043     void statistics();
00044     const char* classname() const;
00045 
00046   private:
00047     
00048     void                                        add_heavy_ion_rec(HepMC::GenEvent *evt);
00049     HepMC::GenParticle*                         build_hijing( int index, int barcode ); 
00050     HepMC::GenVertex*                           build_hijing_vertex(int i, int id);
00051     bool                                        get_particles(HepMC::GenEvent* evt);
00052     bool                                        call_hijset(double efrm, std::string frame, std::string proj, 
00053                                                             std::string targ, int iap, int izp, int iat, int izt);
00054     //    inline double                         nuclear_radius() const;
00055     void                                        rotateEvtPlane();
00056 
00057     HepMC::GenEvent   *evt;
00058     edm::ParameterSet pset_;
00059     double            bmax_;                  // max impact param; 
00060                                               // units of nucl radius
00061     double            bmin_;                  // min impact param; 
00062                                               // units of nucl radius
00063     double            efrm_;                  // collision energy  
00064     std::string       frame_;
00065     std::string       proj_;
00066     std::string       targ_;
00067     int               iap_;
00068     int               izp_;
00069     int               iat_;
00070     int               izt_;    
00071 
00072 //    unsigned int      maxEventsToPrint_;      // Events to print if verbosity  
00073 //    unsigned int      pythiaPylistVerbosity_; // pythia verbosity; def=1 
00074 
00075     double            phi0_;                  // Event plane angle
00076     double            sinphi0_;
00077     double            cosphi0_;
00078     bool              rotate_;                // Switch to rotate event plane
00079 
00080     //    unsigned int      shadowingswitch_;       // shadowing switcher
00081                                               // 1-ON, 0-OFF
00082     //    double            signn_;                 // inelastic nucleon nucleon cross section [mb]
00083                                               // DEFAULT= 58 mb
00084     //    CLHEP::HepRandomEngine* fRandomEngine;
00085 //    Pythia6Service* pythia6Service_;
00086   };
00087 
00088 } /*end namespace*/
00089 
00090 #endif