HepMC Reference Documentation

HepMC

PythiaWrapper6_4.h

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 #ifndef PYTHIA_WRAPPER_6_H
00003 #define PYTHIA_WRAPPER_6_H
00004 
00006 // Matt.Dobbs@Cern.CH, November 2000
00007 // Version 6.200 update October 2001
00008 // Wrapper for FORTRAN version of Pythia 
00009 // This wrapper is NOT intended as a part of HepMC - it is only supplied
00010 // for your convenience.
00012 // 
00013 // A simple example of calling Pythia from C++ using this header file is
00014 // given in test/test_PythiaWrapper.cxx
00015 //
00016 // Note the pyhepc routine is used by Pythia to fill
00017 // the HEPEVT common block uses double precision and 4000 entries.
00018 //
00019 
00020 #include <ctype.h>
00021 #include <cstring>
00022 
00023 //--------------------------------------------------------------------------
00024 // Initialization routine
00025 
00026 
00027 extern "C" {
00028     void initpydata(void);
00029 }
00030 #define initpydata initpydata_
00031 
00032 //--------------------------------------------------------------------------
00033 // PYTHIA Common Block Declarations
00034 
00035 const int pyjets_maxn =4000;
00036 extern "C" {
00037     extern struct {
00038         int n, npad, k[5][pyjets_maxn];
00039         double p[5][pyjets_maxn], v[5][pyjets_maxn];
00040     } pyjets_;
00041 }
00042 #define pyjets pyjets_
00043 
00044 extern "C" {
00045     extern struct {
00046         int mstu[200];
00047         double paru[200];
00048         int mstj[200];
00049         double parj[200];
00050     } pydat1_;
00051 }
00052 #define pydat1 pydat1_
00053 
00054 extern "C" {
00055     extern struct {
00056         int kchg[4][500];
00057         double pmas[4][500], parf[2000], vckm[4][4];  
00058     } pydat2_;
00059 }
00060 #define pydat2 pydat2_
00061 
00062 extern "C" {
00063     extern struct {
00064         int mdcy[3][500], mdme[2][8000];
00065         double brat[8000];
00066         int kfdp[5][8000];
00067     } pydat3_;
00068 }
00069 #define pydat3 pydat3_
00070 
00071 extern "C" {
00072     extern struct {
00073         int mrpy[6];
00074         double rrpy[100];
00075     } pydatr_;
00076 }
00077 #define pydatr pydatr_
00078 
00079 extern "C" {
00080     extern struct {
00081         int msel, mselpd, msub[500], kfin[81][2];
00082         double ckin[200];
00083     } pysubs_;
00084 }
00085 #define pysubs pysubs_
00086 
00087 extern "C" {
00088     extern struct {
00089         int mstp[200];
00090         double parp[200];
00091         int msti[200];
00092         double pari[200];
00093     } pypars_;
00094 }
00095 #define pypars pypars_
00096 
00097 extern "C" {
00098     extern struct {
00099         int mint[400];
00100         double vint[400];
00101     } pyint1_;
00102 }
00103 #define pyint1 pyint1_
00104 
00105 extern "C" {
00106     extern struct {
00107         int iset[500], kfpr[2][500];
00108         double coef[20][500];
00109         int icol[2][4][40];
00110     } pyint2_;
00111 }
00112 #define pyint2 pyint2_
00113 
00114 extern "C" {
00115     extern struct pin3 {
00116         double xsfx[81][2];     // Fortran is xsfx(2,-40:40)
00117         int isig[3][1000];
00118         double sigh[1000];
00119     } pyint3_;
00120 }
00121 #define pyint3 pyint3_
00122 
00123 extern "C" {
00124     extern struct {
00125         int mwid[500];
00126         double wids[5][500];
00127     } pyint4_;
00128 }
00129 #define pyint4 pyint4_
00130 
00131 extern "C" {
00132     extern struct pin5 {
00133         int ngenpd, ngen[3][501];       // Fortran is ngen(0:500,3)
00134         double xsec[3][501];            // Fortran is xsec(0:500,3)
00135     } pyint5_;
00136 }
00137 #define pyint5 pyint5_
00138 
00139 extern "C" {
00140     extern struct pin7 {
00141         double sigt[6][7][7];   // Fortran is sigt(0:6,0:6,0:5)
00142     } pyint7_;
00143 }
00144 #define pyint7 pyint7_
00145 
00146 extern "C" {
00147     extern struct pin8 {
00148         double xpvmd[13];       // Fortran is xpvmd(-6:6)
00149         double xpanl[13];       // Fortran is xpanl(-6:6)
00150         double xpanh[13];       // Fortran is xpanh(-6:6)
00151         double xpbeh[13];       // Fortran is xpbeh(-6:6)
00152         double xpdir[13];       // Fortran is xpdir(-6:6)
00153     } pyint8_;
00154 }
00155 #define pyint8 pyint8_
00156 
00157 extern "C" {
00158     extern struct pin9 {
00159         double vxpvmd[13];      // Fortran is vxpvmd(-6:6)
00160         double vxpanl[13];      // Fortran is vxpanl(-6:6)
00161         double vxpanh[13];      // Fortran is vxpanh(-6:6)
00162         double vxpdgm[13];      // Fortran is vxpdgm(-6:6)
00163     } pyint9_;
00164 }
00165 #define pyint9 pyint9_
00166 
00167 extern "C" {
00168     extern struct pssm {
00169         int imss[100];          // Fortran is imss(0:99)
00170         double rmss[100];       // Fortran is rmss(0:99)
00171     } pyssm_;
00172 }
00173 #define pyssm pyssm_
00174 
00175 extern "C" {
00176     extern struct {
00177         double zmix[4][4];
00178         double umix[2][2];
00179         double vmix[2][2];
00180         double smz[4];
00181         double smw[2];
00182         double sfmix[4][16];
00183         double zmixi[4][4];
00184         double umixi[2][2];
00185         double vmixi[2][2];
00186     } pyssmt_;
00187 }
00188 #define pyssmt pyssmt_
00189 
00190 extern "C" {
00191     extern struct {
00192         double rvlam[3][3][3];
00193         double rvlamp[3][3][3];
00194         double rvlamb[3][3][3];
00195     } pymsrv_;
00196 }
00197 #define pymsrv pymsrv_
00198 
00199 extern "C" {
00200     extern struct prvnv {
00201         double ab[2][16][2];
00202         double rms[4];          // Fortran is rms(0:3)
00203         double res[5][6];
00204         int idr;
00205         int idr2;
00206         double dcmass;
00207         int kfr[3];
00208     } pyrvnv_;
00209 }
00210 #define pyrvnv pyrvnv_
00211 
00212 extern "C" {
00213     extern struct prvpm {
00214         double rm[4];           // Fortran is rm(0:3)
00215         double a[2];
00216         double b[2];
00217         double resm[2];
00218         double resw[2];
00219         bool mflag;
00220     } pyrvpm_;
00221 }
00222 #define pyrvpm pyrvpm_
00223 
00224 extern "C" {
00225     extern struct {
00226         double xxm[20];
00227     } pyints_;
00228 }
00229 #define pyints pyints_
00230 
00231 extern "C" {
00232     extern struct {
00233         double x1;
00234     } pyg2dx_;
00235 }
00236 #define pyg2dx pyg2dx_
00237 
00238 //--------------------------------------------------------------------------
00239 // PYTHIA routines declaration
00240 
00241 #define pyhepc pyhepc_ 
00242 #define pyinit pyinit_
00243 #define pylist pylist_
00244 #define pystat pystat_
00245 #define pyevnt pyevnt_
00246 #define upinit upinit_
00247 #define upevnt upevnt_
00248     extern "C" {
00249         void pyhepc(int*);
00250         void pyinit(const char*,const char*,const char*,double*,int,int,int);
00251         void pylist(int*);
00252         void pystat(int*);
00253         void pyevnt();
00254         void upinit();
00255         void upevnt();
00256     }
00257 
00258 // define methods to hide the subtle syntax necessary to call fortran from C++
00259 inline void call_pyhepc( int mode ){ pyhepc( &mode ); }
00260 inline void call_pyinit( const char* frame, const char* beam, const char* target,
00261                   double win ) 
00262 { pyinit( frame,beam,target,&win,strlen(frame),strlen(beam),strlen(target) ); }
00263 inline void call_pylist( int mode ){ pylist( &mode ); }
00264 inline void call_pystat( int mode ){ pystat( &mode ); }
00265 inline void call_pyevnt(){ pyevnt(); }
00266 
00267 
00268 //--------------------------------------------------------------------------
00269 // PYTHIA block data
00270 // ( with gcc it works to initialize the block data by calling 
00271 //   "pydata();" at beginning, but this fails for f77, so the fortran routine
00272 //   initpydata.f is supplied ... call it instead for platform independent
00273 //   behaviour )
00274 
00275 #define pydata pydata_
00276 extern "C" {
00277     void pydata(void);
00278 }
00279 
00280 #endif  // PYTHIA_WRAPPER_6_H
00281 //--------------------------------------------------------------------------

Generated on Fri Feb 17 00:31:25 2012 for HepMC by  doxygen 1.4.7