CMS 3D CMS Logo

HydjetProducer.h

Go to the documentation of this file.
00001 #ifndef HydjetProducer_h
00002 #define HydjetProducer_h
00003 
00004 // $Id: HydjetProducer.h,v 1.1 2008/04/09 15:40:33 marafino Exp $
00005 
00014 #define PYCOMP pycomp_
00015 
00016 #include "FWCore/Framework/interface/EDProducer.h"
00017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00018 #include "SimDataFormats/HiGenData/interface/SubEvent.h"
00019 #include <map>
00020 #include <string>
00021 #include <vector>
00022 #include <math.h>
00023 
00024 namespace HepMC {
00025   class GenEvent;
00026   class GenParticle;
00027   class GenVertex;
00028 }
00029 namespace CLHEP {
00030 class HepRandomEngine;
00031 }
00032 
00033 namespace edm
00034 {
00035   class HydjetProducer : public EDProducer {
00036   public:
00037     HydjetProducer(const ParameterSet &);
00038     virtual ~HydjetProducer();
00039 
00040   private:
00041     void                                        add_heavy_ion_rec(HepMC::GenEvent *evt);
00042     HepMC::GenParticle*                         build_hyjet( int index, int barcode );  
00043     HepMC::GenVertex*                           build_hyjet_vertex(int i, int id);
00044     bool                                        call_pygive(const std::string& iParm);
00045     void                                        clear();
00046     bool                                        get_hard_particles(HepMC::GenEvent* evt, std::vector<SubEvent>& subs);
00047     bool                                        get_soft_particles(HepMC::GenEvent* evt, std::vector<SubEvent>& subs);
00048     bool                                        call_hyinit(double energy, double a, int ifb, double bmin,
00049                                                             double bmax,double bfix,int nh);
00050     bool                                        hydjet_init(const ParameterSet &pset);
00051     bool                                        hyjpythia_init(const ParameterSet &pset);
00052     inline double                               nuclear_radius() const;
00053     virtual void                                produce(Event & e, const EventSetup & es);
00054     
00055     HepMC::GenEvent   *evt;
00056     double            abeamtarget_;           // beam/target atomic mass number 
00057     double            bfixed_;                // fixed impact param (fm); valid only if cflag_=0
00058     double            bmax_;                  // max impact param; 
00059                                               // units of nucl radius
00060     double            bmin_;                  // min impact param; 
00061                                               // units of nucl radius
00062     int               cflag_;                 // centrality flag 
00063                                               // =  0 fixed impact param, 
00064                                               // <> 0 between bmin and bmax
00065     double            comenergy;              // collision energy   
00066     bool              doradiativeenloss_;     
00067     bool              docollisionalenloss_;   
00068     double            fracsoftmult_;          // fraction of soft hydro induced hadronic multiplicity
00069                                               // proportional to no of nucleon participants
00070                                               // (1-fracsoftmult_)--- fraction of soft 
00071                                               // multiplicity proportional to the numebr 
00072                                               // of nucleon-nucleon binary collisions
00073                                               // DEFAULT=1., allowed range [0.01,1]
00074     double            hadfreeztemp_;          // hadron freez-out temperature
00075                                               // DEFAULT=0.14MeV, allowed ranges [0.08,0.2]MeV
00076     std::string       hymode_;                // Hydjet running mode
00077     unsigned int      maxEventsToPrint_;      // Events to print if verbosity  
00078     double            maxlongy_;              // max longitudinal collective rapidity: 
00079                                               // controls width of eta-spectra
00080                                               // DEFAULT=4, allowed range [0.01,7.0]
00081     double            maxtrany_;              // max transverse collective rapidity: 
00082                                               // controls slope of low-pt spectra
00083                                               // DEFAULT=1.5, allowed range [0.01,3.0]
00084     int               nsub_;
00085     int               nhard_;                 // multiplicity of PYTHIA(+PYQUEN)-induced particles in event              
00086     int               nmultiplicity_;         // mean soft multiplicity in central PbPb
00087                                               // automatically calculated for other centralitie and beams         
00088     int               nsoft_;                 // multiplicity of HYDRO-induced particles in event 
00089     unsigned int      nquarkflavor_;          
00090 
00091     unsigned int      pythiaPylistVerbosity_; // pythia verbosity; def=1 
00092     double            qgpt0_;                 // initial temperature of QGP
00093                                               // DEFAULT = 1GeV; allowed range [0.2,2.0]GeV; 
00094     double            qgptau0_;               // proper time of QGP formation
00095                                               // DEFAULT = 0.1 fm/c; allowed range [0.01,10.0]fm/
00096     unsigned int      shadowingswitch_;       // shadowing switcher
00097                                               // 1-ON, 0-OFF
00098     double            signn_;                 // inelastic nucleon nucleon cross section [mb]
00099                                               // DEFAULT= 58 mb
00100     CLHEP::HepRandomEngine* fRandomEngine;
00101     unsigned int      eventNumber_;
00102   };
00103 
00104 double HydjetProducer::nuclear_radius() const
00105 {
00106   // Return the nuclear radius derived from the 
00107   // beam/target atomic mass number.
00108 
00109   return 1.15 * pow((double)abeamtarget_, 1./3.);
00110 }
00111 
00112 } /*end namespace*/
00113 
00114 #endif

Generated on Tue Jun 9 17:36:57 2009 for CMSSW by  doxygen 1.5.4