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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (show annotations) (download)
Tue Aug 11 12:58:24 2009 UTC (15 years, 5 months ago) by mocchiut
Branch: MAIN
Changes since 1.11: +3 -3 lines
Compilation warnings with gcc >= 4.3 fixed

1
2 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 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 C oct-08 WM: Calculation of zenith angle debugged, sometimes strange values
33 C were possible
34 C******************************************************************************
35
36 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 INTEGER j,hitvec(6)
51
52 REAL dx,dy,dr,ds
53 REAL yhelp,yhelp1,yhelp2,xhelp,xhelp1,xhelp2
54 REAL c1,c2
55
56 C REAL sw,sxw,w_i
57 C INTEGER icount
58 C REAL beta_mean
59
60 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
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
106 REAL theta13
107 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
115 REAL hepratio
116
117 INTEGER ihelp
118 REAL xkorr,btemp(12)
119
120 REAL atten,pc_adc,check_charge,newbeta
121
122 INTEGER IZ
123 REAL k1corrA1,k1corrB1,k1corrC1
124
125
126 INTEGER ifst
127 DATA ifst /0/
128
129 C---------------------------------------
130 C
131 C Begin !
132 C
133 TOFL2COM = 0
134 C
135 C CALCULATE COMMON VARIABLES
136 C
137 C-------------------------------------------------------------------
138
139 if (ifst.eq.0) then
140
141 ifst=1
142
143 C amplitude has to be 'secure' higher than pedestal for an adc event
144 secure = 2.
145
146 C ratio between helium and proton ca. 4
147 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
171 do i=1,13
172 betatof_a(i) = 100. ! As in "troftrk.for"
173 enddo
174
175 do i=1,6
176 hitvec(i) = -1
177 enddo
178
179 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 do i=1,12
194 do j=1,4
195 tofmask(j,i) = 0
196 enddo
197 enddo
198
199
200 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
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 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 c adc valueas are then pC
228
229 do j=1,8
230 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 enddo
235
236
237 do j=1,6
238 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 enddo
243
244 do j=1,2
245 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 enddo
250
251 do j=1,2
252 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 enddo
257
258 do j=1,3
259 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 enddo
264
265 do j=1,3
266 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 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 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 C----------------------------------------------------------------
359 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 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 ENDDO
556
557 do i=1,6
558 tof_i_flag(i)=0
559 tof_j_flag(i)=0
560 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
583
584 C------------------------------------------------------------------
585 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 C------------------------------------------------------------------
591
592 do i=1,3
593 xtofpos(i)=100.
594 ytofpos(i)=100.
595 enddo
596
597 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 + -y_coor_lin11c(tof11_i,offset))/y_coor_lin11c(tof11_i,slope)
602 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 + -x_coor_lin12c(tof12_i,offset))/x_coor_lin12c(tof12_i,slope)
607 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 + -x_coor_lin21c(tof21_i,offset))/x_coor_lin21c(tof21_i,slope)
615 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 + -y_coor_lin22c(tof22_i,offset))/y_coor_lin22c(tof22_i,slope)
620 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 + -y_coor_lin31c(tof31_i,offset))/y_coor_lin31c(tof31_i,slope)
628 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 + -x_coor_lin32c(tof32_i,offset))/x_coor_lin32c(tof32_i,slope)
633 endif
634
635
636 C----------------------------------------------------------------------
637 C--------------------- zenith angle theta ---------------------------
638 C----------------------------------------------------------------------
639 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
659 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
683
684 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 c write(*,*) 'charge in tofl2com',iz
694
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 c yhelp=0.
711 yhelp=100. ! WM
712 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 if (adc(ch11a(i),hb11a(i)).eq.4095) then
718 xkorr = atten(left,11,i,yhelp)
719 if (iz.le.1) xkorr=xkorr/hepratio
720 tof11(left,i,iadc)=xkorr/cos(theta13)
721 adcflagtof(ch11a(i),hb11a(i)) = 1
722 endif
723 if (adc(ch11b(i),hb11b(i)).eq.4095) then
724 xkorr = atten(right,11,i,yhelp)
725 if (iz.le.1) xkorr=xkorr/hepratio
726 tof11(right,i,iadc)=xkorr/cos(theta13)
727 adcflagtof(ch11b(i),hb11b(i)) = 1
728 endif
729 ENDIF
730
731 c xhelp=0.
732 xhelp=100. ! WM
733 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 if (adc(ch12a(i),hb12a(i)).eq.4095) then
739 xkorr = atten(left,12,i,xhelp)
740 if (iz.le.1) xkorr=xkorr/hepratio
741 tof12(left,i,iadc) = xkorr/cos(theta13)
742 adcflagtof(ch12a(i),hb12a(i)) = 1
743 endif
744 if (adc(ch12b(i),hb12b(i)).eq.4095) then
745 xkorr = atten(right,12,i,xhelp)
746 if (iz.le.1) xkorr=xkorr/hepratio
747 tof12(right,i,iadc) = xkorr/cos(theta13)
748 adcflagtof(ch12b(i),hb12b(i)) = 1
749 endif
750 ENDIF
751
752 C-----------------------------S2 --------------------------------
753
754 c xhelp=0.
755 xhelp=100. ! WM
756 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 if (adc(ch21a(i),hb21a(i)).eq.4095) then
762 xkorr = atten(left,21,i,xhelp)
763 if (iz.le.1) xkorr=xkorr/hepratio
764 tof21(left,i,iadc) = xkorr/cos(theta13)
765 adcflagtof(ch21a(i),hb21a(i)) = 1
766 endif
767 if (adc(ch21b(i),hb21b(i)).eq.4095) then
768 xkorr = atten(right,21,i,xhelp)
769 if (iz.le.1) xkorr=xkorr/hepratio
770 tof21(right,i,iadc) = xkorr/cos(theta13)
771 adcflagtof(ch21b(i),hb21b(i)) = 1
772 endif
773 ENDIF
774
775
776 c yhelp=0.
777 yhelp=100. ! WM
778 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 if (adc(ch22a(i),hb22a(i)).eq.4095) then
784 xkorr = atten(left,22,i,yhelp)
785 if (iz.le.1) xkorr=xkorr/hepratio
786 tof22(left,i,iadc) = xkorr/cos(theta13)
787 adcflagtof(ch22a(i),hb22a(i)) = 1
788 endif
789 if (adc(ch22b(i),hb22b(i)).eq.4095) then
790 xkorr = atten(right,22,i,yhelp)
791 if (iz.le.1) xkorr=xkorr/hepratio
792 tof22(right,i,iadc) = xkorr/cos(theta13)
793 adcflagtof(ch22b(i),hb22b(i)) = 1
794 endif
795 ENDIF
796
797 C-----------------------------S3 --------------------------------
798
799 c yhelp=0.
800 yhelp=100. ! WM
801 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 if (adc(ch31a(i),hb31a(i)).eq.4095) then
807 xkorr = atten(left,31,i,yhelp)
808 if (iz.le.1) xkorr=xkorr/hepratio
809 tof31(left,i,iadc) = xkorr/cos(theta13)
810 adcflagtof(ch31a(i),hb31a(i)) = 1
811 endif
812 if (adc(ch31b(i),hb31b(i)).eq.4095) then
813 xkorr = atten(right,31,i,yhelp)
814 if (iz.le.1) xkorr=xkorr/hepratio
815 tof31(right,i,iadc) = xkorr/cos(theta13)
816 adcflagtof(ch31b(i),hb31b(i)) = 1
817 endif
818 ENDIF
819
820 c xhelp=0.
821 xhelp=100. ! WM
822 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 if (adc(ch32a(i),hb32a(i)).eq.4095) then
828 xkorr = atten(left,32,i,xhelp)
829 if (iz.le.1) xkorr=xkorr/hepratio
830 tof32(left,i,iadc) = xkorr/cos(theta13)
831 adcflagtof(ch32a(i),hb32a(i)) = 1
832 endif
833 if (adc(ch32b(i),hb32b(i)).eq.4095) then
834 xkorr = atten(right,32,i,xhelp)
835 if (iz.le.1) xkorr=xkorr/hepratio
836 tof32(right,i,iadc) = xkorr/cos(theta13)
837 adcflagtof(ch32b(i),hb32b(i)) = 1
838 endif
839 ENDIF
840
841
842 C-------------------------------------------------------------------
843 C--------------------Time walk correction -------------------------
844 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
863 DO i=1,8
864 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 ENDDO
878
879
880 DO i=1,6
881 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 ENDDO
895
896 C----
897 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 ENDDO
928
929 C----
930 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
963 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 i=tof11_i
979 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 i=tof12_i
985 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 i=tof21_i
994 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 i=tof22_i
1000 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 i=tof31_i
1009 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 i=tof32_i
1015 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
1028 C-- restrict TDC measurements to physical paddle dimensions +/- 10 cm
1029 C-- this cut is now stronger than in the old versions
1030
1031 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 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
1071
1072 C------------------------------------------------------------------
1073 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 c DATA tof21_y/ 3.75,-3.75/ ! paddles in different order
1081 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 c yhelp=100.
1087 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 if (tof11(left,i,iadc).lt.3786) then
1094 c if (adc(ch11a(i),hb11a(i)).lt.4095) then
1095 tof11(left,i,iadc) = tof11(left,i,iadc)*cos(theta13)
1096 xkorr = atten(left,11,i,yhelp)
1097 xkorr=xkorr/hepratio
1098 adctof_c(ch11a(i),hb11a(i))=tof11(left,i,iadc)/xkorr
1099 endif
1100
1101 if (tof11(right,i,iadc).lt.3786) then
1102 c if (adc(ch11b(i),hb11b(i)).lt.4095) then
1103 tof11(right,i,iadc) = tof11(right,i,iadc)*cos(theta13)
1104 xkorr = atten(right,11,i,yhelp)
1105 xkorr=xkorr/hepratio
1106 adctof_c(ch11b(i),hb11b(i))=tof11(right,i,iadc)/xkorr
1107 endif
1108 ENDIF
1109
1110 xhelp=0.
1111 c xhelp=100.
1112 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 if (tof12(left,i,iadc).lt.3786) then
1119 c if (adc(ch12a(i),hb12a(i)).lt.4095) then
1120 tof12(left,i,iadc) = tof12(left,i,iadc)*cos(theta13)
1121 xkorr = atten(left,12,i,xhelp)
1122 xkorr=xkorr/hepratio
1123 adctof_c(ch12a(i),hb12a(i))=tof12(left,i,iadc)/xkorr
1124 endif
1125
1126 if (tof12(right,i,iadc).lt.3786) then
1127 c if (adc(ch12b(i),hb12b(i)).lt.4095) then
1128 tof12(right,i,iadc) = tof12(right,i,iadc)*cos(theta13)
1129 xkorr = atten(right,12,i,xhelp)
1130 xkorr=xkorr/hepratio
1131 adctof_c(ch12b(i),hb12b(i))=tof12(right,i,iadc)/xkorr
1132 endif
1133 ENDIF
1134
1135 C-----------------------------S2 --------------------------------
1136
1137 xhelp=0.
1138 c xhelp=100.
1139 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 if (tof21(left,i,iadc).lt.3786) then
1146 c if (adc(ch21a(i),hb21a(i)).lt.4095) then
1147 tof21(left,i,iadc) = tof21(left,i,iadc)*cos(theta13)
1148 xkorr = atten(left,21,i,xhelp)
1149 xkorr=xkorr/hepratio
1150 adctof_c(ch21a(i),hb21a(i))=tof21(left,i,iadc)/xkorr
1151 endif
1152
1153 if (tof21(right,i,iadc).lt.3786) then
1154 c if (adc(ch21b(i),hb21b(i)).lt.4095) then
1155 tof21(right,i,iadc) = tof21(right,i,iadc)*cos(theta13)
1156 xkorr=adcx21(right,i,1)*exp(xhelp/adcx21(right,i,2))
1157 xkorr = atten(right,21,i,xhelp)
1158 xkorr=xkorr/hepratio
1159 adctof_c(ch21b(i),hb21b(i))=tof21(right,i,iadc)/xkorr
1160 endif
1161 ENDIF
1162
1163
1164 yhelp=0.
1165 c yhelp=100.
1166 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 if (tof22(left,i,iadc).lt.3786) then
1173 c if (adc(ch22a(i),hb22a(i)).lt.4095) then
1174 tof22(left,i,iadc) = tof22(left,i,iadc)*cos(theta13)
1175 xkorr = atten(left,22,i,yhelp)
1176 xkorr=xkorr/hepratio
1177 adctof_c(ch22a(i),hb22a(i))=tof22(left,i,iadc)/xkorr
1178 endif
1179
1180 if (tof22(right,i,iadc).lt.3786) then
1181 c if (adc(ch22b(i),hb22b(i)).lt.4095) then
1182 tof22(right,i,iadc) = tof22(right,i,iadc)*cos(theta13)
1183 xkorr = atten(right,22,i,yhelp)
1184 xkorr=xkorr/hepratio
1185 adctof_c(ch22b(i),hb22b(i))=tof22(right,i,iadc)/xkorr
1186 endif
1187 ENDIF
1188
1189 C-----------------------------S3 --------------------------------
1190
1191 yhelp=0.
1192 c yhelp=100.
1193 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 if (tof31(left,i,iadc).lt.3786) then
1200 c if (adc(ch31a(i),hb31a(i)).lt.4095) then
1201 tof31(left,i,iadc) = tof31(left,i,iadc)*cos(theta13)
1202 xkorr = atten(left,31,i,yhelp)
1203 xkorr=xkorr/hepratio
1204 adctof_c(ch31a(i),hb31a(i))=tof31(left,i,iadc)/xkorr
1205 endif
1206
1207 if (tof31(right,i,iadc).lt.3786) then
1208 c if (adc(ch31b(i),hb31b(i)).lt.4095) then
1209 tof31(right,i,iadc) = tof31(right,i,iadc)*cos(theta13)
1210 xkorr = atten(right,31,i,yhelp)
1211 xkorr=xkorr/hepratio
1212 adctof_c(ch31b(i),hb31b(i))=tof31(right,i,iadc)/xkorr
1213 endif
1214 ENDIF
1215
1216 xhelp=0.
1217 c xhelp=100.
1218 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 if (tof32(left,i,iadc).lt.3786) then
1225 c if (adc(ch32a(i),hb32a(i)).lt.4095) then
1226 tof32(left,i,iadc) = tof32(left,i,iadc)*cos(theta13)
1227 xkorr = atten(left,32,i,xhelp)
1228 xkorr=xkorr/hepratio
1229 adctof_c(ch32a(i),hb32a(i))=tof32(left,i,iadc)/xkorr
1230 endif
1231
1232 if (tof32(right,i,iadc).lt.3786) then
1233 c if (adc(ch32b(i),hb32b(i)).lt.4095) then
1234 tof32(right,i,iadc) = tof32(right,i,iadc)*cos(theta13)
1235 xkorr = atten(right,32,i,xhelp)
1236 xkorr=xkorr/hepratio
1237 adctof_c(ch32b(i),hb32b(i))=tof32(right,i,iadc)/xkorr
1238 endif
1239 ENDIF
1240
1241 C--------------------------------------------------------------------
1242 C----------------------calculate Beta ------------------------------
1243 C--------------------------------------------------------------------
1244 C-------------------difference of sums -----------------------------
1245 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
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 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 if (iz.gt.2) c1 = c1 + k1corrA1
1262 c2 = k_S11S31(2,ihelp)
1263 betatof_a(1) = c2/(cos(theta13)*(ds-c1))
1264
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 ENDIF
1280
1281 C S11 - S32
1282
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 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 if (iz.gt.2) c1 = c1 + k1corrA1
1291 c2 = k_S11S32(2,ihelp)
1292 betatof_a(2) = c2/(cos(theta13)*(ds-c1))
1293
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 ENDIF
1309
1310 C S12 - S31
1311
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 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 if (iz.gt.2) c1 = c1 + k1corrA1
1320 c2 = k_S12S31(2,ihelp)
1321 betatof_a(3) = c2/(cos(theta13)*(ds-c1))
1322
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 ENDIF
1338
1339 C S12 - S32
1340
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 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 if (iz.gt.2) c1 = c1 + k1corrA1
1349 c2 = k_S12S32(2,ihelp)
1350 betatof_a(4) = c2/(cos(theta13)*(ds-c1))
1351
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 ENDIF
1367
1368 C S21 - S31
1369
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 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 if (iz.gt.2) c1 = c1 + k1corrB1
1378 c2 = k_S21S31(2,ihelp)
1379 betatof_a(5) = c2/(cos(theta13)*(ds-c1))
1380
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 ENDIF
1396
1397 C S21 - S32
1398
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 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 if (iz.gt.2) c1 = c1 + k1corrB1
1407 c2 = k_S21S32(2,ihelp)
1408 betatof_a(6) = c2/(cos(theta13)*(ds-c1))
1409
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 ENDIF
1425
1426 C S22 - S31
1427
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 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 if (iz.gt.2) c1 = c1 + k1corrB1
1436 c2 = k_S22S31(2,ihelp)
1437 betatof_a(7) = c2/(cos(theta13)*(ds-c1))
1438
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 ENDIF
1454
1455 C S22 - S32
1456
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 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 if (iz.gt.2) c1 = c1 + k1corrB1
1465 c2 = k_S22S32(2,ihelp)
1466 betatof_a(8) = c2/(cos(theta13)*(ds-c1))
1467
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 ENDIF
1483
1484 C S11 - S21
1485
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 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 if (iz.gt.2) c1 = c1 + k1corrC1
1494 c2 = k_S11S21(2,ihelp)
1495 betatof_a(9) = c2/(cos(theta13)*(ds-c1))
1496
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 ENDIF
1512
1513 C S11 - S22
1514
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 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 if (iz.gt.2) c1 = c1 + k1corrC1
1523 c2 = k_S11S22(2,ihelp)
1524 betatof_a(10) = c2/(cos(theta13)*(ds-c1))
1525
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 ENDIF
1541
1542 C S12 - S21
1543
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 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 if (iz.gt.2) c1 = c1 + k1corrC1
1552 c2 = k_S12S21(2,ihelp)
1553 betatof_a(11) = c2/(cos(theta13)*(ds-c1))
1554
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 ENDIF
1570
1571 C S12 - S22
1572
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 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 if (iz.gt.2) c1 = c1 + k1corrC1
1581 c2 = k_S12S22(2,ihelp)
1582 betatof_a(12) = c2/(cos(theta13)*(ds-c1))
1583
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 ENDIF
1599
1600 C---------------------------------------------------------
1601 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
1622 C-------- New mean beta calculation -----------------------
1623
1624 do i=1,12
1625 btemp(i) = betatof_a(i)
1626 enddo
1627
1628 betatof_a(13)=newbeta(1,btemp,hitvec,10.,10.,20.)
1629
1630 C--------------------------------------------------------------
1631 C write(*,*) betatof_a
1632 c write(*,*) xtofpos
1633 c write(*,*) ytofpos
1634 c write(*,*)'tofl2com beta', betatof_a
1635 C write(*,*) adcflagtof
1636 c write(*,*) 'tofl2com'
1637 c write(*,*) xtofpos
1638 c write(*,*) ytofpos
1639 c write(*,*) xtr_tof
1640 c write(*,*) ytr_tof
1641
1642 c 100 continue
1643 continue
1644
1645 C
1646 RETURN
1647 END
1648
1649
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 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 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 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 function newbeta(iflag,b,hitvec,resmax,qualitycut,chi2cut)
2173
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 REAL tdcfl(4,12)
2183
2184 INTEGER iflag,icount,hitvec(6)
2185
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
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 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 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
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 i1=tdcfl(ch11a(tof11_i),hb11a(tof11_i))
2248 i2=tdcfl(ch11b(tof11_i),hb11b(tof11_i))
2249 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 i1=tdcfl(ch12a(tof12_i),hb12a(tof12_i))
2258 i2=tdcfl(ch12b(tof12_i),hb12b(tof12_i))
2259 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 i1=tdcfl(ch21a(tof21_i),hb21a(tof21_i))
2268 i2=tdcfl(ch21b(tof21_i),hb21b(tof21_i))
2269 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 i1=tdcfl(ch22a(tof22_i),hb22a(tof22_i))
2278 i2=tdcfl(ch22b(tof22_i),hb22b(tof22_i))
2279 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 i1=tdcfl(ch31a(tof31_i),hb31a(tof31_i))
2288 i2=tdcfl(ch31b(tof31_i),hb31b(tof31_i))
2289 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 i1=tdcfl(ch32a(tof32_i),hb32a(tof32_i))
2298 i2=tdcfl(ch32b(tof32_i),hb32b(tof32_i))
2299 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