source: JEM-EUSO/esaf_lal/tags/v1_r0/esaf/packages/simulation/externals/slast/src/kernel/slastsimulation.F @ 117

Last change on this file since 117 was 117, checked in by moretto, 11 years ago

ESAF version compilable on mac OS

File size: 2.1 KB
Line 
1      SUBROUTINE SLASTSIMULATION
2      IMPLICIT NONE
3#include "event.inc"
4#include "cwntvars.inc"
5#include "erandom.inc"
6#include "detector.inc"
7#include "constants.inc"
8
9      REAL Lmax, EINT1, EINT2
10      INTEGER iss_first,second_call,avoid_cycling
11      SAVE iss_first
12      SAVE second_call
13      DATA iss_first/0/, second_call/0/
14      LOGICAL KEY_TRIG/.FALSE./
15      REAL DEPTH
16      REAL*8 RNDM
17*
18      avoid_cycling = 0
19      PI  = ACOS(-1.)
20      IF(iss_first.EQ.0) THEN
21         FOV   = FOV/180.*PI
22         iss_first = 1
23      ENDIF
24*   
25      ISS(3) = ISS(3) + R_EARTH   ! TRANSFORM TO SPHERICAL COORDINATES (IT IS RESET EACH EVENT FROM SLASTLIGHTOEUSO (C object)
26      EVENT = 0
27      EINT  = EINTR(1)
28      THETA = THETAR(1)
29      PHI   = PHIR(1)
30      IF((EINTR(1).EQ.EINTR(2)   .AND.
31     +     THETAR(1).EQ.THETAR(2).AND.
32     +     PHIR(1).EQ.PHIR(2)))   THEN
33        IF ( SECOND_CALL .EQ. 0 ) THEN
34          RINT(3) = RINT(3) + R_EARTH
35          CALL ACCEPTANCE(Lmax)
36          RINT(3) = RINT(3) - R_EARTH
37          CALL TRANSFORM_COORDINATES('FORWARD')
38        ELSE
39          THETA = THETAR(1)
40          PHI   = PHIR(1)
41          RINT(3) = RINT(3) - R_EARTH
42          CALL TRANSFORM_COORDINATES('FORWARD')
43        END IF
44        X1 = DEPTH(RINT)
45        CALL GENERATE_ESAFEVENT(Lmax,KEY_TRIG)
46        SECOND_CALL = 1
47        GOTO 2
48      ENDIF
49*
50  1   RNDM = ESAFRNDM()
51      KEY_TRIG = .FALSE.
52      avoid_cycling = avoid_cycling + 1
53*     ... DEFINE ENERGY,THETA,PHI ...
54      IF(ERAN.EQ.-1) THEN                                    ! Energy is taken randomly according
55        EINT    = EINTR(1)*EXP(RNDM*LOG(EINTR(2)/EINTR(1)))  ! to the uniform distribution in (Ln(E1),Ln(E2))
56      ELSE                                                   ! Else energy is taken randomly accordning to E^-ERAN   
57        EINT1   = EINTR(1)**(ERAN+1)                         ! distribition
58        EINT2   = EINTR(2)**(ERAN+1)
59        EINT    = (EINT1+(EINT2-EINT1)*RNDM)**(1.E0/(ERAN+1))
60      ENDIF
61      CALL FIRSTPOINT(Lmax)
62      CALL TRANSFORM_COORDINATES('FORWARD')
63      CALL GENERATE_ESAFEVENT(Lmax,KEY_TRIG)
64      IF(.NOT.KEY_TRIG.AND.avoid_cycling.LT.100) GOTO 1
65 2    RETURN
66      END
Note: See TracBrowser for help on using the repository browser.