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

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

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

revision 1.19 by pam-fi, Wed Jun 6 09:26:09 2007 UTC revision 1.24 by pam-fi, Tue Dec 23 11:28:36 2008 UTC
# Line 72  c      COMMON/TRKD/TRKDEBUG,TRKVERBOSE Line 72  c      COMMON/TRKD/TRKDEBUG,TRKVERBOSE
72    
73        DIMENSION AL0(5)        DIMENSION AL0(5)
74        LOGICAL SUCCESS_NEW,SUCCESS_OLD        LOGICAL SUCCESS_NEW,SUCCESS_OLD
75    
76    c$$$      PRINT*,'==========' ! TEST
77    c$$$      PRINT*,'START MINI' ! TEST
78    c$$$      PRINT*,'==========' ! TEST
79    
80  *  *
81  *     define kind of minimization (0x=chi2+gaussian or 1x=likelihood+student)  *     define kind of minimization (0x=chi2+gaussian or 1x=likelihood+student)
82  *  *
# Line 96  c      COMMON/TRKD/TRKDEBUG,TRKVERBOSE Line 101  c      COMMON/TRKD/TRKDEBUG,TRKVERBOSE
101  *     ----------------------------------------------------------  *     ----------------------------------------------------------
102        AVRESX = RESXAV        AVRESX = RESXAV
103        AVRESY = RESYAV        AVRESY = RESYAV
104          NX = 0.0
105          NY = 0.0
106        DO IP=1,6        DO IP=1,6
107           IF( XGOOD(IP).EQ.1 )THEN           IF( XGOOD(IP).EQ.1 )THEN
108              NX=NX+1              NX=NX+1.0
109              AVRESX=AVRESX+RESX(IP)              AVRESX=AVRESX+RESX(IP)
110           ENDIF           ENDIF
          IF(NX.NE.0)AVRESX=AVRESX/NX  
111           IF( YGOOD(IP).EQ.1 )THEN           IF( YGOOD(IP).EQ.1 )THEN
112              NY=NY+1              NY=NY+1.0
113              AVRESY=AVRESY+RESY(IP)              AVRESY=AVRESY+RESY(IP)
114           ENDIF           ENDIF
          IF(NX.NE.0)AVRESY=AVRESY/NY          
115        ENDDO        ENDDO
116          IF(NX.NE.0.0)AVRESX=AVRESX/NX
117          IF(NY.NE.0.0)AVRESY=AVRESY/NY        
118    
119  *     ----------------------------------------------------------  *     ----------------------------------------------------------
120  *     define ALTOL(5) ---> tolerances on state vector  *     define ALTOL(5) ---> tolerances on state vector
# Line 134  c$$$      DELETA2 = 0.016/0.3/0.4/0.4451 Line 141  c$$$      DELETA2 = 0.016/0.3/0.4/0.4451
141        CHI2=0        CHI2=0
142    
143        if(TRKDEBUG) print*,'guess: ',al        if(TRKDEBUG) print*,'guess: ',al
144        if(TRKDEBUG) print*,'mini2: step ',istep,chi2,1./AL(5)        if(TRKDEBUG) print*,'mini2: step ',istep,chi2,AL(5)
145    
146  *      *    
147  *     -----------------------  *     -----------------------
# Line 244  c$$$            CHI2D(I)=CHI2D(I)*COST Line 251  c$$$            CHI2D(I)=CHI2D(I)*COST
251              ENDDO              ENDDO
252           ENDIF           ENDIF
253                
254           if(TRKDEBUG) print*,'mini2: step ',istep,chi2,1./AL(5)           if(TRKDEBUG) print*,'mini2: step ',istep,chi2,AL(5)
255    
256  c$$$         PRINT*,'DAL ',(DAL(K),K=1,5)  c$$$         PRINT*,'DAL ',(DAL(K),K=1,5)
257  c$$$         PRINT*,'CHI2DOLD ',(CHI2DOLD(K),K=1,5)  c$$$         PRINT*,'CHI2DOLD ',(CHI2DOLD(K),K=1,5)
# Line 411  c$$$     $        ISTEPMAX Line 418  c$$$     $        ISTEPMAX
418  *     ---------------------------------------------  *     ---------------------------------------------
419  *------------------------------------------------------------*  *------------------------------------------------------------*
420  c$$$      ALTOL(5) = DSQRT(DELETA1**2+DELETA2**2*AL(5)**2)/FACT  c$$$      ALTOL(5) = DSQRT(DELETA1**2+DELETA2**2*AL(5)**2)/FACT
421          IF(FACT.EQ.0)THEN
422             IFAIL=1
423             RETURN
424          ENDIF
425        ALTOL(5) = DSQRT((DELETA1*AVRESX)**2+DELETA2**2*AL(5)**2)/FACT        ALTOL(5) = DSQRT((DELETA1*AVRESX)**2+DELETA2**2*AL(5)**2)/FACT
426        ALTOL(1) = ALTOL(5)/DELETA1        ALTOL(1) = ALTOL(5)/DELETA1
427        ALTOL(2) = ALTOL(1)        ALTOL(2) = ALTOL(1)
# Line 547  c$$$               DAL(I)=0. Line 558  c$$$               DAL(I)=0.
558  *     ------------------------------------  *     ------------------------------------
559  *     Reduced chi^2  *     Reduced chi^2
560        CHI2 = CHI2/dble(ndof)        CHI2 = CHI2/dble(ndof)
   
