--- DarthVader/TrackerLevel2/src/F77/cncomp.f 2006/08/04 08:18:06 1.3 +++ DarthVader/TrackerLevel2/src/F77/cncomp.f 2014/01/16 15:29:52 1.10 @@ -10,14 +10,19 @@ subroutine cncomp(i,j,errflag) !(view, VA1) include 'commontracker.f' + include 'level1.f' include 'common_reduction.f' include 'calib.f' + integer errflag !error flag to mark no signal free VA1 integer clstr_old(nstrips_va1) !flag storage vector - real signal(nstrips_va1) !"signal" (=adc-ped) value storage vector - real smean, ssigma !"signal" mean and sigma - real cut !"strange" strip exclusion cut +c EM GCC4.7 - trying to avoind implicit conversion from REAL(8) to REAL(4) so use double everywhere in routines and cast to float only when +c variables from common includes are used + real(8) signal(nstrips_va1) !"signal" (=adc-ped) value storage vector + real(8) smean, ssigma !"signal" mean and sigma + real(8) cut !"strange" strip exclusion cut +c END EM integer newclstr !flag to warn about new found clusters to be c ! excluded from common noise computation @@ -32,6 +37,23 @@ strange(i,j,k)=1 !initializes unusually high or low signal enddo ! affected strips flag +c------------------------------------------------------------------------ +c (september 2007) +c remove from CN computation the first and the last 3 channels of +c each X view, becouse they ar not connected to any strip +c------------------------------------------------------------------------ + if(mod(i,2).eq.0)then + if(j.eq.1)then + do k=1,3 + strange(i,j,k)=0 + enddo + elseif(j.eq.nva1_ladder)then + do k=nstrips_va1,nstrips_va1-2,-1 + strange(i,j,k)=0 + enddo + endif + endif + newclstr=1 !flag to warn about new found signal c ! affected strips c------------------------------------------------------------------------ @@ -50,17 +72,16 @@ do k=1,nstrips_va1 nstr = nstr + strange(i,j,k) !uses only - if(mod(i,2).eq.1) then !odd strip ---> Y view + if(mod(i,2).eq.1) then ! ---> Y view signal(k) = - (DBLE(adc(i,j,k)) - pedestal(i,j,k)) !negative signal - else !even strip ---> X view + else ! ---> X view signal(k) = DBLE(adc(i,j,k)) - pedestal(i,j,k) !positive signal endif smean = smean + signal(k)*strange(i,j,k) ssigma = ssigma + (signal(k)**2)*strange(i,j,k) enddo - smean=smean/nstr !strips value distribution mean - + smean=smean/nstr !strips value distribution mean ssigma=SQRT((ssigma/nstr)-smean**2) !strips value distribution sigma cut=scut*ssigma !exclusion cut @@ -146,6 +167,8 @@ subroutine cnoise(i,j,gulp) !(view, VA1) include 'commontracker.f' + include 'level0.f' + include 'level1.f' include 'common_reduction.f' include 'calib.f' @@ -154,38 +177,44 @@ ncn=0 !number of strips in cn computation cn(i,j)=0 !initializes cn variable - cnflag(i,j)=0 !initialize cn flag OK + cnrms(i,j)=0 !initializes cn rms + cnn(i,j)=0 !initialize cn flag do k=1,nstrips_va1 !loops on strips * tags strange, bad or signal-affected strips iok = strange(i,j,k)*bad(i,j,k)*clstr(i,j,k) - cn(i,j) = cn(i,j) + (DBLE(adc(i,j,k)) - pedestal(i,j,k))*iok + cn(i,j) = cn(i,j) + $ + REAL((adc(i,j,k)) - pedestal(i,j,k))*REAL(iok) ! EM GCC4.7 CN IS DEFINED AS REAL NOT DOUBLE + cnrms(i,j) = cnrms(i,j) !EM GCC4.7 CNRMS IS DEFINED AS REAL NOT DOUBLE + $ + (REAL(adc(i,j,k)) - pedestal(i,j,k)) !EM GCC4.7 CNRMS IS DEFINED AS REAL NOT DOUBLE + $ *(REAL(adc(i,j,k)) - pedestal(i,j,k))*REAL(iok) !EM GCC4.7 CNRMS IS DEFINED AS REAL NOT DOUBLE ncn = ncn + iok !counts number of strips in cn computation enddo if(ncn.lt.NSTRIPMIN) then !no signal free strips on this VA1... if(ncn.eq.0)then - if(debug)print*,' WARNING - cnoise: ', + if(debug.eq.1)print*,' WARNING - cnoise: ', $ 'no strips for CN computation on VA1 ',j, $ ', VIEW ',i,' >>> FAILED ' else - if(debug)print*,' WARNING - cnoise: ', + if(debug.eq.1)print*,' WARNING - cnoise: ', $ 'less than ',NSTRIPMIN $ ,' strips for CN computation on VA1 ',j, $ ', VIEW ',i,' >>> FAILED ' endif gulp=1 - cnflag(i,j) = -1 + cnn(i,j) = 0 else - cn(i,j)=cn(i,j)/DBLE(ncn) !<<<< computes common noise - if(ncn.lt.NSTRIPWARNING) then - if(debug)print*,' WARNING - cnoise: ', - $ 'less than ',NSTRIPWARNING - $ ,' strips for CN computation on VA1 ',j, - $ ', VIEW ',i - cnflag(i,j) = 1 - endif + cn(i,j)=cn(i,j)/REAL(ncn) !<<<< computes common noise EM GCC4.7 CN IS REAL NOT DOUBLE + cnrms(i,j)= SQRT( cnrms(i,j)/REAL(ncn) - cn(i,j)**2 ) ! EM GCC4.7 CN IS REAL NOT DOUBLE + cnn(i,j) = ncn gulp=0 +c$$$ print*,'Event ',eventn(1) +c$$$ $ ,': cn(',i,',',j,')= ',cn(i,j),' ncn ',ncn + + if(debug.eq.1.and.ABS(cn(i,j)).gt.1000) + $ print*,'Event ',eventn(1) + $ ,': cn(',i,',',j,')= ',cn(i,j),' ncn ',ncn endif return @@ -212,6 +241,7 @@ subroutine cutcn(i,j) !(view, VA1) include 'commontracker.f' + include 'level1.f' include 'common_reduction.f' include 'calib.f' @@ -223,10 +253,10 @@ ! seed integer ir, il !flags to exit loop on reaching VA1 extremes - real valuec !cluster seed signal + real(8) valuec !cluster seed signal EM GCC4.7 real cut,stripcut !cluster seed cut - real valuel, valuer !left and right strips signal + real(8) valuel, valuer !left and right strips signal EM GCC4.7 real stripcnincut !strip include cut skip = 0 !initializes skip