/[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.1.1.1 by mocchiut, Fri May 19 13:15:50 2006 UTC revision 1.3 by mocchiut, Mon Jan 22 10:46:00 2007 UTC
# Line 19  C--------------------------------------- Line 19  C---------------------------------------
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          PARAMETER (FLIMIT=10000)
26          PARAMETER (FLIMIT2=2000)
27        REAL X(NPLA),Y(NPLA),W(NPLA)        REAL X(NPLA),Y(NPLA),W(NPLA)
28        REAL DEVIA(2),TG(2)        REAL DEVIA(2),TG(2)
29        REAL BAR(2,NPLA)        REAL BAR(2,NPLA)
30        REAL A, B, VAR        REAL A, B, VAR
31          REAL SA, SB, SVAR
32          REAL SSA, SSB, SSVAR
33        REAL PIANO(22)        REAL PIANO(22)
34        REAL VARFIT(2)        REAL VARFIT(2)
35    
36        INTEGER ICONT, M, I        INTEGER ICONT, M, I, SNPFIT,SSNPFIT
37        INTEGER NPFIT(2)        INTEGER NPFIT(2), CHTRACK,IWPL(2)
38                
39        INTEGER IBAR(2,NPLA)              INTEGER IBAR(2,NPLA)      
40        COMMON/ANGOLO/BAR,IBAR        COMMON/ANGOLO/BAR,IBAR
# Line 40  C--------------------------------------- Line 44  C---------------------------------------
44        COMMON/WHERE/CX,CY,PIANO        COMMON/WHERE/CX,CY,PIANO
45        SAVE /WHERE/        SAVE /WHERE/
46    
47        COMMON/CALOFIT/VARFIT,NPFIT        COMMON/CALOFIT/VARFIT,NPFIT,IWPL,CHTRACK
48        SAVE/CALOFIT/        SAVE/CALOFIT/
49  C  C
50        ICONT = 0        ICONT = 0
# Line 59  C LAYERS WITH SIGNAL . FOR THE FIT THE C Line 63  C LAYERS WITH SIGNAL . FOR THE FIT THE C
63  C HIGHEST DETECTED ENERGY IS USED .  C HIGHEST DETECTED ENERGY IS USED .
64  C  C
65        DO M = 1,2        DO M = 1,2
66             SA = 0
67             SB = 0
68             SVAR = 0
69             FMODE(M) = 0
70     10      CONTINUE        
71           ICONT = 0           ICONT = 0
72           CALL VZERO(X,NPLA)           CALL VZERO(X,NPLA)
73           CALL VZERO(Y,NPLA)           CALL VZERO(Y,NPLA)
# Line 70  C     Line 79  C    
79              ELSE              ELSE
80                 X(I) = PIANO(I)                                   X(I) = PIANO(I)                  
81              ENDIF              ENDIF
 C            X(I) = -(I-1) * PIANO  
82              Y(I) = 0.              Y(I) = 0.
83              IF (NCL(M,I).GE.1) THEN  C
84                 ICONT = ICONT + 1  C
85                 Y(I) = CLUS(M,I,1)  C
86                 W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2.              IF (FMODE(M).EQ.0) THEN
87                 IF (W(I).GT.2000.) W(I) = 2000.                 IF (NCL(M,I).GE.1) THEN
88                      ICONT = ICONT + 1
89                      Y(I) = CLUS(M,I,1)
90                      W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2.
91                      IF (W(I).GT.2000.) THEN
92                         W(I) = 2000.
93    C                     Y(I) = 0.
94    C                     ICONT = ICONT -1
95                      ENDIF
96                   ENDIF
97                ENDIF
98    C
99    C More importance to weigth and less cluster per plane
100    C
101                IF(FMODE(M).EQ.1) THEN
102                   IF (NCL(M,I).GE.1.AND.NCL(M,I).LE.2) THEN
103                      ICONT = ICONT + 1
104                      Y(I) = CLUS(M,I,1)
105                      W(I) = ((CLUS(M,I,1+NCHA/2)**0.29))**2.
106                   ENDIF
107                   IF (W(I).GT.2000.) THEN
108                      W(I) = 2000.
109    c                  Y(I) = 0.
110    c                  ICONT = ICONT -1
111                   ENDIF
112                ENDIF
113    c
114    c One cluster per plane
115    c
116                IF(FMODE(M).EQ.2) THEN
117                   IF (NCL(M,I).EQ.1) THEN
118                      ICONT = ICONT + 1
119                      Y(I) = CLUS(M,I,1)
120                      W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2.
121                   ENDIF
122              ENDIF              ENDIF
123              if (Y(I).eq.0.or.W(I).eq.2000.) NPFIT(M) = NPFIT(M) - 1  c            if (Y(I).eq.0.or.W(I).eq.2000.) NPFIT(M) = NPFIT(M) - 1
124                if (Y(I).eq.0.) NPFIT(M) = NPFIT(M) - 1
125           ENDDO           ENDDO
126  C      C    
127                    
128           A = 0.           A = 0.
129           B = 0.           B = 0.
130           IF (ICONT.GE.2) CALL LFITW(X,Y,W,NPLA,0,A,B,VAR)           VAR = 0.
131    c         print *,' icont = ',icont
132             IF (ICONT.GE.2) THEN
133                CALL LFITW(X,Y,W,NPLA,0,A,B,VAR)
134             ELSE
135                NPFIT(M) = 0
136             ENDIF
137    C
138    C TRY A BETTER FIT IF VAR IS BIG ON THE FIRST TRY
139    C
140             IF ((ABS(VAR).GT.FLIMIT.OR.VAR.EQ.0.).AND.FMODE(M).EQ.0) THEN
141                SVAR = VAR
142                SB = B
143                SA = A
144                SNPFIT = NPFIT(M)
145                NPFIT(M) = NPLA
146                FMODE(M) = 1
147                GOTO 10
148             ENDIF
149    C
150    C TRY AGAIN IF STILL BAD AND WE HAVE AT LEAST 15 POINT TO MAKE THE FIT
151    C
152             IF ((ABS(VAR).GT.FLIMIT2.OR.VAR.EQ.0.).AND.FMODE(M).EQ.1
153         &        .AND.NPFIT(M).GT.14) THEN
154                SSVAR = VAR
155                SSB = B
156                SSA = A
157                SSNPFIT = NPFIT(M)
158                NPFIT(M) = NPLA
159                FMODE(M) = 2
160                GOTO 10
161             ENDIF          
162    C
163    C IF WE ARE AT THE THIRD TRY AND THE FIT IS WORST THAN THE SECOND TRY TAKE THE FIRST TRY
164    C
165             IF (FMODE(M).EQ.2) THEN
166                IF (ABS(VAR).GT.ABS(SSVAR).OR.ABS(VAR).EQ.0.
167         &           .OR.NPFIT(M).LE.4) THEN
168                   FMODE(M) = 1
169                   VAR=SSVAR
170                   B = SSB
171                   A = SSA
172                   NPFIT(M) = SSNPFIT
173                ENDIF
174             ENDIF
175    C
176    C IF THE SECOND TRY AND THE FIT IS WORST THAN THE FIRST TRY TAKE THE FIRST TRY
177    C
178             IF (FMODE(M).EQ.1) THEN
179                IF (ABS(VAR).GT.ABS(SVAR).OR.ABS(VAR).EQ.0.) THEN
180                   FMODE(M) = 0
181                   VAR=SVAR
182                   B = SB
183                   A = SA
184                   NPFIT(M) = SNPFIT
185                ENDIF
186             ENDIF
187    C
188           VARFIT(M) = VAR           VARFIT(M) = VAR
189           IF (M.EQ.1) CX = B           IF (M.EQ.1) CX = B
190           IF (M.EQ.2) CY = B           IF (M.EQ.2) CY = B
 C      
191           DEVIA(M) = A           DEVIA(M) = A
192           TG(M) = A           TG(M) = A
193    C
194        ENDDO        ENDDO
195  C  C
196    

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.23