C C--------------------------------------------------------------------- SUBROUTINE LASTRISCIA(BAR,IBAR) C--------------------------------------------------------------------- C TRASFORMA UN VALORE IN mm NELL'EQUIVALENTE VALORE IN NUMERO DI STRISCIA . C INCLUDE 'INTEST.TXT' C COMMON / SHIFT / SHIFT C C EM: IF TRACK GO OUT OF THE CALORIMETER GIVE BACK AS STRIP VALUE -1 TO FLAG THE SITUATION C IF ( BAR.LT.-6..OR.BAR.GT.246. ) THEN IBAR = -1 GOTO 500 ENDIF C C END EM C BBAR = BAR - SHIFT IBAR = 0 DO L = 1, NCHA ALUNG = INT((FLOAT(L) - 1.) / 32.) * ADIST + AA II = L - 1 K = MOD(II,32) RLINF = FLOAT(K) * 2.44 + ALUNG RLSUP = FLOAT(K + 1) * 2.44 + ALUNG IF (BBAR.GT.RLINF.AND.BBAR.LT.RLSUP) THEN IBAR = L GO TO 500 ENDIF ENDDO C C SE BAR SI TROVA SU UN'AREA MORTA SI PRENDE LA STRISCIA INFERIORE PIU` C PROSSIMA TRANNE QUANDO SI TRATTA DELLA PRIMA AREA MORTA NEL QUAL CASO SI C PRENDE IBAR = 1 . C IF (IBAR.EQ.0.AND.BBAR.GT.0.0001) THEN LK = INT(BBAR / ADIST) DIS = BBAR - ADIST * FLOAT(LK+1) IF (DIS.LT.-1.96) THEN IBAR = 32 * LK ELSE IF (DIS.GE.-1.96.AND.DIS.LE.-0.5) THEN IBAR = 32 * (LK + 1) ELSE IF (DIS.GT.-0.5.AND.DIS.LE.0.) THEN IBAR = 32 * (LK + 1) + 1 ELSE PRINT *,'PROBLEMS :',BBAR ENDIF IF (IBAR.EQ.0) IBAR = 1 ENDIF C IF ( IBAR.LE.0 ) IBAR = 1 IF ( IBAR.GT.96 ) IBAR = 96 C 500 CONTINUE RETURN END C