]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/HepMC/PythiaWrapper6_4_WIN32.h
Resolving the symbols in each library
[u/mrichter/AliRoot.git] / TEvtGen / HepMC / PythiaWrapper6_4_WIN32.h
1 //--------------------------------------------------------------------------
2 #ifdef  _WIN32  // This version is for Windows MS Visual C++ only.
3 #ifndef PYTHIA_WRAPPER_6_H
4 #define PYTHIA_WRAPPER_6_H
5
6 //////////////////////////////////////////////////////////////////////////
7 // Matt.Dobbs@Cern.CH, November 2000
8 // Version 6.200 update October 2001
9 // Wrapper for FORTRAN version of Pythia 
10 // The _WIN32 version is provided by Witold Pokorski 
11 //       <Witold.Pokorski@Cern.CH>, 2002-01-22, and is the version 
12 //       which should be used when compiling on Windows MS Visual C++.
13 // This wrapper is NOT intended as a part of HepMC - it is only supplied
14 // for your convenience.
15 //////////////////////////////////////////////////////////////////////////
16 // 
17 // A simple example of calling Pythia from C++ using this header file is
18 // given in test/test_PythiaWrapper.cxx
19 //
20 // Note the pyhepc routine is used by Pythia to fill
21 // the HEPEVT common block uses double precision and 4000 entries.
22 //
23
24 #include <ctype.h>
25 #include <string.h>
26
27 //--------------------------------------------------------------------------
28 // Initialization routine
29
30
31 extern "C" {
32     void INITPYDATA(void);
33 }
34 #define initpydata INITPYDATA
35
36
37 //--------------------------------------------------------------------------
38 // PYTHIA Common Block Declarations
39
40 const int pyjets_maxn =4000;
41 struct PYJETS_DEF {
42         int n, npad, k[5][pyjets_maxn];
43         double p[5][pyjets_maxn], v[5][pyjets_maxn];
44 };
45
46 struct PYDAT1_DEF{
47         int mstu[200];
48         double paru[200];
49         int mstj[200];
50         double parj[200];
51 };
52
53 struct PYDAT2_DEF{
54         int kchg[4][500];
55         double pmas[4][500], parf[2000], vckm[4][4];  
56 };
57
58 struct PYDAT3_DEF{
59         int mdcy[3][500], mdme[2][8000];
60         double brat[8000];
61         int kfdp[5][8000];
62 };
63
64 struct PYDATR_DEF{
65         int mrpy[6];
66         double rrpy[100];
67     };
68
69 struct PYSUBS_DEF{
70         int msel, mselpd, msub[500], kfin[81][2];
71         double ckin[200];
72 };
73
74 struct PYPARS_DEF{
75         int mstp[200];
76         double parp[200];
77         int msti[200];
78         double pari[200];
79 };
80
81 struct PYINT1_DEF{
82         int mint[400];
83         double vint[400];
84 };
85
86 struct PYINT2_DEF{
87         int iset[500], kfpr[2][500];
88         double coef[20][500];
89         int icol[2][4][40];       // was [320] was [40][4][2]
90 };
91
92 struct PYINT5_DEF{
93         int ngenpd, ngen[3][501];
94         double xsec[3][501];
95 };
96
97
98 extern "C" PYSUBS_DEF PYSUBS;
99 extern "C" PYJETS_DEF PYJETS;
100 extern "C" PYDAT1_DEF PYDAT1;
101 extern "C" PYDAT2_DEF PYDAT2;
102 extern "C" PYPARS_DEF PYPARS;
103 extern "C" PYDATR_DEF PYDATR;
104 extern "C" PYDAT3_DEF PYDAT3;
105 extern "C" PYINT1_DEF PYINT1;
106 extern "C" PYINT2_DEF PYINT2;
107 extern "C" PYINT5_DEF PYINT5;
108
109
110 #define pysubs PYSUBS
111 #define pyjets PYJETS
112 #define pydat1 PYDAT1
113 #define pydat2 PYDAT2
114 #define pypars PYPARS
115 #define pydatr PYDATR
116 #define pydat3 PYDAT3
117 #define pyint1 PYINT1
118 #define pyint2 PYINT2
119 #define pyint5 PYINT5
120
121
122
123 //--------------------------------------------------------------------------
124 // PYTHIA routines declaration
125
126
127 extern "C" {
128         void __stdcall PYHEPC(int*);
129         void __stdcall PYINIT(const char*,int,const char*,int,const char*,int,double*);
130         void __stdcall PYLIST(int*);
131         void __stdcall PYSTAT(int*);
132         void __stdcall PYEVNT();
133         void __stdcall UPINIT();
134         void __stdcall UPEVNT();
135 }
136
137 //--------------------------------------------------------------------------
138 // PYTHIA block data
139 // ( with gcc it works to initialize the block data by calling 
140 //   "pydata();" at beginning, but this fails for f77, so the fortran routine
141 //   initpydata.f is supplied ... call it instead for platform independent
142 //   behaviour )
143
144
145 extern "C" {
146     void __stdcall PYDATA(void);
147 }
148
149 inline void call_pyhepc( int mode ){ PYHEPC( &mode ); }
150 inline void call_pyinit( const char* frame, const char* beam, const char* target,
151                   double win ) 
152 { PYINIT( frame,strlen(frame),beam,strlen(beam),target,strlen(target),&win); }
153 inline void call_pylist( int mode ){ PYLIST( &mode ); }
154 inline void call_pystat( int mode ){ PYSTAT( &mode ); }
155 inline void call_pyevnt(){ PYEVNT(); }
156 inline void call_upinit(){ UPINIT(); }
157 inline void call_upevnt(){ UPEVNT(); }
158
159
160
161
162 #endif  // PYTHIA_WRAPPER_6_H
163 #endif  // _WIN32
164 //--------------------------------------------------------------------------