HLTBase and HOMER dependecies
[u/mrichter/AliRoot.git] / DPMJET / user3.0-5F.f
1 *$ CREATE DPMJET.FOR
2 *COPY DPMJET
3 *
4 *===program dpmjet=====================================================*
5 *
6       PROGRAM DPMJET
7
8       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
9       SAVE
10
11       EXTERNAL BDANDI, BDINPT, BDEVAP, BDMULS, BDNOPT, BDPHFL, BDPWXS,
12      &         BDRNDM, BDSQZI, BDHDR1, BDHDR2, BDHDR3, BDPART, BDPRDC,
13      &         BDTRNS, COUNTR, ELPROI, HADINI, BDPREE, BDSPDC, BDGTFR
14 C     EXTERNAL PYDATA
15
16 * event flag
17       COMMON /DTEVNO/ NEVENT,ICASCA
18
19 *-----------------------------------------------------------------------
20 * initialization
21
22 *   the following statement provides a call to DT_USRHIS(MODE=1) for
23 *   histogram initialization etc.
24       CALL DT_DTUINI(NEVTS,EPN,NPMASS,NPCHAR,NTMASS,NTCHAR,IDP,IEMU)
25
26 *-----------------------------------------------------------------------
27 * generation of events
28
29       DO 1 IEVT=1,NEVTS
30
31 *   some defaults, do not change!
32          NEVENT = IEVT
33          KKMAT  = -1
34          ELAB   = EPN
35 *   uncomment if dpmjet3 is linked to particle transport code
36         ICASCA = 1
37
38 ************************************************************************
39 * The following lines show how to select the target nucleus for runs
40 * with composite targets (and fixed projectile and energy!).
41 *
42 *   Sampling of the target nucleus (mass number NTMASS, charge NTCHAR)
43 *   according to the fractions defined with EMULSION input-cards.
44 *   The different nuclei are numbered as KKMAT = 1,2,3,...  according to
45 *   their appearance in the input-file.
46          IF (IEMU.GT.0) THEN
47 *   Replace this selection by your own one if needed.
48             CALL DT_GETEMU(NTMASS,NTCHAR,KKMAT,0)
49 *   Kkmat has to be negative for composite targets!
50             KKMAT = -KKMAT
51          ENDIF
52 ************************************************************************
53
54 ************************************************************************
55 * The following lines show how to define projectile, target and energy
56 * for this event in runs with Glauber-data file pre-initialized for a
57 * certain range of projectiles, targets and energies. The definitions
58 * have to be within the pre-initialized parameter range.
59 *
60 *   projectile-id (for hadron projectiles)
61 C        IDP    = 1
62 *   projectile mass and charge numbers
63 C        NPMASS = 12
64 C        NPCHAR = 6
65 *   target mass and charge numbers
66 C        NTMASS = 16
67 C        NTCHAR = 8
68 *   lab energy
69 C        ELAB = 200.0D0
70 ************************************************************************
71
72 ************************************************************************
73 * If an energy-range has been defined with the ENERGY input-card the
74 * laboratory energy ELAB can be set to any value within that range. For
75 * example:
76 C        ELO  = 10.0D0
77 C        EHI  = 1000.0D0
78 C        ELAB = DT_RNDM(ELAB)*(EHI-ELO)+ELO
79 ************************************************************************
80
81 *   sampling of one event
82          CALL DT_KKINC(NPMASS,NPCHAR,NTMASS,NTCHAR,IDP,ELAB,KKMAT,IREJ)
83          IF (IREJ.NE.0) GOTO 1
84
85 *   the following statement provides a call to DT_USRHIS(MODE=2) from
86 *   where the final state particles can be obtained
87
88          CALL PHO_PHIST(2000,DUM)
89
90     1 CONTINUE
91
92 *-----------------------------------------------------------------------
93 * output, statistics etc.
94
95 *   the following statement provides a call to DT_USRHIS(MODE=3) in
96 *   order to calculate histograms etc.
97       CALL DT_DTUOUT
98
99       END
100
101 *$ CREATE DT_USRHIS.FOR
102 *COPY DT_USRHIS
103 *
104 *===usrhis=============================================================*
105 *
106       SUBROUTINE DT_USRHIS(MODE)
107
108       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
109       SAVE
110 *
111 * COMMON /DTEVT1/ :
112 *                   NHKK         number of entries in common block
113 *                   NEVHKK       number of the event
114 *                   ISTHKK(i)    status code for entry i
115 *                   IDHKK(i)     identifier for the entry
116 *                                (for particles: identifier according
117 *                                 to the PDG numbering scheme)
118 *                   JMOHKK(1,i)  pointer to the entry of the first mother
119 *                                of entry i
120 *                   JMOHKK(2,i)  pointer to the entry of the second mother
121 *                                of entry i
122 *                   JDAHKK(1,i)  pointer to the entry of the first daughter
123 *                                of entry i
124 *                   JDAHKK(2,i)  pointer to the entry of the second daughter
125 *                                of entry i
126 *                   PHKK(1..3,i) 3-momentum
127 *                   PHKK(4,i)    energy
128 *                   PHKK(5,i)    mass
129 *
130
131 * event history
132
133       PARAMETER (NMXHKK=200000)
134
135       COMMON /DTEVT1/ NHKK,NEVHKK,ISTHKK(NMXHKK),IDHKK(NMXHKK),
136      &                JMOHKK(2,NMXHKK),JDAHKK(2,NMXHKK),
137      &                PHKK(5,NMXHKK),VHKK(4,NMXHKK),WHKK(4,NMXHKK)
138
139 * extended event history
140       COMMON /DTEVT2/ IDRES(NMXHKK),IDXRES(NMXHKK),NOBAM(NMXHKK),
141      &                IDBAM(NMXHKK),IDCH(NMXHKK),NPOINT(10),
142      &                IHIST(2,NMXHKK)
143
144       GOTO (1,2,3) MODE
145
146 *------------------------------------------------------------------
147 *
148     1 CONTINUE
149 *
150 * initializations
151 *
152 *  Called with MODE=1 once at the beginning of the run.
153 *
154       RETURN
155 *
156 *------------------------------------------------------------------
157 *
158     2 CONTINUE
159 *
160 * scoring of the present event
161 *
162 *  Called with MODE=2 every time one event has been finished.
163 *
164 *  The final state particles from the actual event (number NEVHKK)
165 *  can be found in DTEVT1 and identified by their status:
166 *
167 *     ISTHKK(i) = 1    final state particle produced in
168 *                      photon-/hadron-/nucleon-nucleon collisions or
169 *                      in intranuclear cascade processes
170 *                -1    nucleons, deuterons, H-3, He-3, He-4 evaporated
171 *                      from excited nucleus and
172 *                      photons produced in nuclear deexcitation processes
173 *                1001  residual nucleus (ground state)
174 *
175 *  The types of these particles/nuclei are given in IDHKK as follows
176 *
177 *     all final state part. except nuclei :
178 *       IDHKK(i)=particle identifier according to PDG numbering scheme
179 *     nuclei (evaporation products, and residual nucleus) :
180 *       IDHKK(i)=80000, IDRES(i)=mass number, IDXRES(i)=charge number
181 *
182 *  The 4-momenta and masses can be found in PHKK (target nucleus rest frame):
183 *                   PHKK(1..3,i) 3-momentum (p_x,p_y,p_z)
184 *                   PHKK(4,i)    energy
185 *                   PHKK(5,i)    mass
186 *
187 *
188 *
189 *  Pick out the final state particles from DTEVT1 in each event for
190 *  instance by the following loop (NHKK=number of entries in the present
191 *  event) and fill your histograms
192 C     DO 20 I=1,NHKK
193 C        IF (ABS(ISTHKK(I)).EQ.1) THEN
194 C        ELSEIF (ABS(ISTHKK(I)).EQ.1001) THEN
195 C        ENDIF
196 C  20 CONTINUE
197
198 *  At any time during the run a list of the actual entries in DTEVT1 and
199 *  DTEVT2 can be obtained (output unit 6) by the following statement:
200 C     CALL DT_EVTOUT(4)
201
202       RETURN
203 *
204 *------------------------------------------------------------------
205 *
206     3 CONTINUE
207 *
208 * output/statistics/histograms etc.
209 *
210 *  Called with MODE=3 once after all events have been sampled.
211 *
212       RETURN
213
214       END