CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/GeneratorInterface/HijingInterface/interface/HijingPythiaWrapper.h

Go to the documentation of this file.
00001 #ifndef gen_HijingPythiaWrapper_h
00002 #define gen_HijingPythiaWrapper_h
00003 
00004 #include "GeneratorInterface/Pythia6Interface/interface/Pythia6Service.h"
00005 #include "HepMC/PythiaWrapper6_4.h"
00006 
00007 #include "CLHEP/Random/RandomEngine.h"
00008 
00009  extern "C"
00010  {
00011     void   py1ent_(int& ip, int& kf, double& pe, double& the, double& phi);
00012     double pymass_(int& );
00013     void   pyexec_();
00014     int    pycomp_(int& );
00015     void   pyglfr_();
00016     void   pyglrhad_();
00017     void   pystlfr_();
00018     void   pystrhad_();
00019     void   pygive_(const char*, int );
00020     void   pydecy_( int& ip ) ;
00021     void   pyrobo_( int&, int&, double&, double&, double&, double&, double& );
00022     
00023     void   txgive_(const char*, int );
00024     void   txgive_init_(void);
00025     
00026     static bool call_pygive(const std::string &line)
00027     {
00028        int numWarn = pydat1.mstu[26];    // # warnings
00029        int numErr = pydat1.mstu[22];     // # errors
00030        
00031        pygive_(line.c_str(), line.length());
00032        
00033        return pydat1.mstu[26] == numWarn &&
00034           pydat1.mstu[22] == numErr;
00035     }
00036  }
00037  
00038 #define PYCOMP pycomp_
00039 extern "C" {
00040    int PYCOMP(int& length);
00041 }
00042 
00043 #define LUGIVE pygive_
00044 extern "C" {
00045    void LUGIVE(const char*,int length);
00046 }
00047 
00048 /*
00049 extern "C" {
00050    double ran_(int*){
00051       return gen::pyr_(0);
00052    }
00053 }
00054 */
00055 
00056 float ranff_(unsigned int *iseed)
00057 {
00058    (*iseed) = (69069 * (*iseed) + 1) & 0xffffffffUL;
00059    return (*iseed) / 4294967296.0;
00060 }
00061 
00062 
00063 CLHEP::HepRandomEngine* hijRandomEngine;
00064 
00065 extern "C"
00066 {
00067    float gen::hijran_(int *idummy)
00068    {
00069       return hijRandomEngine->flat();
00070    }
00071 }
00072 
00073 
00074 
00075 
00076 extern "C" {
00077    float ran_(unsigned int* iseed){
00078       return hijRandomEngine->flat();
00079       //      return ranff_(iseed);
00080       //      return gen::pyr_(0);
00081    }
00082 }
00083 
00084 extern "C" {
00085    float rlu_(unsigned int* iseed){
00086       return hijRandomEngine->flat();
00087       //      return ranff_(iseed);
00088       //      return gen::pyr_(0);
00089    }
00090 }
00091 
00092 
00093 
00094 
00095 
00096 
00097 /*
00098 
00099 #include "CLHEP/Random/RandomEngine.h"
00100 extern CLHEP::HepRandomEngine* randomEngine;
00101 extern "C" {
00102    double pyr_(int* idummy);
00103 }
00104 
00105 CLHEP::HepRandomEngine* randomEngine;
00106 
00107 double pyr_(int *idummy)
00108 {
00109    // getInstance will throw if no one used enter/leave
00110    // or this is the wrong caller class, like e.g. Herwig6Instance
00111    return randomEngine->flat(); 
00112 }
00113 
00114 */
00115 
00116 #endif