/[PAMELA software]/DarthVader/CalorimeterLevel2/src/direction.for
ViewVC logotype

Diff of /DarthVader/CalorimeterLevel2/src/direction.for

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

revision 1.7 by mocchiut, Thu Nov 22 13:53:28 2007 UTC revision 1.10 by mocchiut, Tue Aug 4 14:01:19 2009 UTC
# Line 38  c      PARAMETER (FLIMIT=500) Line 38  c      PARAMETER (FLIMIT=500)
38    
39        INTEGER ICONT, M, I, SNPFIT,SSNPFIT        INTEGER ICONT, M, I, SNPFIT,SSNPFIT
40        INTEGER NPFIT(2), CHTRACK,IWPL(2)        INTEGER NPFIT(2), CHTRACK,IWPL(2)
41          INTEGER FORCEMODE
42                
43        INTEGER IBAR(2,NPLAV)              INTEGER IBAR(2,NPLAV)      
44        COMMON/ANGOLO/BAR,IBAR        COMMON/ANGOLO/BAR,IBAR
# Line 61  C Line 62  C
62        VARFIT(1) = 0.        VARFIT(1) = 0.
63        VARFIT(2) = 0.              VARFIT(2) = 0.      
64  C  C
65          FORCEMODE = -1
66          IF (FMODE(1).GE.1000.AND.FMODE(2).GE.1000) THEN
67             FORCEMODE = FMODE(1)-1000
68          ENDIF        
69    C
70  C THE FIT IS PERFORMED WHEN THERE ARE AT LEAST TWO  C THE FIT IS PERFORMED WHEN THERE ARE AT LEAST TWO
71  C LAYERS WITH SIGNAL . FOR THE FIT THE CLUSTER WITH THE  C LAYERS WITH SIGNAL . FOR THE FIT THE CLUSTER WITH THE
72  C HIGHEST DETECTED ENERGY IS USED .  C HIGHEST DETECTED ENERGY IS USED .
# Line 88  C               X(I) = PIANO(I)         Line 94  C               X(I) = PIANO(I)        
94  C  C
95  C  C
96  C  C
97              IF (FMODE(M).EQ.0) THEN              IF ((FMODE(M).EQ.0.AND.FORCEMODE.EQ.-1)
98         +           .OR.FORCEMODE.EQ.0) THEN
99                 IF (NCL(M,I).GE.1) THEN                 IF (NCL(M,I).GE.1) THEN
100                    ICONT = ICONT + 1                    ICONT = ICONT + 1
101                    Y(I) = CLUS(M,I,1)                    Y(I) = CLUS(M,I,1)
# Line 103  C                     ICONT = ICONT -1 Line 110  C                     ICONT = ICONT -1
110  C  C
111  C No weigth and less cluster per plane  C No weigth and less cluster per plane
112  C  C
113              IF(FMODE(M).EQ.1) THEN              IF((FMODE(M).EQ.1.AND.FORCEMODE.EQ.-1).OR.
114         +           FORCEMODE.EQ.1) THEN
115                 IF (NCL(M,I).GE.1.AND.NCL(M,I).LE.2) THEN                 IF (NCL(M,I).GE.1.AND.NCL(M,I).LE.2) THEN
116                    ICONT = ICONT + 1                    ICONT = ICONT + 1
117                    Y(I) = CLUS(M,I,1)                    Y(I) = CLUS(M,I,1)
# Line 119  c               ENDIF Line 127  c               ENDIF
127  c  c
128  c One cluster per plane  c One cluster per plane
129  c  c
130              IF(FMODE(M).EQ.2) THEN              IF((FMODE(M).EQ.2.AND.FORCEMODE.EQ.-1).OR.
131         +           FORCEMODE.EQ.2) THEN
132                 IF (NCL(M,I).EQ.1) THEN                 IF (NCL(M,I).EQ.1) THEN
133                    ICONT = ICONT + 1                    ICONT = ICONT + 1
134                    Y(I) = CLUS(M,I,1)                    Y(I) = CLUS(M,I,1)
# Line 142  c         print *,' icont = ',icont Line 151  c         print *,' icont = ',icont
151              NPFIT(M) = 0              NPFIT(M) = 0
152           ENDIF           ENDIF
153  C  C
154  C TRY A BETTER FIT IF VAR IS BIG ON THE FIRST TRY           IF (FORCEMODE.EQ.-1) THEN
155  C  C    
156           IF ((ABS(VAR).GT.FLIMIT.OR.VAR.EQ.0.).AND.FMODE(M).EQ.0) THEN  C     TRY A BETTER FIT IF VAR IS BIG ON THE FIRST TRY
157              SVAR = VAR  C    
158              SB = B              IF ((ABS(VAR).GT.FLIMIT.OR.VAR.EQ.0.)
159              SA = A       &           .AND.FMODE(M).EQ.0) THEN
160              SNPFIT = NPFIT(M)                 SVAR = VAR
161              NPFIT(M) = NPLA                 SB = B
162              FMODE(M) = 1                 SA = A
163              GOTO 10                 SNPFIT = NPFIT(M)
164           ENDIF                 NPFIT(M) = NPLA
 C  
 C TRY AGAIN IF STILL BAD AND WE HAVE AT LEAST 10 POINT TO MAKE THE FIT  
 C  
          IF ((ABS(VAR).GT.FLIMIT2.OR.VAR.EQ.0.).AND.FMODE(M).EQ.1  
      &        .AND.SNPFIT.GT.5) THEN  
             SSVAR = VAR  
             SSB = B  
             SSA = A  
             SSNPFIT = NPFIT(M)  
             NPFIT(M) = NPLA  
             FMODE(M) = 2  
             GOTO 10  
          ENDIF            
 C  
 C IF WE ARE AT THE THIRD TRY AND THE FIT IS WORST THAN THE SECOND TRY TAKE THE FIRST TRY  
 C  
          IF (FMODE(M).EQ.2) THEN  
             IF (ABS(VAR).GT.ABS(SSVAR).OR.ABS(VAR).EQ.0.  
      &           .OR.NPFIT(M).LE.4) THEN  
