13 |
include 'level1.f' |
include 'level1.f' |
14 |
include 'common_reduction.f' |
include 'common_reduction.f' |
15 |
include 'calib.f' |
include 'calib.f' |
16 |
|
|
17 |
|
|
18 |
integer errflag !error flag to mark no signal free VA1 |
integer errflag !error flag to mark no signal free VA1 |
19 |
integer clstr_old(nstrips_va1) !flag storage vector |
integer clstr_old(nstrips_va1) !flag storage vector |
20 |
real signal(nstrips_va1) !"signal" (=adc-ped) value storage vector |
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 |
21 |
real smean, ssigma !"signal" mean and sigma |
c variables from common includes are used |
22 |
real cut !"strange" strip exclusion cut |
real(8) signal(nstrips_va1) !"signal" (=adc-ped) value storage vector |
23 |
|
real(8) smean, ssigma !"signal" mean and sigma |
24 |
|
real(8) cut !"strange" strip exclusion cut |
25 |
|
c END EM |
26 |
integer newclstr !flag to warn about new found clusters to be |
integer newclstr !flag to warn about new found clusters to be |
27 |
c ! excluded from common noise computation |
c ! excluded from common noise computation |
28 |
|
|
37 |
strange(i,j,k)=1 !initializes unusually high or low signal |
strange(i,j,k)=1 !initializes unusually high or low signal |
38 |
enddo ! affected strips flag |
enddo ! affected strips flag |
39 |
|
|
40 |
|
c------------------------------------------------------------------------ |
41 |
|
c (september 2007) |
42 |
|
c remove from CN computation the first and the last 3 channels of |
43 |
|
c each X view, becouse they ar not connected to any strip |
44 |
|
c------------------------------------------------------------------------ |
45 |
|
if(mod(i,2).eq.0)then |
46 |
|
if(j.eq.1)then |
47 |
|
do k=1,3 |
48 |
|
strange(i,j,k)=0 |
49 |
|
enddo |
50 |
|
elseif(j.eq.nva1_ladder)then |
51 |
|
do k=nstrips_va1,nstrips_va1-2,-1 |
52 |
|
strange(i,j,k)=0 |
53 |
|
enddo |
54 |
|
endif |
55 |
|
endif |
56 |
|
|
57 |
newclstr=1 !flag to warn about new found signal |
newclstr=1 !flag to warn about new found signal |
58 |
c ! affected strips |
c ! affected strips |
59 |
c------------------------------------------------------------------------ |
c------------------------------------------------------------------------ |
72 |
|
|
73 |
do k=1,nstrips_va1 |
do k=1,nstrips_va1 |
74 |
nstr = nstr + strange(i,j,k) !uses only |
nstr = nstr + strange(i,j,k) !uses only |
75 |
if(mod(i,2).eq.1) then !odd strip ---> Y view |
if(mod(i,2).eq.1) then ! ---> Y view |
76 |
signal(k) = - (DBLE(adc(i,j,k)) - pedestal(i,j,k)) !negative signal |
signal(k) = - (DBLE(adc(i,j,k)) - pedestal(i,j,k)) !negative signal |
77 |
else !even strip ---> X view |
else ! ---> X view |
78 |
signal(k) = DBLE(adc(i,j,k)) - pedestal(i,j,k) !positive signal |
signal(k) = DBLE(adc(i,j,k)) - pedestal(i,j,k) !positive signal |
79 |
endif |
endif |
80 |
smean = smean + signal(k)*strange(i,j,k) |
smean = smean + signal(k)*strange(i,j,k) |
81 |
ssigma = ssigma + (signal(k)**2)*strange(i,j,k) |
ssigma = ssigma + (signal(k)**2)*strange(i,j,k) |
82 |
enddo |
enddo |
83 |
|
|
84 |
smean=smean/nstr !strips value distribution mean |
smean=smean/nstr !strips value distribution mean |
|
|
|
85 |
ssigma=SQRT((ssigma/nstr)-smean**2) !strips value distribution sigma |
ssigma=SQRT((ssigma/nstr)-smean**2) !strips value distribution sigma |
86 |
|
|
87 |
cut=scut*ssigma !exclusion cut |
cut=scut*ssigma !exclusion cut |
177 |
|
|
178 |
ncn=0 !number of strips in cn computation |
ncn=0 !number of strips in cn computation |
179 |
cn(i,j)=0 !initializes cn variable |
cn(i,j)=0 !initializes cn variable |
180 |
|
cnrms(i,j)=0 !initializes cn rms |
181 |
cnn(i,j)=0 !initialize cn flag |
cnn(i,j)=0 !initialize cn flag |
182 |
|
|
183 |
do k=1,nstrips_va1 !loops on strips |
do k=1,nstrips_va1 !loops on strips |
184 |
* tags strange, bad or signal-affected strips |
* tags strange, bad or signal-affected strips |
185 |
iok = strange(i,j,k)*bad(i,j,k)*clstr(i,j,k) |
iok = strange(i,j,k)*bad(i,j,k)*clstr(i,j,k) |
186 |
cn(i,j) = cn(i,j) + (DBLE(adc(i,j,k)) - pedestal(i,j,k))*iok |
cn(i,j) = cn(i,j) |
187 |
|
$ + REAL((adc(i,j,k)) - pedestal(i,j,k))*REAL(iok) ! EM GCC4.7 CN IS DEFINED AS REAL NOT DOUBLE |
188 |
|
cnrms(i,j) = cnrms(i,j) !EM GCC4.7 CNRMS IS DEFINED AS REAL NOT DOUBLE |
189 |
|
$ + (REAL(adc(i,j,k)) - pedestal(i,j,k)) !EM GCC4.7 CNRMS IS DEFINED AS REAL NOT DOUBLE |
190 |
|
$ *(REAL(adc(i,j,k)) - pedestal(i,j,k))*REAL(iok) !EM GCC4.7 CNRMS IS DEFINED AS REAL NOT DOUBLE |
191 |
ncn = ncn + iok !counts number of strips in cn computation |
ncn = ncn + iok !counts number of strips in cn computation |
192 |
enddo |
enddo |
193 |
|
|
194 |
if(ncn.lt.NSTRIPMIN) then !no signal free strips on this VA1... |
if(ncn.lt.NSTRIPMIN) then !no signal free strips on this VA1... |
195 |
if(ncn.eq.0)then |
if(ncn.eq.0)then |
196 |
if(debug)print*,' WARNING - cnoise: ', |
if(debug.eq.1)print*,' WARNING - cnoise: ', |
197 |
$ 'no strips for CN computation on VA1 ',j, |
$ 'no strips for CN computation on VA1 ',j, |
198 |
$ ', VIEW ',i,' >>> FAILED ' |
$ ', VIEW ',i,' >>> FAILED ' |
199 |
else |
else |
200 |
if(debug)print*,' WARNING - cnoise: ', |
if(debug.eq.1)print*,' WARNING - cnoise: ', |
201 |
$ 'less than ',NSTRIPMIN |
$ 'less than ',NSTRIPMIN |
202 |
$ ,' strips for CN computation on VA1 ',j, |
$ ,' strips for CN computation on VA1 ',j, |
203 |
$ ', VIEW ',i,' >>> FAILED ' |
$ ', VIEW ',i,' >>> FAILED ' |
205 |
gulp=1 |
gulp=1 |
206 |
cnn(i,j) = 0 |
cnn(i,j) = 0 |
207 |
else |
else |
208 |
cn(i,j)=cn(i,j)/DBLE(ncn) !<<<< computes common noise |
cn(i,j)=cn(i,j)/REAL(ncn) !<<<< computes common noise EM GCC4.7 CN IS REAL NOT DOUBLE |
209 |
|
cnrms(i,j)= SQRT( cnrms(i,j)/REAL(ncn) - cn(i,j)**2 ) ! EM GCC4.7 CN IS REAL NOT DOUBLE |
210 |
cnn(i,j) = ncn |
cnn(i,j) = ncn |
211 |
gulp=0 |
gulp=0 |
212 |
if(debug.and.ABS(cn(i,j)).gt.1000) |
c$$$ print*,'Event ',eventn(1) |
213 |
|
c$$$ $ ,': cn(',i,',',j,')= ',cn(i,j),' ncn ',ncn |
214 |
|
|
215 |
|
if(debug.eq.1.and.ABS(cn(i,j)).gt.1000) |
216 |
$ print*,'Event ',eventn(1) |
$ print*,'Event ',eventn(1) |
217 |
$ ,': cn(',i,',',j,')= ',cn(i,j),' ncn ',ncn |
$ ,': cn(',i,',',j,')= ',cn(i,j),' ncn ',ncn |
218 |
endif |
endif |
253 |
! seed |
! seed |
254 |
integer ir, il !flags to exit loop on reaching VA1 extremes |
integer ir, il !flags to exit loop on reaching VA1 extremes |
255 |
|
|
256 |
real valuec !cluster seed signal |
real(8) valuec !cluster seed signal EM GCC4.7 |
257 |
real cut,stripcut !cluster seed cut |
real cut,stripcut !cluster seed cut |
258 |
|
|
259 |
real valuel, valuer !left and right strips signal |
real(8) valuel, valuer !left and right strips signal EM GCC4.7 |
260 |
real stripcnincut !strip include cut |
real stripcnincut !strip include cut |
261 |
|
|
262 |
skip = 0 !initializes skip |
skip = 0 !initializes skip |