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

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

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

revision 1.17 by pam-fi, Thu Jan 11 10:20:58 2007 UTC revision 1.18 by pam-fi, Fri Feb 16 14:56:02 2007 UTC
# Line 477  c     $        rchi2best.lt.15..and. Line 477  c     $        rchi2best.lt.15..and.
477  *     PFAy   - Position Finding Algorithm in y (COG2,ETA2,...)  *     PFAy   - Position Finding Algorithm in y (COG2,ETA2,...)
478  *     angx   - Projected angle in x  *     angx   - Projected angle in x
479  *     angy   - Projected angle in y  *     angy   - Projected angle in y
480    *     bfx    - x-component of magnetci field
481    *     bfy    - y-component of magnetic field
482  *  *
483  *     --------- COUPLES -------------------------------------------------------  *     --------- COUPLES -------------------------------------------------------
484  *     The couple defines a point in the space.  *     The couple defines a point in the space.
# Line 515  c     $        rchi2best.lt.15..and. Line 517  c     $        rchi2best.lt.15..and.
517  *  *
518  *  *
519    
520        subroutine xyz_PAM(icx,icy,sensor,PFAx,PFAy,angx,angy)        subroutine xyz_PAM(icx,icy,sensor,PFAx,PFAy,ax,ay,bfx,bfy)
521    
 c*****************************************************  
 c     07/10/2005 modified by elena vannuccini --> (1)  
 c     01/02/2006 modified by elena vannuccini --> (2)  
 c     02/02/2006 modified by Elena Vannuccini --> (3)  
 c                (implemented new p.f.a.)  
 c     03/02/2006 modified by Elena Vannuccini --> (4)  
 c                (implemented variable resolution)  
 c*****************************************************  
522                
523        include 'commontracker.f'        include 'commontracker.f'
524        include 'level1.f'        include 'level1.f'
# Line 542  c      common/dbg/DEBUG Line 536  c      common/dbg/DEBUG
536        integer sensor        integer sensor
537        integer viewx,viewy        integer viewx,viewy
538        character*4 PFAx,PFAy     !PFA to be used        character*4 PFAx,PFAy     !PFA to be used
539        real angx,angy            !X-Y angle        real ax,ay                !X-Y geometric angle
540          real angx,angy            !X-Y effective angle
541          real bfx,bfy              !X-Y b-field components
542    
543        real stripx,stripy        real stripx,stripy
544    
# Line 574  c      print*,'## xyz_PAM: ',icx,icy,sen Line 570  c      print*,'## xyz_PAM: ',icx,icy,sen
570  *     -----------------  *     -----------------
571    
572        if(icx.ne.0)then        if(icx.ne.0)then
573    
574           viewx = VIEW(icx)           viewx = VIEW(icx)
575           nldx = nld(MAXS(icx),VIEW(icx))           nldx = nld(MAXS(icx),VIEW(icx))
576           nplx = npl(VIEW(icx))           nplx = npl(VIEW(icx))
577           resxPAM = RESXAV !!!!!!!TEMPORANEO!!!!!!!!!!!!!!!!           resxPAM = RESXAV
           
578           stripx = float(MAXS(icx))           stripx = float(MAXS(icx))
579           if(PFAx.eq.'COG1')then  !(1)  *        --------------------------
580              stripx = stripx      !(1)  *        magnetic-field corrections
581              resxPAM = resxPAM    !(1)  *        --------------------------
582    c$$$         print*,nplx,ax,bfy/10.
583             angtemp  = ax
584             bfytemp  = bfy
585             if(nplx.eq.6) angtemp = -1. * ax
586             if(nplx.eq.6) bfytemp = -1. * bfy
587             tgtemp = tan(angtemp*acos(-1.)/180.) + pmuH_h*bfytemp*0.00001
588             angx = 180.*atan(tgtemp)/acos(-1.)
589             stripx = stripx - 0.5*pmuH_h*bfytemp*0.00001*SiDimZ/pitchX
590    c$$$         print*,angx,0.5*pmuH_h*bfytemp*0.00001*SiDimZ/pitchX
591    c$$$         print*,'========================'
592    *        --------------------------
593    
594             if(PFAx.eq.'COG1')then
595                stripx = stripx    
596                resxPAM = resxPAM  
597           elseif(PFAx.eq.'COG2')then           elseif(PFAx.eq.'COG2')then
598              stripx = stripx + cog(2,icx)                          stripx = stripx + cog(2,icx)            
599              resxPAM = resxPAM*fbad_cog(2,icx)              resxPAM = resxPAM*fbad_cog(2,icx)
600             elseif(PFAx.eq.'COG3')then
601                stripx = stripx + cog(3,icx)            
602                resxPAM = resxPAM*fbad_cog(3,icx)
603             elseif(PFAx.eq.'COG4')then
604    c            print*,'COG4'
605                stripx = stripx + cog(4,icx)            
606                resxPAM = resxPAM*fbad_cog(4,icx)
607           elseif(PFAx.eq.'ETA2')then           elseif(PFAx.eq.'ETA2')then
608  c            cog2 = cog(2,icx)              stripx = stripx + pfaeta2(icx,angx)          
609  c            etacorr = pfaeta2(cog2,viewx,nldx,angx)                          resxPAM = risx_eta2(abs(angx))                    
 c            stripx = stripx + etacorr  
             stripx = stripx + pfaeta2(icx,angx)            !(3)  
             resxPAM = risx_eta2(angx)                       !   (4)  
