/[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.2 - (hide annotations) (download)
Mon Jan 22 09:17:01 2007 UTC (17 years, 10 months ago) by mocchiut
Branch: MAIN
Changes since 1.1: +112 -13 lines
Calorimeter selftrigger extensions upgrade

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

  ViewVC Help
Powered by ViewVC 1.1.23