5 * Revision 1.1.1.1 1995/10/24 10:21:26 cernlib
10 #include "geant321/pilot.h"
11 *CMZ : 3.21/02 29/03/94 15.41.22 by S.Giani
13 SUBROUTINE GMCOUL(OMEGA,DIN)
15 C. ******************************************************************
17 C * Generate NSCA single scatters in small angle approxima. *
18 C. * for a particle with parameters VECT in common /GCTRAK/ *
20 C. * This subroutine must be called with the correct values *
21 C. * of the constants OMC & CHC which depend of the medium *
23 C. * OMC and CHC are computed at initialisation time (GMOLI) *
24 C. * No lateral displacement of the particle with respect *
25 C. * the incident direction is included. *
26 C. * No path length correction is included *
28 C. * Output angles overwrite VECT *
30 C. * ==>Called by : GMULTS *
31 C. * Author G. Lynch (LBL) (adapted by M. Maire 1.02.90) *
33 C. ******************************************************************
35 #include "geant321/gctrak.inc"
36 #include "geant321/gconsp.inc"
37 #include "geant321/gcmulo.inc"
38 PARAMETER (NSCMX = 50)
39 DIMENSION DIN(3),RNDM(2*NSCMX)
40 PARAMETER (OMCF=1.167)
42 * ------------------------------------------------------------------
44 * *** Compute number of scatters (Poisson distr. with mean OMEGA0)
47 CALL GPOISS (OMEGA0,NSCA,1)
54 NSCA = MIN(NSCA,NSCMX)
55 CALL GRNDM (RNDM,2*NSCA)
57 * *** THMIN2 is the screening angle
58 THMIN2 = (CHCMOL**2)/(OMCF*OMCMOL*(VECT(7)**2))
63 THET = SQRT(THMIN2*((1./RNDM(I)) - 1.))
64 PHI = TWOPI*RNDM(NSCA+I)
65 SUMX = SUMX + THET*COS(PHI)
66 SUMY = SUMY + THET*SIN(PHI)
68 THETA = SQRT(SUMX**2 + SUMY**2)