| 1 |
C |
| 2 |
C--------------------------------------------------------------------- |
| 3 |
SUBROUTINE LASTRISCIA(BAR,IBAR) |
| 4 |
C--------------------------------------------------------------------- |
| 5 |
C TRASFORMA UN VALORE IN mm NELL'EQUIVALENTE VALORE IN NUMERO DI STRISCIA . |
| 6 |
C |
| 7 |
INCLUDE 'INTEST.TXT' |
| 8 |
C |
| 9 |
COMMON / SHIFT / SHIFT |
| 10 |
SAVE / SHIFT / |
| 11 |
C |
| 12 |
C EM: IF TRACK GO OUT OF THE CALORIMETER GIVE BACK AS STRIP VALUE -1 TO FLAG THE SITUATION |
| 13 |
C |
| 14 |
IF ( BAR.LT.-6..OR.BAR.GT.246. ) THEN |
| 15 |
IBAR = -1 |
| 16 |
GOTO 500 |
| 17 |
ENDIF |
| 18 |
C |
| 19 |
C END EM |
| 20 |
C |
| 21 |
BBAR = BAR - SHIFT |
| 22 |
IBAR = 0 |
| 23 |
DO L = 1, NCHA |
| 24 |
ALUNG = INT((FLOAT(L) - 1.) / 32.) * ADIST + AA |
| 25 |
II = L - 1 |
| 26 |
K = MOD(II,32) |
| 27 |
RLINF = FLOAT(K) * 2.44 + ALUNG |
| 28 |
RLSUP = FLOAT(K + 1) * 2.44 + ALUNG |
| 29 |
IF (BBAR.GT.RLINF.AND.BBAR.LT.RLSUP) THEN |
| 30 |
IBAR = L |
| 31 |
GO TO 500 |
| 32 |
ENDIF |
| 33 |
ENDDO |
| 34 |
C |
| 35 |
C SE BAR SI TROVA SU UN'AREA MORTA SI PRENDE LA STRISCIA INFERIORE PIU` |
| 36 |
C PROSSIMA TRANNE QUANDO SI TRATTA DELLA PRIMA AREA MORTA NEL QUAL CASO SI |
| 37 |
C PRENDE IBAR = 1 . |
| 38 |
C |
| 39 |
IF (IBAR.EQ.0.AND.BBAR.GT.0.0001) THEN |
| 40 |
LK = INT(BBAR / ADIST) |
| 41 |
DIS = BBAR - ADIST * FLOAT(LK+1) |
| 42 |
IF (DIS.LT.-1.96) THEN |
| 43 |
IBAR = 32 * LK |
| 44 |
ELSE IF (DIS.GE.-1.96.AND.DIS.LE.-0.5) THEN |
| 45 |
IBAR = 32 * (LK + 1) |
| 46 |
ELSE IF (DIS.GT.-0.5.AND.DIS.LE.0.) THEN |
| 47 |
IBAR = 32 * (LK + 1) + 1 |
| 48 |
ELSE |
| 49 |
PRINT *,'PROBLEMS :',BBAR |
| 50 |
ENDIF |
| 51 |
IF (IBAR.EQ.0) IBAR = 1 |
| 52 |
ENDIF |
| 53 |
C |
| 54 |
IF ( IBAR.LE.0 ) IBAR = 1 |
| 55 |
IF ( IBAR.GT.96 ) IBAR = 96 |
| 56 |
C |
| 57 |
500 CONTINUE |
| 58 |
RETURN |
| 59 |
END |
| 60 |
C |