--- DarthVader/CalorimeterLevel2/src/calol2tr.for 2007/01/27 06:22:19 1.13 +++ DarthVader/CalorimeterLevel2/src/calol2tr.for 2014/01/16 15:29:11 1.24 @@ -6,12 +6,12 @@ INCLUDE 'INTEST.TXT' C DOUBLE PRECISION al_p(5), - & xout(npla),yout(npla),zin(npla) + & xout(nplav),yout(nplav),zin(nplav) C - REAL PIANO(22), VARFIT(2) + REAL PIANO(NPLAV), VARFIT(2) REAL TX, TY, SHIFT - REAL BAR(2,NPLA), DISTY - REAL DISTX, Y(NPLA), YY(NPLA) + REAL BAR(2,NPLAV), DISTY + REAL DISTX, Y(NPLAV), YY(NPLAV) REAL RIG, PPLANEMAX, RMASS REAL RNSS, QTOTT, RQT, MX, MY REAL CHECK, ENER, CX, CY @@ -21,12 +21,13 @@ REAL ax,bx,eax,ebx,chi2x REAL ay,by,eay,eby,chi2y REAL parzen3, TMISD - INTEGER Nfitx,Nfity + INTEGER Nfitx,Nfity, MNPLA C INTEGER INDEX, NTOT(2), NPIANI, GTR - INTEGER j, m, i, IWPL(2), timpx, timpy, T, nn +c INTEGER j, m, i, IWPL(2), timpx, timpy, T, nn + INTEGER j, m, i, IWPL(2), T, nn INTEGER IPLANE, NNX, NNY, INFX, INFY, ISUPX, ISUPY - INTEGER IBAR(2,NPLA), NPFIT(2), CHTRACK,IWPLU + INTEGER IBAR(2,NPLAV), NPFIT(2), CHTRACK,IWPLU INTEGER Iquest(100), ICONTROL5, nin, IFAIL C PARAMETER (X01PL=0.74) @@ -66,6 +67,7 @@ C C Begin ! C +c print *,' sono qui' CALOL2TR = 0; NCORE = 0. QCORE = 0. @@ -91,30 +93,32 @@ QMEAN = 0. C SELFTRIGGER = 0 C -C BEGIN WITH THE FISRT TRACK IF WE HAVE A TRACK FROM TRACKER +C BEGIN WITH THE FIRST TRACK IF WE HAVE A TRACK FROM TRACKER C T = 1 C - 10 CONTINUE +c 10 CONTINUE + CONTINUE C IF (GOOD2.EQ.1) THEN C CHTRACK = 0 C CALL VZERO(IWPL,2) - CALL VZERO(BAR,2*NPLA) - CALL VZERO(IBAR,2*NPLA) - CALL VZERO(TBAR,2*NPLA) - CALL VZERO(TIBAR,2*NPLA) - CALL VZERO(Y,NPLA) - CALL VZERO(YY,NPLA) - CALL VZERO(XOUT,NPLA) - CALL VZERO(YOUT,NPLA) + CALL VZERO(BAR,2*NPLAV) + CALL VZERO(IBAR,2*NPLAV) + CALL VZERO(TBAR,2*NPLAV) + CALL VZERO(TIBAR,2*NPLAV) + CALL VZERO(Y,NPLAV) + CALL VZERO(YY,NPLAV) + CALL VZERO(XOUT,NPLAV) + CALL VZERO(YOUT,NPLAV) do m = 1, 5 al_p(m) = al_pp(t,m) +c print *,' al_p(',m,') = ',al_p(m) enddo if (al_p(5).eq.0.) THEN - PRINT *,' CALORIMETER - WARNING F77: track with R = 0, discarded' +c PRINT *,' CALORIMETER - WARNING F77: track with R = 0, discarded' GOOD2 = 0 GOTO 969 ENDIF @@ -124,10 +128,13 @@ YOUT(I) = 0. IF (MOD(M,2).EQ.0) THEN DISTX = PIANO(I) + ZALIG +c print *,'T Y PLANE I= ',I,' Z = ',DISTX ELSE DISTX = PIANO(I) - 5.81 + ZALIG +c print *,'T X PLANE I= ',I,' Z = ',DISTX ENDIF ZIN(I) = distx / 10. +c print *,' ZIN(',I,') = ',ZIN(I) TBAR(M,I) = 0. TIBAR(M,I) = 0 enddo @@ -138,15 +145,23 @@ c print *,' CALORIMETER - WARNING F77: tracking failed ' goto 969 endif - TX = TAN(ASIN(AL_P(3))) * COS(AL_P(4)) - TY = TAN(ASIN(AL_P(3))) * SIN(AL_P(4)) + TX = REAL(DTAN(DASIN(AL_P(3))) * DCOS(AL_P(4))) + TY = REAL(DTAN(DASIN(AL_P(3))) * DSIN(AL_P(4))) DO I = 1, NPLA NN = 0 -C????? IF (M.EQ.2) NN = 1 +c IF (M.EQ.2) NN = 1 IF (MOD(I,2).EQ.NN) THEN - SHIFT = +0.5 + IF (REVERSE.EQ.0) THEN + SHIFT = -0.5 + ELSE + SHIFT = +0.5 + ENDIF ELSE - SHIFT = -0.5 + IF (REVERSE.EQ.0) THEN + SHIFT = +0.5 + ELSE + SHIFT = -0.5 + ENDIF ENDIF C C CHECK IF XOUT OR YOUT ARE NaN @@ -158,23 +173,25 @@ GOTO 969 ENDIF C - CX = XOUT(I)*10. + XALIG - CY = YOUT(I)*10. + YALIG + CX = REAL(XOUT(I))*10. + XALIG + CY = REAL(YOUT(I))*10. + YALIG C - IF (I.EQ.1) THEN - TIMPX = CX - TIMPY = CY - ENDIF +c IF (I.EQ.1) THEN !EM GCC4.7 TIMPX/Y are not used in che code... +c TIMPX = NINT(CX) +c TIMPY = NINT(CY) +c ENDIF IF (M.EQ.1) THEN Y(I) = CX BAR(M,I) = Y(I) TBAR(M,I) = (Y(I) - XALIG)/10. - IF (I.EQ.22) MX=ABS(Y(1)-Y(22))/ABS(ZIN(1)-ZIN(22)) + IF (I.EQ.NPLA) MX=ABS(Y(1)-Y(NPLA))/ + & ABS(REAL(ZIN(1)-ZIN(NPLA))) ELSE YY(I) = CY BAR(M,I) = YY(I) TBAR(M,I) = (-YALIG + YY(I))/10. - IF (I.EQ.22) MY=ABS(Y(1)-Y(22))/ABS(ZIN(1)-ZIN(22)) + IF (I.EQ.NPLA) MY=ABS(Y(1)-Y(NPLA))/ + & ABS(REAL(ZIN(1)-ZIN(NPLA))) ENDIF CALL LASTRISCIA(BAR(M,I),IBAR(M,I)) tibar(M,I) = ibar(m,i) @@ -235,14 +252,14 @@ CALL VZERO(IWPL,2) CALL VZERO(VARCFIT,2) CALL VZERO(NPCFIT,2) - CALL VZERO(TBAR,2*NPLA) - CALL VZERO(TIBAR,2*NPLA) - CALL VZERO(BAR,2*NPLA) - CALL VZERO(IBAR,2*NPLA) - CALL VZERO(Y,NPLA) - CALL VZERO(YY,NPLA) - CALL VZERO(XOUT,NPLA) - CALL VZERO(YOUT,NPLA) + CALL VZERO(TBAR,2*NPLAV) + CALL VZERO(TIBAR,2*NPLAV) + CALL VZERO(BAR,2*NPLAV) + CALL VZERO(IBAR,2*NPLAV) + CALL VZERO(Y,NPLAV) + CALL VZERO(YY,NPLAV) + CALL VZERO(XOUT,NPLAV) + CALL VZERO(YOUT,NPLAV) C CALL SELFTRIG() ELEN = PARZEN3 @@ -258,38 +275,49 @@ IF (NPCFIT(M).GE.2) THEN IF (M.EQ.1) THEN VARCFIT(1) = CHI2X - IMPX = AX ! PAMELA REF + IMPX = AX + BX * (ZALIG/10.) ! PAMELA REF TANX = BX ELSE VARCFIT(2) = CHI2Y - IMPY = AY ! PAMELA REF + IMPY = AY + BY * (ZALIG/10.) ! PAMELA REF TANY = BY ENDIF C DO I = 1,NPLA NN = 0 -C????? IF (M.EQ.2) NN = 1 +c IF (M.EQ.2) NN = 1 IF (MOD(I,2).EQ.NN) THEN - SHIFT = +0.5 + IF (REVERSE.EQ.0) THEN + SHIFT = -0.5 + ELSE + SHIFT = +0.5 + ENDIF ELSE - SHIFT = -0.5 + IF (REVERSE.EQ.0) THEN + SHIFT = +0.5 + ELSE + SHIFT = -0.5 + ENDIF ENDIF C IF (M.EQ.1) THEN DISTX = PIANO(I) - 5.81 - Y(I) = (DISTX * TANX) + AX - XALIG + Y(I) = (DISTX * TANX) + IMPX*10. !- XALIG c CBAR(M,I) = Y(I) - BAR(M,I) = Y(I) - CBAR(M,I) = (Y(I) + XALIG)/10. - IF (I.EQ.22) MX=ABS(Y(1)-Y(22))/ABS(ZIN(1)-ZIN(22)) + BAR(M,I) = Y(I) + XALIG + CBAR(M,I) = Y(I) / 10. + IF (I.EQ.NPLA) MX=ABS(Y(1)-Y(NPLA))/ + & ABS(REAL(ZIN(1)-ZIN(NPLA))) C ELSE DISTY = PIANO(I) - YY(I) = (DISTY * TANY) + AY - YALIG + YY(I) = (DISTY * TANY) + IMPY*10. !- YALIG +c print *,' I ',i,' YY ',YY(I) c CBAR(M,I) = YY(I) - BAR(M,I) = YY(I) - CBAR(M,I) = (YY(I) + YALIG)/10. - IF (I.EQ.22) MY=ABS(Y(1)-Y(22))/ABS(ZIN(1)-ZIN(22)) + BAR(M,I) = YY(I) + YALIG + CBAR(M,I) = YY(I) / 10. + IF (I.EQ.NPLA) MY=ABS(Y(1)-Y(NPLA))/ + & ABS(REAL(ZIN(1)-ZIN(NPLA))) C ENDIF CALL LASTRISCIA(BAR(M,I),IBAR(M,I)) @@ -349,10 +377,10 @@ GTR = 1 IF (TRKCHI2.LT.0) GTR = 2 IF ( AL_PP(GTR,5).NE.0. ) THEN - RIG = 1./(AL_PP(GTR,5)) + RIG = REAL(1./(AL_PP(GTR,5))) ELSE GOOD2 = 0 - PRINT *,' CALORIMETER - WARNING F77: track with R = 0' +c PRINT *,' CALORIMETER - WARNING F77: track with R = 0' GOTO 50 ENDIF ENDIF @@ -360,7 +388,7 @@ RIG = ELEN ! SELFTRIGGER RIGIDITY IF ( RIG.EQ.0. ) THEN GOOD2 = 1 - PRINT *,' CALORIMETER - WARNING F77: ST track with R = 0' +c PRINT *,' CALORIMETER - WARNING F77: ST track with R = 0' GOTO 50 ENDIF ENDIF @@ -372,12 +400,13 @@ RNSS = 0. QTOTT = 0. C - PPLANEMAX = 1.01*(LOG(ABS(RIG)/0.0081)-1.) + PPLANEMAX = 1.01*(LOG(ABS(RIG)/0.0081)-1.) / 0.74 C IPLANE = INT(ANINT(PPLANEMAX)) + 5 C IF (IPLANE.GT.NPLA) IPLANE=NPLA IF (IPLANE.LT.1) IPLANE = 1 +c print *,' calcolo...' C C CALCULATE QLOW AND NLOW C @@ -401,6 +430,8 @@ C DO J = 1,IPLANE NNX = IBAR(1,J) + RNSS = 0. ! BACO!! + QTOTT = 0. ! BACO!! IF (NNX.NE.-1) THEN IF (NNX.LT.9) NNX = 9 IF (NNX.GT.88) NNX = 88 @@ -451,10 +482,11 @@ INFX = NNX - 8 ISUPX = NNX + 8 DO I = INFX,ISUPX - IF (DEXY(1,J,I).LT.EMIN) GO TO 710 - NCYL = NCYL + 1 - QCYL = QCYL + DEXY(1,J,I) - 710 ENDDO + IF (DEXY(1,J,I).GE.EMIN) THEN + NCYL = NCYL + 1 + QCYL = QCYL + DEXY(1,J,I) + ENDIF + ENDDO ENDIF NNY = IBAR(2,J) IF (NNY.NE.-1) THEN @@ -463,10 +495,11 @@ INFY = NNY - 8 ISUPY = NNY + 8 DO I=INFY,ISUPY - IF (DEXY(2,J,I).LT.EMIN) GO TO 810 - NCYL = NCYL + 1 - QCYL = QCYL + DEXY(2,J,I) - 810 ENDDO + IF (DEXY(2,J,I).GE.EMIN) THEN + NCYL = NCYL + 1 + QCYL = QCYL + DEXY(2,J,I) + ENDIF + ENDDO ENDIF C C QTR = DETECTED ENERGY AND NTR = NUMBER OF HIT STRIPS IN A CYLINDER oF @@ -578,7 +611,9 @@ C C CALCULATE NLAST AND QLAST C - DO J = NPLA-4,NPLA + MNPLA = NPLA -4 + IF ( MNPLA .LT. 1 ) MNPLA = 1 + DO J = MNPLA,NPLA NNX = IBAR(1,J) IF (NNX.NE.-1) THEN IF (NNX.LT.5) NNX = 5 @@ -641,6 +676,7 @@ C 50 CONTINUE C +c print *,' esco' RETURN END