![]() |
HepMC Reference DocumentationHepMC |
00001 //-------------------------------------------------------------------------- 00002 #ifndef HERWIG_WRAPPER_H 00003 #define HERWIG_WRAPPER_H 00004 00006 // Matt.Dobbs@Cern.CH, April 2002 00007 // Wrapper for FORTRAN version of Herwig 00009 // 00010 00011 #include <ctype.h> 00012 00013 //-------------------------------------------------------------------------- 00014 // HERWIG Common Block Declarations 00015 00016 // COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV 00017 extern "C" { 00018 extern struct { 00019 double EBEAM1,EBEAM2,PBEAM1,PBEAM2; 00020 int IPROC,MAXEV; 00021 } hwproc_; 00022 } 00023 #define hwproc hwproc_ 00024 00025 // CHARACTER*8 PART1,PART2 00026 // COMMON/HWBMCH/PART1,PART2 00027 extern "C" { 00028 extern struct { 00029 char PART1[8],PART2[8]; 00030 } hwbmch_; 00031 } 00032 #define hwbmch hwbmch_ 00033 00034 // COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM, 00035 // & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER, 00036 // & NUMERU,NWGTS,GENSOF 00037 const int herwig_hepevt_size = 4000; 00038 extern "C" { 00039 extern struct { 00040 double AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM; 00041 int IDHW[herwig_hepevt_size],IERROR,ISTAT,LWEVT,MAXER,MAXPR; 00042 int NOWGT,NRN[2],NUMER,NUMERU,NWGTS; 00043 int GENSOF; //Beware! in F77 this is logical 00044 } hwevnt_; 00045 } 00046 #define hwevnt hwevnt_ 00047 00048 // C Basic parameters (and quantities derived from them) 00049 // COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, 00050 // & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, 00051 // & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC, 00052 // & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG, 00053 // & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT, 00054 // & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME, 00055 // & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY, 00056 // & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT, 00057 // & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME, 00058 // & PRNDEF,PRNTEX,PRNWEB 00059 00060 extern "C" { 00061 extern struct { 00062 double AFCH[2][16],ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, 00063 CLMAX,CLPOW,CLSMR[2],CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, 00064 GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL[4],PHIMIX,PIFAC, 00065 PRSOF,PSPLT[2],PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH[16],QG, 00066 QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH[2][16],VCKM[3][3],VGCUT,VQCUT, 00067 VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME; 00068 int IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF[2],NBTRY,NCOLO,NCTRY, 00069 NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT[2],NPRFMT; 00070 int AZSOFT,AZSPIN,CLDIR[2],HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME, 00071 ZPRIME,PRNDEF,PRNTEX,PRNWEB; //Beware! in F77 these are logical 00072 } hwpram_; 00073 } 00074 #define hwpram hwpram_ 00075 00076 //-------------------------------------------------------------------------- 00077 // HERWIG routines declaration 00078 00079 #define hwigin hwigin_ // initialise other common blocks 00080 #define hwigup hwigup_ // initialise HepUP run common block 00081 #define hwuinc hwuinc_ // compute parameter-dependent constants 00082 #define hwusta hwusta_ // call hwusta to make any particle stable 00083 #define hweini hweini_ // initialise elementary process 00084 #define hwuine hwuine_ // initialise event 00085 #define hwepro hwepro_ // generate HERWIG hard subprocess 00086 #define hwupro hwupro_ // read USER hard subprocess from HepUP event common 00087 #define hwbgen hwbgen_ // generate parton cascades 00088 #define hwdhob hwdhob_ // do heavy object decays 00089 #define hwcfor hwcfor_ // do cluster hadronization 00090 #define hwcdec hwcdec_ // do cluster decay 00091 #define hwdhad hwdhad_ // do unstable particle decays 00092 #define hwdhvy hwdhvy_ // do heavy flavour decays 00093 #define hwmevt hwmevt_ // add soft underlying event if needed 00094 #define hwufne hwufne_ // event generation completed, wrap up event .... 00095 #define hwefin hwefin_ // terminate elementary process 00096 00097 #define hwudpr hwudpr_ // prints out particle/decay properties 00098 #define hwuepr hwuepr_ // prints out event data 00099 #define hwupup hwupup_ // prints out HepEUP user common block event data 00100 #define hwegup hwegup_ // terminal calculations to replace HWEFIN for HepUP 00101 extern "C" { 00102 void hwigin(void); 00103 void hwigup(void); 00104 void hwuinc(void); 00105 void hwusta(const char*,int); 00106 void hweini(void); 00107 void hwuine(void); 00108 void hwepro(void); 00109 void hwupro(void); 00110 void hwbgen(void); 00111 void hwdhob(void); 00112 void hwcfor(void); 00113 void hwcdec(void); 00114 void hwdhad(void); 00115 void hwdhvy(void); 00116 void hwmevt(void); 00117 void hwufne(void); 00118 void hwefin(void); 00119 void hwudpr(void); 00120 void hwuepr(void); 00121 void hwupup(void); 00122 void hwegup(void); 00123 } 00124 00125 //-------------------------------------------------------------------------- 00126 // HERWIG block data 00127 // ( with gcc it works to initialize the block data by calling 00128 // "hwudat();" at beginning. ) 00129 00130 #define hwudat hwudat_ 00131 extern "C" { 00132 void hwudat(void); 00133 } 00134 00135 #endif // HERWIG_WRAPPER_H 00136 //--------------------------------------------------------------------------