* * $Id$ * * $Log$ * Revision 1.1.1.1 1995/10/24 10:21:39 cernlib * Geant * * #include "geant321/pilot.h" *CMZ : 3.21/02 29/03/94 15.41.25 by S.Giani *-- Author : FUNCTION GSTREN (GAMMA,ECUT,STEP) C. ****************************************************************** C. * * C. * Simulation of energy loss straggling in thin layers. * C. * Sampling is done from the tables which are prepared * C. * in GSTINI. * C. * * C. * ==> Called by : GTELEC, GTHADR, GTMUON * C. * Authors : K. Lassila-Perini, I. Gavrilenko * C. * * C. ****************************************************************** #include "geant321/gcbank.inc" #include "geant321/gcjloc.inc" #include "geant321/gcmate.inc" #include "geant321/gcstra.inc" C DIMENSION ANGL(200),RNDM(2) C... * Reading the tables, if the medium has not changed NP = Q(JTSTRA+1) * EC = 1.E9*ECUT GSTLOC = 0. IF(STEP.LE.0.) GO TO 90 C... * Interpolate the tables for the current gamma-factor GAML = LOG(GAMMA) IF(GAML.GT.GAMLOG(21)) THEN DO 10 J=1,NP ANGL(J)=Q(JTSTCO+J*21) 10 CONTINUE ELSE C... DO 20 I = 2,21 IF(GAML.LE.GAMLOG(I)) THEN DGG = (GAML-GAMLOG(I-1))/(GAMLOG(I)-GAMLOG(I-1)) IP=I GO TO 30 ENDIF 20 CONTINUE 30 DG1=1.-DGG C... DO 40 K = 1,NP ANGL(K) = Q(JTSTCO+(K-1)*21+IP-1)*DG1+ + Q(JTSTCO+(K-1)*21+IP )*DGG 40 CONTINUE ENDIF * * The sampling from the tables ANMIN = EXP(ANGL(NP)) ANMAX = EXP(ANGL( 1)) * DAN = ANMAX-ANMIN AMU = DAN*STEP CALL GPOISS(AMU,N,1) NICOLL = MAX(N,1) DO 80 I = 1,NICOLL 50 K1 = 1 K2 = NP CALL GRNDM(RNDM,1) R = LOG(RNDM(1)*DAN+ANMIN) 60 K = (K1+K2)/2 IF(R.GT.ANGL(K)) THEN K2=K ELSEIF(R.LT.ANGL(K)) THEN K1=K ELSE E=Q(JTSTEN+K) GOTO 70 ENDIF IF(K2-K1.GT.1 ) GO TO 60 * E = Q(JTSTEN+K2)+(R-ANGL(K2))* + (Q(JTSTEN+K1)-Q(JTSTEN+K2))/(ANGL(K1)-ANGL(K2)) 70 EE = EXP(E) IF(EE.GT.EC) GO TO 50 * * *** Total energy calculation GSTLOC = GSTLOC+EE 80 CONTINUE * 90 GSTREN = GSTLOC*1.E-9 END