/[PAMELA software]/DarthVader/TrackerLevel2/src/F77/cncomp.f
ViewVC logotype

Diff of /DarthVader/TrackerLevel2/src/F77/cncomp.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pam-fi, Tue May 30 16:30:37 2006 UTC revision 1.10 by mocchiut, Thu Jan 16 15:29:52 2014 UTC
# Line 10  Line 10 
10        subroutine cncomp(i,j,errflag)    !(view, VA1)        subroutine cncomp(i,j,errflag)    !(view, VA1)
11    
12        include 'commontracker.f'        include 'commontracker.f'
13          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    
# Line 32  c--------------------------------------- Line 37  c---------------------------------------
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------------------------------------------------------------------------
# Line 50  c--------------------------------------- Line 72  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
88                
89          nco=0
90          nbo=0
91        do k=1,nstrips_va1        do k=1,nstrips_va1
92           if(ABS(signal(k)-smean).gt.cut) then           if(ABS(signal(k)-smean).gt.cut) then
93              strange(i,j,k)=0    !marks strips exceeding cut              strange(i,j,k)=0    !marks strips exceeding cut
94    c            print*,i,j,k,signal(k),smean
95           endif           endif
96             nco=nco+strange(i,j,k)
97             nbo=nbo+bad(i,j,k)
98        enddo                     ! in order not to use them in CN computation        enddo                     ! in order not to use them in CN computation
99    
100    c$$$      if(i.eq.12.and.(j.eq.2.or.j.eq.3))then
101    c$$$         print*,'view ',i,' vk ',j
102    c$$$         print*,'ADC (1-51-128) = ',adc(i,j,1),adc(i,j,52),adc(i,j,128)
103    c$$$         print*,'<ADC-PED> = ',smean
104    c$$$         print*,'s         = ',ssigma
105    c$$$         print*,'nstrange  = ',128-nco
106    c$$$         print*,'nbad      = ',128-nbo
107    c$$$      endif
108    
109        countme = countme + 1         !???        countme = countme + 1         !???
110        if (countme.le.3) goto 666 !???        if (countme.le.3) goto 666 !???
# Line 133  c--------------------------------------- Line 167  c---------------------------------------
167        subroutine cnoise(i,j,gulp) !(view, VA1)        subroutine cnoise(i,j,gulp) !(view, VA1)
168    
169        include 'commontracker.f'        include 'commontracker.f'
170          include 'level0.f'
171          include 'level1.f'
172        include 'common_reduction.f'        include 'common_reduction.f'
173        include 'calib.f'        include 'calib.f'
174                
# Line 141  c--------------------------------------- Line 177  c---------------------------------------
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
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        NSTRIPMAX=10        if(ncn.lt.NSTRIPMIN) then         !no signal free strips on this VA1...
       if(ncn.lt.NSTRIPMAX) 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       $        ', VIEW ',i,'  >>> FAILED '
199           else           else
200              if(debug)print*,' WARNING - cnoise: ',              if(debug.eq.1)print*,' WARNING - cnoise: ',
201       $        'less than ',NSTRIPMAX       $        'less than ',NSTRIPMIN
202       $           ,'strips for CN computation on VA1 ',j,       $           ,' strips for CN computation on VA1 ',j,
203       $        ', VIEW ',i       $        ', VIEW ',i,'  >>> FAILED '
204           endif           endif
205           gulp=1           gulp=1
206             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
211           gulp=0                           gulp=0                
212    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)
217         $        ,': cn(',i,',',j,')= ',cn(i,j),' ncn ',ncn
218        endif        endif
219    
220        return        return
# Line 191  c--------------------------------------- Line 241  c---------------------------------------
241        subroutine cutcn(i,j)     !(view, VA1)        subroutine cutcn(i,j)     !(view, VA1)
242    
243        include 'commontracker.f'        include 'commontracker.f'
244          include 'level1.f'
245        include 'common_reduction.f'        include 'common_reduction.f'
246        include 'calib.f'        include 'calib.f'
247    
# Line 202  c--------------------------------------- Line 253  c---------------------------------------
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

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.23