610              if(DEBUG.and.fbad_cog(2,icx).ne.1)              if(DEBUG.and.fbad_cog(2,icx).ne.1)
611       $           print*,'BAD icx >>> ',viewx,fbad_cog(2,icx)       $           print*,'BAD icx >>> ',viewx,fbad_cog(2,icx)
612              resxPAM = resxPAM*fbad_cog(2,icx)              resxPAM = resxPAM*fbad_cog(2,icx)
613           elseif(PFAx.eq.'ETA3')then                         !(3)           elseif(PFAx.eq.'ETA3')then                        
614              stripx = stripx + pfaeta3(icx,angx)            !(3)              stripx = stripx + pfaeta3(icx,angx)          
615              resxPAM = risx_eta3(angx)                       !   (4)              resxPAM = risx_eta3(abs(angx))                      
616              if(DEBUG.and.fbad_cog(3,icx).ne.1)              !(3)              if(DEBUG.and.fbad_cog(3,icx).ne.1)            
617       $           print*,'BAD icx >>> ',viewx,fbad_cog(3,icx)!(3)       $           print*,'BAD icx >>> ',viewx,fbad_cog(3,icx)
618              resxPAM = resxPAM*fbad_cog(3,icx)               !(3)              resxPAM = resxPAM*fbad_cog(3,icx)              
619           elseif(PFAx.eq.'ETA4')then                         !(3)           elseif(PFAx.eq.'ETA4')then                        
620              stripx = stripx + pfaeta4(icx,angx)            !(3)              stripx = stripx + pfaeta4(icx,angx)            
621              resxPAM = risx_eta4(angx)                       !   (4)              resxPAM = risx_eta4(abs(angx))                      
622              if(DEBUG.and.fbad_cog(4,icx).ne.1)              !(3)              if(DEBUG.and.fbad_cog(4,icx).ne.1)              
623       $           print*,'BAD icx >>> ',viewx,fbad_cog(4,icx)!(3)       $           print*,'BAD icx >>> ',viewx,fbad_cog(4,icx)
624              resxPAM = resxPAM*fbad_cog(4,icx)               !(3)              resxPAM = resxPAM*fbad_cog(4,icx)              
625           elseif(PFAx.eq.'ETA')then                          !(3)           elseif(PFAx.eq.'ETA')then  
626              stripx = stripx + pfaeta(icx,angx)             !(3)  c            print*,'ETA'
627              resxPAM = ris_eta(icx,angx)                     !   (4)              stripx = stripx + pfaeta(icx,angx)            
628              if(DEBUG.and.fbad_cog(2,icx).ne.1)              !(3)              resxPAM = ris_eta(icx,angx)                    
629       $           print*,'BAD icx >>> ',viewx,fbad_cog(2,icx)!(3)              if(DEBUG.and.fbad_cog(2,icx).ne.1)              
630  c            resxPAM = resxPAM*fbad_cog(2,icx)               !(3)TEMPORANEO       $           print*,'BAD icx >>> ',viewx,fbad_cog(2,icx)
631              resxPAM = resxPAM*fbad_eta(icx,angx)             !(3)(4)              resxPAM = resxPAM*fbad_eta(icx,angx)            
632           elseif(PFAx.eq.'COG')then           !(2)           elseif(PFAx.eq.'COG')then          
633              stripx = stripx + cog(0,icx)     !(2)                      stripx = stripx + cog(0,icx)            
634              resxPAM = risx_cog(angx)                        !   (4)              resxPAM = risx_cog(abs(angx))                    
635              resxPAM = resxPAM*fbad_cog(0,icx)!(2)              resxPAM = resxPAM*fbad_cog(0,icx)
636           else           else
637              print*,'*** Non valid p.f.a. (x) --> ',PFAx              print*,'*** Non valid p.f.a. (x) --> ',PFAx
638           endif           endif
639    
640    c         print*,'%%%%%%%%%%%%'
641    
642        endif        endif
 c      if(icy.eq.0.and.icx.ne.0)  
 c     $     print*,PFAx,icx,angx,stripx,resxPAM,'***'  
643                
644  *     -----------------  *     -----------------
645  *     CLUSTER Y  *     CLUSTER Y
646  *     -----------------  *     -----------------
647    
648        if(icy.ne.0)then        if(icy.ne.0)then
649    
650           viewy = VIEW(icy)           viewy = VIEW(icy)
651           nldy = nld(MAXS(icy),VIEW(icy))           nldy = nld(MAXS(icy),VIEW(icy))
652           nply = npl(VIEW(icy))           nply = npl(VIEW(icy))
653           resyPAM = RESYAV !!!!!!!TEMPORANEO!!!!!!!!!!!!!!!!           resyPAM = RESYAV
654             stripy = float(MAXS(icy))
655    
656           if(icx.ne.0.and.(nply.ne.nplx.or.nldy.ne.nldx))then           if(icx.ne.0.and.(nply.ne.nplx.or.nldy.ne.nldx))then
657              print*,'xyz_PAM   ***ERROR*** invalid cluster couple!!! '              print*,'xyz_PAM   ***ERROR*** invalid cluster couple!!! '
658       $           ,icx,icy       $           ,icx,icy
659              goto 100              goto 100
660           endif           endif
661    *        --------------------------
662    *        magnetic-field corrections
663    *        --------------------------
664             tgtemp = tan(ay*acos(-1.)/180.)+pmuH_e*bfx*0.00001        
665             angy    = 180.*atan(tgtemp)/acos(-1.)
666             stripy = stripy + 0.5*pmuH_e*bfx*0.00001*SiDimZ/pitchY
667    *        --------------------------
668                    
          stripy = float(MAXS(icy))  
