]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gtrak/gtreveroot.F
Coding convention corrections + few minor bug fixes
[u/mrichter/AliRoot.git] / GEANT321 / gtrak / gtreveroot.F
CommitLineData
9b79affb 1*
2* $Id$
3*
4* $Log$
aee8290b 5* Revision 1.2 1999/07/01 14:45:34 fca
6* Modifications to allow Cherenkov transport
7*
ad265d61 8* Revision 1.1 1999/06/03 16:38:16 fca
9* First version of gtreve_root, special version of gtreve for AliRoot to be
10* called from gutrev.
11*
9b79affb 12* Revision 1.1.1.1 1999/05/18 15:55:21 fca
13* AliRoot sources
14*
15* Revision 1.1.1.1 1995/10/24 10:21:45 cernlib
16* Geant
17*
18*
19#include "geant321/pilot.h"
20*CMZ : 3.21/03 07/10/94 18.07.13 by S.Giani
21*-- Author :
aee8290b 22 SUBROUTINE GTREVEROOT
9b79affb 23C.
24C. ******************************************************************
25C. * *
26C. * SUBR. GTREVE *
27C. * *
28C. * Controls tracking of all particles belonging to the current *
29C. * event. *
30C. * *
31C. * Called by : GUTREV, called by GTRIG *
32C. * Authors : R.Brun, F.Bruyant *
33C. * *
34C. ******************************************************************
35C.
36#include "geant321/gcbank.inc"
37#include "geant321/gcflag.inc"
38#include "geant321/gckine.inc"
ad265d61 39#include "geant321/gcking.inc"
9b79affb 40#include "geant321/gcnum.inc"
41#include "geant321/gcstak.inc"
42#include "geant321/gctmed.inc"
43#include "geant321/gctrak.inc"
44#include "geant321/gcunit.inc"
45#include "geant321/sckine.inc"
46 REAL UBUF(2)
47 EQUIVALENCE (UBUF(1),WS(1))
48 LOGICAL BTEST
ad265d61 49 DIMENSION PMOM(3),VPOS(3),VPOLA(3)
9b79affb 50C.
51C. ------------------------------------------------------------------
52 NTMSTO = 0
53 NSTMAX = 0
54 NALIVE = 0
55* Kick start the creation of the vertex
56 VPOS(1)=0
57 VPOS(2)=0
58 VPOS(3)=0
59 PMOM(1)=0
60 PMOM(2)=0
61 PMOM(3)=0
62 IPART=1
63 CALL GSVERT(VPOS,0,0,UBUF,0,NVTX)
64 CALL GSKINE(PMOM,IPART,NVTX,UBUF,0,NT)
65*
66 MTRACK=-999
67 10 MTROLD=MTRACK
ad265d61 68 CALL RXGTRAK(MTRACK,IPART,PMOM,E,VPOS,VPOLA,TTOF)
9b79affb 69 IF(MTROLD.LT.0) THEN
70 MPRIMA=MTRACK
71 ENDIF
72 IF(MTRACK.LE.MPRIMA) THEN
73 IF(ISWIT(4).GT.0.AND.MTRACK.GT.0) THEN
74 IF(ISWIT(4).EQ.1.OR.MOD(MTRACK,ISWIT(4)).EQ.0) THEN
75 WRITE(CHMAIL,10200) MTRACK
76 CALL GMAIL(0,0)
77 ENDIF
78 ENDIF
79 IF(MTROLD.GT.0) THEN
80C --- Output root hits tree only for each primary MTRACK
81 CALL RXOUTH
82 ENDIF
83 ENDIF
84 IF(MTRACK.LE.0) GOTO 999
ad265d61 85 ITRTYP = NINT(Q(LQ(JPART-IPART)+6))
86 IF(ITRTYP.EQ.7) THEN
87* This is a cherenkov photon, more complicated...
88 NGPHOT=1
89 XPHOT(7,1) = SQRT(VPOLA(1)**2+VPOLA(2)**2+VPOLA(3)**2)
90 DO KK=1,3
91 XPHOT(KK ,1) = VPOS(KK)
92 XPHOT(KK+3,1) = PMOM(KK)/XPHOT(7,1)
93 XPHOT(KK+7,1) = VPOLA(KK)
94 ENDDO
95 XPHOT(11,1) = TTOF
96 CALL GSKPHO(1)
97* Just make sure that the track, whatever that is, is NOT transported
98 IQ(LQ(JKINE-1)) = IBSET(IQ(LQ(JKINE-1)),0)
99 ELSE
9b79affb 100* Set the vertex
ad265d61 101 JV=LQ(JVERTX-1)
102 Q(JV + 1) = VPOS(1)
103 Q(JV + 2) = VPOS(2)
104 Q(JV + 3) = VPOS(3)
105 Q(JV + 4) = TTOF
106 Q(JV + 5) = 0
107 Q(JV + 6) = 0
9b79affb 108* Set the track
ad265d61 109 JK=LQ(JKINE-1)
110 Q(JK + 1) = PMOM(1)
111 Q(JK + 2) = PMOM(2)
112 Q(JK + 3) = PMOM(3)
113 Q(JK + 4) = E
114 Q(JK + 5) = IPART
115 Q(JK + 6) = 1
116* Make sure the track IS transported
117 IQ(LQ(JKINE-1)) = IBCLR(IQ(LQ(JKINE-1)),0)
118 ENDIF
9b79affb 119* Now transport
120C CALL GPVERT(0)
121C CALL GPKINE(0)
122* Normal Gtreve_root code
123 NV = NVERTX
124 DO 40 IV = 1,NV
125* *** For each vertex in turn ..
126 JV = LQ(JVERTX-IV)
127 NT = Q(JV+7)
128 IF (NT.LE.0) GO TO 40
129 TOFG = Q(JV+4)
130 SAFETY = 0.
131 IF (NJTMAX.GT.0) THEN
132 CALL GMEDIA (Q(JV+1), NUMED)
133 IF (NUMED.EQ.0) THEN
134 WRITE (CHMAIL, 10000) (Q(JV+I), I=1,3)
135 CALL GMAIL (0, 0)
136 GO TO 40
137 ENDIF
138 CALL GLSKLT
139 ENDIF
140* ** Loop over tracks attached to current vertex
141 DO 20 IT = 1,NT
142 JV = LQ(JVERTX-IV)
143 ITRA = Q(JV+7+IT)
144 IF (BTEST(IQ(LQ(JKINE-ITRA)),0)) GO TO 20
145 CALL GFKINE (ITRA, VERT, PVERT, IPART, IVERT, UBUF, NWBUF)
146 IF (IVERT.NE.IV) THEN
147 WRITE (CHMAIL, 10100) IV, IVERT
148 CALL GMAIL (0, 0)
149 GO TO 999
150 ENDIF
151* * Store current track parameters in stack JSTAK
152 CALL GSSTAK (2)
153 20 CONTINUE
154* ** Start tracking phase
155 30 IF (NALIVE.NE.0) THEN
156 NALIVE = NALIVE -1
157* * Pick-up next track in stack JSTAK, if any
158* * Initialize tracking parameters
159 CALL GLTRAC
160 IF (NUMED.EQ.0) GO TO 30
161* * Resume tracking
162 CALL GUTRAK
163 IF (IEOTRI.NE.0) GO TO 999
164 GO TO 30
165 ENDIF
166*
167 40 CONTINUE
168 GOTO 10
169*
17010000 FORMAT (' GTREVE_ROOT : Vertex outside setup, XYZ=',3G12.4)
17110100 FORMAT (' GTREVE_ROOT : Abnormal track/vertex connection',2I8)
17210200 FORMAT (' GTREVE_ROOT : Transporting primary track No ',I10)
173* END GTREVE_ROOT
174 999 END
175