5 * Revision 1.2 1996/02/27 10:08:11 ravndal
6 * Precision problem in cos(theta) solved
8 * Revision 1.1.1.1 1995/10/24 10:21:21 cernlib
12 #include "geant321/pilot.h"
13 *CMZ : 3.21/02 29/03/94 15.41.21 by S.Giani
17 C. ******************************************************************
19 C. * Generates positron annihilation *
21 C. * ==>Called by : GTELEC *
22 C. * Author L.Urban ********* *
23 C. * 10/06/93: modified by Georges Azuelos (Vancouver) *
24 C * to include 1-quantum annihilation *
26 C. ******************************************************************
28 #include "geant321/gcphys.inc"
29 #include "geant321/gctrak.inc"
30 #include "geant321/gccuts.inc"
31 #include "geant321/gcking.inc"
32 #include "geant321/gconsp.inc"
33 #include "geant321/gcbank.inc"
34 #include "geant321/gcmulo.inc"
35 #include "geant321/gcjloc.inc"
36 #include "geant321/gcmate.inc"
37 DIMENSION PGAM(3),RNDM(2)
39 PARAMETER (ALFA=7.29735E-3)
41 C. ------------------------------------------------------------------
44 IF((IANNI.NE.1).OR.((GETOT+EMASS).LE.CUTGAM)) THEN
46 DESTEP = DESTEP + GETOT + EMASS
60 SIG=(GAM2+4.*GAM+1.)*LOG(GAM+C)/GAM1-(GAM+3.)/C
61 SIG=0.5*Q(JPROB+17)*SIG/GAMP1
63 BIND=0.5*(Z*ALFA)**2*EMASS
67 SIG1=GAM2+2.*(GAM+2.)/3.-(GAM+2.)/GVE*LOG(GAM+GVE)
68 SIG1=2.*Q(JPROB+18)*SIG1/(GVE*GAMP1**2)
76 IF(RNDM(1).GE.SIG1/SIG)THEN
82 E=E0*((1.-E0)/E0)**RNDM(1)
84 SCREJ=(GAMP12+2.*GAMP1-2.-GAMP12*E-1./E)/(GAMP12-2.)
85 IF(RNDM(2).GT.SCREJ) GOTO 10
89 COSTH=(GEKIN+EMASS*(2.*E-1.)/E)/P
91 C restrict COSTH to [-1.,+1.]
93 COSTH = MIN( 1. , MAX( -1. , COSTH ) )
94 SINTH=SQRT((1.-COSTH)*(1.+COSTH))
100 PGAM(1) = EPHOT1* SINTH * COSPHI
101 PGAM(2) = EPHOT1* SINTH * SINPHI
102 PGAM(3) = EPHOT1* COSTH
104 C Rotate tracks into GEANT system and store.
106 CALL GFANG(VECT(4),COSAL,SINAL,COSBT,SINBT,ROTATE)
108 C Polar co-ordinates to momentum components.
111 IF(EPHOT1.GT.CUTGAM) THEN
114 GKIN(1,NGKINE) = PGAM(1)
115 GKIN(2,NGKINE) = PGAM(2)
116 GKIN(3,NGKINE) = PGAM(3)
117 GKIN(4,NGKINE) = EPHOT1
120 GPOS(1,NGKINE) = VECT(1)
121 GPOS(2,NGKINE) = VECT(2)
122 GPOS(3,NGKINE) = VECT(3)
124 + CALL GDROT(GKIN(1,NGKINE),COSAL,SINAL,COSBT,SINBT)
126 DESTEP = DESTEP + EPHOT1
129 C Momentum vector of second photon.
131 EPHOT2 = GETOT + EMASS - EPHOT1
132 IF(EPHOT2.GT.CUTGAM) THEN
135 GKIN(1,NGKINE) = - PGAM(1)
136 GKIN(2,NGKINE) = - PGAM(2)
137 GKIN(3,NGKINE) = P - PGAM(3)
138 GKIN(4,NGKINE) = EPHOT2
141 GPOS(1,NGKINE) = VECT(1)
142 GPOS(2,NGKINE) = VECT(2)
143 GPOS(3,NGKINE) = VECT(3)
145 + CALL GDROT(GKIN(1,NGKINE),COSAL,SINAL,COSBT,SINBT)
147 DESTEP = DESTEP + EPHOT2
150 C 1-quantum annihilation
153 C Assume photon collinear with positron
158 C Rotate tracks into GEANT system and store.
160 CALL GFANG(VECT(4),COSAL,SINAL,COSBT,SINBT,ROTATE)
162 C Polar co-ordinates to momentum components.
165 IF(EPHOT.GT.CUTGAM) THEN
168 GKIN(1,NGKINE) = PGAM(1)
169 GKIN(2,NGKINE) = PGAM(2)
170 GKIN(3,NGKINE) = PGAM(3)
171 GKIN(4,NGKINE) = EPHOT
174 GPOS(1,NGKINE) = VECT(1)
175 GPOS(2,NGKINE) = VECT(2)
176 GPOS(3,NGKINE) = VECT(3)
178 + CALL GDROT(GKIN(1,NGKINE),COSAL,SINAL,COSBT,SINBT)
180 DESTEP = DESTEP + EPHOT