--- DarthVader/CalorimeterLevel2/src/calol2tr.for 2006/08/10 06:32:02 1.6 +++ DarthVader/CalorimeterLevel2/src/calol2tr.for 2007/01/22 09:17:01 1.8 @@ -55,7 +55,7 @@ COMMON / CH / CHECK SAVE / CH / C - COMMON / CALOFIT / VARFIT, NPFIT + COMMON / CALOFIT / VARFIT, NPFIT, IWPL,CHTRACK SAVE / CALOFIT / C COMMON / pawcd / hmemor @@ -89,18 +89,7 @@ NLAST = 0. PLANETOT = 0. QMEAN = 0. - SELFTRIGGER = 0 - 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(IBAR,2*NPLA) - CALL VZERO(Y,NPLA) - CALL VZERO(YY,NPLA) - CALL VZERO(XOUT,NPLA) - CALL VZERO(YOUT,NPLA) +C SELFTRIGGER = 0 C C BEGIN WITH THE FISRT TRACK IF WE HAVE A TRACK FROM TRACKER C @@ -117,6 +106,10 @@ 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) do m = 1, 5 al_p(m) = al_pp(t,m) enddo @@ -235,10 +228,22 @@ C C WE MUST PROCESS A SELFTRIGGER EVENT C - IF (TRIGTY.GE.2) THEN + IF (TRIGTY.GE.2.AND.HZN.EQ.0) THEN C C CALL SELFTRIGGER SUBROUTINE C + 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) +C CALL SELFTRIG() ELEN = PARZEN3 SELEN = ABS(ELEN) * (11.98*1E-2 + 7.6 * EXP(-5736/ABS(ELEN))) @@ -285,17 +290,28 @@ ENDIF CALL LASTRISCIA(BAR(M,I),IBAR(M,I)) cibar(M,I) = ibar(m,i) + IF (ibar(m,i).EQ.-1) THEN + CHTRACK = CHTRACK + 1 + ELSE + IWPL(M) = IWPL(M) + 1 + ENDIF ENDDO ENDIF C ENDDO C - ELSE - IF (GOOD2.EQ.0) THEN + ENDIF +C + IF (TRIGTY.GE.2.AND.HZN.NE.0) THEN + IF (GOOD2.EQ.1) THEN PRINT *,' CALORIMETER - WARNING F77: unknown request' GOOD2 = 1 GOTO 50 ENDIF + IF ( NPCFIT(1).EQ.0.OR.NPCFIT(2).EQ.0 ) THEN + GOOD2 = 1 + GOTO 50 + ENDIF ENDIF C 6996 CONTINUE @@ -304,7 +320,7 @@ C C IF THE TRACK IS OUTSIDE THE CALORIMETER GO OUT, IF NOT CALCULATE DX0L C - IF (CHTRACK.EQ.44) THEN + IF (CHTRACK.EQ.44) THEN ! CHTRACK is the number of planes not touched by the track GOOD2 = 0 c PRINT *,' CALORIMETER - WARNING F77: track outside calorimeter' GOTO 50 @@ -319,8 +335,6 @@ & + (BAR(1,1)-(2.66*MX+BAR(1,1)))**2 + 2.66**2) / & 3.6 C -C DX0L = X01PL * SQRT( (IWPL(1) * SQRT(1 + MX*MX))**2 + -C & (IWPL(2) * SQRT(1 + MY*MY))**2 )/2. ENDIF C C @@ -338,15 +352,19 @@ GOTO 50 ENDIF ENDIF - IF (TRIGTY.GE.2.AND.GOOD2.EQ.0) THEN + IF (TRIGTY.GE.2.AND.HZN.EQ.0.AND.GOOD2.EQ.0) THEN RIG = ELEN ! SELFTRIGGER RIGIDITY IF ( RIG.EQ.0. ) THEN - GOOD2 = 0 + GOOD2 = 1 PRINT *,' CALORIMETER - WARNING F77: ST track with R = 0' GOTO 50 ENDIF ENDIF C + IF (GOOD2.EQ.0.AND.(TRIGTY.LT.2.OR.HZN.EQ.1)) THEN + RIG = RIGINPUT + ENDIF +C RNSS = 0. QTOTT = 0. C @@ -595,7 +613,12 @@ ENDDO C EINF = EMIN - ESUP = 50. + ESUP = 150. +C + IF (TRIGTY.GE.2.AND.HZN.NE.0) THEN + EINF = 50. + ESUP = 1500. + ENDIF C C CALCULATE PLANETOT AND QMEAN C