669           if(PFAy.eq.'COG1')then !(1)           if(PFAy.eq.'COG1')then !(1)
670              stripy = stripy     !(1)              stripy = stripy     !(1)
671              resyPAM = resyPAM   !(1)              resyPAM = resyPAM   !(1)
672           elseif(PFAy.eq.'COG2')then           elseif(PFAy.eq.'COG2')then
673              stripy = stripy + cog(2,icy)              stripy = stripy + cog(2,icy)
674              resyPAM = resyPAM*fbad_cog(2,icy)              resyPAM = resyPAM*fbad_cog(2,icy)
675             elseif(PFAy.eq.'COG3')then
676                stripy = stripy + cog(3,icy)
677                resyPAM = resyPAM*fbad_cog(3,icy)
678             elseif(PFAy.eq.'COG4')then
679                stripy = stripy + cog(4,icy)
680                resyPAM = resyPAM*fbad_cog(4,icy)
681           elseif(PFAy.eq.'ETA2')then           elseif(PFAy.eq.'ETA2')then
682  c            cog2 = cog(2,icy)  c            cog2 = cog(2,icy)
683  c            etacorr = pfaeta2(cog2,viewy,nldy,angy)  c            etacorr = pfaeta2(cog2,viewy,nldy,angy)
684  c            stripy = stripy + etacorr  c            stripy = stripy + etacorr
685              stripy = stripy + pfaeta2(icy,angy)            !(3)              stripy = stripy + pfaeta2(icy,angy)            !(3)
686              resyPAM = risy_eta2(angy)                       !   (4)              resyPAM = risy_eta2(abs(angy))                       !   (4)
687              resyPAM = resyPAM*fbad_cog(2,icy)              resyPAM = resyPAM*fbad_cog(2,icy)
688              if(DEBUG.and.fbad_cog(2,icy).ne.1)              if(DEBUG.and.fbad_cog(2,icy).ne.1)
689       $           print*,'BAD icy >>> ',viewy,fbad_cog(2,icy)       $           print*,'BAD icy >>> ',viewy,fbad_cog(2,icy)
# Line 678  c            resyPAM = resyPAM*fbad_cog( Line 706  c            resyPAM = resyPAM*fbad_cog(
706       $           print*,'BAD icy >>> ',viewy,fbad_cog(2,icy)!(3)       $           print*,'BAD icy >>> ',viewy,fbad_cog(2,icy)!(3)
707           elseif(PFAy.eq.'COG')then           elseif(PFAy.eq.'COG')then
708              stripy = stripy + cog(0,icy)                          stripy = stripy + cog(0,icy)            
709              resyPAM = risy_cog(angy)                        !   (4)              resyPAM = risy_cog(abs(angy))                        !   (4)
710  c            resyPAM = ris_eta(icy,angy)                    !   (4)  c            resyPAM = ris_eta(icy,angy)                    !   (4)
711              resyPAM = resyPAM*fbad_cog(0,icy)              resyPAM = resyPAM*fbad_cog(0,icy)
712           else           else
# Line 1385  c      include 'level1.f' Line 1413  c      include 'level1.f'
1413  *     ----------------------------------------------------  *     ----------------------------------------------------
1414  *     cut on charge (X VIEW)  *     cut on charge (X VIEW)
1415  *     ----------------------------------------------------  *     ----------------------------------------------------
1416           if(dedx(icx).lt.dedx_x_min)then           if(sgnl(icx).lt.dedx_x_min)then
1417              cl_single(icx)=0              cl_single(icx)=0
1418              goto 10              goto 10
1419           endif           endif
# Line 1435  c     endif Line 1463  c     endif
1463  *     ----------------------------------------------------  *     ----------------------------------------------------
1464  *     cut on charge (Y VIEW)  *     cut on charge (Y VIEW)
1465  *     ----------------------------------------------------  *     ----------------------------------------------------
1466              if(dedx(icy).lt.dedx_y_min)then              if(sgnl(icy).lt.dedx_y_min)then
1467                 cl_single(icy)=0                 cl_single(icy)=0
1468                 goto 20                 goto 20
1469              endif              endif
# Line 1481  c     endif Line 1509  c     endif
1509  *     charge correlation  *     charge correlation
1510  *     (modified to be applied only below saturation... obviously)  *     (modified to be applied only below saturation... obviously)
1511    
1512                 if(  .not.(dedx(icy).gt.chsaty.and.dedx(icx).gt.chsatx)                 if(  .not.(sgnl(icy).gt.chsaty.and.sgnl(icx).gt.chsatx)
1513       $              .and.       $              .and.
1514       $              .not.(dedx(icy).lt.chmipy.and.dedx(icx).lt.chmipx)       $              .not.(sgnl(icy).lt.chmipy.and.sgnl(icx).lt.chmipx)
1515       $              .and.       $              .and.
1516       $              (badclx.eq.1.and.badcly.eq.1)       $              (badclx.eq.1.and.badcly.eq.1)
1517       $              .and.       $              .and.
1518       $              .true.)then       $              .true.)then
1519    
1520                    ddd=(dedx(icy)                    ddd=(sgnl(icy)
1521       $                 -kch(nplx,nldx)*dedx(icx)-cch(nplx,nldx))       $                 -kch(nplx,nldx)*sgnl(icx)-cch(nplx,nldx))
1522                    ddd=ddd/sqrt(kch(nplx,nldx)**2+1)                    ddd=ddd/sqrt(kch(nplx,nldx)**2+1)
1523    
1524  c                  cut = chcut * sch(nplx,nldx)  c                  cut = chcut * sch(nplx,nldx)
1525    
1526                    sss=(kch(nplx,nldx)*dedx(icy)+dedx(icx)                    sss=(kch(nplx,nldx)*sgnl(icy)+sgnl(icx)
1527       $                 -kch(nplx,nldx)*cch(nplx,nldx))       $                 -kch(nplx,nldx)*cch(nplx,nldx))
1528                    sss=sss/sqrt(kch(nplx,nldx)**2+1)                    sss=sss/sqrt(kch(nplx,nldx)**2+1)
1529                    cut = chcut * (16 + sss/50.)                    cut = chcut * (16 + sss/50.)
# Line 1630  c      double precision xm3,ym3,zm3 Line 1658  c      double precision xm3,ym3,zm3
1658                 icx1=clx(ip1,icp1)                 icx1=clx(ip1,icp1)
1659                 icy1=cly(ip1,icp1)                 icy1=cly(ip1,icp1)
1660  c               call xyz_PAM(icx1,icy1,is1,'COG2','COG2',0.,0.)!(1)  c               call xyz_PAM(icx1,icy1,is1,'COG2','COG2',0.,0.)!(1)
1661                 call xyz_PAM(icx1,icy1,is1,PFAdef,PFAdef,0.,0.) !(1)  c               call xyz_PAM(icx1,icy1,is1,PFAdef,PFAdef,0.,0.) !(1)
1662                   call xyz_PAM(icx1,icy1,is1,PFAdef,PFAdef,0.,0.,0.,0.)
1663                 xm1=xPAM                 xm1=xPAM
1664                 ym1=yPAM                 ym1=yPAM
1665                 zm1=zPAM                                   zm1=zPAM                  
# Line 1646  c     print*,'***',is1,xm1,ym1,zm1 Line 1675  c     print*,'***',is1,xm1,ym1,zm1
1675                          icy2=cly(ip2,icp2)                          icy2=cly(ip2,icp2)
1676  c                        call xyz_PAM  c                        call xyz_PAM
1677  c     $                       (icx2,icy2,is2,'COG2','COG2',0.,0.)!(1)  c     $                       (icx2,icy2,is2,'COG2','COG2',0.,0.)!(1)
1678    c                        call xyz_PAM
1679    c     $                       (icx2,icy2,is2,PFAdef,PFAdef,0.,0.) !(1)
1680                          call xyz_PAM                          call xyz_PAM
1681       $                       (icx2,icy2,is2,PFAdef,PFAdef,0.,0.) !(1)       $                       (icx2,icy2,is2,PFAdef,PFAdef,0.,0.,0.,0.)
1682                          xm2=xPAM                          xm2=xPAM
1683                          ym2=yPAM                          ym2=yPAM
1684                          zm2=zPAM                          zm2=zPAM
# Line 1711  c$$$ Line 1742  c$$$
1742                                   icy3=cly(ip3,icp3)                                   icy3=cly(ip3,icp3)
1743  c                                 call xyz_PAM  c                                 call xyz_PAM
1744  c     $                               (icx3,icy3,is3,'COG2','COG2',0.,0.)!(1)  c     $                               (icx3,icy3,is3,'COG2','COG2',0.,0.)!(1)
1745    c                                 call xyz_PAM
1746    c     $                               (icx3,icy3,is3,PFAdef,PFAdef,0.,0.) !(1)
1747                                   call xyz_PAM                                   call xyz_PAM
1748       $                               (icx3,icy3,is3,PFAdef,PFAdef,0.,0.) !(1)       $                                (icx3,icy3,is3,PFAdef,PFAdef
1749         $                                ,0.,0.,0.,0.)
1750                                   xm3=xPAM                                   xm3=xPAM
1751                                   ym3=yPAM                                   ym3=yPAM
1752                                   zm3=zPAM                                   zm3=zPAM
# Line 2466  c$$$            if(AL_INI(5).gt.defmax)g Line 2500  c$$$            if(AL_INI(5).gt.defmax)g
2500  *                                   *************************  *                                   *************************
2501  c                                    call xyz_PAM(icx,icy,is,  c                                    call xyz_PAM(icx,icy,is,
2502  c     $                                   'COG2','COG2',0.,0.)  c     $                                   'COG2','COG2',0.,0.)
2503    c                                    call xyz_PAM(icx,icy,is, !(1)
2504    c     $                                   PFAdef,PFAdef,0.,0.) !(1)
2505                                      call xyz_PAM(icx,icy,is, !(1)                                      call xyz_PAM(icx,icy,is, !(1)
2506       $                                   PFAdef,PFAdef,0.,0.) !(1)       $                                   PFAdef,PFAdef,0.,0.,0.,0.)
2507  *                                   *************************  *                                   *************************
2508  *                                   -----------------------------  *                                   -----------------------------
2509                                      xgood(nplanes-ip+1)=1.                                      xgood(nplanes-ip+1)=1.
# Line 2639  c      include 'momanhough_init.f' Line 2675  c      include 'momanhough_init.f'
2675  c      include 'level1.f'  c      include 'level1.f'
2676        include 'calib.f'        include 'calib.f'
2677    
   
