CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_4/src/GeneratorInterface/AMPTInterface/interface/AMPTHadronizer.h

Go to the documentation of this file.
00001 #ifndef AMPTHadronizer_h
00002 #define AMPTHadronizer_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* _amptRandomEngine;
00020 
00021 namespace gen
00022 {
00023 
00024   extern "C" {
00025     float ranart_(int*);
00026   }
00027 
00028   extern "C" {
00029     float ran1_(int*);
00030   }
00031 
00032   class AMPTHadronizer : public BaseHadronizer {
00033   public:
00034     AMPTHadronizer(const edm::ParameterSet &);
00035     virtual ~AMPTHadronizer();
00036 
00037     bool generatePartonsAndHadronize();
00038     bool hadronize();
00039     bool decay();
00040     bool residualDecay();
00041     bool readSettings( int ) { return true; }
00042     bool initializeForExternalPartons();
00043     bool initializeForInternalPartons();
00044     bool declareStableParticles( const std::vector<int> );
00045     bool declareSpecialSettings( const std::vector<std::string> ) { return true; }
00046 
00047     void finalizeEvent();
00048     void statistics();
00049     const char* classname() const;
00050 
00051   private:
00052     
00053     void                                        add_heavy_ion_rec(HepMC::GenEvent *evt);
00054     HepMC::GenParticle*                         build_ampt( int index, int barcode );   
00055     HepMC::GenVertex*                           build_ampt_vertex(int i, int id);
00056     bool                                        get_particles(HepMC::GenEvent* evt);
00057     bool                                        ampt_init(const edm::ParameterSet &pset);
00058     bool                                        call_amptset(double efrm, std::string frame, std::string proj, std::string targ, int iap, int izp, int iat, int izt);
00059     //    inline double                         nuclear_radius() const;
00060     void                                        rotateEvtPlane();
00061 
00062     HepMC::GenEvent   *evt;
00063     edm::ParameterSet pset_;
00064     double            bmax_;                  // max impact param; 
00065                                               // units of nucl radius
00066     double            bmin_;                  // min impact param; 
00067                                               // units of nucl radius
00068     double            efrm_;                  // collision energy  
00069     std::string       frame_;
00070     std::string       proj_;
00071     std::string       targ_;
00072     int               iap_;
00073     int               izp_;
00074     int               iat_;
00075     int               izt_;    
00076     int               amptmode_;
00077     int               ntmax_;
00078     double            dt_;
00079     double            stringFragA_;
00080     double            stringFragB_;       
00081     bool              popcornmode_;
00082     double            popcornpar_;
00083     bool              shadowingmode_;
00084     bool              quenchingmode_;
00085     double            quenchingpar_;
00086     double            pthard_;
00087     double            mu_;
00088     int               izpc_;
00089     double            alpha_;
00090     double            dpcoal_;
00091     double            drcoal_;
00092     bool              ks0decay_;
00093     bool              phidecay_;
00094     int               deuteronmode_;
00095     int               deuteronfactor_;
00096     int               deuteronxsec_;
00097     double            minijetpt_;
00098     int               maxmiss_;
00099     int               doInitialAndFinalRadiation_;
00100     int               ktkick_;
00101     int               diquarkembedding_;
00102     double            diquarkpx_;
00103     double            diquarkpy_;
00104     double            diquarkx_;
00105     double            diquarky_;
00106     int               nsembd_;
00107     double            psembd_;
00108     double            tmaxembd_;
00109     bool              shadowingmodflag_; 
00110     double            shadowingfactor_;   
00111     double            phi0_;                  // Event plane angle
00112     double            sinphi0_;
00113     double            cosphi0_;
00114     bool              rotate_;                // Switch to rotate event plane
00115   };
00116 } /*end namespace*/
00117 
00118 #endif