CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/GeneratorInterface/PomwigInterface/plugins/herwig.h

Go to the documentation of this file.
00001 #ifndef HERWIG_INC
00002 #define HERWIG_INC
00003 
00004 //-------------------------HERWIG common block -------------------------------------
00005 // COMMON block stuff, that doesn't come with the HerwigWrapper6_4.h ....
00006 
00007 /*C Arrays for particle properties (NMXRES = max no of particles defined)
00008       PARAMETER(NMXRES=500)
00009       COMMON/HWPROP/RLTIM(0:NMXRES),RMASS(0:NMXRES),RSPIN(0:NMXRES),
00010      & ICHRG(0:NMXRES),IDPDG(0:NMXRES),IFLAV(0:NMXRES),NRES,
00011      & VTOCDK(0:NMXRES),VTORDK(0:NMXRES),
00012      & QORQQB(0:NMXRES),QBORQQ(0:NMXRES) */
00013 
00014 const int nmxres = 500+1; // we need NMXRES+1 entries ...
00015 extern "C" {
00016   extern struct {
00017     double RLTIM[nmxres], RMASS[nmxres], RSPIN[nmxres];
00018     int ICHRG[nmxres], IDPDG[nmxres],IFLAV[nmxres], NRES;
00019     int VTOCDK[nmxres], VTORDK[nmxres], QORQQB[nmxres], QBORQQ[nmxres];    
00020   } hwprop_;
00021 }
00022 #define hwprop hwprop_
00023 
00024 /*C Parameters for Sudakov form factors
00025 C (NMXSUD= max no of entries in lookup table)
00026       PARAMETER (NMXSUD=1024)
00027       COMMON/HWUSUD/ACCUR,QEV(NMXSUD,6),SUD(NMXSUD,6),INTER,NQEV,NSUD,
00028       & SUDORD*/
00029 
00030 const int nmxsud = 1024;
00031 extern "C" {
00032   extern struct {
00033     double ACCUR, QEV[6][nmxsud],SUD[6][nmxsud];
00034     int INTER, NQEV, NSUD, SUDORD;
00035   } hwusud_;
00036 }
00037 #define hwusud hwusud_
00038 
00039 /*C  New parameters for version 6.203
00040       DOUBLE PRECISION ABWGT,ABWSUM,AVABW
00041       INTEGER NNEGWT,NNEGEV
00042       LOGICAL NEGWTS
00043       COMMON/HW6203/ABWGT,ABWSUM,AVABW,NNEGWT,NNEGEV,NEGWTS */
00044 
00045 extern"C" {
00046   extern struct {
00047     double ABWGT, ABWSUM, AVABW;
00048     int NNEGWT,NNEGEV,NEGWTS;
00049   } hw6203_;
00050 }
00051 #define hw6203 hw6203_
00052 
00053 
00054 /*CHARACTER*20
00055      & AUTPDF
00056      COMMON/HWPRCH/AUTPDF(2),BDECAY   */
00057 
00058 extern "C" {
00059   extern struct {
00060     char AUTPDF[2][20],BDECAY[4];
00061   } hwprch_;
00062 }
00063 #define hwprch hwprch_
00064 
00065 /*C Parameters for minimum bias/soft underlying event
00066       COMMON/HWMINB/
00067       & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3  */
00068 
00069 extern "C" {
00070   extern struct {
00071     double PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3;
00072   } hwminb_;
00073 }
00074 #define hwminb hwminb_
00075 
00076 /*C Variables controling mixing and vertex information
00077 C--VTXPIP should have been a 5-vector, problems with NAG compiler
00078       COMMON/HWDIST/EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP(5),XMIX(2),
00079       & XMRCT(2),YMIX(2),YMRCT(2),IOPDKL,MAXDKL,MIXING,PIPSMR */
00080 
00081 extern "C" {
00082   extern struct {
00083     double EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP[5],XMIX[2],XMRCT[2],YMIX[2],YMRCT[2];
00084     int IOPDKL,MAXDKL,MIXING,PIPSMR;
00085   } hwdist_;
00086 }
00087 #define hwdist hwdist_
00088 
00089 /*      PARAMETER(NMXCDK=4000)
00090       COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12),
00091       & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO  */
00092 
00093 const int nmxcdk=4000;
00094 extern "C" {
00095   extern struct {
00096     double CLDKWT[nmxcdk],CTHRPW[12][12],PRECO,RESN[12][12], RMIN[12][12];
00097     int LOCN[12][12],NCLDK[nmxcdk], NRECO,CLRECO;
00098   } hwuclu_;
00099 }
00100 #define hwuclu hwuclu_ 
00101 
00102 /*C Weights used in cluster decays
00103       COMMON/HWUWTS/REPWT(0:3,0:4,0:4),SNGWT,DECWT,QWT(3),PWT(12),
00104       & SWTEF(NMXRES)  */
00105 
00106 extern "C" {
00107   extern struct {
00108     double REPWT[5][5][4],SNGWT,DECWT,QWT[3],PWT[12],SWTEF[nmxres];
00109   } hwuwts_;
00110 }
00111 #define hwuwts hwuwts_
00112 
00113 /*C  Other new parameters for version 6.2
00114       DOUBLE PRECISION VIPWID,DXRCYL,DXZMAX,DXRSPH
00115       LOGICAL WZRFR,FIX4JT
00116       INTEGER IMSSM,IHIGGS,PARITY,LRSUSY
00117       COMMON/HW6202/VIPWID(3),DXRCYL,DXZMAX,DXRSPH,WZRFR,FIX4JT,
00118       & IMSSM,IHIGGS,PARITY,LRSUSY   */
00119 
00120 extern "C" {
00121   extern struct {
00122     double VIPWID[3], DXRCYL,DXZMAX,DXRSPH;
00123     int WZRFR,FIX4JT,IMSSM,IHIGGS,PARITY,LRSUSY;
00124   } hw6202_;
00125 }
00126 #define hw6202 hw6202_
00127 
00128 /*      PARAMETER (MODMAX=50)
00129       COMMON/HWBOSC/ALPFAC,BRHIG(12),ENHANC(12),GAMMAX,RHOHEP(3,NMXHEP),
00130       & IOPHIG,MODBOS(MODMAX)  */
00131 
00132 const int hepevt_size = 4000; // check in HerwigWrapper
00133 const int modmax = 50;
00134 extern "C" {
00135   extern struct {
00136     double ALPFAC, BRHIG[12], ENHANC[12], GAMMAX, RHOHEP[hepevt_size][3];
00137     int IOPHIG, MODBOS[modmax];
00138   } hwbosc_;
00139 }
00140 #define hwbosc hwbosc_
00141 
00142 /*      COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST,
00143      & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS,
00144      & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM,
00145      & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,
00146      & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH,
00147      & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL,
00148      & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM   */
00149 
00150 extern "C" {
00151   extern struct {
00152     double ASFIXD,CLQ[6][7],COSS,COSTH,CTMAX,DISF[2][13],EMLST, EMMAX,EMMIN,EMPOW,EMSCA,EPOLN[3],GCOEF[7],GPOLN,OMEGA0,PHOMAS, PPOLN[3],PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, SINS,THMAX,Y4JT,TMNISR,TQWT,XX[2],XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR;
00153     int IAPHIG,IBRN[2],IBSH, ICO[10],IDCMF,IDN[10],IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ[6],MAXFL,BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM;
00154   } hwhard_;
00155 }
00156 #define hwhard hwhard_
00157 
00158 /*C other HERWIG branching, event and hard subprocess common blocks
00159   COMMON/HWBRCH/ANOMSC(2,2),HARDST,PTINT(3,2),XFACT,INHAD,JNHAD,
00160   & NSPAC(7),ISLENT,BREIT,FROST,USECMF */
00161 
00162 extern "C" {
00163   extern struct {
00164     double ANOMSC[2][2],HARDST,PTINT[2][3],XFACT;
00165     int INHAD,JNHAD,NSPAC[7],ISLENT,BREIT,FROST,USECMF;
00166   } hwbrch_;
00167 }
00168 #define hwbrch hwbrch_
00169 
00170 /*      LOGICAL PRESPL
00171         COMMON /HW6500/ PRESPL   */
00172 
00173 extern "C" {
00174   extern struct {
00175     int PRESPL;
00176   } hw6500_;
00177 }
00178 #define hw6500 hw6500_
00179 
00180 /*C R-Parity violating parameters and colours
00181       COMMON /HWRPAR/ LAMDA1(3,3,3),LAMDA2(3,3,3),
00182       &                LAMDA3(3,3,3),HRDCOL(2,5),RPARTY,COLUPD   */
00183 
00184 extern "C" {
00185   extern struct {
00186     double LAMDA1[3][3][3],LAMDA2[3][3][3],LAMDA3[3][3][3];
00187     int HRDCOL[5][2],RPARTY,COLUPD;
00188   } hwrpar_;
00189 }
00190 #define hwrpar hwrpar_
00191 
00192 /*C SUSY parameters
00193       COMMON/HWSUSY/
00194      & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB,
00195      & ZMIXSS(4,4),ZMXNSS(4,4),ZSGNSS(4), LFCH(16),RFCH(16),
00196      & SLFCH(16,4),SRFCH(16,4), WMXUSS(2,2),WMXVSS(2,2), WSGNSS(2),
00197      & QMIXSS(6,2,2),LMIXSS(6,2,2),
00198      & THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS,
00199      & GHWWSS(3),GHZZSS(3),GHDDSS(4),GHUUSS(4),GHWHSS(3),
00200      & GHSQSS(4,6,2,2),XLMNSS,RMMNSS,DMSSM,SENHNC(24),SSPARITY,SUSYIN  */
00201 
00202 extern "C" {
00203   extern struct {
00204     double TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB,ZMIXSS[4][4],ZMXNSS[4][4],ZSGNSS[4], LFCH[16],RFCH[16],SLFCH[4][16],SRFCH[4][16], WMXUSS[2][2],WMXVSS[2][2], WSGNSS[2],QMIXSS[2][2][6],LMIXSS[2][2][6],THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS,GHWWSS[3],GHZZSS[3],GHDDSS[4],GHUUSS[4],GHWHSS[3],GHSQSS[2][2][6][4],XLMNSS,RMMNSS,DMSSM,SENHNC[24],SSPARITY;
00205     int SUSYIN;
00206   } hwsusy_;
00207 }
00208 #define hwsusy hwsusy_
00209 
00210 /*INTEGER NDECSY,NSEARCH,LRDEC,LWDEC
00211       LOGICAL SYSPIN,THREEB,FOURB
00212       CHARACTER *6 TAUDEC
00213       COMMON /HWDSPN/NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB,
00214       & FOURB,TAUDEC */
00215 
00216 extern "C" {
00217   extern struct {
00218     int NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB,FOURB;
00219     char TAUDEC[6];
00220   } hwdspn_;
00221 }
00222 
00223 #define hwdspn hwdspn_
00224 
00225 /*C--common block for Les Houches interface to store information we need
00226 C
00227       INTEGER MAXHRP
00228       PARAMETER (MAXHRP=100)
00229       DOUBLE PRECISION LHWGT(MAXHRP),LHWGTS(MAXHRP),LHMXSM,
00230      &     LHXSCT(MAXHRP),LHXERR(MAXHRP),LHXMAX(MAXHRP)
00231       INTEGER LHIWGT(MAXHRP),ITYPLH,LHNEVT(MAXHRP)
00232       LOGICAL LHSOFT,LHGLSF     
00233       COMMON /HWGUPR/LHWGT,LHWGTS,LHXSCT,LHXERR,LHXMAX,LHMXSM,LHIWGT,
00234       &     LHNEVT,ITYPLH,LHSOFT,LHGLSF  */
00235 
00236 const int maxhrp = 100;
00237 extern "C" {
00238   extern struct {
00239     double LHWGT[maxhrp],LHWGTS[maxhrp],LHMXSM,LHXSCT[maxhrp],LHXERR[maxhrp],LHXMAX[maxhrp];
00240     int LHIWGT,LHNEVT,ITYPLH,LHSOFT,LHGLSF;
00241   } hwgupr_;
00242 }
00243 #define hwgupr hwgupr_
00244 
00245 /*C  New parameters for version 6.3
00246       INTEGER IMAXCH,IMAXOP
00247       PARAMETER (IMAXCH=20,IMAXOP=40)
00248       DOUBLE PRECISION MJJMIN,CHNPRB(IMAXCH)
00249       INTEGER IOPSTP,IOPSH
00250       LOGICAL OPTM,CHON(IMAXCH)
00251       COMMON/HW6300/MJJMIN,CHNPRB,IOPSTP,IOPSH,OPTM,CHON   */
00252 
00253 const int imaxch = 20;
00254 extern "C" {
00255   extern struct {
00256     double MJJMIN,CHNPRB[imaxch];
00257     int IOPSTP,IOPSH,OPTM,CHON[imaxch];
00258   } hw6300_;
00259 }
00260 #define hw6300 hw6300_
00261 
00262 //-------------------------- JIMMY COMMON BLOCK -------------------------------
00263 /*
00264       DOUBLE PRECISION YGAMMA, JMZMIN, JMRAD, PTJIM
00265       DOUBLE PRECISION PHAD, JMU2, JMV2, SMALL, JMARRY
00266 c     JMARRY is the array storing gamma-p xsec at various z, & 
00267 c       max weight for each z
00268       DOUBLE PRECISION TOTSCAT, NLOST
00269 
00270       INTEGER MAXMS, NPSIMP, MSFLAG, JMPTYP, JCMVAR, NPROC
00271       LOGICAL ANOMOFF
00272 
00273       PARAMETER( NPROC = 117 )
00274       PARAMETER( MAXMS  = 100  )  ! Maximum multiple scatters
00275       PARAMETER( NPSIMP = 16 )  ! No. of Simpson rule (YBJ)
00276 C                                 intervals (must be even)
00277       PARAMETER( SMALL  = 1.0D-20  )
00278       INTEGER JMOUT, JMBUG, FN_TYPE, NSCAT, JMUEO, MAXMSTRY
00279       PARAMETER(JMOUT = 6)
00280       COMMON / JMPARM /  PTJIM, YGAMMA, JMZMIN, JMRAD(264)
00281      &     ,PHAD, JMU2, JMV2, JMARRY( 6+MAXMS,0:NPSIMP )
00282      &     ,NLOST, TOTSCAT, ANOMOFF, JCMVAR, JMUEO
00283      &     ,JMPTYP(NPROC), JMBUG, FN_TYPE, MSFLAG, MAXMSTRY
00284       DOUBLE PRECISION JMPROC, JMVETO
00285       COMMON / JMEVNT/ JMPROC(NPROC)
00286      &,        JMVETO(2,13), NSCAT
00287 */
00288 
00289 const int NPROC = 117;
00290 const int MAXMS = 100;
00291 const int NPSIMP = 16;
00292 const double SMALL = 0.00000000000000000001;
00293 
00294 extern "C" {
00295   extern struct {
00296     double PTJIM,YGAMMA,JMZMIN,JMRAD[264],PHAD,JMU2,JMV2,JMARRY[NPSIMP+1][6+MAXMS],
00297       NLOST,TOTSCAT;
00298     int ANAMOFF,JCMVAR,JMUEO,JMPTYP[NPROC],JMBUG,FN_TYPE,MSFLAG,MAXMSTRY;
00299   } jmparm_;
00300 }
00301 #define jmparm jmparm_
00302 
00303 extern "C" {
00304   extern struct {
00305     double JMPROC[NPROC],JMVETO[13][2];
00306     int NSCAT;
00307   } jmevnt_;
00308 }
00309 #define jmevnt jmevnt_
00310 
00311 //------------------------------ JIMMY functions -------------------------------------------------
00312 extern"C" {
00313   void jimmin_(void);
00314   void jminit_(void);
00315   double hwmsct_dummy_(double);
00316   void jmefin_(void);
00317 }
00318 
00319 #define jimmin jimmin_
00320 #define jminit jminit_
00321 #define hwmsct_dummy hwmsct_dummy_
00322 #define jmefin jmefin_
00323 
00324 
00325 //------------------------------ LHAPDF functions -------------------------------------------------
00326 
00327 //------------------------------ POMWIG functions -------------------------------------------------
00328 
00329 // Subroutine inside H1QCD
00330 #define qcd_1994 qcd_1994_
00331 extern "C" {
00332     void qcd_1994(double&,double&,double*,int&);
00333 }
00334 // For H1 2006 fits
00335 #define qcd_2006 qcd_2006_
00336 extern "C" {
00337     void qcd_2006(double&,double&,int&,double*,double*,double*,double*,double*);
00338 }
00339 
00340 //----------------- Added for forced decays functionality -------------
00341 #define hwmodk hwmodk_
00342 extern "C" {
00343    void hwmodk(int&,double&,int&,int&,int&,int&,int&,int&);
00344 }
00345 
00346 #endif