2678  *     flag to chose PFA  *     flag to chose PFA
2679        character*10 PFA        character*10 PFA
2680        common/FINALPFA/PFA        common/FINALPFA/PFA
2681    
2682          real xp,yp,zp
2683          real xyzp(3),bxyz(3)
2684          equivalence (xp,xyzp(1)),(yp,xyzp(2)),(zp,xyzp(3))
2685    
2686  *     =================================================  *     =================================================
2687  *     new estimate of positions using ETA algorithm  *     new estimate of positions using ETA algorithm
2688  *                          and  *                          and
# Line 2652  c      include 'level1.f' Line 2691  c      include 'level1.f'
2691        call track_init        call track_init
2692        do ip=1,nplanes           !loop on planes        do ip=1,nplanes           !loop on planes
2693    
2694             xP=XV_STORE(nplanes-ip+1,ibest)
2695             yP=YV_STORE(nplanes-ip+1,ibest)
2696             zP=ZV_STORE(nplanes-ip+1,ibest)
2697             call gufld(xyzp,bxyz)
2698    c$$$         bxyz(1)=0
2699    c$$$         bxyz(2)=0
2700    c$$$         bxyz(3)=0
2701  *     |||||||||||||||||||||||||||||||||||||||||||||||||  *     |||||||||||||||||||||||||||||||||||||||||||||||||
2702  *     -------------------------------------------------  *     -------------------------------------------------
2703  *     If the plane has been already included, it just  *     If the plane has been already included, it just
# Line 2672  c      include 'level1.f' Line 2718  c      include 'level1.f'
2718       $           ,ip_cp(id),ip       $           ,ip_cp(id),ip
2719              icx=clx(ip,icp)              icx=clx(ip,icp)
2720              icy=cly(ip,icp)              icy=cly(ip,icp)
2721    c            call xyz_PAM(icx,icy,is,
2722    c     $           PFA,PFA,
2723    c     $           AXV_STORE(nplanes-ip+1,ibest),
2724    c     $           AYV_STORE(nplanes-ip+1,ibest))
2725              call xyz_PAM(icx,icy,is,              call xyz_PAM(icx,icy,is,
 c     $           'ETA2','ETA2',  
2726       $           PFA,PFA,       $           PFA,PFA,
2727       $           AXV_STORE(nplanes-ip+1,ibest),       $           AXV_STORE(nplanes-ip+1,ibest),
2728       $           AYV_STORE(nplanes-ip+1,ibest))       $           AYV_STORE(nplanes-ip+1,ibest),
2729         $           bxyz(1),
2730         $           bxyz(2)
2731         $           )
2732  c$$$  call xyz_PAM(icx,icy,is,  c$$$  call xyz_PAM(icx,icy,is,
2733  c$$$  $              'COG2','COG2',  c$$$  $              'COG2','COG2',
2734  c$$$  $              0.,  c$$$  $              0.,
# Line 2689  c$$$  $              0.) Line 2741  c$$$  $              0.)
2741              resx(nplanes-ip+1) = resxPAM              resx(nplanes-ip+1) = resxPAM
2742              resy(nplanes-ip+1) = resyPAM              resy(nplanes-ip+1) = resyPAM
2743    
2744  c            dedxtrk(nplanes-ip+1) = (dedx(icx)+dedx(icy))/2. !(1)  c            dedxtrk(nplanes-ip+1) = (sgnl(icx)+sgnl(icy))/2. !(1)
2745              dedxtrk_x(nplanes-ip+1)=dedx(icx)/mip(VIEW(icx),LADDER(icx)) !(1)(2)              dedxtrk_x(nplanes-ip+1)=sgnl(icx)/mip(VIEW(icx),LADDER(icx)) !(1)(2)
2746              dedxtrk_y(nplanes-ip+1)=dedx(icy)/mip(VIEW(icy),LADDER(icy)) !(1)(2)              dedxtrk_y(nplanes-ip+1)=sgnl(icy)/mip(VIEW(icy),LADDER(icy)) !(1)(2)
2747                            
2748  *     |||||||||||||||||||||||||||||||||||||||||||||||||  *     |||||||||||||||||||||||||||||||||||||||||||||||||
2749  *     -------------------------------------------------  *     -------------------------------------------------
# Line 2706  c            dedxtrk(nplanes-ip+1) = (de Line 2758  c            dedxtrk(nplanes-ip+1) = (de
2758                                
2759  *     --------------------------------------------------------------  *     --------------------------------------------------------------
2760  *     determine which ladder and sensor are intersected by the track  *     determine which ladder and sensor are intersected by the track
2761              xP=XV_STORE(nplanes-ip+1,ibest)  c$$$            xP=XV_STORE(nplanes-ip+1,ibest)
2762              yP=YV_STORE(nplanes-ip+1,ibest)  c$$$            yP=YV_STORE(nplanes-ip+1,ibest)
2763              zP=ZV_STORE(nplanes-ip+1,ibest)  c$$$            zP=ZV_STORE(nplanes-ip+1,ibest)
2764              call whichsensor(ip,xP,yP,nldt,ist)              call whichsensor(ip,xP,yP,nldt,ist)
2765  *     if the track hit the plane in a dead area, go to the next plane  *     if the track hit the plane in a dead area, go to the next plane
2766              if(nldt.eq.0.or.ist.eq.0)goto 133              if(nldt.eq.0.or.ist.eq.0)goto 133
# Line 2746  c     $              cl_used(icy).eq.1.o Line 2798  c     $              cl_used(icy).eq.1.o
2798       $              cl_used(icy).ne.0.or. !or the Y cluster is already used !(3)       $              cl_used(icy).ne.0.or. !or the Y cluster is already used !(3)
2799       $              .false.)goto 1188 !then jump to next couple.       $              .false.)goto 1188 !then jump to next couple.
2800  *            *          
2801    c               call xyz_PAM(icx,icy,ist,
2802    c     $              PFA,PFA,
2803    c     $              AXV_STORE(nplanes-ip+1,ibest),
2804    c     $              AYV_STORE(nplanes-ip+1,ibest))
2805                 call xyz_PAM(icx,icy,ist,                 call xyz_PAM(icx,icy,ist,
2806       $              PFA,PFA,       $              PFA,PFA,
 c     $              'ETA2','ETA2',  
2807       $              AXV_STORE(nplanes-ip+1,ibest),       $              AXV_STORE(nplanes-ip+1,ibest),
2808       $              AYV_STORE(nplanes-ip+1,ibest))       $              AYV_STORE(nplanes-ip+1,ibest),
2809         $              bxyz(1),
2810         $              bxyz(2)
2811         $              )
2812                                
2813                 distance = distance_to(XP,YP)                 distance = distance_to(XP,YP)
2814                 distance = distance / RCHI2_STORE(ibest)!<<< MS                 distance = distance / RCHI2_STORE(ibest)!<<< MS
# Line 2765  c     $              'ETA2','ETA2', Line 2823  c     $              'ETA2','ETA2',
2823                    rymm = resyPAM                    rymm = resyPAM
2824                    distmin = distance                    distmin = distance
2825                    idm = id                                      idm = id                  
2826  c                 dedxmm = (dedx(icx)+dedx(icy))/2. !(1)  c                 dedxmm = (sgnl(icx)+sgnl(icy))/2. !(1)
2827                    dedxmmx = dedx(icx)/mip(VIEW(icx),LADDER(icx)) !(1)(2)                    dedxmmx = sgnl(icx)/mip(VIEW(icx),LADDER(icx)) !(1)(2)
2828                    dedxmmy = dedx(icy)/mip(VIEW(icy),LADDER(icy)) !(1)(2)                    dedxmmy = sgnl(icy)/mip(VIEW(icy),LADDER(icy)) !(1)(2)
2829                 endif                 endif
2830   1188          continue   1188          continue
2831              enddo               !end loop on couples on plane icp              enddo               !end loop on couples on plane icp
# Line 2819  c            if(DEBUG)print*,'>>>> try t Line 2877  c            if(DEBUG)print*,'>>>> try t
2877  c               if(cl_used(icx).eq.1)goto 11881 !if the X cluster is already used  c               if(cl_used(icx).eq.1)goto 11881 !if the X cluster is already used
2878                 if(cl_used(icx).ne.0)goto 11881 !if the X cluster is already used  !(3)                 if(cl_used(icx).ne.0)goto 11881 !if the X cluster is already used  !(3)
2879  *                                              !jump to the Y cluster  *                                              !jump to the Y cluster
2880    c               call xyz_PAM(icx,0,ist,
2881    c     $              PFA,PFA,
2882    c     $              AXV_STORE(nplanes-ip+1,ibest),0.)              
2883                 call xyz_PAM(icx,0,ist,                 call xyz_PAM(icx,0,ist,
 c     $              'ETA2','ETA2',  
2884       $              PFA,PFA,       $              PFA,PFA,
2885       $              AXV_STORE(nplanes-ip+1,ibest),0.)                     $              AXV_STORE(nplanes-ip+1,ibest),0.,
2886         $              bxyz(1),
2887         $              bxyz(2)
2888         $              )              
2889                 distance = distance_to(XP,YP)                 distance = distance_to(XP,YP)
2890                 distance = distance / RCHI2_STORE(ibest)!<<< MS                 distance = distance / RCHI2_STORE(ibest)!<<< MS
2891                 if(DEBUG)print*,'( cl-X ',icx                 if(DEBUG)print*,'( cl-X ',icx
# Line 2838  c     $              'ETA2','ETA2', Line 2901  c     $              'ETA2','ETA2',
2901                    rymm = resyPAM                    rymm = resyPAM
2902                    distmin = distance                    distmin = distance
2903                    iclm = icx                    iclm = icx
2904  c                  dedxmm = dedx(icx) !(1)  c                  dedxmm = sgnl(icx) !(1)
2905                    dedxmmx = dedx(icx)/mip(VIEW(icx),LADDER(icx)) !(1)(2)                    dedxmmx = sgnl(icx)/mip(VIEW(icx),LADDER(icx)) !(1)(2)
2906                    dedxmmy = 0.        !(1)                    dedxmmy = 0.        !(1)
2907                 endif                                   endif                  
2908  11881          continue  11881          continue
# Line 2847  c                  dedxmm = dedx(icx) !( Line 2910  c                  dedxmm = dedx(icx) !(
2910  c               if(cl_used(icy).eq.1)goto 11882 !if the Y cluster is already used  c               if(cl_used(icy).eq.1)goto 11882 !if the Y cluster is already used
2911                 if(cl_used(icy).ne.0)goto 11882 !if the Y cluster is already used !(3)                 if(cl_used(icy).ne.0)goto 11882 !if the Y cluster is already used !(3)
2912  *                                              !jump to the next couple  *                                              !jump to the next couple
2913    c               call xyz_PAM(0,icy,ist,
2914    c     $              PFA,PFA,
2915    c     $              0.,AYV_STORE(nplanes-ip+1,ibest))
2916                 call xyz_PAM(0,icy,ist,                 call xyz_PAM(0,icy,ist,
 c     $              'ETA2','ETA2',  
2917       $              PFA,PFA,       $              PFA,PFA,
2918       $              0.,AYV_STORE(nplanes-ip+1,ibest))       $              0.,AYV_STORE(nplanes-ip+1,ibest),
2919         $              bxyz(1),
2920         $              bxyz(2)
2921         $              )
2922                 distance = distance_to(XP,YP)                 distance = distance_to(XP,YP)
2923                 distance = distance / RCHI2_STORE(ibest)!<<< MS                 distance = distance / RCHI2_STORE(ibest)!<<< MS
2924                 if(DEBUG)print*,'( cl-Y ',icy                 if(DEBUG)print*,'( cl-Y ',icy
# Line 2866  c     $              'ETA2','ETA2', Line 2934  c     $              'ETA2','ETA2',
2934                    rymm = resyPAM                    rymm = resyPAM
2935                    distmin = distance                    distmin = distance
2936                    iclm = icy                    iclm = icy
2937  c                 dedxmm = dedx(icy)  !(1)  c                 dedxmm = sgnl(icy)  !(1)
2938                    dedxmmx = 0.        !(1)                    dedxmmx = 0.        !(1)
2939                    dedxmmy = dedx(icy)/mip(VIEW(icy),LADDER(icy)) !(1)(2)                    dedxmmy = sgnl(icy)/mip(VIEW(icy),LADDER(icy)) !(1)(2)
2940                 endif                                   endif                  
2941  11882          continue  11882          continue
2942              enddo               !end loop on cluster inside couples              enddo               !end loop on cluster inside couples
# Line 2882  c               if(cl_used(icl).eq.1.or. Line 2950  c               if(cl_used(icl).eq.1.or.
2950       $              LADDER(icl).ne.nldt.or. !or the ladder number does not match       $              LADDER(icl).ne.nldt.or. !or the ladder number does not match
2951       $              .false.)goto 18882      !jump to the next singlet       $              .false.)goto 18882      !jump to the next singlet
2952                 if(mod(VIEW(icl),2).eq.0)then!<---- X view                 if(mod(VIEW(icl),2).eq.0)then!<---- X view
2953    c                  call xyz_PAM(icl,0,ist,
2954    c     $                 PFA,PFA,
2955    c     $                 AXV_STORE(nplanes-ip+1,ibest),0.)
2956                    call xyz_PAM(icl,0,ist,                    call xyz_PAM(icl,0,ist,
 c     $                 'ETA2','ETA2',  
2957       $                 PFA,PFA,       $                 PFA,PFA,
2958       $                 AXV_STORE(nplanes-ip+1,ibest),0.)       $                 AXV_STORE(nplanes-ip+1,ibest),0.,
2959         $                 bxyz(1),
2960         $                 bxyz(2)
2961         $                 )
2962                 else                         !<---- Y view                 else                         !<---- Y view
2963    c                  call xyz_PAM(0,icl,ist,
2964    c     $                 PFA,PFA,
2965    c     $                 0.,AYV_STORE(nplanes-ip+1,ibest))
2966                    call xyz_PAM(0,icl,ist,                    call xyz_PAM(0,icl,ist,
 c     $                 'ETA2','ETA2',  
2967       $                 PFA,PFA,       $                 PFA,PFA,
2968       $                 0.,AYV_STORE(nplanes-ip+1,ibest))       $                 0.,AYV_STORE(nplanes-ip+1,ibest),
2969         $                 bxyz(1),
2970         $                 bxyz(2)
2971         $                 )
2972                 endif                 endif
2973    
2974                 distance = distance_to(XP,YP)                 distance = distance_to(XP,YP)
# Line 2909  c     $                 'ETA2','ETA2', Line 2987  c     $                 'ETA2','ETA2',
2987                    rymm = resyPAM                    rymm = resyPAM
2988                    distmin = distance                      distmin = distance  
2989                    iclm = icl                    iclm = icl
2990  c                  dedxmm = dedx(icl)                   !(1)  c                  dedxmm = sgnl(icl)                   !(1)
2991                    if(mod(VIEW(icl),2).eq.0)then !<---- X view                    if(mod(VIEW(icl),2).eq.0)then !<---- X view
2992                       dedxmmx = dedx(icl)/mip(VIEW(icl),LADDER(icl)) !(1)(2)                       dedxmmx = sgnl(icl)/mip(VIEW(icl),LADDER(icl)) !(1)(2)
2993                       dedxmmy = 0.                       !(1)                       dedxmmy = 0.                       !(1)
2994                    else          !<---- Y view                    else          !<---- Y view
2995                       dedxmmx = 0.                       !(1)                       dedxmmx = 0.                       !(1)
2996                       dedxmmy = dedx(icl)/mip(VIEW(icl),LADDER(icl)) !(1)(2)                       dedxmmy = sgnl(icl)/mip(VIEW(icl),LADDER(icl)) !(1)(2)
2997                    endif                    endif
2998                 endif                                   endif                  
2999  18882          continue  18882          continue
# Line 3260  c      include 'level1.f' Line 3338  c      include 'level1.f'
3338           yv_nt(ip,ntr)    = sngl(yv(ip))           yv_nt(ip,ntr)    = sngl(yv(ip))
3339           zv_nt(ip,ntr)    = sngl(zv(ip))           zv_nt(ip,ntr)    = sngl(zv(ip))
3340           axv_nt(ip,ntr)   = sngl(axv(ip))           axv_nt(ip,ntr)   = sngl(axv(ip))
3341           ayv_nt(ip,ntr)   = sngl(ayv(ip))           ayv_nt(ip,ntr)   = sngl(ayv(ip))  
3342           dedx_x(ip,ntr)   = sngl(dedxtrk_x(ip)) !(2)  c     l'avevo dimenticato!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3343           dedx_y(ip,ntr)   = sngl(dedxtrk_y(ip)) !(2)             factor = sqrt(
3344         $        sin( acos(-1.) * sngl(axv(ip)) /180. )**2 +
3345         $        sin( acos(-1.) * sngl(ayv(ip)) /180. )**2 +
3346         $        1. )
3347    c     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3348             dedx_x(ip,ntr)   = sngl(dedxtrk_x(ip)/factor)
3349             dedx_y(ip,ntr)   = sngl(dedxtrk_y(ip)/factor)  
3350        
3351           id  = CP_STORE(ip,IDCAND)           id  = CP_STORE(ip,IDCAND)
3352           icl = CLS_STORE(ip,IDCAND)           icl = CLS_STORE(ip,IDCAND)
# Line 3312  c      good2=1!.true. Line 3396  c      good2=1!.true.
3396              if(mod(VIEW(icl),2).eq.0)then !=== X views              if(mod(VIEW(icl),2).eq.0)then !=== X views
3397                 nclsx = nclsx + 1                 nclsx = nclsx + 1
3398                 planex(nclsx) = ip                 planex(nclsx) = ip
3399                 sgnlxs(nclsx) = dedx(icl)/mip(VIEW(icl),LADDER(icl))!(2)                 sgnlxs(nclsx) = sgnl(icl)/mip(VIEW(icl),LADDER(icl))!(2)
3400                 clsx(nclsx)   = icl                 clsx(nclsx)   = icl
3401                 do is=1,2                 do is=1,2
3402  c                  call xyz_PAM(icl,0,is,'COG1',' ',0.,0.)  c                  call xyz_PAM(icl,0,is,'COG1',' ',0.,0.)
3403                    call xyz_PAM(icl,0,is,PFAdef,' ',0.,0.)  c                  call xyz_PAM(icl,0,is,PFAdef,' ',0.,0.)
3404                      call xyz_PAM(icl,0,is,PFAdef,' ',0.,0.,0.,0.)
3405                    xs(is,nclsx) = (xPAM_A+xPAM_B)/2                    xs(is,nclsx) = (xPAM_A+xPAM_B)/2
3406                 enddo                 enddo
3407  c$$$               print*,'nclsx         ',nclsx  c$$$               print*,'nclsx         ',nclsx
# Line 3327  c$$$               print*,'xs(2,nclsx)   Line 3412  c$$$               print*,'xs(2,nclsx)  
3412              else                          !=== Y views              else                          !=== Y views
3413                 nclsy = nclsy + 1                 nclsy = nclsy + 1
3414                 planey(nclsy) = ip                 planey(nclsy) = ip
3415                 sgnlys(nclsy) = dedx(icl)/mip(VIEW(icl),LADDER(icl))!(2)                 sgnlys(nclsy) = sgnl(icl)/mip(VIEW(icl),LADDER(icl))!(2)
3416                 clsy(nclsy)   = icl                 clsy(nclsy)   = icl
3417                 do is=1,2                 do is=1,2
3418  c                  call xyz_PAM(0,icl,is,' ','COG1',0.,0.)  c                  call xyz_PAM(0,icl,is,' ','COG1',0.,0.)
3419                    call xyz_PAM(0,icl,is,' ',PFAdef,0.,0.)  c                  call xyz_PAM(0,icl,is,' ',PFAdef,0.,0.)
3420                      call xyz_PAM(0,icl,is,' ',PFAdef,0.,0.,0.,0.)
3421                    ys(is,nclsy) = (yPAM_A+yPAM_B)/2                    ys(is,nclsy) = (yPAM_A+yPAM_B)/2
3422                 enddo                 enddo
3423  c$$$               print*,'nclsy         ',nclsy  c$$$               print*,'nclsy         ',nclsy

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18

  ViewVC Help
Powered by ViewVC 1.1.23