]>
Commit | Line | Data |
---|---|---|
0ca57c2f | 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 | //-------------------------------------------------------------------------- |