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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations) (download)
Tue Jan 23 11:52:26 2007 UTC (17 years, 10 months ago) by mocchiut
Branch: MAIN
Changes since 1.3: +16 -12 lines
OrbitalInfo updated, small changes in calo code

1 mocchiut 1.1 SUBROUTINE DIRECTION(DEVIA)
2     C-----------------------------------------------------
3     C-
4     C- Purpose and Methods : PROGRAM THAT DETERMINES THE
5     C- TRACK PROJECTIONS ON THE PLANE XZ AND YZ USING
6     C- ONLY CALORIMETER INFORMATION .
7     C-
8     C- Inputs :
9     C- Outputs :
10     C- Controls:
11     C-
12     C- Created 9-FEB-1994 MIRKO BOEZIO
13     C- Modified 21-FEB-2003 MIRKO BOEZIO . ADAPTED TO
14     C- BE USED FOR PAMELA CALORIMETER .
15     C-
16     C------------------------------------------------------
17    
18     IMPLICIT NONE
19    
20     INCLUDE 'INTEST.TXT'
21    
22 mocchiut 1.3 REAL FLIMIT, FLIMIT2
23 mocchiut 1.1 INTEGER NVAR,NPAR
24     PARAMETER (NVAR=1,NPAR=2)
25 mocchiut 1.4 c PARAMETER (FLIMIT=10000)
26     c PARAMETER (FLIMIT2=2000)
27     PARAMETER (FLIMIT=500)
28     PARAMETER (FLIMIT2=500)
29 mocchiut 1.1 REAL X(NPLA),Y(NPLA),W(NPLA)
30     REAL DEVIA(2),TG(2)
31     REAL BAR(2,NPLA)
32     REAL A, B, VAR
33 mocchiut 1.2 REAL SA, SB, SVAR
34     REAL SSA, SSB, SSVAR
35 mocchiut 1.1 REAL PIANO(22)
36     REAL VARFIT(2)
37    
38 mocchiut 1.2 INTEGER ICONT, M, I, SNPFIT,SSNPFIT
39     INTEGER NPFIT(2), CHTRACK,IWPL(2)
40 mocchiut 1.1
41     INTEGER IBAR(2,NPLA)
42     COMMON/ANGOLO/BAR,IBAR
43     SAVE /ANGOLO/
44    
45     REAL CX, CY
46     COMMON/WHERE/CX,CY,PIANO
47     SAVE /WHERE/
48    
49 mocchiut 1.2 COMMON/CALOFIT/VARFIT,NPFIT,IWPL,CHTRACK
50 mocchiut 1.1 SAVE/CALOFIT/
51     C
52     ICONT = 0
53     DEVIA(1) = 0.
54     DEVIA(2) = 0.
55     CX = 0.
56     CY = 0.
57     C
58     NPFIT(1) = NPLA
59     NPFIT(2) = NPLA
60     VARFIT(1) = 0.
61     VARFIT(2) = 0.
62     C
63     C THE FIT IS PERFORMED WHEN THERE ARE AT LEAST TWO
64     C LAYERS WITH SIGNAL . FOR THE FIT THE CLUSTER WITH THE
65     C HIGHEST DETECTED ENERGY IS USED .
66     C
67     DO M = 1,2
68 mocchiut 1.2 SA = 0
69     SB = 0
70     SVAR = 0
71     FMODE(M) = 0
72     10 CONTINUE
73 mocchiut 1.1 ICONT = 0
74     CALL VZERO(X,NPLA)
75     CALL VZERO(Y,NPLA)
76     CALL VZERO(W,NPLA)
77     DO I = 1,NPLA
78     C
79     IF (MOD(M,2).EQ.0) THEN
80     X(I) = PIANO(I) - 5.81
81     ELSE
82     X(I) = PIANO(I)
83     ENDIF
84     Y(I) = 0.
85 mocchiut 1.2 C
86     C
87     C
88     IF (FMODE(M).EQ.0) THEN
89     IF (NCL(M,I).GE.1) THEN
90     ICONT = ICONT + 1
91     Y(I) = CLUS(M,I,1)
92     W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2.
93     IF (W(I).GT.2000.) THEN
94     W(I) = 2000.
95     C Y(I) = 0.
96     C ICONT = ICONT -1
97     ENDIF
98     ENDIF
99     ENDIF
100     C
101 mocchiut 1.4 C No weigth and less cluster per plane
102 mocchiut 1.2 C
103     IF(FMODE(M).EQ.1) THEN
104     IF (NCL(M,I).GE.1.AND.NCL(M,I).LE.2) THEN
105     ICONT = ICONT + 1
106     Y(I) = CLUS(M,I,1)
107 mocchiut 1.4 c W(I) = ((CLUS(M,I,1+NCHA/2)**0.29))**2.
108     W(I) = 1.
109 mocchiut 1.2 ENDIF
110 mocchiut 1.4 c IF (W(I).GT.2000.) THEN
111     cx W(I) = 2000.
112     cc Y(I) = 0.
113     cc ICONT = ICONT -1
114     c ENDIF
115 mocchiut 1.2 ENDIF
116     c
117     c One cluster per plane
118     c
119     IF(FMODE(M).EQ.2) THEN
120     IF (NCL(M,I).EQ.1) THEN
121     ICONT = ICONT + 1
122     Y(I) = CLUS(M,I,1)
123 mocchiut 1.4 c W(I) = ((CLUS(M,I,1+NCHA/2)**0.79))**2.
124     W(I) = 1.
125 mocchiut 1.2 ENDIF
126 mocchiut 1.1 ENDIF
127 mocchiut 1.2 c if (Y(I).eq.0.or.W(I).eq.2000.) NPFIT(M) = NPFIT(M) - 1
128     if (Y(I).eq.0.) NPFIT(M) = NPFIT(M) - 1
129 mocchiut 1.1 ENDDO
130     C
131    
132     A = 0.
133     B = 0.
134 mocchiut 1.2 VAR = 0.
135     c print *,' icont = ',icont
136     IF (ICONT.GE.2) THEN
137     CALL LFITW(X,Y,W,NPLA,0,A,B,VAR)
138     ELSE
139     NPFIT(M) = 0
140     ENDIF
141     C
142     C TRY A BETTER FIT IF VAR IS BIG ON THE FIRST TRY
143     C
144     IF ((ABS(VAR).GT.FLIMIT.OR.VAR.EQ.0.).AND.FMODE(M).EQ.0) THEN
145     SVAR = VAR
146     SB = B
147     SA = A
148     SNPFIT = NPFIT(M)
149     NPFIT(M) = NPLA
150     FMODE(M) = 1
151     GOTO 10
152     ENDIF
153     C
154 mocchiut 1.4 C TRY AGAIN IF STILL BAD AND WE HAVE AT LEAST 10 POINT TO MAKE THE FIT
155 mocchiut 1.2 C
156 mocchiut 1.3 IF ((ABS(VAR).GT.FLIMIT2.OR.VAR.EQ.0.).AND.FMODE(M).EQ.1
157 mocchiut 1.4 & .AND.SNPFIT.GT.5) THEN
158 mocchiut 1.2 SSVAR = VAR
159     SSB = B
160     SSA = A
161     SSNPFIT = NPFIT(M)
162     NPFIT(M) = NPLA
163     FMODE(M) = 2
164     GOTO 10
165     ENDIF
166     C
167     C IF WE ARE AT THE THIRD TRY AND THE FIT IS WORST THAN THE SECOND TRY TAKE THE FIRST TRY
168     C
169     IF (FMODE(M).EQ.2) THEN
170     IF (ABS(VAR).GT.ABS(SSVAR).OR.ABS(VAR).EQ.0.
171     & .OR.NPFIT(M).LE.4) THEN
172     FMODE(M) = 1
173     VAR=SSVAR
174     B = SSB
175     A = SSA
176     NPFIT(M) = SSNPFIT
177     ENDIF
178     ENDIF
179     C
180     C IF THE SECOND TRY AND THE FIT IS WORST THAN THE FIRST TRY TAKE THE FIRST TRY
181     C
182     IF (FMODE(M).EQ.1) THEN
183     IF (ABS(VAR).GT.ABS(SVAR).OR.ABS(VAR).EQ.0.) THEN
184     FMODE(M) = 0
185     VAR=SVAR
186     B = SB
187     A = SA
188     NPFIT(M) = SNPFIT
189     ENDIF
190     ENDIF
191     C
192 mocchiut 1.1 VARFIT(M) = VAR
193     IF (M.EQ.1) CX = B
194     IF (M.EQ.2) CY = B
195     DEVIA(M) = A
196     TG(M) = A
197 mocchiut 1.2 C
198 mocchiut 1.1 ENDDO
199     C
200    
201     500 CONTINUE
202     RETURN
203     END

  ViewVC Help
Powered by ViewVC 1.1.23