| 19 |  |  | 
| 20 | INCLUDE 'INTEST.TXT' | INCLUDE 'INTEST.TXT' | 
| 21 |  |  | 
| 22 |  | REAL FLIMIT, FLIMIT2 | 
| 23 | INTEGER NVAR,NPAR | INTEGER NVAR,NPAR | 
| 24 | PARAMETER (NVAR=1,NPAR=2) | PARAMETER (NVAR=1,NPAR=2) | 
| 25 |  | c      PARAMETER (FLIMIT=10000) | 
| 26 | REAL X(NPLA),Y(NPLA),W(NPLA) | c      PARAMETER (FLIMIT2=2000) | 
| 27 |  | c      PARAMETER (FLIMIT=500) | 
| 28 |  | PARAMETER (FLIMIT=2000) | 
| 29 |  | PARAMETER (FLIMIT2=500) | 
| 30 |  | REAL X(NPLAV),Y(NPLAV),W(NPLAV) | 
| 31 | REAL DEVIA(2),TG(2) | REAL DEVIA(2),TG(2) | 
| 32 | REAL BAR(2,NPLA) | REAL BAR(2,NPLAV) | 
| 33 | REAL A, B, VAR | REAL A, B, VAR | 
| 34 | REAL PIANO(22) | REAL SA, SB, SVAR | 
| 35 |  | REAL SSA, SSB, SSVAR | 
| 36 |  | REAL PIANO(NPLAV) | 
| 37 | REAL VARFIT(2) | REAL VARFIT(2) | 
| 38 |  |  | 
| 39 | INTEGER ICONT, M, I | INTEGER ICONT, M, I, SNPFIT,SSNPFIT | 
| 40 | INTEGER NPFIT(2) | INTEGER NPFIT(2), CHTRACK,IWPL(2) | 
| 41 |  | INTEGER FORCEMODE | 
| 42 |  |  | 
| 43 | INTEGER IBAR(2,NPLA) | INTEGER IBAR(2,NPLAV) | 
| 44 | COMMON/ANGOLO/BAR,IBAR | COMMON/ANGOLO/BAR,IBAR | 
| 45 | SAVE /ANGOLO/ | SAVE /ANGOLO/ | 
| 46 |  |  | 
| 48 | COMMON/WHERE/CX,CY,PIANO | COMMON/WHERE/CX,CY,PIANO | 
| 49 | SAVE /WHERE/ | SAVE /WHERE/ | 
| 50 |  |  | 
| 51 | COMMON/CALOFIT/VARFIT,NPFIT | COMMON/CALOFIT/VARFIT,NPFIT,IWPL,CHTRACK | 
| 52 | SAVE/CALOFIT/ | SAVE/CALOFIT/ | 
| 53 | C | C | 
| 54 | ICONT = 0 | ICONT = 0 | 
| 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 . | 
| 73 | C | C | 
| 74 | DO M = 1,2 | DO M = 1,2 | 
| 75 |  | SA = 0 | 
| 76 |  | SB = 0 | 
| 77 |  | SVAR = 0 | 
| 78 |  | FMODE(M) = 0 | 
| 79 |  | 10      CONTINUE | 
| 80 | ICONT = 0 | ICONT = 0 | 
| 81 | CALL VZERO(X,NPLA) | CALL VZERO(X,NPLAV) | 
| 82 | CALL VZERO(Y,NPLA) | CALL VZERO(Y,NPLAV) | 
| 83 | CALL VZERO(W,NPLA) | CALL VZERO(W,NPLAV) | 
| 84 | DO I = 1,NPLA | DO I = 1,NPLA | 
| 85 | C | C | 
| 86 | IF (MOD(M,2).EQ.0) THEN | IF (MOD(M,2).EQ.0) THEN | 
| 87 | X(I) = PIANO(I) - 5.81 | X(I) = PIANO(I) | 
| 88 |  | C               X(I) = PIANO(I) - 5.81 | 
| 89 | ELSE | ELSE | 
| 90 | X(I) = PIANO(I) | X(I) = PIANO(I) - 5.81 | 
| 91 |  | C               X(I) = PIANO(I) | 
| 92 | ENDIF | ENDIF | 
|  | C            X(I) = -(I-1) * PIANO |  | 
| 93 | Y(I) = 0. | Y(I) = 0. | 
| 94 | IF (NCL(M,I).GE.1) THEN | C | 
| 95 | ICONT = ICONT + 1 | C | 
| 96 | Y(I) = CLUS(M,I,1) | C | 
| 97 | W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2. | IF ((FMODE(M).EQ.0.AND.FORCEMODE.EQ.-1) | 
| 98 | IF (W(I).GT.2000.) W(I) = 2000. | +           .OR.FORCEMODE.EQ.0) THEN | 
| 99 |  | IF (NCL(M,I).GE.1) THEN | 
| 100 |  | ICONT = ICONT + 1 | 
| 101 |  | Y(I) = CLUS(M,I,1) | 
| 102 |  | W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2. | 
| 103 |  | IF (W(I).GT.2000.) THEN | 
| 104 |  | W(I) = 2000. | 
| 105 |  | C                     Y(I) = 0. | 
| 106 |  | C                     ICONT = ICONT -1 | 
| 107 |  | ENDIF | 
| 108 |  | ENDIF | 
| 109 | ENDIF | ENDIF | 
| 110 | if (Y(I).eq.0.or.W(I).eq.2000.) NPFIT(M) = NPFIT(M) - 1 | C | 
| 111 |  | C No weigth and less cluster per plane | 
| 112 |  | C | 
| 113 |  | 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 | 
| 116 |  | ICONT = ICONT + 1 | 
| 117 |  | Y(I) = CLUS(M,I,1) | 
| 118 |  | W(I) = ((CLUS(M,I,1+NCHA/2)**0.29))**2. | 
| 119 |  | c                  W(I) = 1. | 
| 120 |  | ENDIF | 
| 121 |  | c               IF (W(I).GT.2000.) THEN | 
| 122 |  | cx                  W(I) = 2000. | 
| 123 |  | cc                  Y(I) = 0. | 
| 124 |  | cc                  ICONT = ICONT -1 | 
| 125 |  | c               ENDIF | 
| 126 |  | ENDIF | 
| 127 |  | c | 
| 128 |  | c One cluster per plane | 
| 129 |  | c | 
| 130 |  | IF((FMODE(M).EQ.2.AND.FORCEMODE.EQ.-1).OR. | 
| 131 |  | +           FORCEMODE.EQ.2) THEN | 
| 132 |  | IF (NCL(M,I).EQ.1) THEN | 
| 133 |  | ICONT = ICONT + 1 | 
| 134 |  | Y(I) = CLUS(M,I,1) | 
| 135 |  | W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2. | 
| 136 |  | c                  W(I) = 1. | 
| 137 |  | ENDIF | 
| 138 |  | ENDIF | 
| 139 |  | c            if (Y(I).eq.0.or.W(I).eq.2000.) NPFIT(M) = NPFIT(M) - 1 | 
| 140 |  | if (Y(I).eq.0.) NPFIT(M) = NPFIT(M) - 1 | 
| 141 | ENDDO | ENDDO | 
| 142 | C | C | 
| 143 |  |  | 
| 144 | A = 0. | A = 0. | 
| 145 | B = 0. | B = 0. | 
| 146 | IF (ICONT.GE.2) CALL LFITW(X,Y,W,NPLA,0,A,B,VAR) | VAR = 0. | 
| 147 |  | c         print *,' icont = ',icont | 
| 148 |  | IF (ICONT.GE.2) THEN | 
| 149 |  | CALL LFITW(X,Y,W,NPLA,0,A,B,VAR) | 
| 150 |  | ELSE | 
| 151 |  | NPFIT(M) = 0 | 
| 152 |  | ENDIF | 
| 153 |  | C | 
| 154 |  | IF (FORCEMODE.EQ.-1) THEN | 
| 155 |  | C | 
| 156 |  | C     TRY A BETTER FIT IF VAR IS BIG ON THE FIRST TRY | 
| 157 |  | C | 
| 158 |  | IF ((ABS(VAR).GT.FLIMIT.OR.VAR.EQ.0.) | 
| 159 |  | &           .AND.FMODE(M).EQ.0) THEN | 
| 160 |  | SVAR = VAR | 
| 161 |  | SB = B | 
| 162 |  | SA = A | 
| 163 |  | SNPFIT = NPFIT(M) | 
| 164 |  | NPFIT(M) = NPLA | 
| 165 |  | FMODE(M) = 1 | 
| 166 |  | GOTO 10 | 
| 167 |  | ENDIF | 
| 168 |  | C | 
| 169 |  | C     TRY AGAIN IF STILL BAD AND WE HAVE AT LEAST 10 POINT TO MAKE THE FIT | 
| 170 |  | C | 
| 171 |  | IF ((ABS(VAR).GT.FLIMIT2.OR.VAR.EQ.0.).AND.FMODE(M).EQ.1 | 
| 172 |  | &           .AND.SNPFIT.GT.5) THEN | 
| 173 |  | SSVAR = VAR | 
| 174 |  | SSB = B | 
| 175 |  | SSA = A | 
| 176 |  | SSNPFIT = NPFIT(M) | 
| 177 |  | NPFIT(M) = NPLA | 
| 178 |  | 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 | 
| 206 |  | ENDIF | 
| 207 |  | C | 
| 208 | VARFIT(M) = VAR | VARFIT(M) = VAR | 
| 209 | IF (M.EQ.1) CX = B | IF (M.EQ.1) CX = B | 
| 210 | IF (M.EQ.2) CY = B | IF (M.EQ.2) CY = B | 
|  | C |  | 
| 211 | DEVIA(M) = A | DEVIA(M) = A | 
| 212 | TG(M) = A | TG(M) = A | 
| 213 |  | C | 
| 214 | ENDDO | ENDDO | 
| 215 | C | C | 
| 216 |  |  |