Counters for diffractive collisions
[u/mrichter/AliRoot.git] / TDPMjet / DPMcommon.h
1 #ifndef ROOT_DPMCommon
2 #define ROOT_DPMCommon
3
4 #ifndef __CFORTRAN_LOADED
5 //*KEEP,cfortran.
6 #include "cfortran.h"
7 //*KEND.
8 #endif
9
10 extern "C" {
11 /*========================================================*/
12 /* COMMON/DTEVNO/NEVENT,ICASCA                            */
13 /*--------------------------------------------------------*/
14 typedef struct {
15    Int_t    nevent;
16    Int_t    icasca;
17 } DtevnoCommon;
18
19 #define DTEVNO COMMON_BLOCK(DTEVNO,dtevno)
20 COMMON_BLOCK_DEF(DtevnoCommon,DTEVNO);
21
22 /**********************************************************/
23 /*           D E S C R I P T I O N :                      */
24 /*--------------------------------------------------------*/
25 /*                      Event flag                        */
26 /*========================================================*/
27
28 /*========================================================*/
29 /* COMMON/DTEVT1/NHKK,NEVHKK,ISTHKK(NMXHKK),IDHKK(NMXHKK),*/
30 /*      JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),                */
31 /*      PHKK(5,NMXHKK),VHKK(4,NMXHKK),WHKK(4,NMXHKK)      */
32 /*--------------------------------------------------------*/
33 typedef struct {
34    Int_t    nhkk;
35    Int_t    nevhkk;
36    Int_t    isthkk[200000];
37    Int_t    idhkk[200000];
38    Int_t    jmohkk[200000][2];
39    Int_t    jdahkk[200000][2];
40    Double_t  phkk[200000][5];
41    Double_t  vhkk[200000][4];
42    Double_t  whkk[200000][4];
43 } Dtevt1Common;
44
45 #define DTEVT1 COMMON_BLOCK(DTEVT1,dtevt1)
46 COMMON_BLOCK_DEF(Dtevt1Common,DTEVT1);
47
48 /**********************************************************/
49 /*           D E S C R I P T I O N :                      */
50 /*--------------------------------------------------------*/
51 /*                      Event history                     */
52 /*                                                        */
53 /* NHKK - number of entries in common block               */
54 /* NEVHKK - number of the event                           */
55 /* ISTHKK(i) - status code for entry i with following     */
56 /*             meanings:                                  */
57 /*           = 1 final state particle produced in         */
58 /*              photon-/hadron-/nucleon-nucleon collisions*/
59 /*               or in intranuclear cascade proc.         */
60 /*           =-1 nucleons, deuterons, H3, He3, He4        */
61 /*               evaporated from excited nucleus and      */
62 /*               photons produced in nuclear deexcitation */
63 /*               processes;                               */
64 /*           = 1001  residual nucleus (ground state).     */
65 /* IDHKK(i) - particle identity according to PDG code;    */
66 /*            for nuclei (evaporation products and        */
67 /*            residual nucleus): IDHKK(IHKK)=80000        */
68 /* JMOHKK(1,i) - pointer to the position where the mother */
69 /*               is stored; the initial value is 0        */
70 /* JMOHKK(2,i) - pointer to the position of the 2nd mother*/
71 /*               Normally only 1 mother exists, in which  */
72 /*              case the value 0 is used. In cluster      */
73 /*              fragmentation models, the 2 mothers would */
74 /*              correspond to the q and qbar which join to*/
75 /*              form a cluster. In string fragmentation,  */
76 /*              the two mothers of a particle produced in */
77 /*              the fragmentation would be the 2 endpoints*/
78 /*              of the string.                            */
79 /* JDAHKK(1,i) - pointer to the position of the 1st       */
80 /*              daughter; if an entry has not decayed =0. */
81 /* JDAHKK(1,i) - pointer to the position of the last      */
82 /*              daughter; if an entry has not decayed =0. */
83 /* PHKK(1,i) - momentum in x direction in GeV/c           */
84 /* PHKK(2,i) - momentum in y direction in GeV/c           */
85 /* PHKK(3,i) - momentum in z direction in GeV/c           */
86 /* PHKK(4,i) - energy in GeV                              */
87 /* PHKK(5,i) - mass in GeV/c^2; for space-like partons    */
88 /*          it is allowed to use a mass<0, according      */
89 /*          PHKK(5,IHKK) = -sqrt(-m^2)                    */ 
90 /* VHKK(1,i) - production vertex in x position in mm      */
91 /* VHKK(2,i) - production vertex in y position in mm      */
92 /* VHKK(3,i) - production vertex in z position in mm      */
93 /* VHKK(4,i) - production time in mm/c (=3.33*10^(-12)s   */
94 /* WHKK(I,i) - gives positions and times in projectile    */ 
95 /*              frame, the chains are created on the posi-*/
96 /*              tions of the projectile nucleons in the   */
97 /*              projectile frame (target nucleons in target*/
98 /*              frame); both positions are therefore not  */
99 /*              completely consistent. The times in the   */
100 /*              projectile frame are obtained by a Lorentz*/
101 /*              transformation from the LAB system.       */
102 /*========================================================*/
103
104 /*========================================================*/
105 /* COMMON/DTEVT2/IDRES(NMXHKK),IDXRES(NMXHKK),NOBAM(NMXHKK),*/
106 /*               IDBAM(NMXHKK),IDCH(NMXHKK),NPOINT(10),   */
107 /*               IHIST(2,NMXHKK)                          */
108 /*--------------------------------------------------------*/
109 typedef struct {
110    Int_t    idres[200000];
111    Int_t    idxres[200000];
112    Int_t    nobam[200000];
113    Int_t    idbam[200000];
114    Int_t    idch[200000];
115    Int_t    npoint[10];
116    Int_t    ihist[200000][2];
117 } Dtevt2Common;
118
119 #define DTEVT2 COMMON_BLOCK(DTEVT2,dtevt2)
120 COMMON_BLOCK_DEF(Dtevt2Common,DTEVT2);
121
122 /**********************************************************/
123 /*           D E S C R I P T I O N :                      */
124 /*--------------------------------------------------------*/
125 /*              Extended event history                    */
126 /*                                                        */
127 /* NMXHKK - max. num. of entries (partons/particles) that */
128 /*              can be stored in the common block         */
129 /* IDRES(IHKK) - mass num. A in case of nuclear fragments */
130 /*              or residual nuclei (IDHKK(IHKK)=80000).   */
131 /* IDXRES(IHKK) - charge Zin case of nuclear fragments    */
132 /*              or residual nuclei (IDHKK(IHKK)=80000).   */
133 /* NOBAM(IHKK) =1 for particles from proj. fragmentation  */
134 /*             =2 for particles from target fragmentation.*/
135 /* IDBAM(IHKK) - internal dpmjet particle code(BAMJET code)*/
136 /*========================================================*/
137
138 }
139
140 /*========================================================*/
141 /* COMMON/DTPRTA/IT,ITZ,IP,IPZ,IJPROJ,IBPROJ,IJTARG,IBTARG*/
142 /*--------------------------------------------------------*/
143 typedef struct {
144    Int_t    it;
145    Int_t    itz;
146    Int_t    ip;
147    Int_t    ipz;
148    Int_t    ijproj;
149    Int_t    ibproj;
150    Int_t    ijtarg;
151    Int_t    ibtarg;
152 } DtprtaCommon;
153
154 #define DTPRTA COMMON_BLOCK(DTPRTA,dtprta)
155 COMMON_BLOCK_DEF(DtprtaCommon,DTPRTA);
156 /**********************************************************/
157 /*           D E S C R I P T I O N :                      */
158 /*--------------------------------------------------------*/
159 /* IT, ITZ - nucleon/atomic number of target nucleus      */
160 /* IP, IPZ - nucleon/atomic number of projectile nucleus  */
161 /*         for incident hadrons IP=IPZ=1                  */
162 /*========================================================*/
163
164 /*========================================================*/
165 /* COMMON /DTIMPA/ BIMIN,BIMAX,XSFRAC,ICENTR              */
166 /*--------------------------------------------------------*/
167 typedef struct {
168    Double_t    bimin;
169    Double_t    bimax;
170    Double_t    xsfrac;
171    Double_t    icent;
172 } DtimpaCommon;
173
174 #define DTIMPA COMMON_BLOCK(DTIMPA,dtimpa)
175 COMMON_BLOCK_DEF(DtimpaCommon,DTIMPA);
176 /**********************************************************/
177 /*           D E S C R I P T I O N :                      */
178 /*--------------------------------------------------------*/
179 /* BIMIN, BIMAX - min., max. b values (default bmin = 0)  */
180 /* XSFRAC - fraction of x-section (default: 1)            */
181 /* ICENTR =1. central production forced (default: 0)      */
182 /*      <0 && >-100 -> bmin = BIMIN, bmax = BIMAX         */
183 /*      <-99 -> fraction of x-sec. = XSFRAC               */
184 /*      =-1. -> evaporation/fzc suppressed                */
185 /*      <-1. -> evaporation/fzc suppressed                */
186 /*========================================================*/
187
188
189 /*========================================================*/
190 /* COMMON /DTGLCP/RPROJ,RTARG,BIMPAC,NWTSAM,NWASAM,NWBSAM,*/
191 /*                NWTACC,NWAACC,NWBACC                    */
192 /*--------------------------------------------------------*/
193 typedef struct {
194    Double_t     rproj;
195    Double_t     rtarg;
196    Double_t     bimpac;
197    Int_t        nwtsam;
198    Int_t        nwasam;
199    Int_t        nwbsam;
200    Int_t        nwtacc;
201    Int_t        nwtaac;
202    Int_t        nwtbac;
203 } DtglcpCommon;
204
205 #define DTGLCP COMMON_BLOCK(DTGLCP,dtglcp)
206 COMMON_BLOCK_DEF(DtglcpCommon,DTGLCP);
207 /**********************************************************/
208 /*           D E S C R I P T I O N :                      */
209 /*--------------------------------------------------------*/
210 /* RPROJ  = radius of projectile nucleus                  */
211 /* RPROJ  = radius of target nucleus                      */
212 /* BIMPAC = impact parameter of the collision             */
213 /* NWTSAM = total number of wounded nucleons              */
214 /* NWASAM = number of wounded nucleons in projectile      */
215 /* NWBSAM = number of wounded nucleons in target          */
216 /* NWTACC = total number of interacting nucleons          */
217 /* NWTAAC = total number of interacting nucleons in proj. */
218 /* NWTBAC = total number of interacting nucleons in target*/
219 /*========================================================*/
220 /*========================================================*/
221 /* COMMON /POPRCS/IPROCE,IDNODF,IDIFR1,IDIFR2,IDDPOM,     */
222 /*                IPRON(15,4)                                     */
223 /*--------------------------------------------------------*/
224 typedef struct {
225    Int_t        iproce;  
226    Int_t        idnodf;
227    Int_t        idifr1;
228    Int_t        idifr2;
229    Int_t        iddpom;
230    Int_t        ipron[15][4];
231 } PoprcsCommon;
232
233 #define POPRCS COMMON_BLOCK(POPRCS,poprcs)
234 COMMON_BLOCK_DEF(PoprcsCommon,POPRCS);
235
236
237 /**********************************************************/
238 /*           D E S C R I P T I O N :                      */
239 /*--------------------------------------------------------*/
240 /*
241
242     COMMON /POEVT1/ NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
243      &                JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),
244      &                VHEP(4,NMXHEP), NSD1, NSD2, NDD
245 */
246 const Int_t nmxhep = 4000;
247
248 typedef struct {
249   Int_t    nevhep;
250   Int_t    nhep;
251   Int_t    isthep[nmxhep];
252   Int_t    idhep [nmxhep];
253   Int_t    jmohep[nmxhep][2];
254   Int_t    jdahep[nmxhep][2];
255   Double_t phep  [nmxhep][5];
256   Double_t vhep  [nmxhep][4];
257   Int_t    nsd1;
258   Int_t    nsd2;
259   Int_t    ndd;
260 } Poevt1Common;
261
262 #define POEVT1 COMMON_BLOCK(POEVT1,poevt1)
263 COMMON_BLOCK_DEF(Poevt1Common,POEVT1);
264
265 #endif