/[PAMELA software]/DarthVader/ToFLevel2/src/tofl2com.for
ViewVC logotype

Annotation of /DarthVader/ToFLevel2/src/tofl2com.for

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (hide annotations) (download)
Tue Aug 4 14:01:32 2009 UTC (15 years, 4 months ago) by mocchiut
Branch: MAIN
Changes since 1.10: +2 -1 lines
Changed to work with GCC 4.x (gfortran) + ROOT >= 5.24

1 mocchiut 1.6
2 mocchiut 1.7 C******************************************************************************
3     C
4     C 08-12-06 WM: adc_c-bug : The raw ADc value was multiplied with cos(theta)
5     C and AFTER that there was an if statement "if tof32(right,i,iadc) < 4095"
6     C
7     C jan-07 GF: ADCflags(4,12) inserted to flag artificial ADC values
8     C jan-07 WM: artificial ADC values created using attenuation calibration
9     C jan-07 WM: modified xtofpos flag "101". xtofpos must be inside physical
10     C dimension of the paddle +/- 10 cm
11     C jan-07 WM: if xtofpos=101 then this paddle is not used for beta
12     C calculation
13     C jan-07 WM: the definition for a "hit" is changed: Now we must have a
14     C valid TDC signal on both sides
15     C jan-07 WM: flag for PMTs #10 and #35 added, TDC=819 due to bit-shift
16     C jan-07 WM: bug removed: in some cases tdc_tw was calculated due to a
17     C leftover "xhelp" value
18     C apr-07 WM: attenuation fit curve is now a double exponential fit
19     C conversion from raw ADC to pC using calibration function
20     C variables xtr_tof and ytr_tof inserted (filled with default)
21     C jan-08 WM: Major Update: Time Walk correction introduced
22     C Additionalyl we use the information from the "check_charge"
23     C function to fill artificial ADC values and make small corrections
24     C to the k1-parameter (for Z>2)
25     C feb-08 WM: Calculation of beta(13) changed: First a mean beta is calculated,
26     C then in a second step we check the residuals of the single
27     C measurements, reject if > 10 sigma, calculate chi2 and "quality"
28     C beta is taken as good if chi2<20 and quality>10
29 pam-de 1.8 C mar-08 WM: Call to "newbeta" changed, now a flag tells the function if the
30     C call comes from "tofl2com" or form "toftrack"
31     C mar-08 WM: Bug found in dEdx if check_charge>1
32 pamelats 1.9 C oct-08 WM: Calculation of zenith angle debugged, sometimes strange values
33     C were possible
34 mocchiut 1.7 C******************************************************************************
35 mocchiut 1.4
36 mocchiut 1.1 INTEGER FUNCTION TOFL2COM()
37     c
38     IMPLICIT NONE
39     C
40     include 'input_tof.txt'
41     include 'output_tof.txt'
42     include 'tofcomm.txt'
43    
44     INTEGER icounter
45     DATA icounter / 0/
46    
47     LOGICAL check
48     REAL secure
49    
50 mocchiut 1.7 INTEGER j,hitvec(6)
51 mocchiut 1.1
52     REAL dx,dy,dr,ds
53 pamelats 1.9 REAL yhelp,yhelp1,yhelp2,xhelp,xhelp1,xhelp2
54 mocchiut 1.7 REAL c1,c2
55 mocchiut 1.1
56 mocchiut 1.7 C REAL sw,sxw,w_i
57     C INTEGER icount
58     C REAL beta_mean
59 mocchiut 1.4
60 mocchiut 1.1 INTEGER tof11_j,tof21_j,tof31_j
61     INTEGER tof12_j,tof22_j,tof32_j
62    
63     c value for status of each PM-data
64     c first index : 1 = left, 2 = right
65     c second index : 1... number of paddle
66     INTEGER tof11_event(2,8),tof12_event(2,6)
67     INTEGER tof21_event(2,2),tof22_event(2,2)
68     INTEGER tof31_event(2,3),tof32_event(2,3)
69    
70 mocchiut 1.7
71     REAL y_coor_lin11c(8,2),x_coor_lin12c(6,2)
72     REAL x_coor_lin21c(2,2),y_coor_lin22c(2,2)
73     REAL y_coor_lin31c(3,2),x_coor_lin32c(3,2)
74    
75     DATA y_coor_lin11c(1,1),y_coor_lin11c(1,2) /-20.66,-2.497/
76     DATA y_coor_lin11c(2,1),y_coor_lin11c(2,2) /-9.10, -2.52/
77     DATA y_coor_lin11c(3,1),y_coor_lin11c(3,2) /-24.07,-2.12/
78     DATA y_coor_lin11c(4,1),y_coor_lin11c(4,2) /-13.40,-2.47/
79     DATA y_coor_lin11c(5,1),y_coor_lin11c(5,2) /-31.07,-2.32/
80     DATA y_coor_lin11c(6,1),y_coor_lin11c(6,2) /-21.69,-2.63/
81     DATA y_coor_lin11c(7,1),y_coor_lin11c(7,2) /-12.37,-2.65/
82     DATA y_coor_lin11c(8,1),y_coor_lin11c(8,2) /-10.81,-3.15/
83    
84     DATA x_coor_lin12c(1,1),x_coor_lin12c(1,2) /12.96, -2.65/
85     DATA x_coor_lin12c(2,1),x_coor_lin12c(2,2) /17.12,-2.44/
86     DATA x_coor_lin12c(3,1),x_coor_lin12c(3,2) /7.26, -1.98/
87     DATA x_coor_lin12c(4,1),x_coor_lin12c(4,2) /-22.52,-2.27/
88     DATA x_coor_lin12c(5,1),x_coor_lin12c(5,2) /-18.54,-2.28/
89     DATA x_coor_lin12c(6,1),x_coor_lin12c(6,2) /-7.67,-2.15/
90    
91     DATA x_coor_lin21c(1,1),x_coor_lin21c(1,2) /22.56,-1.56/
92     DATA x_coor_lin21c(2,1),x_coor_lin21c(2,2) /13.94,-1.56/
93    
94     DATA y_coor_lin22c(1,1),y_coor_lin22c(1,2) /-24.24,-2.23/
95     DATA y_coor_lin22c(2,1),y_coor_lin22c(2,2) /-45.99,-1.68/
96    
97     DATA y_coor_lin31c(1,1),y_coor_lin31c(1,2) /-22.99,-3.54/
98     DATA y_coor_lin31c(2,1),y_coor_lin31c(2,2) /-42.28,-4.10/
99     DATA y_coor_lin31c(3,1),y_coor_lin31c(3,2) /-41.29,-3.69/
100    
101     DATA x_coor_lin32c(1,1),x_coor_lin32c(1,2) /0.961, -3.22/
102     DATA x_coor_lin32c(2,1),x_coor_lin32c(2,2) /4.98,-3.48/
103     DATA x_coor_lin32c(3,1),x_coor_lin32c(3,2) /-22.08,-3.37/
104    
105 mocchiut 1.1
106 mocchiut 1.4 REAL theta13
107 mocchiut 1.1 C-- DATA ZTOF/53.74,53.04,23.94,23.44,-23.49,-24.34/ !Sergio 9.05.2006
108     REAL tofarm12
109     PARAMETER (tofarm12 = 29.70) ! from 53.39 to 23.69
110     REAL tofarm23
111     PARAMETER (tofarm23 = 47.61) ! from 23.69 to -23.92
112     REAL tofarm13
113     PARAMETER (tofarm13 = 77.31) ! from 53.39 to -23.92
114 mocchiut 1.4
115     REAL hepratio
116 mocchiut 1.1
117     INTEGER ihelp
118 mocchiut 1.7 REAL xkorr,btemp(12)
119    
120     REAL atten,pc_adc,check_charge,newbeta
121    
122     INTEGER IZ
123     REAL k1corrA1,k1corrB1,k1corrC1
124    
125 mocchiut 1.1
126 mocchiut 1.7 INTEGER ifst
127     DATA ifst /0/
128 mocchiut 1.6
129 mocchiut 1.1 C---------------------------------------
130     C
131     C Begin !
132     C
133     TOFL2COM = 0
134     C
135     C CALCULATE COMMON VARIABLES
136     C
137 mocchiut 1.7 C-------------------------------------------------------------------
138 mocchiut 1.1
139 mocchiut 1.7 if (ifst.eq.0) then
140    
141     ifst=1
142 mocchiut 1.1
143 mocchiut 1.7 C amplitude has to be 'secure' higher than pedestal for an adc event
144     secure = 2.
145 mocchiut 1.1
146 mocchiut 1.4 C ratio between helium and proton ca. 4
147 mocchiut 1.7 hepratio = 4. !
148     offset = 1
149     slope = 2
150     left = 1
151     right = 2
152     none_ev = 0
153     none_find = 0
154     tdc_ev = 1
155     adc_ev = 1
156     itdc = 1
157     iadc = 2
158    
159     C--- These are the corrections to the k1-value for Z>2 particles
160     k1corrA1 = 0.
161     k1corrB1 = -5.0
162     k1corrC1= 8.0
163    
164    
165     ENDIF
166     C---------------------------------------------------------------------
167    
168     icounter = icounter + 1
169    
170 mocchiut 1.1
171     do i=1,13
172     betatof_a(i) = 100. ! As in "troftrk.for"
173     enddo
174    
175 mocchiut 1.7 do i=1,6
176     hitvec(i) = -1
177     enddo
178    
179 mocchiut 1.1 do i=1,4
180     do j=1,12
181     adctof_c(i,j) = 1000.
182     enddo
183     enddo
184    
185    
186     do i=1,4
187     do j=1,12
188     tdc_c(i,j) = 4095.
189     enddo
190     enddo
191    
192    
193 mocchiut 1.2 do i=1,12
194     do j=1,4
195     tofmask(j,i) = 0
196     enddo
197     enddo
198    
199    
200 mocchiut 1.4 c gf adc falg:
201     do i=1,4
202     do j=1,12
203     adcflagtof(i,j) = 0
204     enddo
205     enddo
206    
207     c gf tdc falg:
208     do i=1,4
209     do j=1,12
210     tdcflagtof(i,j) = 0
211     enddo
212     enddo
213    
214 mocchiut 1.6
215     C--- Fill xtr_tof and ytr_tof: positions from tracker at ToF layers
216     C--- since this is standalone ToF fill with default values
217     do j=1,6
218     xtr_tof(j) = 101.
219     ytr_tof(j) = 101.
220     enddo
221    
222 mocchiut 1.1 c the calibration files are read in the main program from xxx_tofcalib.rz
223    
224     c-------------------------get ToF data --------------------------------
225    
226     c put the adc and tdc values from ntuple into tofxx(i,j,k) variables
227 mocchiut 1.6 c adc valueas are then pC
228 mocchiut 1.1
229     do j=1,8
230 mocchiut 1.6 tof11(1,j,2) = pc_adc(adc(ch11a(j),hb11a(j)))
231     tof11(2,j,2) = pc_adc(adc(ch11b(j),hb11b(j)))
232     tof11(1,j,1) = (tdc(ch11a(j),hb11a(j)))
233     tof11(2,j,1) = (tdc(ch11b(j),hb11b(j)))
234 mocchiut 1.1 enddo
235    
236    
237     do j=1,6
238 mocchiut 1.6 tof12(1,j,2) = pc_adc(adc(ch12a(j),hb12a(j)))
239     tof12(2,j,2) = pc_adc(adc(ch12b(j),hb12b(j)))
240     tof12(1,j,1) = (tdc(ch12a(j),hb12a(j)))
241     tof12(2,j,1) = (tdc(ch12b(j),hb12b(j)))
242 mocchiut 1.1 enddo
243    
244     do j=1,2
245 mocchiut 1.6 tof21(1,j,2) = pc_adc(adc(ch21a(j),hb21a(j)))
246     tof21(2,j,2) = pc_adc(adc(ch21b(j),hb21b(j)))
247     tof21(1,j,1) = (tdc(ch21a(j),hb21a(j)))
248     tof21(2,j,1) = (tdc(ch21b(j),hb21b(j)))
249 mocchiut 1.1 enddo
250    
251     do j=1,2
252 mocchiut 1.6 tof22(1,j,2) = pc_adc(adc(ch22a(j),hb22a(j)))
253     tof22(2,j,2) = pc_adc(adc(ch22b(j),hb22b(j)))
254     tof22(1,j,1) = (tdc(ch22a(j),hb22a(j)))
255     tof22(2,j,1) = (tdc(ch22b(j),hb22b(j)))
256 mocchiut 1.1 enddo
257    
258     do j=1,3
259 mocchiut 1.6 tof31(1,j,2) = pc_adc(adc(ch31a(j),hb31a(j)))
260     tof31(2,j,2) = pc_adc(adc(ch31b(j),hb31b(j)))
261     tof31(1,j,1) = (tdc(ch31a(j),hb31a(j)))
262     tof31(2,j,1) = (tdc(ch31b(j),hb31b(j)))
263 mocchiut 1.1 enddo
264    
265     do j=1,3
266 mocchiut 1.6 tof32(1,j,2) = pc_adc(adc(ch32a(j),hb32a(j)))
267     tof32(2,j,2) = pc_adc(adc(ch32b(j),hb32b(j)))
268     tof32(1,j,1) = (tdc(ch32a(j),hb32a(j)))
269     tof32(2,j,1) = (tdc(ch32b(j),hb32b(j)))
270 mocchiut 1.1 enddo
271    
272     C----------------------------------------------------------------------
273    
274     DO i = 1,8
275     if (abs(tof11(1,i,itdc)).gt.10000.) tof11(1,i,itdc)= 10000.
276     if (abs(tof11(2,i,itdc)).gt.10000.) tof11(2,i,itdc)= 10000.
277     if (abs(tof11(1,i,iadc)).gt.10000.) tof11(1,i,iadc)= 10000.
278     if (abs(tof11(2,i,iadc)).gt.10000.) tof11(2,i,iadc)= 10000.
279     ENDDO
280    
281     DO i = 1,6
282     if (abs(tof12(1,i,itdc)).gt.10000.) tof12(1,i,itdc)= 10000.
283     if (abs(tof12(2,i,itdc)).gt.10000.) tof12(2,i,itdc)= 10000.
284     if (abs(tof12(1,i,iadc)).gt.10000.) tof12(1,i,iadc)= 10000.
285     if (abs(tof12(2,i,iadc)).gt.10000.) tof12(2,i,iadc)= 10000.
286     ENDDO
287    
288    
289     DO i = 1,2
290     if (abs(tof21(1,i,itdc)).gt.10000.) tof21(1,i,itdc)= 10000.
291     if (abs(tof21(2,i,itdc)).gt.10000.) tof21(2,i,itdc)= 10000.
292     if (abs(tof21(1,i,iadc)).gt.10000.) tof21(1,i,iadc)= 10000.
293     if (abs(tof21(2,i,iadc)).gt.10000.) tof21(2,i,iadc)= 10000.
294     ENDDO
295    
296     DO i = 1,2
297     if (abs(tof22(1,i,itdc)).gt.10000.) tof22(1,i,itdc)= 10000.
298     if (abs(tof22(2,i,itdc)).gt.10000.) tof22(2,i,itdc)= 10000.
299     if (abs(tof22(1,i,iadc)).gt.10000.) tof22(1,i,iadc)= 10000.
300     if (abs(tof22(2,i,iadc)).gt.10000.) tof22(2,i,iadc)= 10000.
301     ENDDO
302    
303     DO i = 1,3
304     if (abs(tof31(1,i,itdc)).gt.10000.) tof31(1,i,itdc)= 10000.
305     if (abs(tof31(2,i,itdc)).gt.10000.) tof31(2,i,itdc)= 10000.
306     if (abs(tof31(1,i,iadc)).gt.10000.) tof31(1,i,iadc)= 10000.
307     if (abs(tof31(2,i,iadc)).gt.10000.) tof31(2,i,iadc)= 10000.
308     ENDDO
309    
310     DO i = 1,3
311     if (abs(tof32(1,i,itdc)).gt.10000.) tof32(1,i,itdc)= 10000.
312     if (abs(tof32(2,i,itdc)).gt.10000.) tof32(2,i,itdc)= 10000.
313     if (abs(tof32(1,i,iadc)).gt.10000.) tof32(1,i,iadc)= 10000.
314     if (abs(tof32(2,i,iadc)).gt.10000.) tof32(2,i,iadc)= 10000.
315     ENDDO
316    
317 mocchiut 1.4 C----------------------------------------------------------------------
318     C------------------ set ADC & TDC flag = 0 ------------------------
319     C----------------------------------------------------------------------
320    
321     do j=1,8
322     if (adc(ch11a(j),hb11a(j)).LT.4096)adcflagtof(ch11a(j),hb11a(j))=0
323     if (adc(ch11b(j),hb11b(j)).LT.4096)adcflagtof(ch11b(j),hb11b(j))=0
324     if (tdc(ch11a(j),hb11a(j)).LT.4096)tdcflagtof(ch11a(j),hb11a(j))=0
325     if (tdc(ch11b(j),hb11b(j)).LT.4096)tdcflagtof(ch11b(j),hb11b(j))=0
326     enddo
327     do j=1,6
328     if (adc(ch12a(j),hb12a(j)).LT.4096)adcflagtof(ch12a(j),hb12a(j))=0
329     if (adc(ch12b(j),hb12b(j)).LT.4096)adcflagtof(ch12b(j),hb12b(j))=0
330     if (tdc(ch12a(j),hb12a(j)).LT.4096)tdcflagtof(ch12a(j),hb12a(j))=0
331     if (tdc(ch12b(j),hb12b(j)).LT.4096)tdcflagtof(ch12b(j),hb12b(j))=0
332     enddo
333     do j=1,2
334     if (adc(ch21a(j),hb21a(j)).LT.4096)adcflagtof(ch21a(j),hb21a(j))=0
335     if (adc(ch21b(j),hb21b(j)).LT.4096)adcflagtof(ch21b(j),hb21b(j))=0
336     if (tdc(ch21a(j),hb21a(j)).LT.4096)tdcflagtof(ch21a(j),hb21a(j))=0
337     if (tdc(ch21b(j),hb21b(j)).LT.4096)tdcflagtof(ch21b(j),hb21b(j))=0
338     enddo
339     do j=1,2
340     if (adc(ch22a(j),hb22a(j)).LT.4096)adcflagtof(ch22a(j),hb22a(j))=0
341     if (adc(ch22b(j),hb22b(j)).LT.4096)adcflagtof(ch22b(j),hb22b(j))=0
342     if (tdc(ch22a(j),hb22a(j)).LT.4096)tdcflagtof(ch22a(j),hb22a(j))=0
343     if (tdc(ch22b(j),hb22b(j)).LT.4096)tdcflagtof(ch22b(j),hb22b(j))=0
344     enddo
345     do j=1,3
346     if (adc(ch31a(j),hb31a(j)).LT.4096)adcflagtof(ch31a(j),hb31a(j))=0
347     if (adc(ch31b(j),hb31b(j)).LT.4096)adcflagtof(ch31b(j),hb31b(j))=0
348     if (tdc(ch31a(j),hb31a(j)).LT.4096)tdcflagtof(ch31a(j),hb31a(j))=0
349     if (tdc(ch31b(j),hb31b(j)).LT.4096)tdcflagtof(ch31b(j),hb31b(j))=0
350     enddo
351     do j=1,3
352     if (adc(ch32a(j),hb32a(j)).LT.4096)adcflagtof(ch32a(j),hb32a(j))=0
353     if (adc(ch32b(j),hb32b(j)).LT.4096)adcflagtof(ch32b(j),hb32b(j))=0
354     if (tdc(ch32a(j),hb32a(j)).LT.4096)tdcflagtof(ch32a(j),hb32a(j))=0
355     if (tdc(ch32b(j),hb32b(j)).LT.4096)tdcflagtof(ch32b(j),hb32b(j))=0
356     enddo
357    
358 mocchiut 1.1 C----------------------------------------------------------------
359 mocchiut 1.4 C---------- Check PMTs 10 and 35 for strange TDC values----------
360     C----------------------------------------------------------------
361    
362     C---- S116A TDC=819
363     if (tof11(1,6,1).EQ.819) then
364     tof11(1,6,1) = 4095
365     tdcflagtof(ch11a(6),hb11a(6))=2
366     endif
367    
368     C---- S222B TDC=819
369     if (tof22(2,2,1).EQ.819) then
370     tof22(2,2,1) = 4095
371     tdcflagtof(ch22b(2),hb22b(2))=2
372     endif
373    
374     C----------------------------------------------------------------
375     C------------ Check Paddles for hits -----------------------
376     C------ a "hit" means TDC values<4095 on both sides ------------
377 mocchiut 1.1 C----------------------------------------------------------------
378    
379     C upper tof S11
380     DO i = 1,8
381    
382     DO j = 1,2
383     tof11_event(j,i) = none_ev
384     IF ((tof11(j,i,itdc).LT.2000).AND.(tof11(j,i,itdc).GT.100))
385     + tof11_event(j,i) = tof11_event(j,i) + tdc_ev
386     ENDDO
387     ENDDO
388    
389     c find single paddle in upper tof with tdc and adc signal
390     tof11_i = none_find
391     tof11_j = none_find
392     check = .TRUE.
393     DO i = 1, 8
394     IF ((tof11_event(left,i).GE.1).AND.(tof11_event(right,i).GE.1))
395     + THEN
396     c check if an other paddle has also an event - then set flag
397     tof11_j = tof11_j + 2**(i-1)
398     IF (check.EQV..TRUE.) THEN
399     IF (tof11_i.EQ.none_find) THEN
400     tof11_i = i
401     ELSE
402     tof11_i = -1
403     check = .FALSE.
404     ENDIF
405     ENDIF
406     ENDIF
407     ENDDO
408    
409    
410     C upper tof S12
411     DO i = 1,6
412     DO j = 1,2
413     tof12_event(j,i) = none_ev
414     IF ((tof12(j,i,itdc).LT.2000).AND.(tof12(j,i,itdc).GT.100))
415     + tof12_event(j,i) = tof12_event(j,i) + tdc_ev
416     ENDDO
417     ENDDO
418    
419     c find single paddle in upper tof with tdc and adc signal
420     tof12_i = none_find
421     tof12_j = none_find
422     check = .TRUE.
423     DO i = 1, 6
424     IF ((tof12_event(left,i).GE.1).AND.(tof12_event(right,i).GE.1))
425     + THEN
426     c check if an other paddle has also an event - then set flag
427     tof12_j = tof12_j + 2**(i-1)
428     IF (check.EQV..TRUE.) THEN
429     IF (tof12_i.EQ.none_find) THEN
430     tof12_i = i
431     ELSE
432     tof12_i = -1
433     check = .FALSE.
434     ENDIF
435     ENDIF
436     ENDIF
437     ENDDO
438    
439    
440     C middle tof S21
441     DO i = 1,2
442     DO j = 1,2
443     tof21_event(j,i) = none_ev
444     IF ((tof21(j,i,itdc).LT.2000).AND.(tof21(j,i,itdc).GT.100))
445     + tof21_event(j,i) = tof21_event(j,i) + tdc_ev
446     ENDDO
447     ENDDO
448    
449     c find single paddle in upper tof with tdc and adc signal
450     tof21_i = none_find
451     tof21_j = none_find
452     check = .TRUE.
453     DO i = 1, 2
454     IF ((tof21_event(left,i).GE.1).AND.(tof21_event(right,i).GE.1))
455     + THEN
456     c check if an other paddle has also an event - then set flag
457     tof21_j = tof21_j + 2**(i-1)
458     IF (check.EQV..TRUE.) THEN
459     IF (tof21_i.EQ.none_find) THEN
460     tof21_i = i
461     ELSE
462     tof21_i = -1
463     check = .FALSE.
464     ENDIF
465     ENDIF
466     ENDIF
467     ENDDO
468    
469     C middle tof S22
470     DO i = 1,2
471     DO j = 1,2
472     tof22_event(j,i) = none_ev
473     IF ((tof22(j,i,itdc).LT.2000).AND.(tof22(j,i,itdc).GT.100))
474     + tof22_event(j,i) = tof22_event(j,i) + tdc_ev
475     ENDDO
476     ENDDO
477    
478     c find single paddle in upper tof with tdc and adc signal
479     tof22_i = none_find
480     tof22_j = none_find
481     check = .TRUE.
482     DO i = 1, 2
483     IF ((tof22_event(left,i).GE.1).AND.(tof22_event(right,i).GE.1))
484     + THEN
485     c check if an other paddle has also an event - then set flag
486     tof22_j = tof22_j + 2**(i-1)
487     IF (check.EQV..TRUE.) THEN
488     IF (tof22_i.EQ.none_find) THEN
489     tof22_i = i
490     ELSE
491     tof22_i = -1
492     check = .FALSE.
493     ENDIF
494     ENDIF
495     ENDIF
496     ENDDO
497    
498    
499     C bottom tof S31
500     DO i = 1,3
501     DO j = 1,2
502     tof31_event(j,i) = none_ev
503     IF ((tof31(j,i,itdc).LT.2000).AND.(tof31(j,i,itdc).GT.100))
504     + tof31_event(j,i) = tof31_event(j,i) + tdc_ev
505     ENDDO
506     ENDDO
507    
508     c find single paddle in upper tof with tdc and adc signal
509     tof31_i = none_find
510     tof31_j = none_find
511     check = .TRUE.
512     DO i = 1, 3
513     IF ((tof31_event(left,i).GE.1).AND.(tof31_event(right,i).GE.1))
514     + THEN
515     c check if an other paddle has also an event - then set flag
516     tof31_j = tof31_j + 2**(i-1)
517     IF (check.EQV..TRUE.) THEN
518     IF (tof31_i.EQ.none_find) THEN
519     tof31_i = i
520     ELSE
521     tof31_i = -1
522     check = .FALSE.
523     ENDIF
524     ENDIF
525     ENDIF
526     ENDDO
527    
528     C bottom tof S32
529     DO i = 1,3
530     DO j = 1,2
531     tof32_event(j,i) = none_ev
532     IF ((tof32(j,i,itdc).LT.2000).AND.(tof32(j,i,itdc).GT.100))
533     + tof32_event(j,i) = tof32_event(j,i) + tdc_ev
534     ENDDO
535     ENDDO
536    
537     c find single paddle in upper tof with tdc and adc signal
538     tof32_i = none_find
539     tof32_j = none_find
540     check = .TRUE.
541     DO i = 1, 3
542     IF ((tof32_event(left,i).GE.1).AND.(tof32_event(right,i).GE.1))
543     + THEN
544     c check if an other paddle has also an event - then set flag
545     tof32_j = tof32_j + 2**(i-1)
546     IF (check.EQV..TRUE.) THEN
547     IF (tof32_i.EQ.none_find) THEN
548     tof32_i = i
549     ELSE
550     tof32_i = -1
551     check = .FALSE.
552     ENDIF
553     ENDIF
554     ENDIF
555 mocchiut 1.7 ENDDO
556 mocchiut 1.1
557 mocchiut 1.7 do i=1,6
558 mocchiut 1.1 tof_i_flag(i)=0
559     tof_j_flag(i)=0
560 mocchiut 1.7 enddo
561    
562     tof_i_flag(1)=tof11_i
563     tof_i_flag(2)=tof12_i
564     tof_i_flag(3)=tof21_i
565     tof_i_flag(4)=tof22_i
566     tof_i_flag(5)=tof31_i
567     tof_i_flag(6)=tof32_i
568    
569     tof_j_flag(1)=tof11_j
570     tof_j_flag(2)=tof12_j
571     tof_j_flag(3)=tof21_j
572     tof_j_flag(4)=tof22_j
573     tof_j_flag(5)=tof31_j
574     tof_j_flag(6)=tof32_j
575    
576     hitvec(1)=tof11_i
577     hitvec(2)=tof12_i
578     hitvec(3)=tof21_i
579     hitvec(4)=tof22_i
580     hitvec(5)=tof31_i
581     hitvec(6)=tof32_i
582 mocchiut 1.1
583    
584 mocchiut 1.4 C------------------------------------------------------------------
585 mocchiut 1.7 C-- calculate track position in paddle using timing difference
586     C-- this calculation is preliminary and uses some standard
587     C-- calibration values, but we need to find a rough position to
588     C-- be able to calculate artificial ADC values (needed for the
589     C-- timewalk...
590 mocchiut 1.4 C------------------------------------------------------------------
591    
592 mocchiut 1.7 do i=1,3
593 mocchiut 1.4 xtofpos(i)=100.
594     ytofpos(i)=100.
595 mocchiut 1.7 enddo
596    
597 mocchiut 1.4 C-----------------------------S1 --------------------------------
598    
599     IF (tof11_i.GT.none_find) THEN
600     ytofpos(1) = ((tof11(1,tof11_i,itdc)-tof11(2,tof11_i,itdc))/2.
601 mocchiut 1.7 + -y_coor_lin11c(tof11_i,offset))/y_coor_lin11c(tof11_i,slope)
602 mocchiut 1.4 endif
603    
604     IF (tof12_i.GT.none_find) THEN
605     xtofpos(1) = ((tof12(1,tof12_i,itdc)-tof12(2,tof12_i,itdc))/2.
606 mocchiut 1.7 + -x_coor_lin12c(tof12_i,offset))/x_coor_lin12c(tof12_i,slope)
607 mocchiut 1.4 endif
608    
609    
610     C-----------------------------S2 --------------------------------
611    
612     IF (tof21_i.GT.none_find) THEN
613     xtofpos(2) = ((tof21(1,tof21_i,itdc)-tof21(2,tof21_i,itdc))/2.
614 mocchiut 1.7 + -x_coor_lin21c(tof21_i,offset))/x_coor_lin21c(tof21_i,slope)
615 mocchiut 1.4 endif
616    
617     IF (tof22_i.GT.none_find) THEN
618     ytofpos(2) = ((tof22(1,tof22_i,itdc)-tof22(2,tof22_i,itdc))/2.
619 mocchiut 1.7 + -y_coor_lin22c(tof22_i,offset))/y_coor_lin22c(tof22_i,slope)
620 mocchiut 1.4 endif
621    
622    
623     C-----------------------------S3 --------------------------------
624    
625     IF (tof31_i.GT.none_find) THEN
626     ytofpos(3) = ((tof31(1,tof31_i,itdc)-tof31(2,tof31_i,itdc))/2.
627 mocchiut 1.7 + -y_coor_lin31c(tof31_i,offset))/y_coor_lin31c(tof31_i,slope)
628 mocchiut 1.4 endif
629    
630     IF (tof32_i.GT.none_find) THEN
631     xtofpos(3) = ((tof32(1,tof32_i,itdc)-tof32(2,tof32_i,itdc))/2.
632 mocchiut 1.7 + -x_coor_lin32c(tof32_i,offset))/x_coor_lin32c(tof32_i,slope)
633 mocchiut 1.4 endif
634    
635    
636     C----------------------------------------------------------------------
637     C--------------------- zenith angle theta ---------------------------
638     C----------------------------------------------------------------------
639 pamelats 1.9 C----------------------------- old ----------------------------------
640     c dx=0.
641     c dy=0.
642     c dr=0.
643     c theta13 = 0.
644     c
645     c IF ((tof12_i.GT.none_find).AND.(tof32_i.GT.none_find))
646     c & dx = xtofpos(1) - xtofpos(3)
647     c IF ((tof11_i.GT.none_find).AND.(tof31_i.GT.none_find))
648     c & dy = ytofpos(1) - ytofpos(3)
649     c dr = sqrt(dx*dx+dy*dy)
650     c theta13 = atan(dr/tofarm13)
651     c
652     c
653     C----------------------------- new ------------------------------
654    
655     xhelp1=0.
656     if (tof11_i.GT.none_find) xhelp1=tof11_x(tof11_i)
657     if (xtofpos(1).lt.100) xhelp1=xtofpos(1)
658 mocchiut 1.4
659 pamelats 1.9 yhelp1=0.
660     if (tof12_i.GT.none_find) yhelp1=tof12_y(tof12_i)
661     if (ytofpos(1).lt.100) yhelp1=ytofpos(1)
662    
663    
664     yhelp2=0.
665     if (tof32_i.GT.none_find) yhelp2=tof32_y(tof32_i)
666     if (ytofpos(3).lt.100) yhelp2=ytofpos(3)
667    
668     xhelp2=0.
669     if (tof31_i.GT.none_find) xhelp2=tof31_x(tof31_i)
670     if (xtofpos(3).lt.100) xhelp2=xtofpos(3)
671    
672    
673     dx=0.
674     dy=0.
675     dr=0.
676     theta13 = 0.
677    
678     dx = xhelp1 - xhelp2
679     dy = yhelp1 - yhelp2
680     dr = sqrt(dx*dx+dy*dy)
681     theta13 = atan(dr/tofarm13)
682 mocchiut 1.4
683    
684 mocchiut 1.7 C----------------------------------------------------------------------
685     C--- check charge:
686     C--- if Z=2 we should use the attenuation curve for helium to
687     C--- fill the artificail ADC values and NOT divide by "hepratio"
688     C--- if Z>2 we should do a correction to
689     C--- the k1 constants in the beta calculation
690     C----------------------------------------------------------------------
691    
692     iz = int(check_charge(theta13,hitvec))
693 pamelats 1.9 c write(*,*) 'charge in tofl2com',iz
694 mocchiut 1.4
695     C--------------------------------------------------------------------
696     C---- if TDCleft.and.TDCright and NO ADC insert artificial ADC
697     C---- values
698     C--------------------------------------------------------------------
699     c middle y (or x) position of the upper and middle ToF-Paddle
700     c DATA tof11_x/ -17.85,-12.75,-7.65,-2.55,2.55,7.65,12.75,17.85/
701     c DATA tof12_y/ -13.75,-8.25,-2.75,2.75,8.25,13.75/
702     c DATA tof21_y/ 3.75,-3.75/ ! paddles in different order
703     c DATA tof22_x/ -4.5,4.5/
704     c DATA tof31_x/ -6.0,0.,6.0/
705     c DATA tof32_y/ -5.0,0.0,5.0/
706    
707    
708     C---------------------------- S1 -------------------------------------
709    
710 pamelats 1.9 c yhelp=0.
711     yhelp=100. ! WM
712 mocchiut 1.4 if (tof12_i.GT.none_find) yhelp=tof12_y(tof12_i)
713     if (ytofpos(1).lt.100) yhelp=ytofpos(1)
714    
715     IF (tof11_i.GT.none_find.AND.abs(yhelp).lt.100) THEN
716     i = tof11_i
717 mocchiut 1.6 if (adc(ch11a(i),hb11a(i)).eq.4095) then
718     xkorr = atten(left,11,i,yhelp)
719 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
720 mocchiut 1.4 tof11(left,i,iadc)=xkorr/cos(theta13)
721     adcflagtof(ch11a(i),hb11a(i)) = 1
722     endif
723 mocchiut 1.6 if (adc(ch11b(i),hb11b(i)).eq.4095) then
724     xkorr = atten(right,11,i,yhelp)
725 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
726 mocchiut 1.4 tof11(right,i,iadc)=xkorr/cos(theta13)
727     adcflagtof(ch11b(i),hb11b(i)) = 1
728     endif
729     ENDIF
730    
731 pamelats 1.9 c xhelp=0.
732     xhelp=100. ! WM
733 mocchiut 1.4 if (tof11_i.GT.none_find) xhelp=tof11_x(tof11_i)
734     if (xtofpos(1).lt.100) xhelp=xtofpos(1)
735    
736     IF (tof12_i.GT.none_find.AND.abs(xhelp).lt.100) THEN
737     i = tof12_i
738 mocchiut 1.6 if (adc(ch12a(i),hb12a(i)).eq.4095) then
739     xkorr = atten(left,12,i,xhelp)
740 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
741 mocchiut 1.4 tof12(left,i,iadc) = xkorr/cos(theta13)
742     adcflagtof(ch12a(i),hb12a(i)) = 1
743     endif
744 mocchiut 1.6 if (adc(ch12b(i),hb12b(i)).eq.4095) then
745     xkorr = atten(right,12,i,xhelp)
746 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
747 mocchiut 1.4 tof12(right,i,iadc) = xkorr/cos(theta13)
748     adcflagtof(ch12b(i),hb12b(i)) = 1
749     endif
750     ENDIF
751    
752     C-----------------------------S2 --------------------------------
753    
754 pamelats 1.9 c xhelp=0.
755     xhelp=100. ! WM
756 mocchiut 1.4 if (tof22_i.GT.none_find) xhelp=tof22_x(tof22_i)
757     if (xtofpos(2).lt.100) xhelp=xtofpos(2)
758    
759     IF (tof21_i.GT.none_find.AND.abs(xhelp).lt.100) THEN
760     i = tof21_i
761 mocchiut 1.6 if (adc(ch21a(i),hb21a(i)).eq.4095) then
762     xkorr = atten(left,21,i,xhelp)
763 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
764 mocchiut 1.4 tof21(left,i,iadc) = xkorr/cos(theta13)
765     adcflagtof(ch21a(i),hb21a(i)) = 1
766     endif
767 mocchiut 1.6 if (adc(ch21b(i),hb21b(i)).eq.4095) then
768     xkorr = atten(right,21,i,xhelp)
769 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
770 mocchiut 1.4 tof21(right,i,iadc) = xkorr/cos(theta13)
771     adcflagtof(ch21b(i),hb21b(i)) = 1
772     endif
773     ENDIF
774    
775    
776 pamelats 1.9 c yhelp=0.
777     yhelp=100. ! WM
778 mocchiut 1.4 if (tof21_i.GT.none_find) yhelp=tof21_y(tof21_i)
779     if (ytofpos(2).lt.100) yhelp=ytofpos(2)
780    
781     IF (tof22_i.GT.none_find.AND.abs(yhelp).lt.100) THEN
782     i = tof22_i
783 mocchiut 1.6 if (adc(ch22a(i),hb22a(i)).eq.4095) then
784     xkorr = atten(left,22,i,yhelp)
785 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
786 mocchiut 1.4 tof22(left,i,iadc) = xkorr/cos(theta13)
787     adcflagtof(ch22a(i),hb22a(i)) = 1
788     endif
789 mocchiut 1.6 if (adc(ch22b(i),hb22b(i)).eq.4095) then
790     xkorr = atten(right,22,i,yhelp)
791 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
792 mocchiut 1.4 tof22(right,i,iadc) = xkorr/cos(theta13)
793     adcflagtof(ch22b(i),hb22b(i)) = 1
794     endif
795     ENDIF
796    
797     C-----------------------------S3 --------------------------------
798    
799 pamelats 1.9 c yhelp=0.
800     yhelp=100. ! WM
801 mocchiut 1.4 if (tof32_i.GT.none_find) yhelp=tof32_y(tof32_i)
802     if (ytofpos(3).lt.100) yhelp=ytofpos(3)
803    
804     IF (tof31_i.GT.none_find.AND.abs(yhelp).lt.100) THEN
805     i = tof31_i
806 mocchiut 1.6 if (adc(ch31a(i),hb31a(i)).eq.4095) then
807     xkorr = atten(left,31,i,yhelp)
808 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
809 mocchiut 1.4 tof31(left,i,iadc) = xkorr/cos(theta13)
810     adcflagtof(ch31a(i),hb31a(i)) = 1
811     endif
812 mocchiut 1.6 if (adc(ch31b(i),hb31b(i)).eq.4095) then
813     xkorr = atten(right,31,i,yhelp)
814 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
815 mocchiut 1.4 tof31(right,i,iadc) = xkorr/cos(theta13)
816     adcflagtof(ch31b(i),hb31b(i)) = 1
817     endif
818     ENDIF
819    
820 pamelats 1.9 c xhelp=0.
821     xhelp=100. ! WM
822 mocchiut 1.4 if (tof31_i.GT.none_find) xhelp=tof31_x(tof31_i)
823     if (xtofpos(3).lt.100) xhelp=xtofpos(3)
824    
825     IF (tof32_i.GT.none_find.AND.abs(xhelp).lt.100) THEN
826     i = tof32_i
827 mocchiut 1.6 if (adc(ch32a(i),hb32a(i)).eq.4095) then
828     xkorr = atten(left,32,i,xhelp)
829 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
830 mocchiut 1.4 tof32(left,i,iadc) = xkorr/cos(theta13)
831     adcflagtof(ch32a(i),hb32a(i)) = 1
832     endif
833 mocchiut 1.6 if (adc(ch32b(i),hb32b(i)).eq.4095) then
834     xkorr = atten(right,32,i,xhelp)
835 mocchiut 1.7 if (iz.le.1) xkorr=xkorr/hepratio
836 mocchiut 1.4 tof32(right,i,iadc) = xkorr/cos(theta13)
837     adcflagtof(ch32b(i),hb32b(i)) = 1
838     endif
839     ENDIF
840    
841 mocchiut 1.1
842 mocchiut 1.7 C-------------------------------------------------------------------
843 mocchiut 1.1 C--------------------Time walk correction -------------------------
844 mocchiut 1.7 C-------------------------------------------------------------------
845     C-------------------------------------------------------------------
846     C Now there is for each hitted paddle a TDC and ADC value, if the
847     C TDC was < 4095.
848     C There might be also TDC-ADC pairs in paddles not hitted
849    
850     C-------------------------------------------------------------------
851     C If we have multiple paddles hit, so that no artificial ADC value
852     C is created, we set the raw TDC value as "tdc_c"
853     C-------------------------------------------------------------------
854     c
855     c do i=1,4
856     c do j=1,12
857     c tdc_c(i,j) = tdc(i,j)
858     c enddo
859     c enddo
860     c
861     C---- Let's correct the raw TDC value with the time walk ---------
862 mocchiut 1.1
863     DO i=1,8
864 mocchiut 1.7 if ((tdc(ch11a(i),hb11a(i)).lt.4095).and.
865     & (tof11(left,i,iadc).lt.3786)) THEN
866     xhelp = tw11(left,i)/(tof11(left,i,iadc)**0.5)
867     tof11(left,i,itdc) = tof11(left,i,itdc) + xhelp
868     tdc_c(ch11a(i),hb11a(i))=tof11(left,i,itdc)
869     ENDIF
870    
871     if ((tdc(ch11b(i),hb11b(i)).lt.4095).and.
872     & (tof11(right,i,iadc).lt.3786)) THEN
873     xhelp = tw11(right,i)/(tof11(right,i,iadc)**0.5)
874     tof11(right,i,itdc) = tof11(right,i,itdc) + xhelp
875     tdc_c(ch11b(i),hb11b(i))=tof11(right,i,itdc)
876     ENDIF
877 mocchiut 1.1 ENDDO
878    
879 mocchiut 1.7
880 mocchiut 1.1 DO i=1,6
881 mocchiut 1.7 if ((tdc(ch12a(i),hb12a(i)).lt.4095).and.
882     & (tof12(left,i,iadc).lt.3786)) THEN
883     xhelp = tw12(left,i)/(tof12(left,i,iadc)**0.5)
884     tof12(left,i,itdc) = tof12(left,i,itdc) + xhelp
885     tdc_c(ch12a(i),hb12a(i))=tof12(left,i,itdc)
886     ENDIF
887    
888     if ((tdc(ch12b(i),hb12b(i)).lt.4095).and.
889     & (tof12(right,i,iadc).lt.3786)) THEN
890     xhelp = tw12(right,i)/(tof12(right,i,iadc)**0.5)
891     tof12(right,i,itdc) = tof12(right,i,itdc) + xhelp
892     tdc_c(ch12b(i),hb12b(i))=tof12(right,i,itdc)
893     ENDIF
894 mocchiut 1.1 ENDDO
895 mocchiut 1.7
896 mocchiut 1.1 C----
897 mocchiut 1.7 DO I=1,2
898     if ((tdc(ch21a(i),hb21a(i)).lt.4095).and.
899     & (tof21(left,i,iadc).lt.3786)) THEN
900     xhelp = tw21(left,i)/(tof21(left,i,iadc)**0.5)
901     tof21(left,i,itdc) = tof21(left,i,itdc) + xhelp
902     tdc_c(ch21a(i),hb21a(i))=tof21(left,i,itdc)
903     ENDIF
904    
905     if ((tdc(ch21b(i),hb21b(i)).lt.4095).and.
906     & (tof21(right,i,iadc).lt.3786)) THEN
907     xhelp = tw21(right,i)/(tof21(right,i,iadc)**0.5)
908     tof21(right,i,itdc) = tof21(right,i,itdc) + xhelp
909     tdc_c(ch21b(i),hb21b(i))=tof21(right,i,itdc)
910     ENDIF
911     ENDDO
912    
913     DO I=1,2
914     if ((tdc(ch22a(i),hb22a(i)).lt.4095).and.
915     & (tof22(left,i,iadc).lt.3786)) THEN
916     xhelp = tw22(left,i)/(tof22(left,i,iadc)**0.5)
917     tof22(left,i,itdc) = tof22(left,i,itdc) + xhelp
918     tdc_c(ch22a(i),hb22a(i))=tof22(left,i,itdc)
919     ENDIF
920    
921     if ((tdc(ch22b(i),hb22b(i)).lt.4095).and.
922     & (tof22(right,i,iadc).lt.3786)) THEN
923     xhelp = tw22(right,i)/(tof22(right,i,iadc)**0.5)
924     tof22(right,i,itdc) = tof22(right,i,itdc) + xhelp
925     tdc_c(ch22b(i),hb22b(i))=tof22(right,i,itdc)
926     ENDIF
927 mocchiut 1.1 ENDDO
928 mocchiut 1.7
929 mocchiut 1.1 C----
930 mocchiut 1.7 DO I=1,3
931     if ((tdc(ch31a(i),hb31a(i)).lt.4095).and.
932     & (tof31(left,i,iadc).lt.3786)) THEN
933     xhelp = tw31(left,i)/(tof31(left,i,iadc)**0.5)
934     tof31(left,i,itdc) = tof31(left,i,itdc) + xhelp
935     tdc_c(ch31a(i),hb31a(i))=tof31(left,i,itdc)
936     ENDIF
937    
938     if ((tdc(ch31b(i),hb31b(i)).lt.4095).and.
939     & (tof31(right,i,iadc).lt.3786)) THEN
940     xhelp = tw31(right,i)/(tof31(right,i,iadc)**0.5)
941     tof31(right,i,itdc) = tof31(right,i,itdc) + xhelp
942     tdc_c(ch31b(i),hb31b(i))=tof31(right,i,itdc)
943     ENDIF
944     ENDDO
945    
946     DO I=1,3
947     if ((tdc(ch32a(i),hb32a(i)).lt.4095).and.
948     & (tof32(left,i,iadc).lt.3786)) THEN
949     xhelp = tw32(left,i)/(tof32(left,i,iadc)**0.5)
950     tof32(left,i,itdc) = tof32(left,i,itdc) + xhelp
951     tdc_c(ch32a(i),hb32a(i))=tof32(left,i,itdc)
952     ENDIF
953    
954     if ((tdc(ch32b(i),hb32b(i)).lt.4095).and.
955     & (tof32(right,i,iadc).lt.3786)) THEN
956     xhelp = tw32(right,i)/(tof32(right,i,iadc)**0.5)
957     tof32(right,i,itdc) = tof32(right,i,itdc) + xhelp
958     tdc_c(ch32b(i),hb32b(i))=tof32(right,i,itdc)
959     ENDIF
960     ENDDO
961    
962 pamelats 1.9
963 mocchiut 1.7 C---------------------------------------------------------------
964     C--- calculate track position in paddle using timing difference
965     C--- now using the time-walk corrected TDC values
966     C---------------------------------------------------------------
967    
968     do i=1,3
969     xtofpos(i)=100.
970     ytofpos(i)=100.
971     enddo
972    
973     C-----------------------------S1 --------------------------------
974    
975     IF (tof11_i.GT.none_find) THEN
976     ytofpos(1) = ((tof11(1,tof11_i,itdc)-tof11(2,tof11_i,itdc))/2.
977     + -y_coor_lin11(tof11_i,offset))/y_coor_lin11(tof11_i,slope)
978 pamelats 1.9 i=tof11_i
979 mocchiut 1.7 endif
980    
981     IF (tof12_i.GT.none_find) THEN
982     xtofpos(1) = ((tof12(1,tof12_i,itdc)-tof12(2,tof12_i,itdc))/2.
983     + -x_coor_lin12(tof12_i,offset))/x_coor_lin12(tof12_i,slope)
984 pamelats 1.9 i=tof12_i
985 mocchiut 1.7 endif
986    
987    
988     C-----------------------------S2 --------------------------------
989    
990     IF (tof21_i.GT.none_find) THEN
991     xtofpos(2) = ((tof21(1,tof21_i,itdc)-tof21(2,tof21_i,itdc))/2.
992     + -x_coor_lin21(tof21_i,offset))/x_coor_lin21(tof21_i,slope)
993 pamelats 1.9 i=tof21_i
994 mocchiut 1.7 endif
995    
996     IF (tof22_i.GT.none_find) THEN
997     ytofpos(2) = ((tof22(1,tof22_i,itdc)-tof22(2,tof22_i,itdc))/2.
998     + -y_coor_lin22(tof22_i,offset))/y_coor_lin22(tof22_i,slope)
999 pamelats 1.9 i=tof22_i
1000 mocchiut 1.7 endif
1001    
1002    
1003     C-----------------------------S3 --------------------------------
1004    
1005     IF (tof31_i.GT.none_find) THEN
1006     ytofpos(3) = ((tof31(1,tof31_i,itdc)-tof31(2,tof31_i,itdc))/2.
1007     + -y_coor_lin31(tof31_i,offset))/y_coor_lin31(tof31_i,slope)
1008 pamelats 1.9 i=tof31_i
1009 mocchiut 1.7 endif
1010    
1011     IF (tof32_i.GT.none_find) THEN
1012     xtofpos(3) = ((tof32(1,tof32_i,itdc)-tof32(2,tof32_i,itdc))/2.
1013     + -x_coor_lin32(tof32_i,offset))/x_coor_lin32(tof32_i,slope)
1014 pamelats 1.9 i=tof32_i
1015 mocchiut 1.7 endif
1016    
1017    
1018     c do i=1,3
1019     c if (abs(xtofpos(i)).gt.100.) then
1020     c xtofpos(i)=101.
1021     c endif
1022     c if (abs(ytofpos(i)).gt.100.) then
1023     c ytofpos(i)=101.
1024     c endif
1025     c enddo
1026    
1027 pamelats 1.9
1028 mocchiut 1.7 C-- restrict TDC measurements to physical paddle dimensions +/- 10 cm
1029     C-- this cut is now stronger than in the old versions
1030 mocchiut 1.1
1031 mocchiut 1.7 if (abs(xtofpos(1)).gt.31.) xtofpos(1)=101.
1032     if (abs(xtofpos(2)).gt.19.) xtofpos(2)=101.
1033     if (abs(xtofpos(3)).gt.19.) xtofpos(3)=101.
1034    
1035     if (abs(ytofpos(1)).gt.26.) ytofpos(1)=101.
1036     if (abs(ytofpos(2)).gt.18.) ytofpos(2)=101.
1037     if (abs(ytofpos(3)).gt.18.) ytofpos(3)=101.
1038    
1039     C----------------------------------------------------------------------
1040     C--------------------- zenith angle theta ---------------------------
1041     C----------------------------------------------------------------------
1042 pamelats 1.9 C------------------- improved calculation ---------------------------
1043    
1044     xhelp1=0.
1045     if (tof11_i.GT.none_find) xhelp1=tof11_x(tof11_i)
1046     if (xtofpos(1).lt.100) xhelp1=xtofpos(1)
1047    
1048     yhelp1=0.
1049     if (tof12_i.GT.none_find) yhelp1=tof12_y(tof12_i)
1050     if (ytofpos(1).lt.100) yhelp1=ytofpos(1)
1051    
1052     yhelp2=0.
1053     if (tof32_i.GT.none_find) yhelp2=tof32_y(tof32_i)
1054     if (ytofpos(3).lt.100) yhelp2=ytofpos(3)
1055    
1056     xhelp2=0.
1057     if (tof31_i.GT.none_find) xhelp2=tof31_x(tof31_i)
1058     if (xtofpos(3).lt.100) xhelp2=xtofpos(3)
1059    
1060    
1061     dx=0.
1062     dy=0.
1063     dr=0.
1064     theta13 = 0.
1065    
1066     dx = xhelp1 - xhelp2
1067     dy = yhelp1 - yhelp2
1068     dr = sqrt(dx*dx+dy*dy)
1069     theta13 = atan(dr/tofarm13)
1070 mocchiut 1.7
1071 mocchiut 1.1
1072 mocchiut 1.7 C------------------------------------------------------------------
1073 mocchiut 1.1 C----------------------------------------------------------------------
1074     C------------------angle and ADC(x) correction
1075     C----------------------------------------------------------------------
1076     C-----------------------------S1 --------------------------------
1077     c middle y (or x) position of the upper and middle ToF-Paddle
1078     c DATA tof11_x/ -17.85,-12.75,-7.65,-2.55,2.55,7.65,12.75,17.85/
1079     c DATA tof12_y/ -13.75,-8.25,-2.75,2.75,8.25,13.75/
1080 mocchiut 1.4 c DATA tof21_y/ 3.75,-3.75/ ! paddles in different order
1081 mocchiut 1.1 c DATA tof22_x/ -4.5,4.5/
1082     c DATA tof31_x/ -6.0,0.,6.0/
1083     c DATA tof32_y/ -5.0,0.0,5.0/
1084    
1085     yhelp=0.
1086 pamelats 1.9 c yhelp=100.
1087 mocchiut 1.1 if (tof12_i.GT.none_find) yhelp=tof12_y(tof12_i)
1088     if (ytofpos(1).lt.100) yhelp=ytofpos(1)
1089    
1090     IF (tof11_i.GT.none_find.AND.abs(yhelp).lt.100) THEN
1091    
1092     i = tof11_i
1093 mocchiut 1.6 if (tof11(left,i,iadc).lt.3786) then
1094     c if (adc(ch11a(i),hb11a(i)).lt.4095) then
1095 mocchiut 1.4 tof11(left,i,iadc) = tof11(left,i,iadc)*cos(theta13)
1096 mocchiut 1.6 xkorr = atten(left,11,i,yhelp)
1097 pam-de 1.8 xkorr=xkorr/hepratio
1098 mocchiut 1.1 adctof_c(ch11a(i),hb11a(i))=tof11(left,i,iadc)/xkorr
1099     endif
1100    
1101 mocchiut 1.6 if (tof11(right,i,iadc).lt.3786) then
1102     c if (adc(ch11b(i),hb11b(i)).lt.4095) then
1103 mocchiut 1.4 tof11(right,i,iadc) = tof11(right,i,iadc)*cos(theta13)
1104 mocchiut 1.6 xkorr = atten(right,11,i,yhelp)
1105 pam-de 1.8 xkorr=xkorr/hepratio
1106 mocchiut 1.1 adctof_c(ch11b(i),hb11b(i))=tof11(right,i,iadc)/xkorr
1107     endif
1108     ENDIF
1109    
1110     xhelp=0.
1111 pamelats 1.9 c xhelp=100.
1112 mocchiut 1.1 if (tof11_i.GT.none_find) xhelp=tof11_x(tof11_i)
1113     if (xtofpos(1).lt.100) xhelp=xtofpos(1)
1114    
1115     IF (tof12_i.GT.none_find.AND.abs(xhelp).lt.100) THEN
1116    
1117     i = tof12_i
1118 mocchiut 1.6 if (tof12(left,i,iadc).lt.3786) then
1119     c if (adc(ch12a(i),hb12a(i)).lt.4095) then
1120 mocchiut 1.4 tof12(left,i,iadc) = tof12(left,i,iadc)*cos(theta13)
1121 mocchiut 1.6 xkorr = atten(left,12,i,xhelp)
1122 pam-de 1.8 xkorr=xkorr/hepratio
1123 mocchiut 1.1 adctof_c(ch12a(i),hb12a(i))=tof12(left,i,iadc)/xkorr
1124     endif
1125    
1126 mocchiut 1.6 if (tof12(right,i,iadc).lt.3786) then
1127     c if (adc(ch12b(i),hb12b(i)).lt.4095) then
1128 mocchiut 1.4 tof12(right,i,iadc) = tof12(right,i,iadc)*cos(theta13)
1129 mocchiut 1.6 xkorr = atten(right,12,i,xhelp)
1130 pam-de 1.8 xkorr=xkorr/hepratio
1131 mocchiut 1.1 adctof_c(ch12b(i),hb12b(i))=tof12(right,i,iadc)/xkorr
1132     endif
1133     ENDIF
1134    
1135     C-----------------------------S2 --------------------------------
1136    
1137     xhelp=0.
1138 pamelats 1.9 c xhelp=100.
1139 mocchiut 1.1 if (tof22_i.GT.none_find) xhelp=tof22_x(tof22_i)
1140     if (xtofpos(2).lt.100) xhelp=xtofpos(2)
1141    
1142     IF (tof21_i.GT.none_find.AND.abs(xhelp).lt.100) THEN
1143    
1144     i = tof21_i
1145 mocchiut 1.6 if (tof21(left,i,iadc).lt.3786) then
1146     c if (adc(ch21a(i),hb21a(i)).lt.4095) then
1147 mocchiut 1.4 tof21(left,i,iadc) = tof21(left,i,iadc)*cos(theta13)
1148 mocchiut 1.6 xkorr = atten(left,21,i,xhelp)
1149 pam-de 1.8 xkorr=xkorr/hepratio
1150 mocchiut 1.1 adctof_c(ch21a(i),hb21a(i))=tof21(left,i,iadc)/xkorr
1151     endif
1152    
1153 mocchiut 1.6 if (tof21(right,i,iadc).lt.3786) then
1154     c if (adc(ch21b(i),hb21b(i)).lt.4095) then
1155 mocchiut 1.4 tof21(right,i,iadc) = tof21(right,i,iadc)*cos(theta13)
1156 mocchiut 1.1 xkorr=adcx21(right,i,1)*exp(xhelp/adcx21(right,i,2))
1157 mocchiut 1.6 xkorr = atten(right,21,i,xhelp)
1158 pam-de 1.8 xkorr=xkorr/hepratio
1159 mocchiut 1.1 adctof_c(ch21b(i),hb21b(i))=tof21(right,i,iadc)/xkorr
1160     endif
1161     ENDIF
1162    
1163    
1164     yhelp=0.
1165 pamelats 1.9 c yhelp=100.
1166 mocchiut 1.1 if (tof21_i.GT.none_find) yhelp=tof21_y(tof21_i)
1167     if (ytofpos(2).lt.100) yhelp=ytofpos(2)
1168    
1169     IF (tof22_i.GT.none_find.AND.abs(yhelp).lt.100) THEN
1170    
1171     i = tof22_i
1172 mocchiut 1.6 if (tof22(left,i,iadc).lt.3786) then
1173     c if (adc(ch22a(i),hb22a(i)).lt.4095) then
1174 mocchiut 1.4 tof22(left,i,iadc) = tof22(left,i,iadc)*cos(theta13)
1175 mocchiut 1.6 xkorr = atten(left,22,i,yhelp)
1176 pam-de 1.8 xkorr=xkorr/hepratio
1177 mocchiut 1.1 adctof_c(ch22a(i),hb22a(i))=tof22(left,i,iadc)/xkorr
1178     endif
1179    
1180 mocchiut 1.6 if (tof22(right,i,iadc).lt.3786) then
1181     c if (adc(ch22b(i),hb22b(i)).lt.4095) then
1182 mocchiut 1.4 tof22(right,i,iadc) = tof22(right,i,iadc)*cos(theta13)
1183 mocchiut 1.6 xkorr = atten(right,22,i,yhelp)
1184 pam-de 1.8 xkorr=xkorr/hepratio
1185 mocchiut 1.1 adctof_c(ch22b(i),hb22b(i))=tof22(right,i,iadc)/xkorr
1186     endif
1187     ENDIF
1188    
1189     C-----------------------------S3 --------------------------------
1190    
1191     yhelp=0.
1192 pamelats 1.9 c yhelp=100.
1193 mocchiut 1.1 if (tof32_i.GT.none_find) yhelp=tof32_y(tof32_i)
1194     if (ytofpos(3).lt.100) yhelp=ytofpos(3)
1195    
1196     IF (tof31_i.GT.none_find.AND.abs(yhelp).lt.100) THEN
1197    
1198     i = tof31_i
1199 mocchiut 1.6 if (tof31(left,i,iadc).lt.3786) then
1200     c if (adc(ch31a(i),hb31a(i)).lt.4095) then
1201 mocchiut 1.4 tof31(left,i,iadc) = tof31(left,i,iadc)*cos(theta13)
1202 mocchiut 1.6 xkorr = atten(left,31,i,yhelp)
1203 pam-de 1.8 xkorr=xkorr/hepratio
1204 mocchiut 1.1 adctof_c(ch31a(i),hb31a(i))=tof31(left,i,iadc)/xkorr
1205     endif
1206    
1207 mocchiut 1.6 if (tof31(right,i,iadc).lt.3786) then
1208     c if (adc(ch31b(i),hb31b(i)).lt.4095) then
1209 mocchiut 1.4 tof31(right,i,iadc) = tof31(right,i,iadc)*cos(theta13)
1210 mocchiut 1.6 xkorr = atten(right,31,i,yhelp)
1211 pam-de 1.8 xkorr=xkorr/hepratio
1212 mocchiut 1.1 adctof_c(ch31b(i),hb31b(i))=tof31(right,i,iadc)/xkorr
1213     endif
1214     ENDIF
1215    
1216     xhelp=0.
1217 pamelats 1.9 c xhelp=100.
1218 mocchiut 1.1 if (tof31_i.GT.none_find) xhelp=tof31_x(tof31_i)
1219     if (xtofpos(3).lt.100) xhelp=xtofpos(3)
1220    
1221     IF (tof32_i.GT.none_find.AND.abs(xhelp).lt.100) THEN
1222    
1223     i = tof32_i
1224 mocchiut 1.6 if (tof32(left,i,iadc).lt.3786) then
1225     c if (adc(ch32a(i),hb32a(i)).lt.4095) then
1226 mocchiut 1.4 tof32(left,i,iadc) = tof32(left,i,iadc)*cos(theta13)
1227 mocchiut 1.6 xkorr = atten(left,32,i,xhelp)
1228 pam-de 1.8 xkorr=xkorr/hepratio
1229 mocchiut 1.1 adctof_c(ch32a(i),hb32a(i))=tof32(left,i,iadc)/xkorr
1230     endif
1231    
1232 mocchiut 1.6 if (tof32(right,i,iadc).lt.3786) then
1233     c if (adc(ch32b(i),hb32b(i)).lt.4095) then
1234 mocchiut 1.4 tof32(right,i,iadc) = tof32(right,i,iadc)*cos(theta13)
1235 mocchiut 1.6 xkorr = atten(right,32,i,xhelp)
1236 pam-de 1.8 xkorr=xkorr/hepratio
1237 mocchiut 1.1 adctof_c(ch32b(i),hb32b(i))=tof32(right,i,iadc)/xkorr
1238     endif
1239     ENDIF
1240    
1241 mocchiut 1.4 C--------------------------------------------------------------------
1242 mocchiut 1.1 C----------------------calculate Beta ------------------------------
1243 mocchiut 1.4 C--------------------------------------------------------------------
1244     C-------------------difference of sums -----------------------------
1245 mocchiut 1.1 C
1246     C DS = (t1+t2) - t3+t4)
1247     C DS = c1 + c2/beta*cos(theta)
1248     C c2 = 2d/c gives c2 = 2d/(c*TDCresolution) TDC=50ps/channel
1249     C => c2 = ca.60 for 0.45 m c2 = ca.109 for 0.81 m
1250     C since TDC resolution varies slightly c2 has to be calibrated
1251    
1252     C S11 - S31
1253 mocchiut 1.4
1254     IF ((tof11_i.GT.none_find).AND.(tof31_i.GT.none_find).AND.
1255     & (ytofpos(1).NE.101.).AND.(ytofpos(3).NE.101.)) THEN
1256 mocchiut 1.1 xhelp1 = tof11(1,tof11_i,itdc)+tof11(2,tof11_i,itdc)
1257     xhelp2 = tof31(1,tof31_i,itdc)+tof31(2,tof31_i,itdc)
1258     ds = xhelp1-xhelp2
1259     ihelp=(tof11_i-1)*3+tof31_i
1260     c1 = k_S11S31(1,ihelp)
1261 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrA1
1262 mocchiut 1.1 c2 = k_S11S31(2,ihelp)
1263     betatof_a(1) = c2/(cos(theta13)*(ds-c1))
1264 mocchiut 1.2
1265     C------- ToF Mask - S11 - S31
1266    
1267     tofmask(ch11a(tof11_i),hb11a(tof11_i)) =
1268     $ tofmask(ch11a(tof11_i),hb11a(tof11_i)) + 1
1269     tofmask(ch11b(tof11_i),hb11b(tof11_i)) =
1270     $ tofmask(ch11b(tof11_i),hb11b(tof11_i)) + 1
1271    
1272     tofmask(ch31a(tof31_i),hb31a(tof31_i)) =
1273     $ tofmask(ch31a(tof31_i),hb31a(tof31_i)) + 1
1274     tofmask(ch31b(tof31_i),hb31b(tof31_i)) =
1275     $ tofmask(ch31b(tof31_i),hb31b(tof31_i)) + 1
1276    
1277     C-------
1278    
1279 mocchiut 1.1 ENDIF
1280    
1281     C S11 - S32
1282 mocchiut 1.4
1283     IF ((tof11_i.GT.none_find).AND.(tof32_i.GT.none_find).AND.
1284     & (ytofpos(1).NE.101.).AND.(xtofpos(3).NE.101.)) THEN
1285 mocchiut 1.1 xhelp1 = tof11(1,tof11_i,itdc)+tof11(2,tof11_i,itdc)
1286     xhelp2 = tof32(1,tof32_i,itdc)+tof32(2,tof32_i,itdc)
1287     ds = xhelp1-xhelp2
1288     ihelp=(tof11_i-1)*3+tof32_i
1289     c1 = k_S11S32(1,ihelp)
1290 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrA1
1291 mocchiut 1.1 c2 = k_S11S32(2,ihelp)
1292     betatof_a(2) = c2/(cos(theta13)*(ds-c1))
1293 mocchiut 1.2
1294     C------- ToF Mask - S11 - S32
1295    
1296     tofmask(ch11a(tof11_i),hb11a(tof11_i)) =
1297     $ tofmask(ch11a(tof11_i),hb11a(tof11_i)) + 1
1298     tofmask(ch11b(tof11_i),hb11b(tof11_i)) =
1299     $ tofmask(ch11b(tof11_i),hb11b(tof11_i)) + 1
1300    
1301     tofmask(ch32a(tof32_i),hb32a(tof32_i)) =
1302     $ tofmask(ch32a(tof32_i),hb32a(tof32_i)) + 1
1303     tofmask(ch32b(tof32_i),hb32b(tof32_i)) =
1304     $ tofmask(ch32b(tof32_i),hb32b(tof32_i)) + 1
1305    
1306     C-------
1307    
1308 mocchiut 1.1 ENDIF
1309 mocchiut 1.2
1310 mocchiut 1.1 C S12 - S31
1311 mocchiut 1.4
1312     IF ((tof12_i.GT.none_find).AND.(tof31_i.GT.none_find).AND.
1313     & (xtofpos(1).NE.101.).AND.(ytofpos(3).NE.101.)) THEN
1314 mocchiut 1.1 xhelp1 = tof12(1,tof12_i,itdc)+tof12(2,tof12_i,itdc)
1315     xhelp2 = tof31(1,tof31_i,itdc)+tof31(2,tof31_i,itdc)
1316     ds = xhelp1-xhelp2
1317     ihelp=(tof12_i-1)*3+tof31_i
1318     c1 = k_S12S31(1,ihelp)
1319 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrA1
1320 mocchiut 1.1 c2 = k_S12S31(2,ihelp)
1321     betatof_a(3) = c2/(cos(theta13)*(ds-c1))
1322 mocchiut 1.2
1323     C------- ToF Mask - S12 - S31
1324    
1325     tofmask(ch12a(tof12_i),hb12a(tof12_i)) =
1326     $ tofmask(ch12a(tof12_i),hb12a(tof12_i)) + 1
1327     tofmask(ch12b(tof12_i),hb12b(tof12_i)) =
1328     $ tofmask(ch12b(tof12_i),hb12b(tof12_i)) + 1
1329    
1330     tofmask(ch31a(tof31_i),hb31a(tof31_i)) =
1331     $ tofmask(ch31a(tof31_i),hb31a(tof31_i)) + 1
1332     tofmask(ch31b(tof31_i),hb31b(tof31_i)) =
1333     $ tofmask(ch31b(tof31_i),hb31b(tof31_i)) + 1
1334    
1335     C-------
1336    
1337 mocchiut 1.1 ENDIF
1338 mocchiut 1.2
1339 mocchiut 1.1 C S12 - S32
1340 mocchiut 1.4
1341     IF ((tof12_i.GT.none_find).AND.(tof32_i.GT.none_find).AND.
1342     & (xtofpos(1).NE.101.).AND.(xtofpos(3).NE.101.)) THEN
1343 mocchiut 1.1 xhelp1 = tof12(1,tof12_i,itdc)+tof12(2,tof12_i,itdc)
1344     xhelp2 = tof32(1,tof32_i,itdc)+tof32(2,tof32_i,itdc)
1345     ds = xhelp1-xhelp2
1346     ihelp=(tof12_i-1)*3+tof32_i
1347     c1 = k_S12S32(1,ihelp)
1348 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrA1
1349 mocchiut 1.1 c2 = k_S12S32(2,ihelp)
1350     betatof_a(4) = c2/(cos(theta13)*(ds-c1))
1351 mocchiut 1.2
1352     C------- ToF Mask - S12 - S32
1353    
1354     tofmask(ch12a(tof12_i),hb12a(tof12_i)) =
1355     $ tofmask(ch12a(tof12_i),hb12a(tof12_i)) + 1
1356     tofmask(ch12b(tof12_i),hb12b(tof12_i)) =
1357     $ tofmask(ch12b(tof12_i),hb12b(tof12_i)) + 1
1358    
1359     tofmask(ch32a(tof32_i),hb32a(tof32_i)) =
1360     $ tofmask(ch32a(tof32_i),hb32a(tof32_i)) + 1
1361     tofmask(ch32b(tof32_i),hb32b(tof32_i)) =
1362     $ tofmask(ch32b(tof32_i),hb32b(tof32_i)) + 1
1363    
1364     C-------
1365    
1366 mocchiut 1.1 ENDIF
1367    
1368     C S21 - S31
1369 mocchiut 1.4
1370     IF ((tof21_i.GT.none_find).AND.(tof31_i.GT.none_find).AND.
1371     & (xtofpos(2).NE.101.).AND.(ytofpos(3).NE.101.)) THEN
1372 mocchiut 1.1 xhelp1 = tof21(1,tof21_i,itdc)+tof21(2,tof21_i,itdc)
1373     xhelp2 = tof31(1,tof31_i,itdc)+tof31(2,tof31_i,itdc)
1374     ds = xhelp1-xhelp2
1375     ihelp=(tof21_i-1)*3+tof31_i
1376     c1 = k_S21S31(1,ihelp)
1377 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrB1
1378 mocchiut 1.1 c2 = k_S21S31(2,ihelp)
1379 mocchiut 1.4 betatof_a(5) = c2/(cos(theta13)*(ds-c1))
1380 mocchiut 1.2
1381     C------- ToF Mask - S21 - S31
1382    
1383     tofmask(ch21a(tof21_i),hb21a(tof21_i)) =
1384     $ tofmask(ch21a(tof21_i),hb21a(tof21_i)) + 1
1385     tofmask(ch21b(tof21_i),hb21b(tof21_i)) =
1386     $ tofmask(ch21b(tof21_i),hb21b(tof21_i)) + 1
1387    
1388     tofmask(ch31a(tof31_i),hb31a(tof31_i)) =
1389     $ tofmask(ch31a(tof31_i),hb31a(tof31_i)) + 1
1390     tofmask(ch31b(tof31_i),hb31b(tof31_i)) =
1391     $ tofmask(ch31b(tof31_i),hb31b(tof31_i)) + 1
1392    
1393     C-------
1394    
1395 mocchiut 1.1 ENDIF
1396    
1397     C S21 - S32
1398 mocchiut 1.4
1399     IF ((tof21_i.GT.none_find).AND.(tof32_i.GT.none_find).AND.
1400     & (xtofpos(2).NE.101.).AND.(xtofpos(3).NE.101.)) THEN
1401 mocchiut 1.1 xhelp1 = tof21(1,tof21_i,itdc)+tof21(2,tof21_i,itdc)
1402     xhelp2 = tof32(1,tof32_i,itdc)+tof32(2,tof32_i,itdc)
1403     ds = xhelp1-xhelp2
1404     ihelp=(tof21_i-1)*3+tof32_i
1405     c1 = k_S21S32(1,ihelp)
1406 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrB1
1407 mocchiut 1.1 c2 = k_S21S32(2,ihelp)
1408 mocchiut 1.4 betatof_a(6) = c2/(cos(theta13)*(ds-c1))
1409 mocchiut 1.2
1410     C------- ToF Mask - S21 - S32
1411    
1412     tofmask(ch21a(tof21_i),hb21a(tof21_i)) =
1413     $ tofmask(ch21a(tof21_i),hb21a(tof21_i)) + 1
1414     tofmask(ch21b(tof21_i),hb21b(tof21_i)) =
1415     $ tofmask(ch21b(tof21_i),hb21b(tof21_i)) + 1
1416    
1417     tofmask(ch32a(tof32_i),hb32a(tof32_i)) =
1418     $ tofmask(ch32a(tof32_i),hb32a(tof32_i)) + 1
1419     tofmask(ch32b(tof32_i),hb32b(tof32_i)) =
1420     $ tofmask(ch32b(tof32_i),hb32b(tof32_i)) + 1
1421    
1422     C-------
1423    
1424 mocchiut 1.1 ENDIF
1425    
1426     C S22 - S31
1427 mocchiut 1.4
1428     IF ((tof22_i.GT.none_find).AND.(tof31_i.GT.none_find).AND.
1429     & (ytofpos(2).NE.101.).AND.(ytofpos(3).NE.101.)) THEN
1430 mocchiut 1.1 xhelp1 = tof22(1,tof22_i,itdc)+tof22(2,tof22_i,itdc)
1431     xhelp2 = tof31(1,tof31_i,itdc)+tof31(2,tof31_i,itdc)
1432     ds = xhelp1-xhelp2
1433     ihelp=(tof22_i-1)*3+tof31_i
1434     c1 = k_S22S31(1,ihelp)
1435 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrB1
1436 mocchiut 1.1 c2 = k_S22S31(2,ihelp)
1437     betatof_a(7) = c2/(cos(theta13)*(ds-c1))
1438 mocchiut 1.2
1439     C------- ToF Mask - S22 - S31
1440    
1441     tofmask(ch22a(tof22_i),hb22a(tof22_i)) =
1442     $ tofmask(ch22a(tof22_i),hb22a(tof22_i)) + 1
1443     tofmask(ch22b(tof22_i),hb22b(tof22_i)) =
1444     $ tofmask(ch22b(tof22_i),hb22b(tof22_i)) + 1
1445    
1446     tofmask(ch31a(tof31_i),hb31a(tof31_i)) =
1447     $ tofmask(ch31a(tof31_i),hb31a(tof31_i)) + 1
1448     tofmask(ch31b(tof31_i),hb31b(tof31_i)) =
1449     $ tofmask(ch31b(tof31_i),hb31b(tof31_i)) + 1
1450    
1451     C-------
1452    
1453 mocchiut 1.1 ENDIF
1454    
1455     C S22 - S32
1456 mocchiut 1.4
1457     IF ((tof22_i.GT.none_find).AND.(tof32_i.GT.none_find).AND.
1458     & (ytofpos(2).NE.101.).AND.(xtofpos(3).NE.101.)) THEN
1459 mocchiut 1.1 xhelp1 = tof22(1,tof22_i,itdc)+tof22(2,tof22_i,itdc)
1460     xhelp2 = tof32(1,tof32_i,itdc)+tof32(2,tof32_i,itdc)
1461     ds = xhelp1-xhelp2
1462     ihelp=(tof22_i-1)*3+tof32_i
1463     c1 = k_S22S32(1,ihelp)
1464 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrB1
1465 mocchiut 1.1 c2 = k_S22S32(2,ihelp)
1466     betatof_a(8) = c2/(cos(theta13)*(ds-c1))
1467 mocchiut 1.2
1468     C------- ToF Mask - S22 - S32
1469    
1470     tofmask(ch22a(tof22_i),hb22a(tof22_i)) =
1471     $ tofmask(ch22a(tof22_i),hb22a(tof22_i)) + 1
1472     tofmask(ch22b(tof22_i),hb22b(tof22_i)) =
1473     $ tofmask(ch22b(tof22_i),hb22b(tof22_i)) + 1
1474    
1475     tofmask(ch32a(tof32_i),hb32a(tof32_i)) =
1476     $ tofmask(ch32a(tof32_i),hb32a(tof32_i)) + 1
1477     tofmask(ch32b(tof32_i),hb32b(tof32_i)) =
1478     $ tofmask(ch32b(tof32_i),hb32b(tof32_i)) + 1
1479    
1480     C-------
1481    
1482 mocchiut 1.1 ENDIF
1483    
1484     C S11 - S21
1485 mocchiut 1.4
1486     IF ((tof11_i.GT.none_find).AND.(tof21_i.GT.none_find).AND.
1487     & (ytofpos(1).NE.101.).AND.(xtofpos(2).NE.101.)) THEN
1488 mocchiut 1.1 xhelp1 = tof11(1,tof11_i,itdc)+tof11(2,tof11_i,itdc)
1489     xhelp2 = tof21(1,tof21_i,itdc)+tof21(2,tof21_i,itdc)
1490     ds = xhelp1-xhelp2
1491     ihelp=(tof11_i-1)*2+tof21_i
1492     c1 = k_S11S21(1,ihelp)
1493 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrC1
1494 mocchiut 1.1 c2 = k_S11S21(2,ihelp)
1495     betatof_a(9) = c2/(cos(theta13)*(ds-c1))
1496 mocchiut 1.2
1497     C------- ToF Mask - S11 - S21
1498    
1499     tofmask(ch11a(tof11_i),hb11a(tof11_i)) =
1500     $ tofmask(ch11a(tof11_i),hb11a(tof11_i)) + 1
1501     tofmask(ch11b(tof11_i),hb11b(tof11_i)) =
1502     $ tofmask(ch11b(tof11_i),hb11b(tof11_i)) + 1
1503    
1504     tofmask(ch21a(tof21_i),hb21a(tof21_i)) =
1505     $ tofmask(ch21a(tof21_i),hb21a(tof21_i)) + 1
1506     tofmask(ch21b(tof21_i),hb21b(tof21_i)) =
1507     $ tofmask(ch21b(tof21_i),hb21b(tof21_i)) + 1
1508    
1509     C-------
1510    
1511 mocchiut 1.1 ENDIF
1512    
1513     C S11 - S22
1514 mocchiut 1.4
1515     IF ((tof11_i.GT.none_find).AND.(tof22_i.GT.none_find).AND.
1516     & (ytofpos(1).NE.101.).AND.(ytofpos(2).NE.101.)) THEN
1517 mocchiut 1.1 xhelp1 = tof11(1,tof11_i,itdc)+tof11(2,tof11_i,itdc)
1518     xhelp2 = tof22(1,tof22_i,itdc)+tof22(2,tof22_i,itdc)
1519     ds = xhelp1-xhelp2
1520     ihelp=(tof11_i-1)*2+tof22_i
1521     c1 = k_S11S22(1,ihelp)
1522 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrC1
1523 mocchiut 1.1 c2 = k_S11S22(2,ihelp)
1524     betatof_a(10) = c2/(cos(theta13)*(ds-c1))
1525 mocchiut 1.2
1526     C------- ToF Mask - S11 - S22
1527    
1528     tofmask(ch11a(tof11_i),hb11a(tof11_i)) =
1529     $ tofmask(ch11a(tof11_i),hb11a(tof11_i)) + 1
1530     tofmask(ch11b(tof11_i),hb11b(tof11_i)) =
1531     $ tofmask(ch11b(tof11_i),hb11b(tof11_i)) + 1
1532    
1533     tofmask(ch22a(tof22_i),hb22a(tof22_i)) =
1534     $ tofmask(ch22a(tof22_i),hb22a(tof22_i)) + 1
1535     tofmask(ch22b(tof22_i),hb22b(tof22_i)) =
1536     $ tofmask(ch22b(tof22_i),hb22b(tof22_i)) + 1
1537    
1538     C-------
1539    
1540 mocchiut 1.1 ENDIF
1541    
1542     C S12 - S21
1543 mocchiut 1.4
1544     IF ((tof12_i.GT.none_find).AND.(tof21_i.GT.none_find).AND.
1545     & (xtofpos(1).NE.101.).AND.(xtofpos(2).NE.101.)) THEN
1546 mocchiut 1.1 xhelp1 = tof12(1,tof12_i,itdc)+tof12(2,tof12_i,itdc)
1547     xhelp2 = tof21(1,tof21_i,itdc)+tof21(2,tof21_i,itdc)
1548     ds = xhelp1-xhelp2
1549     ihelp=(tof12_i-1)*2+tof21_i
1550     c1 = k_S12S21(1,ihelp)
1551 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrC1
1552 mocchiut 1.1 c2 = k_S12S21(2,ihelp)
1553     betatof_a(11) = c2/(cos(theta13)*(ds-c1))
1554 mocchiut 1.2
1555     C------- ToF Mask - S12 - S21
1556    
1557     tofmask(ch12a(tof12_i),hb12a(tof12_i)) =
1558     $ tofmask(ch12a(tof12_i),hb12a(tof12_i)) + 1
1559     tofmask(ch12b(tof12_i),hb12b(tof12_i)) =
1560     $ tofmask(ch12b(tof12_i),hb12b(tof12_i)) + 1
1561    
1562     tofmask(ch21a(tof21_i),hb21a(tof21_i)) =
1563     $ tofmask(ch21a(tof21_i),hb21a(tof21_i)) + 1
1564     tofmask(ch21b(tof21_i),hb21b(tof21_i)) =
1565     $ tofmask(ch21b(tof21_i),hb21b(tof21_i)) + 1
1566    
1567     C-------
1568    
1569 mocchiut 1.1 ENDIF
1570    
1571     C S12 - S22
1572 mocchiut 1.4
1573     IF ((tof12_i.GT.none_find).AND.(tof22_i.GT.none_find).AND.
1574     & (xtofpos(1).NE.101.).AND.(ytofpos(2).NE.101.)) THEN
1575 mocchiut 1.1 xhelp1 = tof12(1,tof12_i,itdc)+tof12(2,tof12_i,itdc)
1576     xhelp2 = tof22(1,tof22_i,itdc)+tof22(2,tof22_i,itdc)
1577     ds = xhelp1-xhelp2
1578     ihelp=(tof12_i-1)*2+tof22_i
1579     c1 = k_S12S22(1,ihelp)
1580 mocchiut 1.7 if (iz.gt.2) c1 = c1 + k1corrC1
1581 mocchiut 1.1 c2 = k_S12S22(2,ihelp)
1582     betatof_a(12) = c2/(cos(theta13)*(ds-c1))
1583 mocchiut 1.2
1584     C------- ToF Mask - S12 - S22
1585    
1586     tofmask(ch12a(tof12_i),hb12a(tof12_i)) =
1587     $ tofmask(ch12a(tof12_i),hb12a(tof12_i)) + 1
1588     tofmask(ch12b(tof12_i),hb12b(tof12_i)) =
1589     $ tofmask(ch12b(tof12_i),hb12b(tof12_i)) + 1
1590    
1591     tofmask(ch22a(tof22_i),hb22a(tof22_i)) =
1592     $ tofmask(ch22a(tof22_i),hb22a(tof22_i)) + 1
1593     tofmask(ch22b(tof22_i),hb22b(tof22_i)) =
1594     $ tofmask(ch22b(tof22_i),hb22b(tof22_i)) + 1
1595    
1596     C-------
1597    
1598 mocchiut 1.1 ENDIF
1599 mocchiut 1.2
1600     C---------------------------------------------------------
1601 mocchiut 1.7 C
1602     C icount=0
1603     C sw=0.
1604     C sxw=0.
1605     C beta_mean=100.
1606     C
1607     C do i=1,12
1608     C if ((betatof_a(i).gt.-1.5).and.(betatof_a(i).lt.1.5)) then
1609     C icount= icount+1
1610     C if (i.le.4) w_i=1./(0.13**2.)
1611     C if ((i.ge.5).and.(i.le.8)) w_i=1./(0.16**2.)
1612     C if (i.ge.9) w_i=1./(0.25**2.) ! to be checked
1613     C sxw=sxw + betatof_a(i)*w_i
1614     C sw =sw + w_i
1615     C endif
1616     C enddo
1617     C
1618     C if (icount.gt.0) beta_mean=sxw/sw
1619     C betatof_a(13) = beta_mean
1620     C
1621 pam-de 1.8
1622 mocchiut 1.7 C-------- New mean beta calculation -----------------------
1623 mocchiut 1.1
1624 mocchiut 1.7 do i=1,12
1625     btemp(i) = betatof_a(i)
1626     enddo
1627 mocchiut 1.1
1628 pam-de 1.8 betatof_a(13)=newbeta(1,btemp,hitvec,10.,10.,20.)
1629 mocchiut 1.1
1630 mocchiut 1.7 C--------------------------------------------------------------
1631     C write(*,*) betatof_a
1632 mocchiut 1.4 c write(*,*) xtofpos
1633     c write(*,*) ytofpos
1634 mocchiut 1.6 c write(*,*)'tofl2com beta', betatof_a
1635 mocchiut 1.4 C write(*,*) adcflagtof
1636 mocchiut 1.6 c write(*,*) 'tofl2com'
1637     c write(*,*) xtofpos
1638     c write(*,*) ytofpos
1639     c write(*,*) xtr_tof
1640     c write(*,*) ytr_tof
1641    
1642 mocchiut 1.11 c 100 continue
1643     continue
1644 mocchiut 1.1
1645     C
1646     RETURN
1647     END
1648 mocchiut 1.4
1649 mocchiut 1.6
1650     C------------------------------------------------------------------
1651     C------------------------------------------------------------------
1652    
1653     function atten(is,ilay,ipad,x)
1654     include 'input_tof.txt'
1655     real atten
1656     real x
1657     real xmin,xmax
1658     integer ilay,ipad
1659    
1660     * S11 8 paddles 33.0 x 5.1 cm
1661     * S12 6 paddles 40.8 x 5.5 cm
1662     * S21 2 paddles 18.0 x 7.5 cm
1663     * S22 2 paddles 15.0 x 9.0 cm
1664     * S31 3 paddles 15.0 x 6.0 cm
1665     * S32 3 paddles 18.0 x 5.0 cm
1666    
1667    
1668     c if (ilay.eq.11) write(*,*) 'start ',ipad,is,adcx11(is,ipad,1),
1669     c & adcx11(is,ipad,2),adcx11(is,ipad,3),adcx11(is,ipad,4)
1670     c if (ilay.eq.12) write(*,*) 'start ',ipad,is,adcx12(is,ipad,1),
1671     c & adcx12(is,ipad,2),adcx12(is,ipad,3),adcx12(is,ipad,4)
1672    
1673    
1674     if (ilay.eq.11) xmin=-33.0/2.
1675     if (ilay.eq.11) xmax= 33.0/2.
1676     if (ilay.eq.12) xmin=-40.8/2.
1677     if (ilay.eq.12) xmax= 40.8/2.
1678    
1679     if (ilay.eq.21) xmin=-18.0/2.
1680     if (ilay.eq.21) xmax= 18.0/2.
1681     if (ilay.eq.22) xmin=-15.0/2.
1682     if (ilay.eq.22) xmax= 15.0/2.
1683    
1684     if (ilay.eq.31) xmin=-15.0/2.
1685     if (ilay.eq.31) xmax= 15.0/2.
1686     if (ilay.eq.32) xmin=-18.0/2.
1687     if (ilay.eq.32) xmax= 18.0/2.
1688    
1689     if (x .lt. xmin) x=xmin
1690     if (x .gt. xmax) x=xmax
1691    
1692    
1693     if (ilay.eq.11) atten=
1694     & adcx11(is,ipad,1)*exp(x*adcx11(is,ipad,2))
1695     & + adcx11(is,ipad,3)*exp(x*adcx11(is,ipad,4))
1696    
1697     if (ilay.eq.12) atten=
1698     & adcx12(is,ipad,1)*exp(x*adcx12(is,ipad,2))
1699     & + adcx12(is,ipad,3)*exp(x*adcx12(is,ipad,4))
1700    
1701     if (ilay.eq.21) atten=
1702     & adcx21(is,ipad,1)*exp(x*adcx21(is,ipad,2))
1703     & + adcx21(is,ipad,3)*exp(x*adcx21(is,ipad,4))
1704    
1705     if (ilay.eq.22) atten=
1706     & adcx22(is,ipad,1)*exp(x*adcx22(is,ipad,2))
1707     & + adcx22(is,ipad,3)*exp(x*adcx22(is,ipad,4))
1708    
1709     if (ilay.eq.31) atten=
1710     & adcx31(is,ipad,1)*exp(x*adcx31(is,ipad,2))
1711     & + adcx31(is,ipad,3)*exp(x*adcx31(is,ipad,4))
1712    
1713     if (ilay.eq.32) atten=
1714     & adcx32(is,ipad,1)*exp(x*adcx32(is,ipad,2))
1715     & + adcx32(is,ipad,3)*exp(x*adcx32(is,ipad,4))
1716    
1717     if (atten.gt.10000) atten=10000.
1718    
1719     end
1720    
1721     C------------------------------------------------------------------
1722     C------------------------------------------------------------------
1723    
1724     function pc_adc(ix)
1725     include 'input_tof.txt'
1726     real pc_adc
1727     integer ix
1728    
1729     pc_adc=28.0407 + 0.628929*ix
1730     & - 5.80901e-05*ix*ix + 3.14092e-08*ix*ix*ix
1731     c write(*,*) ix,pc_adc
1732     end
1733    
1734     C------------------------------------------------------------------
1735 mocchiut 1.7 C------------------------------------------------------------------
1736    
1737     function check_charge(theta,hitvec)
1738    
1739     include 'input_tof.txt'
1740     include 'tofcomm.txt'
1741    
1742     real check_charge
1743     integer hitvec(6)
1744     REAL CHARGE, theta
1745    
1746     C upper and lower limits for the helium selection
1747     REAL A_l(24),A_h(24)
1748     DATA A_l /200,190,300,210,220,200,210,60,60,120,220,
1749     & 120,160,50,300,200,120,250,350,300,350,250,280,300/
1750     DATA A_h /550,490,800,600,650,600,600,260,200,380,
1751     & 620,380,550,200,850,560,400,750,900,800,880,800,750,800/
1752    
1753     C The k1 constants for the beta calculation, only for S1-S3
1754     C k2 constant is taken to be the standard 2D/c
1755     REAL k1(84)
1756     DATA k1 /50,59.3296,28.4328,-26.0818,5.91253,-19.588,
1757     & -9.26316,24.7544,2.32465,-50.5058,-15.3195,-39.1443,
1758     & -91.2546,-58.6243,-84.5641,-63.1516,-32.2091,-58.3358,
1759     & 13.8084,45.5322,33.2416,-11.5313,51.3271,75,-14.1141,
1760     & 42.8466,15.1794,-63.6672,-6.07739,-32.164,-41.771,10.5274,
1761     & -9.46096,-81.7404,-28.783,-52.7167,-127.394,-69.6166,
1762     & -93.4655,-98.9543,-42.863,-67.8244,-19.3238,31.1221,8.7319,
1763     & -43.1627,5.55573,-14.4078,-83.4466,-47.4647,-77.8379,
1764     & -108.222,-75.986,-101.297,-96.0205,-63.1881,-90.1372,
1765     & -22.7347,8.31409,-19.6912,-7.49008,23.6979,-1.66677,
1766     & 1.81556,34.4668,6.23693,-100,-59.5861,-90.9159,-141.639,
1767     & -89.2521,-112.881,-130.199,-77.0357,-98.4632,-60.2086,
1768     & -4.82097,-29.3705,-43.6469,10.5884,-9.31304,-35.3329,
1769     & 25.2514,25.6/
1770    
1771    
1772    
1773     REAL zin(6)
1774     DATA zin /53.74, 53.04, 23.94, 23.44, -23.49, -24.34/
1775    
1776     REAL c1,c2,xhelp,xhelp1,xhelp2,ds,dist,F
1777     REAL sw,sxw,beta_mean_tof,w_i
1778     INTEGER ihelp
1779     INTEGER ipmt(4)
1780     REAL time(4),beta1(4)
1781    
1782     REAL adca(48), tdca(48)
1783    
1784     REAL a1,a2
1785     INTEGER jj
1786    
1787 mocchiut 1.10 c get rid of warnings EMILIANO
1788     i = 0
1789     slope = 0
1790     offset = 0
1791     none_find = 0
1792     none_ev = 0
1793     adc_ev = 0
1794     tdc_ev = 0
1795     iadc = 0
1796     itdc = 0
1797     right = 0
1798     left = 0
1799     tof12_y(1) = tof12_y(1)
1800     tof11_x(1) = tof11_x(1)
1801     tof21_y(1) = tof21_y(1)
1802     tof22_x(1) = tof22_x(1)
1803     tof32_y(1) = tof32_y(1)
1804     tof31_x(1) = tof31_x(1)
1805     c get rid of warnings
1806    
1807 mocchiut 1.7 C-----------------------------------------------------------
1808     C--- get data
1809     C-----------------------------------------------------------
1810    
1811     do j=1,8
1812     ih = 1 + 0 +((j-1)*2)
1813     adca(ih) = adc(ch11a(j),hb11a(j))
1814     adca(ih+1) = adc(ch11b(j),hb11b(j))
1815     tdca(ih) = tdc(ch11a(j),hb11a(j))
1816     tdca(ih+1) = tdc(ch11b(j),hb11b(j))
1817     enddo
1818    
1819     do j=1,6
1820     ih = 1 + 16+((j-1)*2)
1821     adca(ih) = adc(ch12a(j),hb12a(j))
1822     adca(ih+1) = adc(ch12b(j),hb12b(j))
1823     tdca(ih) = tdc(ch12a(j),hb12a(j))
1824     tdca(ih+1) = tdc(ch12b(j),hb12b(j))
1825     enddo
1826    
1827     do j=1,2
1828     ih = 1 + 28+((j-1)*2)
1829     adca(ih) = adc(ch21a(j),hb21a(j))
1830     adca(ih+1) = adc(ch21b(j),hb21b(j))
1831     tdca(ih) = tdc(ch21a(j),hb21a(j))
1832     tdca(ih+1) = tdc(ch21b(j),hb21b(j))
1833     enddo
1834    
1835     do j=1,2
1836     ih = 1 + 32+((j-1)*2)
1837     adca(ih) = adc(ch22a(j),hb22a(j))
1838     adca(ih+1) = adc(ch22b(j),hb22b(j))
1839     tdca(ih) = tdc(ch22a(j),hb22a(j))
1840     tdca(ih+1) = tdc(ch22b(j),hb22b(j))
1841     enddo
1842    
1843     do j=1,3
1844     ih = 1 + 36+((j-1)*2)
1845     adca(ih) = adc(ch31a(j),hb31a(j))
1846     adca(ih+1) = adc(ch31b(j),hb31b(j))
1847     tdca(ih) = tdc(ch31a(j),hb31a(j))
1848     tdca(ih+1) = tdc(ch31b(j),hb31b(j))
1849     enddo
1850    
1851     do j=1,3
1852     ih = 1 + 42+((j-1)*2)
1853     adca(ih) = adc(ch32a(j),hb32a(j))
1854     adca(ih+1) = adc(ch32b(j),hb32b(j))
1855     tdca(ih) = tdc(ch32a(j),hb32a(j))
1856     tdca(ih+1) = tdc(ch32b(j),hb32b(j))
1857     enddo
1858    
1859    
1860     c write(*,*) adca
1861     c write(*,*) tdca
1862    
1863    
1864     C============ calculate beta and select charge > Z=1 ===============
1865    
1866     ICHARGE=1
1867    
1868     C find hitted paddle by looking for ADC values on both sides
1869     C since we looking for Z>1 this gives decent results
1870    
1871     tof11_i = hitvec(1)-1
1872     tof12_i = hitvec(2)-1
1873     tof21_i = hitvec(3)-1
1874     tof22_i = hitvec(4)-1
1875     tof31_i = hitvec(5)-1
1876     tof32_i = hitvec(6)-1
1877    
1878     c write(*,*) ' in charge check'
1879     c write(*,*) theta,tof11_i,tof12_i,tof21_i,tof22_i,tof31_i,tof32_i
1880    
1881     C----------------------------------------------------------------
1882    
1883     beta_help=100.
1884     beta_mean_tof=100.
1885    
1886     do jj=1,4
1887     beta1(jj) = 100.
1888     enddo
1889    
1890     C----------------------------------------------------------------
1891     C--------- S1 - S3 ---------------------------------------------
1892     C----------------------------------------------------------------
1893    
1894     C--------- S11 - S31 -------------------------------------------
1895    
1896     if ((tof11_i.gt.-1).and.(tof31_i.gt.-1)) then
1897    
1898     dist = zin(1) - zin(5)
1899     c2 = (2.*0.01*dist)/(3.E08*50.E-12)
1900     F = 1./cos(theta)
1901    
1902     ipmt(1) = (tof11_i)*2+1
1903     ipmt(2) = (tof11_i)*2+2
1904     ipmt(3) = 36+(tof31_i)*2+1
1905     ipmt(4) = 36+(tof31_i)*2+2
1906    
1907     c write(*,*) ipmt
1908    
1909     do jj=1,4
1910     time(jj) = tdca(ipmt(jj))
1911     enddo
1912    
1913     c write(*,*) time
1914    
1915     if ((time(1).lt.4095).and.(time(2).lt.4095).and.
1916     & (time(3).lt.4095).and.(time(4).lt.4095)) then
1917     xhelp1 = time(1) + time(2)
1918     xhelp2 = time(3) + time(4)
1919     ds = xhelp1-xhelp2
1920     ihelp=0+(tof11_i)*3+tof31_i
1921     c1 = k1(ihelp+1)
1922     beta1(1) = c2*F/(ds-c1);
1923     endif
1924     c write(*,*) beta1(1)
1925     endif ! tof_....
1926    
1927    
1928     C--------- S11 - S32 -------------------------------------------
1929    
1930     if ((tof11_i.gt.-1).and.(tof32_i.gt.-1)) then
1931    
1932     dist = zin(1) - zin(6)
1933     c2 = (2.*0.01*dist)/(3.E08*50.E-12)
1934     F = 1./cos(theta)
1935    
1936     ipmt(1) = (tof11_i)*2+1
1937     ipmt(2) = (tof11_i)*2+2
1938     ipmt(3) = 42+(tof32_i)*2+1
1939     ipmt(4) = 42+(tof32_i)*2+2
1940    
1941     do jj=1,4
1942     time(jj) = tdca(ipmt(jj))
1943     enddo
1944    
1945     if ((time(1).lt.4095).and.(time(2).lt.4095).and.
1946     & (time(3).lt.4095).and.(time(4).lt.4095)) then
1947     xhelp1 = time(1) + time(2)
1948     xhelp2 = time(3) + time(4)
1949     ds = xhelp1-xhelp2
1950     ihelp=24+(tof11_i)*3+tof32_i
1951     c1 = k1(ihelp+1)
1952     beta1(2) = c2*F/(ds-c1);
1953     endif
1954     endif ! tof_....
1955    
1956    
1957     C--------- S12 - S31 -------------------------------------------
1958    
1959     if ((tof12_i.gt.-1).and.(tof31_i.gt.-1)) then
1960    
1961     dist = zin(2) - zin(5)
1962     c2 = (2.*0.01*dist)/(3.E08*50.E-12)
1963     F = 1./cos(theta)
1964    
1965     ipmt(1) = 16+(tof12_i)*2+1
1966     ipmt(2) = 16+(tof12_i)*2+2
1967     ipmt(3) = 36+(tof31_i)*2+1
1968     ipmt(4) = 36+(tof31_i)*2+2
1969    
1970     do jj=1,4
1971     time(jj) = tdca(ipmt(jj))
1972     enddo
1973    
1974     if ((time(1).lt.4095).and.(time(2).lt.4095).and.
1975     & (time(3).lt.4095).and.(time(4).lt.4095)) then
1976     xhelp1 = time(1) + time(2)
1977     xhelp2 = time(3) + time(4)
1978     ds = xhelp1-xhelp2
1979     ihelp=48+(tof12_i)*3+tof31_i
1980     c1 = k1(ihelp+1)
1981     beta1(3) = c2*F/(ds-c1);
1982     endif
1983     endif ! tof_....
1984    
1985    
1986     C--------- S12 - S32 -------------------------------------------
1987    
1988     if ((tof12_i.gt.-1).and.(tof32_i.gt.-1)) then
1989    
1990     dist = zin(2) - zin(6)
1991     c2 = (2.*0.01*dist)/(3.E08*50.E-12)
1992     F = 1./cos(theta)
1993    
1994     ipmt(1) = 16+(tof12_i)*2+1
1995     ipmt(2) = 16+(tof12_i)*2+2
1996     ipmt(3) = 42+(tof32_i)*2+1
1997     ipmt(4) = 42+(tof32_i)*2+2
1998    
1999     do jj=1,4
2000     time(jj) = tdca(ipmt(jj))
2001     enddo
2002    
2003     if ((time(1).lt.4095).and.(time(2).lt.4095).and.
2004     & (time(3).lt.4095).and.(time(4).lt.4095)) then
2005     xhelp1 = time(1) + time(2)
2006     xhelp2 = time(3) + time(4)
2007     ds = xhelp1-xhelp2
2008     ihelp=56+(tof12_i)*3+tof32_i
2009     c1 = k1(ihelp+1)
2010     beta1(4) = c2*F/(ds-c1);
2011     endif
2012    
2013     endif ! tof_....
2014    
2015     c write(*,*) beta1
2016    
2017     C---- calculate beta mean, only downward going particles are interesting ----
2018    
2019     sw=0.
2020     sxw=0.
2021     beta_mean_tof=100.
2022    
2023     do jj=1,4
2024     if ((beta1(jj).gt.0.1).and.(beta1(jj).lt.2.0)) then
2025     w_i=1./(0.13*0.13)
2026     sxw=sxw + beta1(jj)*w_i
2027     sw =sw + w_i ;
2028     endif
2029     enddo
2030    
2031     if (sw.gt.0) beta_mean_tof=sxw/sw;
2032    
2033     c write(*,*) 'beta_mean_tof ',beta_mean_tof
2034    
2035     beta_help = beta_mean_tof ! pow(beta_mean_tof,1.0) gave best results
2036    
2037     CCCCC endif ! if tof11_i > -1 && ...... beta calculation
2038    
2039     C----------------------- Select charge --------------------------
2040    
2041     charge=0
2042    
2043     if ((beta_mean_tof.gt.0.2).and.(beta_mean_tof.lt.2.0)) then
2044    
2045     icount1=0
2046     icount2=0
2047     icount3=0
2048    
2049     do jj=0,23
2050     a1 = adca(2*jj+1)
2051     a2 = adca(2*jj+2)
2052     if ((a1.lt.4095).and.(a2.lt.4095)) then
2053     a1 = adca(2*jj+1)*cos(theta)
2054     a2 = adca(2*jj+2)*cos(theta)
2055     xhelp = 100000.
2056     xhelp1 = 100000.
2057     xhelp = sqrt(a1*a2) ! geometric mean
2058     xhelp1 = beta_help*xhelp
2059     C if geometric mean multiplied by beta_help is inside/outside helium
2060     C limits, increase counter
2061     if (xhelp1.lt.A_l(jj+1)) icount1=icount1+1
2062     if ((xhelp1.gt.A_l(jj+1)).and.(xhelp1.lt.A_h(jj+1)))
2063     & icount2=icount2+1
2064     if (xhelp1.gt.A_h(jj+1)) icount3=icount3+1
2065     endif
2066     enddo
2067    
2068    
2069     C if more than three paddles see the same...
2070    
2071     if (icount1 .gt. 3) charge=1
2072     if (icount2 .gt. 3) charge=2
2073     if (icount3 .gt. 3) charge=3
2074    
2075     endif ! 0.2<beta<2.0
2076    
2077     C no beta found? Sum up geometric means of paddles and derive the mean...
2078    
2079     if (beta_mean_tof.eq.100.) then
2080    
2081     xhelp = 0.
2082     icount = 0
2083    
2084     if (tof11_i.gt.-1) then
2085     jj=tof11_i
2086     a1 = adca(0+2*jj+1)
2087     a2 = adca(0+2*jj+2)
2088     if ((a1.lt.4095).and.(a2.lt.4095)) then
2089     a1 = a1*cos(theta)
2090     a2 = a2*cos(theta)
2091     xhelp = xhelp + sqrt(a1*a2)
2092     icount=icount+1
2093     endif
2094     endif
2095    
2096     if (tof12_i.gt.-1) then
2097     jj=tof12_i
2098     a1 = adca(16+2*jj+1)
2099     a2 = adca(16+2*jj+2)
2100     if ((a1.lt.4095).and.(a2.lt.4095)) then
2101     a1 = a1*cos(theta)
2102     a2 = a2*cos(theta)
2103     xhelp = xhelp + sqrt(a1*a2)
2104     icount=icount+1
2105     endif
2106     endif
2107    
2108     if (tof21_i.gt.-1) then
2109     jj=tof21_i
2110     a1 = adca(28+2*jj+1)
2111     a2 = adca(28+2*jj+2)
2112     if ((a1.lt.4095).and.(a2.lt.4095)) then
2113     a1 = a1*cos(theta)
2114     a2 = a2*cos(theta)
2115     xhelp = xhelp + sqrt(a1*a2)
2116     icount=icount+1
2117     endif
2118     endif
2119    
2120     if (tof22_i.gt.-1) then
2121     jj=tof22_i
2122     a1 = adca(32+2*jj+1)
2123     a2 = adca(32+2*jj+2)
2124     if ((a1.lt.4095).and.(a2.lt.4095)) then
2125     a1 = a1*cos(theta)
2126     a2 = a2*cos(theta)
2127     xhelp = xhelp + sqrt(a1*a2)
2128     icount=icount+1
2129     endif
2130     endif
2131    
2132     if (tof31_i.gt.-1) then
2133     jj=tof31_i
2134     a1 = adca(36+2*jj+1)
2135     a2 = adca(36+2*jj+2)
2136     if ((a1.lt.4095).and.(a2.lt.4095)) then
2137     a1 = a1*cos(theta)
2138     a2 = a2*cos(theta)
2139     xhelp = xhelp + sqrt(a1*a2)
2140     icount=icount+1
2141     endif
2142     endif
2143    
2144     if (tof32_i.gt.-1) then
2145     jj=tof32_i
2146     a1 = adca(42+2*jj+1)
2147     a2 = adca(42+2*jj+2)
2148     if ((a1.lt.4095).and.(a2.lt.4095)) then
2149     a1 = a1*cos(theta)
2150     a2 = a2*cos(theta)
2151     xhelp = xhelp + sqrt(a1*a2)
2152     icount=icount+1
2153     endif
2154     endif
2155    
2156    
2157     if (icount.gt.0) xhelp=xhelp/icount
2158     if ((icount.gt.2).and.(xhelp.gt.1500.)) charge=3
2159    
2160     endif ! beta_mean_tof.eq.100.
2161    
2162     c write(*,*) 'in function charge: ',charge
2163     check_charge = charge
2164    
2165    
2166     END
2167    
2168     C****************************************************************************
2169     C****************************************************************************
2170     C****************************************************************************
2171    
2172 pam-de 1.8 function newbeta(iflag,b,hitvec,resmax,qualitycut,chi2cut)
2173 mocchiut 1.7
2174     include 'input_tof.txt'
2175     include 'output_tof.txt'
2176     include 'tofcomm.txt'
2177    
2178     REAL newbeta
2179     REAL resmax,qualitycut,chi2cut
2180     REAL w_i(12),w_il(6),quality,res,betachi,beta_mean_inv
2181     REAL sw,sxw,b(12),beta_mean,chi2,xhelp
2182 pam-de 1.8 REAL tdcfl(4,12)
2183 mocchiut 1.7
2184 pam-de 1.8 INTEGER iflag,icount,hitvec(6)
2185 mocchiut 1.7
2186     INTEGER itop(12),ibot(12)
2187     DATA itop /1,1,2,2,3,3,4,4,1,1,2,2/
2188     DATA ibot /5,6,5,6,5,6,5,6,3,4,3,4/
2189    
2190 mocchiut 1.10
2191     c get rid of warnings EMILIANO
2192     slope = 0
2193     offset = 0
2194     none_find = 0
2195     none_ev = 0
2196     adc_ev = 0
2197     tdc_ev = 0
2198     iadc = 0
2199     itdc = 0
2200     right = 0
2201     left = 0
2202     tof12_y(1) = tof12_y(1)
2203     tof11_x(1) = tof11_x(1)
2204     tof21_y(1) = tof21_y(1)
2205     tof22_x(1) = tof22_x(1)
2206     tof32_y(1) = tof32_y(1)
2207     tof31_x(1) = tof31_x(1)
2208     c get rid of warnings
2209    
2210 mocchiut 1.7 C====================================================================
2211    
2212     tof11_i = hitvec(1)
2213     tof12_i = hitvec(2)
2214     tof21_i = hitvec(3)
2215     tof22_i = hitvec(4)
2216     tof31_i = hitvec(5)
2217     tof32_i = hitvec(6)
2218    
2219 pam-de 1.8 if (iflag.eq.1) then ! call from tofl2com
2220     do i=1,4
2221     do j=1,12
2222     tdcfl(i,j) = tdcflagtof(i,j)
2223     enddo
2224     enddo
2225     endif
2226    
2227     if (iflag.eq.2) then ! call from toftrk
2228     do i=1,4
2229     do j=1,12
2230     tdcfl(i,j) = tdcflag(i,j)
2231     enddo
2232     enddo
2233     endif
2234    
2235 mocchiut 1.7
2236     C--- Find out ToF layers with artificial TDC values -------------
2237    
2238     do jj=1,6
2239     w_il(jj) = 1000.
2240     enddo
2241    
2242    
2243     if (tof11_i.gt.0) then
2244     if ((tofmask(ch11a(tof11_i),hb11a(tof11_i)).gt.0).or.
2245     & (tofmask(ch11b(tof11_i),hb11b(tof11_i)).gt.0)) then
2246     w_il(1)=0
2247 pam-de 1.8 i1=tdcfl(ch11a(tof11_i),hb11a(tof11_i))
2248     i2=tdcfl(ch11b(tof11_i),hb11b(tof11_i))
2249 mocchiut 1.7 if ((i1.eq.1).or.(i2.eq.1)) w_il(1) = 1 ! tdcflag
2250     endif
2251     endif
2252    
2253     if (tof12_i.gt.0) then
2254     if ((tofmask(ch12a(tof12_i),hb12a(tof12_i)).gt.0).or.
2255     & (tofmask(ch12b(tof12_i),hb12b(tof12_i)).gt.0)) then
2256     w_il(2)=0
2257 pam-de 1.8 i1=tdcfl(ch12a(tof12_i),hb12a(tof12_i))
2258     i2=tdcfl(ch12b(tof12_i),hb12b(tof12_i))
2259 mocchiut 1.7 if ((i1.eq.1).or.(i2.eq.1)) w_il(2) = 1 ! tdcflag
2260     endif
2261     endif
2262    
2263     if (tof21_i.gt.0) then
2264     if ((tofmask(ch21a(tof21_i),hb21a(tof21_i)).gt.0).or.
2265     & (tofmask(ch21b(tof21_i),hb21b(tof21_i)).gt.0)) then
2266     w_il(3)=0
2267 pam-de 1.8 i1=tdcfl(ch21a(tof21_i),hb21a(tof21_i))
2268     i2=tdcfl(ch21b(tof21_i),hb21b(tof21_i))
2269 mocchiut 1.7 if ((i1.eq.1).or.(i2.eq.1)) w_il(3) = 1 ! tdcflag
2270     endif
2271     endif
2272    
2273     if (tof22_i.gt.0) then
2274     if ((tofmask(ch22a(tof22_i),hb22a(tof22_i)).gt.0).or.
2275     & (tofmask(ch22b(tof22_i),hb22b(tof22_i)).gt.0)) then
2276     w_il(4)=0
2277 pam-de 1.8 i1=tdcfl(ch22a(tof22_i),hb22a(tof22_i))
2278     i2=tdcfl(ch22b(tof22_i),hb22b(tof22_i))
2279 mocchiut 1.7 if ((i1.eq.1).or.(i2.eq.1)) w_il(4) = 1 ! tdcflag
2280     endif
2281     endif
2282    
2283     if (tof31_i.gt.0) then
2284     if ((tofmask(ch31a(tof31_i),hb11a(tof31_i)).gt.0).or.
2285     & (tofmask(ch31b(tof31_i),hb31b(tof31_i)).gt.0)) then
2286     w_il(5)=0
2287 pam-de 1.8 i1=tdcfl(ch31a(tof31_i),hb31a(tof31_i))
2288     i2=tdcfl(ch31b(tof31_i),hb31b(tof31_i))
2289 mocchiut 1.7 if ((i1.eq.1).or.(i2.eq.1)) w_il(5) = 1 ! tdcflag
2290     endif
2291     endif
2292    
2293     if (tof32_i.gt.0) then
2294     if ((tofmask(ch32a(tof32_i),hb32a(tof32_i)).gt.0).or.
2295     & (tofmask(ch32b(tof32_i),hb32b(tof32_i)).gt.0)) then
2296     w_il(6)=0
2297 pam-de 1.8 i1=tdcfl(ch32a(tof32_i),hb32a(tof32_i))
2298     i2=tdcfl(ch32b(tof32_i),hb32b(tof32_i))
2299 mocchiut 1.7 if ((i1.eq.1).or.(i2.eq.1)) w_il(6) = 1 ! tdcflag
2300     endif
2301     endif
2302    
2303     C------------------------------------------------------------------------
2304     C--- Set weights for the 12 measurements using information for top and bottom:
2305     C--- if no measurements: weight = set to very high value=> not used
2306     C--- top or bottom artificial: weight*sqrt(2)
2307     C--- top and bottom artificial: weight*sqrt(2)*sqrt(2)
2308    
2309     DO jj=1,12
2310     if (jj.le.4) xhelp = 0.11 ! S1-S3
2311     if ((jj.gt.4).and.(jj.le.8)) xhelp = 0.18 ! S2-S3
2312     if (jj.gt.8) xhelp = 0.28 ! S1-S2
2313     if ((w_il(itop(jj)).eq.1000.).and.(w_il(ibot(jj)).eq.1000.))
2314     & xhelp = 1.E09
2315     if ((w_il(itop(jj)).eq.1).or.(w_il(ibot(jj)).eq.1.))
2316     & xhelp = xhelp*1.414
2317     if ((w_il(itop(jj)).eq.1).and.(w_il(ibot(jj)).eq.1.))
2318     & xhelp = xhelp*2.
2319     w_i(jj) = 1./xhelp
2320     ENDDO
2321    
2322     C========================================================================
2323     C--- Calculate mean beta for the first time -----------------------------
2324     C--- We are using "1/beta" since its error is gaussian ------------------
2325    
2326     icount=0
2327     sw=0.
2328     sxw=0.
2329     beta_mean=100.
2330    
2331     DO jj=1,12
2332     IF ((abs(1./b(jj)).gt.0.1).and.(abs(1./b(jj)).lt.15.)) THEN
2333     icount = icount+1
2334     sxw = sxw + (1./b(jj))*w_i(jj)*w_i(jj)
2335     sw = sw + w_i(jj)*w_i(jj)
2336     ENDIF
2337     ENDDO
2338    
2339     if (icount.gt.0) beta_mean=1./(sxw/sw)
2340     beta_mean_inv = 1./beta_mean
2341    
2342    
2343     C--- Calculate beta for the second time, use residuals of the single
2344     C--- measurements to get a chi2 value
2345    
2346     icount = 0
2347     sw = 0.
2348     sxw = 0.
2349     betachi = 100.
2350     chi2 = 0.
2351     quality = 0.
2352    
2353     DO jj=1,12
2354     IF ((abs(1./b(jj)).gt.0.1).and.(abs(1./b(jj)).lt.15.)
2355     & .and.(w_i(jj).GT.0.01)) THEN
2356     res = beta_mean_inv - (1./b(jj)) ;
2357     if (abs(res*w_i(jj)).lt.resmax) THEN
2358     chi2 = chi2 + (res*w_i(jj))**2.
2359     icount = icount+1
2360     sxw = sxw + (1./b(jj))*w_i(jj)*w_i(jj)
2361     sw = sw + w_i(jj)*w_i(jj)
2362     ENDIF
2363     ENDIF
2364     ENDDO
2365    
2366     c quality = sw
2367     quality = sqrt(sw)
2368    
2369     if (icount.eq.0) chi2 = 1000.
2370     if (icount.gt.0) chi2 = chi2/(icount)
2371    
2372     if (icount.gt.0) betachi=1./(sxw/sw);
2373    
2374     beta_mean=100.
2375     if ((chi2.lt.chi2cut).and.(quality.gt.qualitycut))
2376     & beta_mean = betachi
2377     newbeta = beta_mean
2378    
2379     END
2380    
2381     C****************************************************************************
2382    

  ViewVC Help
Powered by ViewVC 1.1.23