]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/HepMC/HerwigWrapper.h
Resolving the symbols in each library
[u/mrichter/AliRoot.git] / TEvtGen / HepMC / HerwigWrapper.h
CommitLineData
0ca57c2f 1//--------------------------------------------------------------------------
2#ifndef HERWIG_WRAPPER_H
3#define HERWIG_WRAPPER_H
4
5//////////////////////////////////////////////////////////////////////////
6// Matt.Dobbs@Cern.CH, November 200July 2002
7// Wrapper for FORTRAN version of Herwig
8// Wrapper written for Herwig 6.4
9//////////////////////////////////////////////////////////////////////////
10
11#include <ctype.h>
12
13// This pre-compiler directive is included (2002-01-16) to allow compatibility
14// with MS Visual C++, which interfaces to fortran in a different manner.
15// For it to work you need to define the _WIN32 variable when compiling.
16#ifdef _WIN32 // Platform: Windows MS Visual C++
17
18// Sorry, there is NO version currently available for Vusual C++.
19
20#else // Generic version, tested on Linux ecgs/gcc
21
22//--------------------------------------------------------------------------
23// HERWIG Common Block Declarations
24
25// COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV
26extern "C" {
27 extern struct {
28 double EBEAM1,EBEAM2,PBEAM1,PBEAM2;
29 int IPROC,MAXEV;
30 } hwproc_;
31}
32#define hwproc hwproc_
33
34// COMMON/HWBEAM/IPART1,IPART2
35extern "C" {
36 extern struct {
37 int IPART1, IPART2;
38 } hwbeam_;
39}
40#define hwbeam hwbeam_
41
42// CHARACTER*8 PART1,PART2
43// COMMON/HWBMCH/PART1,PART2
44extern "C" {
45 extern struct {
46 char PART1[8],PART2[8];
47 } hwbmch_;
48}
49#define hwbmch hwbmch_
50
51// COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM,
52// & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER,
53// & NUMERU,NWGTS,GENSOF
54const int herwig_hepevt_size = 4000;
55extern "C" {
56 extern struct hwgev {
57 double AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM;
58 int IDHW[herwig_hepevt_size],IERROR,ISTAT,LWEVT,MAXER,MAXPR;
59 int NOWGT,NRN[2],NUMER,NUMERU,NWGTS;
60 int GENSOF; //Beware! in F77 this is logical
61 } hwevnt_;
62}
63#define hwevnt hwevnt_
64
65// C Basic parameters (and quantities derived from them)
66// COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC,
67// & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH,
68// & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC,
69// & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG,
70// & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT,
71// & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME,
72// & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY,
73// & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT,
74// & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME,
75// & PRNDEF,PRNTEX,PRNWEB
76
77extern "C" {
78 extern struct {
79 double AFCH[2][16],ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC,
80 CLMAX,CLPOW,CLSMR[2],CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH,
81 GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL[4],PHIMIX,PIFAC,
82 PRSOF,PSPLT[2],PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH[16],QG,
83 QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH[2][16],VCKM[3][3],VGCUT,VQCUT,
84 VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME;
85 int IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF[2],NBTRY,NCOLO,NCTRY,
86 NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT[2],NPRFMT;
87 int AZSOFT,AZSPIN,CLDIR[2],HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,
88 ZPRIME,PRNDEF,PRNTEX,PRNWEB; //Beware! in F77 these are logical
89 } hwpram_;
90}
91#define hwpram hwpram_
92
93//--------------------------------------------------------------------------
94// HERWIG routines declaration
95
96#define hwigin hwigin_ // initialise other common blocks
97#define hwigup hwigup_ // initialise HepUP run common block
98#define hwuinc hwuinc_ // compute parameter-dependent constants
99#define hwusta hwusta_ // call hwusta to make any particle stable
100#define hweini hweini_ // initialise elementary process
101#define hwuine hwuine_ // initialise event
102#define hwepro hwepro_ // generate HERWIG hard subprocess
103#define hwupro hwupro_ // read USER hard subprocess from HepUP event common
104#define hwbgen hwbgen_ // generate parton cascades
105#define hwdhob hwdhob_ // do heavy object decays
106#define hwcfor hwcfor_ // do cluster hadronization
107#define hwcdec hwcdec_ // do cluster decay
108#define hwdhad hwdhad_ // do unstable particle decays
109#define hwdhvy hwdhvy_ // do heavy flavour decays
110#define hwmevt hwmevt_ // add soft underlying event if needed
111#define hwufne hwufne_ // event generation completed, wrap up event ....
112#define hwefin hwefin_ // terminate elementary process
113
114#define hwudpr hwudpr_ // prints out particle/decay properties
115#define hwuepr hwuepr_ // prints out event data
116#define hwupup hwupup_ // prints out HepEUP user common block event data
117#define hwegup hwegup_ // terminal calculations to replace HWEFIN for HepUP
118 extern "C" {
119 void hwigin(void);
120 void hwigup(void);
121 void hwuinc(void);
122 void hwusta(const char*,int);
123 void hweini(void);
124 void hwuine(void);
125 void hwepro(void);
126 void hwupro(void);
127 void hwbgen(void);
128 void hwdhob(void);
129 void hwcfor(void);
130 void hwcdec(void);
131 void hwdhad(void);
132 void hwdhvy(void);
133 void hwmevt(void);
134 void hwufne(void);
135 void hwefin(void);
136 void hwudpr(void);
137 void hwuepr(void);
138 void hwupup(void);
139 void hwegup(void);
140 }
141
142//--------------------------------------------------------------------------
143// HERWIG block data
144// ( with gcc it works to initialize the block data by calling
145// "hwudat();" at beginning. )
146
147#define hwudat hwudat_
148extern "C" {
149 void hwudat(void);
150}
151
152
153#include "HepMC/GenCrossSection.h"
154
155namespace HepMC {
156
157/// calculate the Herwig cross section and statistical error
158GenCrossSection getHerwigCrossSection(int ngen);
159
160} // HepMC
161
162#endif // Platform
163
164#endif // HERWIG_WRAPPER_H
165
166//--------------------------------------------------------------------------