561  c      print*,'mini2: chi2 ',chi2  c      print*,'mini2: chi2 ',chi2
562    
563   11   CONTINUE         11   CONTINUE      
564    
565        if(TRKDEBUG) print*,'mini2: -ok- ',istep,chi2,1./AL(5)        if(TRKDEBUG) print*,'mini2: -ok- ',istep,chi2,AL(5)
566    
567        NSTEP=ISTEP ! ***PP***        NSTEP=ISTEP ! ***PP***
568    
# Line 993  cpp      ENDDO       Line 1003  cpp      ENDDO      
1003  c$$$      print*,'POSXY (prima) ',vout  c$$$      print*,'POSXY (prima) ',vout
1004    
1005        DO I=1,nplanes        DO I=1,nplanes
1006  cpp         step=vout(3)-zv(i)  c$$$         ipass = 0 ! TEST
1007           step=vout(3)-zm(i)  c$$$         PRINT *,'TRACKING -> START PLANE: ',I ! TEST
1008    cPPP         step=vout(3)-zm(i)
1009    cPP         step=(zm(i)-vout(3))/VOUT(6)
1010   10      DO J=1,7   10      DO J=1,7
1011              VECT(J)=VOUT(J)              VECT(J)=VOUT(J)
1012              VECTINI(J)=VOUT(J)              VECTINI(J)=VOUT(J)
1013           ENDDO           ENDDO
1014    cPPP         step=vect(3)-zm(i)
1015             IF(VOUT(6).GE.0.) THEN
1016                IFAIL=1
1017                if(TRKVERBOSE)      
1018         $           PRINT *,'posxy (grkuta): WARNING ===> backward track!!'
1019                RETURN
1020             ENDIF
1021             step=(zm(i)-vect(3))/VOUT(6)
1022   11      continue   11      continue
1023           CALL GRKUTA(CHARGE,STEP,VECT,VOUT)           CALL GRKUTA(CHARGE,STEP,VECT,VOUT)
1024    c$$$         ipass = ipass + 1 ! TEST
1025    c$$$         PRINT *,'TRACKING -> STEP: ',ipass,' LENGHT: ', STEP ! TEST
1026           IF(VOUT(3).GT.VECT(3)) THEN           IF(VOUT(3).GT.VECT(3)) THEN
1027              IFAIL=1              IFAIL=1
1028              if(TRKVERBOSE)              if(TRKVERBOSE)
# Line 1042  c$$$            if(.TRUE.)print*,'step', Line 1064  c$$$            if(.TRUE.)print*,'step',
1064              VOUT(7) = VOUT(7) * 0.997 !0.9968              VOUT(7) = VOUT(7) * 0.997 !0.9968
1065  *     -----------------------------------------------  *     -----------------------------------------------
1066           ENDIF           ENDIF
1067    c$$$         PRINT *,'TRACKING -> END' ! TEST
1068    
1069        ENDDO        ENDDO
1070    
# Line 1080  c$$$      print*,'POSXY (dopo) ',vout Line 1103  c$$$      print*,'POSXY (dopo) ',vout
1103           YM(IP) = -100.         !0.           YM(IP) = -100.         !0.
1104           XM_A(IP) = -100.         !0.           XM_A(IP) = -100.         !0.
1105           YM_A(IP) = -100.         !0.           YM_A(IP) = -100.         !0.
1106  c         ZM_A(IP) = 0           ZM_A(IP) = fitz(nplanes-ip+1) !init to mech. position
1107           XM_B(IP) =  -100.         !0.           XM_B(IP) =  -100.         !0.
1108           YM_B(IP) =  -100.         !0.           YM_B(IP) =  -100.         !0.
1109  c         ZM_B(IP) = 0           ZM_B(IP) = fitz(nplanes-ip+1) !init to mech. position
1110           RESX(IP) = 1000.       !3.d-4           RESX(IP) = 1000.       !3.d-4
1111           RESY(IP) = 1000.       !12.d-4           RESY(IP) = 1000.       !12.d-4
1112           XGOOD(IP) = 0           XGOOD(IP) = 0
# Line 1232  c$$$     $     ,' - CHI ',CHI,' - X0,AX, Line 1255  c$$$     $     ,' - CHI ',CHI,' - X0,AX,
1255        AL(2) = Y0        AL(2) = Y0
1256        tath  = sqrt(AY**2+AX**2)        tath  = sqrt(AY**2+AX**2)
1257        AL(3) = tath/sqrt(1+tath**2)        AL(3) = tath/sqrt(1+tath**2)
 c$$$      IF(AX.NE.0)THEN  
 c$$$         AL(4)= atan(AY/AX)  
 c$$$      ELSE  
 c$$$         AL(4) = acos(-1.)/2  
 c$$$         IF(AY.LT.0)AL(4) = AL(4)+acos(-1.)  
 c$$$  ENDIF  
 c$$$      IF(AX.LT.0)AL(4)= acos(-1.)+ AL(4)  
 c$$$      AL(4) = -acos(-1.) + AL(4) !from incidence direction to tracking ref.sys.  
   
 c$$$      AL(4) =  0.  
 c$$$      IF(AX.NE.0.AND.AY.NE.0)THEN  
 c$$$         AL(4)= atan(AY/AX)  
 c$$$      ELSEIF(AY.EQ.0)THEN  
 c$$$         AL(4) = 0.  
 c$$$         IF(AX.LT.0)AL(4) = AL(4)+acos(-1.)          
 c$$$      ELSEIF(AX.EQ.0)THEN  
 c$$$         AL(4) = acos(-1.)/2  
 c$$$         IF(AY.LT.0)AL(4) = AL(4)+acos(-1.)  
 c$$$      ENDIF  
 c$$$      IF(AX.LT.0)AL(4)= acos(-1.)+ AL(4)  
 c$$$      AL(4) = -acos(-1.) + AL(4) !from incidence direction to tracking ref.sys.  
   
 c$$$      AL(4)=0.  
 c$$$      IF( AX.NE.0.OR.AY.NE.0. ) THEN  
 c$$$         AL(4) = ASIN(AY/SQRT(AX**2+AY**2))  
 c$$$         IF(AX.LT.0.) AL(4) = ACOS(-1.0)-AL(4)  
 c$$$      ENDIF  
1258    
1259        AL(4)=0.        AL(4)=0.
1260        IF( AX.NE.0.OR.AY.NE.0. ) THEN        IF( AX.NE.0.OR.AY.NE.0. ) THEN

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.24

  ViewVC Help
Powered by ViewVC 1.1.23