--- DarthVader/TrackerLevel2/src/F77/functionspfa.f 2007/08/17 13:28:02 1.15 +++ DarthVader/TrackerLevel2/src/F77/functionspfa.f 2007/08/17 14:36:06 1.16 @@ -10,6 +10,7 @@ if(ipfa.eq.2)CPFA='ETA2' if(ipfa.eq.3)CPFA='ETA3' if(ipfa.eq.4)CPFA='ETA4' + if(ipfa.eq.5)CPFA='ETAL' if(ipfa.eq.10)CPFA='COG' if(ipfa.eq.11)CPFA='COG1' if(ipfa.eq.12)CPFA='COG2' @@ -164,6 +165,50 @@ end *** * * * *** * * * *** * * * *** * * * *** * * * *** * * * *** + real function pfaetal(ic,angle) +*-------------------------------------------------------------- +* this function returns the position (in strip units) +* it calls: +* - pfaeta2(ic,angle)+pfcorr(ic,angle) +* - pfaeta3(ic,angle)+pfcorr(ic,angle) +* - pfaeta4(ic,angle)+pfcorr(ic,angle) +* according to the angle +*-------------------------------------------------------------- + include 'commontracker.f' + include 'level1.f' + include 'calib.f' + + pfaeta = 0 + + if(mod(int(VIEW(ic)),2).eq.1)then !Y-view + + if( abs(angle).ge.e2fay.and.abs(angle).le.e2tay )then + pfaeta = pfaeta2(ic,angle)+pfcorr(ic,angle) + elseif( abs(angle).ge.e3fay.and.abs(angle).le.e3tay )then + pfaeta = pfaeta3(ic,angle)+pfcorr(ic,angle) + elseif( abs(angle).ge.e4fay.and.abs(angle).le.e4tay )then + pfaeta = pfaeta4(ic,angle)+pfcorr(ic,angle) + else + pfaeta = cog(4,ic) + endif + + else !X-view + + if( abs(angle).ge.e2fax.and.abs(angle).le.e2tax )then + pfaeta = pfaeta2(ic,angle)+pfcorr(ic,angle) + elseif( abs(angle).ge.e3fax.and.abs(angle).le.e3tax )then + pfaeta = pfaeta3(ic,angle)+pfcorr(ic,angle) + elseif( abs(angle).ge.e4fax.and.abs(angle).le.e4tax )then + pfaeta = pfaeta4(ic,angle)+pfcorr(ic,angle) + else + pfaeta = cog(4,ic) + endif + + endif + + 100 return + end +*** * * * *** * * * *** * * * *** * * * *** * * * *** * * * *** c real function riseta(ic,angle) real function riseta(iview,angle) *-------------------------------------------------------------- @@ -1705,3 +1750,41 @@ risx_cog = HQUADF * 1e-4 END + + +*** * * * *** * * * *** * * * *** * * * *** * * * *** * * * *** + real function pfacorr(ic,angle) !(1) +*-------------------------------------------------------------- +* this function returns the landi correction for this cluster +*-------------------------------------------------------------- + include 'commontracker.f' + include 'calib.f' + include 'level1.f' + + real angle + integer iview,lad + + iview = VIEW(ic) + lad = nld(MAXS(ic),VIEW(ic)) + +* find angular bin +* (in futuro possiamo pensare di interpolare anche sull'angolo) + do iang=1,nangbin + if(angL(iang).lt.angle.and.angR(iang).ge.angle)then + iangle=iang + goto 98 + endif + enddo + if(DEBUG) + $ print*,'pfacorr *** warning *** angle out of range: ',angle + if(angle.lt.angL(1))iang=1 + if(angle.gt.angR(nangbin))iang=nangbin + 98 continue !jump here if ok + + pfacorr = fcorr(iview,lad,iang) + + if(DEBUG)print*,'CORR (ic ',ic,' ang',angle,') -->',pfacorr + + + 100 return + end