165                 FMODE(M) = 1                 FMODE(M) = 1
166                 VAR=SSVAR                 GOTO 10
                B = SSB  
                A = SSA  
                NPFIT(M) = SSNPFIT  
167              ENDIF              ENDIF
168           ENDIF  C    
169  C  C     TRY AGAIN IF STILL BAD AND WE HAVE AT LEAST 10 POINT TO MAKE THE FIT
170  C IF THE SECOND TRY AND THE FIT IS WORST THAN THE FIRST TRY TAKE THE FIRST TRY  C    
171  C              IF ((ABS(VAR).GT.FLIMIT2.OR.VAR.EQ.0.).AND.FMODE(M).EQ.1
172           IF (FMODE(M).EQ.1) THEN       &           .AND.SNPFIT.GT.5) THEN
173              IF (ABS(VAR).GT.ABS(SVAR).OR.ABS(VAR).EQ.0.) THEN                 SSVAR = VAR
174                 FMODE(M) = 0                 SSB = B
175                 VAR=SVAR                 SSA = A
176                 B = SB                 SSNPFIT = NPFIT(M)
177                 A = SA                 NPFIT(M) = NPLA
178                 NPFIT(M) = SNPFIT                 FMODE(M) = 2
179                   GOTO 10
180                ENDIF          
181    C    
182    C     IF WE ARE AT THE THIRD TRY AND THE FIT IS WORST THAN THE SECOND TRY TAKE THE FIRST TRY
183    C    
184                IF (FMODE(M).EQ.2) THEN
185                   IF (ABS(VAR).GT.ABS(SSVAR).OR.ABS(VAR).EQ.0.
186         &              .OR.NPFIT(M).LE.4) THEN
187                      FMODE(M) = 1
188                      VAR=SSVAR
189                      B = SSB
190                      A = SSA
191                      NPFIT(M) = SSNPFIT
192                   ENDIF
193                ENDIF
194    C    
195    C     IF THE SECOND TRY AND THE FIT IS WORST THAN THE FIRST TRY TAKE THE FIRST TRY
196    C    
197                IF (FMODE(M).EQ.1) THEN
198                   IF (ABS(VAR).GT.ABS(SVAR).OR.ABS(VAR).EQ.0.) THEN
199                      FMODE(M) = 0
200                      VAR=SVAR
201                      B = SB
202                      A = SA
203                      NPFIT(M) = SNPFIT
204                   ENDIF
205              ENDIF              ENDIF
206           ENDIF           ENDIF
207  C  C
# Line 201  C Line 214  C
214        ENDDO        ENDDO
215  C  C
216    
217    500 CONTINUE  c  500 CONTINUE
218          CONTINUE
219        RETURN        RETURN
220        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.23