Update master to aliroot
[u/mrichter/AliRoot.git] / EPOS / EPOScommon.h
1 /*
2  *###################################################################
3  *#        EPOS 1.67     K. WERNER, T. PIEROG, S. PORTEBOEUF.       #
4  *#                      Contact: werner@subatech.in2p3.fr          #
5  *###################################################################
6  *
7  * EPOScommon.h
8  * 
9  * Definitions of common blocks
10  *
11  *      Author: Piotr Ostrowski, postrow@if.pw.edu.pl
12  */
13
14 #ifndef EPOSCOMMON_H_
15 #define EPOSCOMMON_H_
16
17 #ifndef __CFORTRAN_LOADED
18 //*KEEP,cfortran.
19 #include <cfortran.h>
20 //*KEND.
21 #endif
22
23 #define MXJERR 10
24 #define MXPTL 200000
25
26 /* Common blocks */
27 extern "C" {
28         //--------------------------------------------------------------------------
29         //                   epos event common block
30         //---------------------------------------------------------------------------
31         //
32         //      common/cevt/phievt,nevt,bimevt,kolevt,koievt,pmxevt,egyevt,npjevt
33         //     *,ntgevt,npnevt,nppevt,ntnevt,ntpevt,jpnevt,jppevt,jtnevt,jtpevt
34         //     *,xbjevt,qsqevt,nglevt,zppevt,zptevt,minfra,maxfra
35         //
36         //     nevt .......... error code. 1=valid event, 0=invalid event
37         //     bimevt ........ absolute value of impact parameter
38         //     phievt ........ angle of impact parameter
39         //     kolevt ........ number of collisions
40         //     koievt ........ number of inelastic collisions
41         //     pmxevt ........ reference momentum
42         //     egyevt ........ pp cm energy (hadron) or string energy (lepton)
43         //     npjevt ........ number of primary projectile participants
44         //     ntgevt ........ number of primary target participants
45         //     npnevt ........ number of primary projectile neutron spectators
46         //     nppevt ........ number of primary projectile proton spectators
47         //     ntnevt ........ number of primary target neutron spectators
48         //     ntpevt ........ number of primary target proton spectators
49         //     jpnevt ........ number of absolute projectile neutron spectators
50         //     jppevt ........ number of absolute projectile proton spectators
51         //     jtnevt ........ number of absolute target neutron spectators
52         //     jtpevt ........ number of absolute target proton spectators
53         //     xbjevt ........ bjorken x for dis
54         //     qsqevt ........ q**2 for dis
55         //     sigtot ........ total cross section
56         //     nglevt ........ number of collisions acc to  Glauber
57         //     zppevt ........ average Z-parton-proj
58         //     zptevt ........ average Z-parton-targ
59
60 typedef struct {
61         Float_t phievt;
62         Int_t nevt;
63         Float_t bimevt;
64         Int_t kolevt,koievt;
65         Float_t pmxevt,egyevt;
66         Int_t npjevt,ntgevt,npnevt,nppevt,ntnevt,ntpevt,jpnevt,jppevt,jtnevt,jtpevt;
67         Float_t xbjevt,qsqevt;
68         Int_t nglevt;
69         Float_t zppevt,zptevt;
70         Int_t minfra,maxfra;
71 } CevtCommon;
72
73 #define cevt COMMON_BLOCK(cevt,cevt)
74 COMMON_BLOCK_DEF(CevtCommon,cevt);
75
76 //---------------------------------------------------------------------------
77 //                   epos particle list common block
78 //---------------------------------------------------------------------------
79 //
80 //     common/cptl/nptl,pptl(5,mxptl),iorptl(mxptl),idptl(mxptl)
81 //    *,istptl(mxptl),tivptl(2,mxptl),ifrptl(2,mxptl),jorptl(mxptl)
82 //    *,xorptl(4,mxptl),ibptl(4,mxptl),ityptl(mxptl)
83 //     common/c1ptl/itsptl(mxptl)
84 //
85 //     nptl .......... current particle index (=number of ptls stored)
86 //     idptl(i) ...... particle id
87 //     pptl(1,i) ..... x-component of particle momentum
88 //     pptl(2,i) ..... y-component of particle momentum
89 //     pptl(3,i) ..... z-component of particle momentum
90 //     pptl(4,i) ..... particle energy
91 //     pptl(5,i) ..... particle mass
92 //     iorptl(i) ..... particle number of father (if .le. 0 : no father)
93 //     jorptl(i) ..... particle number of mother (if .le. 0 : no mother)
94 //     istptl(i) ..... status: 40 and 41 : Remnant
95 //                             30 and 31 : Pomeron
96 //                             20 and 21 : Parton
97 //                             10 and 11 : Droplet
98 //                             00 and 01 : Particle
99 //                            last digit = 0 : last generation
100 //                            last digit = 1 : not last generation
101 //     xorptl(1,i) ... x-component of formation point
102 //     xorptl(2,i) ... y-component of formation point
103 //     xorptl(3,i) ... z-component of formation point
104 //     xorptl(4,i) ... formation time
105 //     tivptl(1,i) ... formation time (always in the pp-cms!)
106 //     tivptl(2,i) ... destruction time (always in the pp-cms!)
107 //     ityptl(i)  .... type of particles origin:
108 //                         10-19: target
109 //                         20-29: soft Pom
110 //                         30-39: hard Pom
111 //                         40-49: projectile
112 //                         50: string, droplet
113 //     itsptl(i) ..... string type of particles origin (if string)
114 //     common/cptl/nptl,pptl(5,mxptl),iorptl(mxptl),idptl(mxptl)
115 //    *,istptl(mxptl),tivptl(2,mxptl),ifrptl(2,mxptl),jorptl(mxptl)
116 //    *,xorptl(4,mxptl),ibptl(4,mxptl),ityptl(mxptl)
117
118 typedef struct {
119         Int_t nptl;
120         Float_t pptl[MXPTL][5];
121         Int_t iorptl[MXPTL];
122         Int_t idptl[MXPTL];
123         Int_t istptl[MXPTL];
124         Float_t tivptl[MXPTL][2];
125         Int_t ifrptl[MXPTL][2];
126         Int_t jorptl[MXPTL];
127         Float_t xorptl[MXPTL][4];
128         Int_t ibptl[MXPTL][4];
129         Int_t ityptl[MXPTL];
130 } CptlCommon;
131
132 #define cptl COMMON_BLOCK(cptl,cptl)
133 COMMON_BLOCK_DEF(CptlCommon,cptl);
134
135 typedef struct {
136         Int_t itsptl[MXPTL];
137 } ClptCommon;
138
139 #define clpt COMMON_BLOCK(clpt,clpt)
140 COMMON_BLOCK_DEF(ClptCommon,clpt);
141
142 /*=========================*/
143 /*common/copen/nopen,nopenr*/
144 /*-------------------------*/
145 typedef struct {
146         Int_t   nopen;
147         Int_t   nopenr;
148 } CopenCommon;
149
150 #define copen COMMON_BLOCK(copen,copen)
151 COMMON_BLOCK_DEF(CopenCommon,copen);
152
153 /*================================================================*/
154 /*common/prnt1/iprmpt,ish,ishsub,irandm,irewch,iecho,modsho,idensi*/
155 /*----------------------------------------------------------------*/
156 typedef struct {
157         Int_t iprmpt, ish, ishsub, irandm, irewch, iecho, modsho, idensi;
158 } Prnt1Common;
159
160 #define prnt1 COMMON_BLOCK(prnt1,prnt1)
161 COMMON_BLOCK_DEF(Prnt1Common,prnt1);
162
163 /*========================*/
164 /*common/appli/iappl,model*/
165 /*------------------------*/
166 typedef struct {
167         Int_t iappl, model;
168 } AppliCommon;
169
170 #define appli COMMON_BLOCK(appli,appli)
171 COMMON_BLOCK_DEF(AppliCommon,appli);
172
173 /*=========================================*/
174 /*common/enrgy/egymin,egymax,elab,ecms,ekin*/
175 /*-----------------------------------------*/
176 typedef struct {
177         Float_t egymin, egymax, elab, ecms, ekin;
178 } EnrgyCommon;
179
180 #define enrgy COMMON_BLOCK(enrgy,enrgy)
181 COMMON_BLOCK_DEF(EnrgyCommon,enrgy);
182
183 /*=============================================*/
184 /*common/lept1/engy,elepti,elepto,angmue,icinpu*/
185 /*---------------------------------------------*/
186 typedef struct {
187         Float_t engy,elepti,elepto,angmue;
188         Int_t icinpu;
189 } Lept1Common;
190
191 #define lept1 COMMON_BLOCK(lept1,lept1)
192 COMMON_BLOCK_DEF(Lept1Common,lept1);
193
194 /*=====================================================*/
195 /*common/ebin/noebin,engmin,engmax,nrebin,iologe,iologl*/
196 /*-----------------------------------------------------*/
197 typedef struct {
198         Int_t noebin;
199         Float_t engmin,engmax;
200         Int_t nrebin,iologe,iologl;
201 } EbinCommon;
202
203 #define ebin COMMON_BLOCK(ebin,ebin)
204 COMMON_BLOCK_DEF(EbinCommon,ebin);
205
206 /*==========================================*/
207 /*common/events/nevent,nfull,nfreeze,ninicon*/
208 /*------------------------------------------*/
209 typedef struct {
210         Int_t nevent,nfull,nfreeze,ninicon;
211 } EventsCommon;
212
213 #define events COMMON_BLOCK(events,events)
214 COMMON_BLOCK_DEF(EventsCommon,events);
215
216 /*=============================================*/
217 /*common/sprio/ispherio,icotabm,icotabr,icocore*/
218 /*---------------------------------------------*/
219 typedef struct {
220         Int_t ispherio,icotabm,icotabr,icocore;
221 } SprioCommon;
222
223 #define sprio COMMON_BLOCK(sprio,sprio)
224 COMMON_BLOCK_DEF(SprioCommon,sprio);
225
226 /*============================================================*/
227 /*common/accum/imsg,jerr(mxjerr),ntevt,nrevt,naevt,nrstr,nrptl*/
228 /*------------------------------------------------------------*/
229 typedef struct {
230         Int_t imsg,jerr[MXJERR],ntevt,nrevt,naevt,nrstr,nrptl;
231 } AccumCommon;
232
233 #define accum COMMON_BLOCK(accum,accum)
234 COMMON_BLOCK_DEF(AccumCommon,accum);
235
236 /*==================================================================*/
237 /*common/othe1/istore,istmax,gaumx,irescl,ntrymx,nclean,iopdg,ioidch*/
238 /*------------------------------------------------------------------*/
239 typedef struct {
240         Int_t istore,istmax;
241         Double_t gaumx;
242         Int_t irescl,ntrymx,nclean,iopdg,ioidch;
243 } Othe1Common;
244
245 #define othe1 COMMON_BLOCK(othe1,othe1)
246 COMMON_BLOCK_DEF(Othe1Common,othe1);
247
248 /*========================================*/
249 /*common/othe2/ifrade,iframe,idecay,jdecay*/
250 /*----------------------------------------*/
251 typedef struct {
252         Int_t ifrade,iframe,idecay,jdecay;
253 } Othe2Common;
254
255 #define othe2 COMMON_BLOCK(othe2,othe2)
256 COMMON_BLOCK_DEF(Othe2Common,othe2);
257
258
259
260
261
262 /*====================================================*/
263 /*common/nucl1/laproj,maproj,latarg,matarg,core,fctrmx*/
264 /*----------------------------------------------------*/
265 typedef struct {
266         Int_t laproj,maproj,latarg,matarg;
267         Float_t core,fctrmx;
268 } Nucl1Common;
269
270 #define nucl1 COMMON_BLOCK(nucl1,nucl1)
271 COMMON_BLOCK_DEF(Nucl1Common,nucl1);
272
273 /*========================================*/
274 /*common/nucl2/bmaxim,bminim,phimax,phimin*/
275 /*----------------------------------------*/
276 typedef struct {
277         Float_t bmaxim,bminim,phimax,phimin;
278 } Nucl2Common;
279
280 #define nucl2 COMMON_BLOCK(nucl2,nucl2)
281 COMMON_BLOCK_DEF(Nucl2Common,nucl2);
282
283 /*==============================================================*/
284 /* character*80 fnch,fnhi,fndt,fnii,fnid,fnie,fnrj,fnmt
285   * ,fngrv,fncp,fnnx,fncs,fndr,fnhy
286    common/fname/  fnch, fnhi, fndt, fnii, fnid, fnie, fnrj, fnmt*/
287 /*--------------------------------------------------------------*/
288 typedef struct {
289          char fnch[80], fnhi[80], fndt[80], fnii[80], fnid[80], fnie[80], fnrj[80];
290          char fnmt[80], fngrv[80], fncp[80], fnnx[80], fncs[80], fndr[80], fnhy[80];
291 } FnameCommon;
292
293 #define fname COMMON_BLOCK(fname,fname)
294 COMMON_BLOCK_DEF(FnameCommon,fname);
295
296 /*=============================================================*/
297 /*common/nfname/nfnch,nfnhi,nfndt,nfnii,nfnid,nfnie,nfnrj,nfnmt*/
298 /**,nfngrv,nfncp,nfnnx,nfncs,nfndr,nfnhy                       */
299 /*-------------------------------------------------------------*/
300 typedef struct {
301     Int_t nfnch,nfnhi,nfndt,nfnii,nfnid,nfnie,nfnrj,nfnmt;
302     Int_t nfngrv,nfncp,nfnnx,nfncs,nfndr,nfnhy;
303 } NfnameCommon;
304
305 #define nfname COMMON_BLOCK(nfname,nfname)
306 COMMON_BLOCK_DEF(NfnameCommon,nfname);
307
308 /*character*80 fndat,fnncs,fnIIdat,fnIIncs*/
309 /*============================================*/
310 /*common/qgsfname/  fndat, fnncs, ifdat, ifncs*/
311 /*--------------------------------------------*/
312 typedef struct {
313         char fndat[80], fnncs[80];
314         Int_t ifdat, ifncs;
315 } QgsfnameCommon;
316
317 #define qgsfname COMMON_BLOCK(qgsfname,qgsfname)
318 COMMON_BLOCK_DEF(QgsfnameCommon,qgsfname);
319
320 /*====================================================*/
321 /*common/qgsIIfname/fnIIdat, fnIIncs, ifIIdat, ifIIncs*/
322 /*----------------------------------------------------*/
323 typedef struct {
324         char fnIIdat[80], fnIIncs[80];
325         Int_t ifIIdat, ifIIncs;
326 } QgsIIfnameCommon;
327
328 #define qgsiifname COMMON_BLOCK(qgsiifname,qgsiifname)
329 COMMON_BLOCK_DEF(QgsIIfnameCommon,qgsiifname);
330
331 /*================================*/
332 /*common/qgsnfname/ nfndat, nfnncs*/
333 /*--------------------------------*/
334 typedef struct {
335         Int_t nfndat, nfnncs;
336 } QgsnfnameCommon;
337
338 #define qgsnfname COMMON_BLOCK(qgsnfname,qgsnfname)
339 COMMON_BLOCK_DEF(QgsnfnameCommon,qgsnfname);
340
341 /*======================================*/
342 /*common/qgsIInfname/ nfnIIdat, nfnIIncs*/
343 /*--------------------------------------*/
344 typedef struct {
345         Int_t nfnIIdat, nfnIIncs;
346 } QgsIInfnameCommon;
347
348 #define qgsiinfname COMMON_BLOCK(qgsiinfname,qgsiinfname)
349 COMMON_BLOCK_DEF(QgsIInfnameCommon,qgsiinfname);
350
351 /*================================*/
352 /*parameter(mxnody=200)           */
353 /*common/nodcy/nrnody,nody(mxnody)*/
354 /*--------------------------------*/
355 #define MXNODY 200
356 typedef struct {
357         Int_t nrnody, nody[MXNODY];
358 } NodcyCommon;
359
360 #define nodcy COMMON_BLOCK(nodcy,nodcy)
361 COMMON_BLOCK_DEF(NodcyCommon,nodcy);
362
363 /*===============================================================*/
364 /*common/hadr3/iregge,isopom,ishpom,iscreen,nprmax,inueff,irmdrop*/
365 /*---------------------------------------------------------------*/
366 typedef struct {
367         Int_t iregge,isopom,ishpom,iscreen,nprmax,inueff,irmdrop;
368 } Hadr3Common;
369
370 #define hadr3 COMMON_BLOCK(hadr3,hadr3)
371 COMMON_BLOCK_DEF(Hadr3Common,hadr3);
372
373 /*===============================================================*/
374 /*common/hadr4/alppom,slopom,gamhad(4),r2had(4),chad(4),wdiff(4) */
375 /*&            ,gamtil,facdif,r2hads(4),gamhads(4),slopoms,isplit*/
376 /*---------------------------------------------------------------*/
377 typedef struct {
378         Float_t alppom,slopom,gamhad[4],r2had[4],chad[4],wdiff[4];
379         Float_t gamtil,facdif,r2hads[4],gamhads[4],slopoms;
380         Int_t isplit;
381 } Hadr4Common;
382
383 #define hadr4 COMMON_BLOCK(hadr4,hadr4)
384 COMMON_BLOCK_DEF(Hadr4Common,hadr4);
385
386 /*================================================*/
387 /*common /psar5/  qcdlam,q2min,q2ini,q2fin,pt2cut,*/
388 /**betpom,glusea,naflav,alfe                      */
389 /*------------------------------------------------*/
390 typedef struct {
391         Float_t qcdlam,q2min,q2ini,q2fin,pt2cut,betpom,glusea;
392         Int_t naflav;
393         Float_t alfe;
394 } Psar5Common;
395
396 #define psar5 COMMON_BLOCK(psar5,psar5)
397 COMMON_BLOCK_DEF(Psar5Common,psar5);
398
399 /*===========================*/
400 /*common/hadr17/edmaxi,epmaxi*/
401 /*---------------------------*/
402 typedef struct {
403         Float_t edmaxi,epmaxi;
404 } Hadr17Common;
405
406 #define hadr17 COMMON_BLOCK(hadr17,hadr17)
407 COMMON_BLOCK_DEF(Hadr17Common,hadr17);
408
409 /*======================================================*/
410 /*common/frag1/ndecay,maxres,pud,pudk,pudr,strcut,diqcut*/
411 /*------------------------------------------------------*/
412 typedef struct {
413         Int_t ndecay, maxres;
414         Float_t pud,pudk,pudr,strcut,diqcut;
415 } Frag1Common;
416
417 #define frag1 COMMON_BLOCK(frag1,frag1)
418 COMMON_BLOCK_DEF(Frag1Common,frag1);
419
420 /*==================================*/
421 /*double precision seedi,seedj,seedc*/
422 /*common/cseed/seedi,seedj,seedc    */
423 /*----------------------------------*/
424 typedef struct {
425         Double_t seedi,seedj,seedc;
426 } CseedCommon;
427
428 #define cseed COMMON_BLOCK(cseed,cseed)
429 COMMON_BLOCK_DEF(CseedCommon,cseed);
430
431 }
432 #endif /* EPOSCOMMON_H_ */