REAL FUNCTION bcal2() IMPLICIT NONE INCLUDE ? INTEGER NUM_MAX,MNUM REAL EMIN,RIN,ROUT,ENERGY LOGICAL TRUE, FALSE, FIRST, CER_HIT_CUT,CLUST_OK LOGICAL TRGCUT, CUT2, P_HEL_CUT, N_HEL_CUT LOGICAL RAST_CUT,NCUT,CER_CUT,EVENT_OK,BASIC_CUT REAL COS_THT,SIN_THT, EP, E, XBJ, QSQ REAL MPROTON, DTHT INTEGER I,j,HELICITY_SIGN,GOOD_CER_HIT(20),k INTEGER GOOD_CLUST(20) INTEGER HW_PLATE,NCLUST_SWITCH REAL CER_SANE_TIME_WALK(8) REAL CER_TDC_HI,CER_TDC_LOW,BC_X_LOW(8) REAL BC_Y_HI(8),BC_Y_LOW(8) REAL BC_X_HI(8) C BC_X_HI(i) and LOW are the low(or high) x boundary for the c ith mirror on bigcal. Similarly for Y DATA BC_X_HI/60,0,60,0,60,0,60,0/ DATA BC_X_LOW/0,-60,0,-60,0,-60,0,-60/ DATA BC_Y_LOW/-110.0,-110.0,-55.0,-55.0,0,0,55,55/ DATA BC_Y_HI/-55.0,-55.0,0,0,55.0,55.0,110,110/ C Cer_Sane_Time_walk is the time walk correction for the cerenkov c tdc values look for the correction in a loop further down DATA CER_SANE_TIME_WALK/24000,24500,24000,25000, , 15000,15000,14000,14000/ DATA FIRST /.TRUE./ SAVE FIRST c cut on the cerenkov tdc...should be around c the time of flight peak CER_TDC_HI=-2000 CER_TDC_LOW=-2500 DO I=1,20 GOOD_CER_HIT(I)=0 ENDDO DO I=1,20 GOOD_CLUST(I)=0 ENDDO TRUE = .TRUE. FALSE = .FALSE. NCLUST_SWITCH=0 C APPLY TIME WALK CORRECTION DO J=1,CER_HIT IF(CER_NUM(J).LT.9)THEN CER_TDC(J) = CER_TDC(J) + , CER_SANE_TIME_WALK(CER_NUM(J))/FLOAT(CER_ADCC(J)) ENDIF ENDDO IF(FIRST)THEN first = false WRITE(*,*) 'BOOKING da HISTOGRAMS ver 2' DO I=1,8 CALL HBOOK2(40001+I*1000,'CERTDC VS BCAL64 ROW col 1' , ,19,1,20,100,CER_TDC_LOW,CER_TDC_HI,0.0) CALL HBOOK2(40002+I*1000,'CERTDC VS BCAL64 ROW col 2' , ,19,1,20,100,CER_TDC_LOW,CER_TDC_HI,0.0) ENDDO ENDIF BASIC_CUT = BTRIGTYPE.EQ.4.and.NCLUST64.EQ.1.AND.ECLUST(1).GT.1 , .and.CER_HIT.LE.10 IF(BASIC_CUT)THEN cccccccccccccccccccccccccccccccccc c Begin to loop through data ccccccccccccccccccccccccccccccc C C First through the bigcal clusters. All clusters that C pass the cuts are indicated by a 1 in the GOOD_CLUST(I) array DO I=1,NCLUST64 EP=ECLUST(I) C ENERGY CUT (EMIN=0 means no cut) IF(EMIN.EQ.0.OR.EP.GE.EMIN)THEN GOOD_CLUST(I)=1 ENDIF ENDDO C Second through the cerenkov hits. All tdc hits that pass c cuts are indicated by a 1 in GOOD_CER_HIT(I) DO I=1,CER_HIT C Mirror restriction. This ignorse combinations of mirrors and c therefore partial cones. It will be necessary to reconstruct c partial cones later. TDC cut. This is currently only valid for c the triggering scheme where the cernekov determines trigger time IF (CER_NUM(I).LT.9.AND.CER_TDC(I).LE.CER_TDC_HI.AND. , CER_TDC(I).GE.CER_TDC_LOW) THEN GOOD_CER_HIT(I)=1 ENDIF ENDDO C Now checking for correlation between hits in cerenkov and c big cal. I am doing this by checking all cer_hits for each cluster c and vice-versa. That's two loops. You could do it with one. DO I=1,NCLUST64 IF(GOOD_CLUST(I).EQ.1)THEN GOOD_CLUST(I)=0 DO J=1,CER_HIT IF(GOOD_CER_HIT(J).EQ.1)THEN MNUM=CER_NUM(J) IF(XCLUST(I).GT.BC_X_LOW(MNUM).AND. , XCLUST(I).LT.BC_X_HI(MNUM).AND.YCLUST(I) , .GT.BC_Y_LOW(MNUM).AND.YCLUST(I).LT. , BC_Y_HI(MNUM))THEN GOOD_CLUST(I)=1 ENDIF ENDIF ENDDO ENDIF ENDDO c Similar Loop for the Cer_hits DO I=1,CER_HIT IF(GOOD_CER_HIT(I).EQ.1)THEN GOOD_CER_HIT(I)=0 MNUM=CER_NUM(I) DO J=1,NCLUST IF(XCLUST(J).GT.BC_X_LOW(MNUM).AND. , XCLUST(J).LT.BC_X_HI(MNUM).AND.YCLUST(J) , .GT.BC_Y_LOW(MNUM).AND.YCLUST(J).LT. , BC_Y_HI(MNUM).AND.GOOD_CLUST(J).EQ.1)THEN GOOD_CER_HIT(I)=1 ENDIF ENDDO ENDIF ENDDO cccccccccccccccccccccccccccccccC c NOW IT'S TIME TO MATCH CERENKOV HITS TO GROUPS OF 64 c c Since we only have one cluster per event, and we've alredy c picked out the cerenkov hits that match big cal clusters c any cerenkov hit that passed the above cuts can be c binned in whatever sum64 rows are there for this event c cccccccccccccccccccccccc DO I=1,NCLUST64 DO J=1,CER_HIT IF(GOOD_CLUST(I).EQ.1.AND.GOOD_CER_HIT(J).EQ.1)THEN DO K=1,6 IF(ICOL64HIT(K,I).EQ.1)THEN CALL HFILL(40001+CER_NUM(J)*1000, , FLOAT(IROW64HIT(K,I)), , FLOAT(CER_TDC(J)),1.0) ELSEIF(ICOL64HIT(K,I).EQ.2)THEN CALL HFILL(40002+CER_NUM(J)*1000, , FLOAT(IROW64HIT(K,I)), , FLOAT(CER_TDC(J)),1.0) ENDIF ENDDO ENDIF ENDDO ENDDO ENDIF END