1 |
pam-de |
1.1 |
Makefile0000640000076500001440000000156710314237651011406 0ustar mennusers# Fortran flags |
2 |
|
|
FC=g77 |
3 |
|
|
FFLAGS=-fvxt -fno-automatic -Wall -Wno-globals -fbounds-check |
4 |
|
|
# C flags |
5 |
|
|
CC=gcc |
6 |
|
|
CFLAGS=-Wall -O2 |
7 |
|
|
CFLADJ=-c |
8 |
|
|
|
9 |
|
|
# used libraries |
10 |
|
|
#LIBS=-L/cern/pro/lib -lkernlib -lpacklib -lgraflib -lmathlib -lnsl |
11 |
|
|
LIBS= `cernlib kernlib packlib graflib mathlib` |
12 |
|
|
|
13 |
|
|
template.exe: template-static |
14 |
|
|
|
15 |
|
|
# this directive links static libraries |
16 |
|
|
template-static: template.f trk_level2.f |
17 |
|
|
$(FC) $(FFLAGS) template.f -o template.exe $(TRK_GRND)/lib/libtrk.a $(LIBS) |
18 |
|
|
|
19 |
|
|
# the next directive link dinamyc library (.so) |
20 |
|
|
# NB! in order to link dynamically it must be added the library path to |
21 |
|
|
# LD_LIBRARY_PATH (in the ./bashrc) |
22 |
|
|
template-dynamic: template.f trk_level2.f |
23 |
|
|
$(FC) $(FFLAGS) -o template.exe template.f $(LIBS) -L$(TRK_GRND)/lib -ltrk |
24 |
|
|
|
25 |
|
|
toftrack: toftrack.f trk_level2.f |
26 |
|
|
$(FC) $(FFLAGS) toftrack.f -o toftrack.exe $(TRK_GRND)/lib/libtrk.a $(LIBS) |
27 |
|
|
|
28 |
|
|
clean: |
29 |
|
|
rm -f *.o |
30 |
|
|
rm -f *.exe |
31 |
|
|
rm -f *~ |
32 |
|
|
|
33 |
|
|
README0000664000076500001440000001724410314477647010646 0ustar mennusers |
34 |
|
|
1) The ToF software uses the Tracking software V2.00 |
35 |
|
|
It is assumed that you have created all the directories and the compiling |
36 |
|
|
of the three executables "level0.exe", "level1.exe" and "level2.exe" |
37 |
|
|
was succesful. |
38 |
|
|
|
39 |
|
|
2) Copy the file toftrack.tar to the "utilities/template" directory (where |
40 |
|
|
the program template.f is located), untar the file toftrack.tar. |
41 |
|
|
|
42 |
|
|
The following files will be extracted: |
43 |
|
|
Makefile (the old Makefile will be overwritten) |
44 |
|
|
run-test.sh |
45 |
|
|
tofcalib.rz |
46 |
|
|
toftrack.f |
47 |
|
|
common_tof.f |
48 |
|
|
tofroutine.f |
49 |
|
|
trk_level2.f (the old trk_level2.f was not correct) |
50 |
|
|
common_tofroutine.f |
51 |
|
|
|
52 |
|
|
3)Create the executable toftrack.exe doing |
53 |
|
|
# make toftrack |
54 |
|
|
|
55 |
|
|
4) The "level*.exe" programs in your working directory were run by doing |
56 |
|
|
|
57 |
|
|
#./run-test.sh some_filename.txt level0/1/2 & |
58 |
|
|
|
59 |
|
|
Copy the new "run-test.sh" from the template directory to the working |
60 |
|
|
directory. Copy toftrack.exe to the working directory |
61 |
|
|
After you have done step 5 (see below) you can run the toftrack software |
62 |
|
|
analogue to the command for the level0/1/2 software: |
63 |
|
|
|
64 |
|
|
#./run-test.sh some_filename.txt toftrack & |
65 |
|
|
|
66 |
|
|
In the file good_files.tar.gz there is a list of good files from the Roma |
67 |
|
|
tests. |
68 |
|
|
|
69 |
|
|
5) Untar the file tofcalib.tar in your rz-data directory (where the level2 |
70 |
|
|
and tof rz-files are located). This will create a standard "tofcalib.rz" |
71 |
|
|
file plus the calibration files for the Roma data |
72 |
|
|
"DW_******_***_tofcalib.rz" |
73 |
|
|
|
74 |
|
|
|
75 |
|
|
--------------------------------------------------------------------------- |
76 |
|
|
|
77 |
|
|
"tracktof" will read the appropriate level2, tof, and tofcalib file. If |
78 |
|
|
there is no tofcalib file for this data run, the standard calibration is |
79 |
|
|
used (There will be a message saying "Could not find.... Will use the |
80 |
|
|
standard calibration") |
81 |
|
|
|
82 |
|
|
|
83 |
|
|
"tracktof" will create a new rz file DW_******_**_toftrack.rz" combining |
84 |
|
|
the level2 data, the (raw) tof data, plus the variables calculated in the |
85 |
|
|
tofroutine. |
86 |
|
|
|
87 |
|
|
The structure looks like this: |
88 |
|
|
|
89 |
|
|
|
90 |
|
|
****************************************************************** |
91 |
|
|
* Ntuple ID = 2 Entries = 1185 TOF |
92 |
|
|
****************************************************************** |
93 |
|
|
* Var numb * Type * Packing * Range * Block * Name * |
94 |
|
|
****************************************************************** |
95 |
|
|
* 1 * L*4 * 1 * * EVENT * GOOD |
96 |
|
|
* 2 * I*4 * * * EVENT * NEV_TRK |
97 |
|
|
* 1 * I*4 * * * CPU * PKT_TYPE |
98 |
|
|
* 2 * I*4 * * * CPU * PKT_NUM |
99 |
|
|
* 3 * I*4 * * * CPU * OBT |
100 |
|
|
* 4 * I*4 * * * CPU * WHICH_CALIB |
101 |
|
|
* 1 * I*4 * * * TOF * TDCID(12) |
102 |
|
|
* 2 * I*4 * * * TOF * EVCOUNT(12) |
103 |
|
|
* 3 * I*4 * * * TOF * TDCMASK(12) |
104 |
|
|
* 4 * I*4 * * * TOF * ADC(4,12) |
105 |
|
|
* 5 * I*4 * * * TOF * TDC(4,12) |
106 |
|
|
* 6 * I*4 * * * TOF * TEMP1(12) |
107 |
|
|
* 7 * I*4 * * * TOF * TEMP2(12) |
108 |
|
|
* 8 * R*4 * * * TOF * BETA(5) |
109 |
|
|
* 9 * R*4 * * * TOF * XTOF(3) |
110 |
|
|
* 10 * R*4 * * * TOF * YTOF(3) |
111 |
|
|
* 11 * R*4 * * * TOF * ADC_C(4,12) |
112 |
|
|
* 12 * I*4 * * * TOF * IFLAG(6) |
113 |
|
|
* 13 * I*4 * * * TOF * JFLAG(6) |
114 |
|
|
* 14 * R*4 * * * TOF * XOUT(3) |
115 |
|
|
* 15 * R*4 * * * TOF * YOUT(3) |
116 |
|
|
* 1 * I*4 * * * TRIGGER * TRIG_EVCOUNT |
117 |
|
|
* 2 * I*4 * * * TRIGGER * PMTPL(3) |
118 |
|
|
* 3 * I*4 * * * TRIGGER * TRIGRATE(6) |
119 |
|
|
* 4 * I*4 * * * TRIGGER * DLTIME(2) |
120 |
|
|
* 5 * I*4 * * * TRIGGER * S4CALCOUNT(2) |
121 |
|
|
* 6 * I*4 * * * TRIGGER * PMTCOUNT1(24) |
122 |
|
|
* 7 * I*4 * * * TRIGGER * PMTCOUNT2(24) |
123 |
|
|
* 8 * I*4 * * * TRIGGER * PATTERNBUSY(3) |
124 |
|
|
* 9 * I*4 * * * TRIGGER * PATTERNTRIG(6) |
125 |
|
|
* 10 * I*4 * * * TRIGGER * TRIGCONF |
126 |
|
|
* 1 * I*4 * * [0,50] * TRACKS * NTRK |
127 |
|
|
* 2 * U*4 * 6 * [0,50] * TRACKS * IMAGE(NTRK) |
128 |
|
|
* 3 * R*4 * * * TRACKS * XM(6,NTRK) |
129 |
|
|
* 4 * R*4 * * * TRACKS * YM(6,NTRK) |
130 |
|
|
* 5 * R*4 * * * TRACKS * ZM(6,NTRK) |
131 |
|
|
* 6 * R*4 * * * TRACKS * RESX(6,NTRK) |
132 |
|
|
* 7 * R*4 * * * TRACKS * RESY(6,NTRK) |
133 |
|
|
* 8 * R*4 * * * TRACKS * AL(5,NTRK) |
134 |
|
|
* 9 * R*4 * * * TRACKS * COVAL(5,5,NTRK) |
135 |
|
|
* 10 * R*4 * * * TRACKS * CHI2(NTRK) |
136 |
|
|
* 11 * U*4 * 1 * [0,1] * TRACKS * XGOOD(6,NTRK) |
137 |
|
|
* 12 * U*4 * 1 * [0,1] * TRACKS * YGOOD(6,NTRK) |
138 |
|
|
* 13 * R*4 * * * TRACKS * XV(6,NTRK) |
139 |
|
|
* 14 * R*4 * * * TRACKS * YV(6,NTRK) |
140 |
|
|
* 15 * R*4 * * * TRACKS * ZV(6,NTRK) |
141 |
|
|
* 16 * R*4 * * * TRACKS * AXV(6,NTRK) |
142 |
|
|
* 17 * R*4 * * * TRACKS * AYV(6,NTRK) |
143 |
|
|
* 18 * R*4 * * * TRACKS * DEDXP(6,NTRK) |
144 |
|
|
* 1 * I*4 * * * SINGLETS * NCLSX(6) |
145 |
|
|
* 2 * I*4 * * * SINGLETS * NCLSY(6) |
146 |
|
|
****************************************************************** |
147 |
|
|
* Block * Entries * Unpacked * Packed * Packing Factor * |
148 |
|
|
****************************************************************** |
149 |
|
|
* EVENT * 1185 * 8 * 5 * 1.600 * |
150 |
|
|
* CPU * 1185 * 16 * 16 * 1.000 * |
151 |
|
|
* TOF * 1185 * 932 * 932 * 1.000 * |
152 |
|
|
* TRIGGER * 1185 * 288 * 288 * 1.000 * |
153 |
|
|
* TRACKS * 1185 * 22004 * Var. * Variable * |
154 |
|
|
* SINGLETS * 1185 * 48 * 48 * 1.000 * |
155 |
|
|
* Total * --- * 23296 * Var. * Variable * |
156 |
|
|
****************************************************************** |
157 |
|
|
* Blocks = 6 Variables = 51 Max. Columns = 5824 * |
158 |
|
|
****************************************************************** |
159 |
|
|
|
160 |
|
|
|
161 |
|
|
|
162 |
|
|
The variables calculated in "TOFROUTINE" are the last ones in the block |
163 |
|
|
"TOF": |
164 |
|
|
|
165 |
|
|
|
166 |
|
|
BETA(5): four values (1-4) for beta from S11-S31, S12-S32, S21-S31 |
167 |
|
|
and S22-S32. |
168 |
|
|
if there is no valid signal beta is set to "100". |
169 |
|
|
if there are four values for beta, the weighted mean is |
170 |
|
|
calculated and put into beta(5). So it is possible for |
171 |
|
|
the user to calculate his own mean value by using the |
172 |
|
|
single values. |
173 |
|
|
|
174 |
|
|
XTOF(3): The x-position in the 3 different layers using the ToF |
175 |
|
|
timing (So, for the x-coordinate we use S12, S21,S32). |
176 |
|
|
If we cannot find a valid timing the value is set to "1000" |
177 |
|
|
|
178 |
|
|
YTOF(3): The same for y-position using S11, S22,S31 |
179 |
|
|
|
180 |
|
|
ADC_C(4,12): normalized ADC values, the value in the middle of the |
181 |
|
|
paddle is set to "1", using the (sometimes poor) attenuation |
182 |
|
|
fit curves. The ADC_C matrix is analog to the ADC matrix |
183 |
|
|
for the raw data, so one can use the same channel map. |
184 |
|
|
|
185 |
|
|
IFLAG(6): 6 values for the six layers: |
186 |
|
|
"0" if no hit in this layer |
187 |
|
|
"-1" if more than one hit |
188 |
|
|
otherwise the number of the hitted paddle ("hit" = good |
189 |
|
|
TDC values on both sides) |
190 |
|
|
|
191 |
|
|
JFLAG(6): 6 values for the six layers: coded value to see which |
192 |
|
|
strips have valid hits: |
193 |
|
|
for i=1 to (number of strips) do |
194 |
|
|
if (paddle "i" = hit) then jflag = jflag + 2**(i-1) |
195 |
|
|
|
196 |
|
|
|
197 |
|
|
|
198 |
|
|
|
199 |
|
|
common_tof.f0000664000076500001440000000125410314004226012242 0ustar mennusers integer tdcid(12),evcount(12) |
200 |
|
|
integer tdcmask(12),adc(4,12),tdc(4,12) |
201 |
|
|
integer temp1(12),temp2(12) |
202 |
|
|
COMMON / tofvar /tdcid,evcount,tdcmask,adc,tdc,temp1,temp2 |
203 |
|
|
|
204 |
|
|
integer*4 trig_evcount |
205 |
|
|
integer pmtpl(3), trigrate(6), dltime(2), s4calcount(2) |
206 |
|
|
integer pmtcount1(24), pmtcount2(24) |
207 |
|
|
integer*4 patternbusy(3) |
208 |
|
|
integer patterntrig(6), trigconf |
209 |
|
|
COMMON / trig / trig_evcount, pmtpl, trigrate, dltime, |
210 |
|
|
& s4calcount, pmtcount1, pmtcount2, |
211 |
|
|
& patternbusy, patterntrig, trigconf |
212 |
|
|
|
213 |
|
|
|
214 |
|
|
parameter (ntp_tof=17) |
215 |
|
|
parameter (ntp_tofcalib=60) |
216 |
|
|
|
217 |
|
|
logical good |
218 |
|
|
integer nev_trk |
219 |
|
|
common / event_tof /good,nev_trk |
220 |
|
|
common_tofroutine.f0000664000076500001440000001107510314004226013652 0ustar mennusers* DATA ZTOF/55.,25.,-23/ |
221 |
|
|
* |
222 |
|
|
* TOF data |
223 |
|
|
* first index : 1 = A, 2 = B |
224 |
|
|
* second index : 1.. number of paddle |
225 |
|
|
* third index : 1 = TDC, 2 = ADC |
226 |
|
|
|
227 |
|
|
c INTEGER tof11(2,8,2),tof12(2,6,2) |
228 |
|
|
c INTEGER tof21(2,2,2),tof22(2,2,2) |
229 |
|
|
c INTEGER tof31(2,3,2),tof32(2,3,2) |
230 |
|
|
REAL tof11(2,8,2),tof12(2,6,2) |
231 |
|
|
REAL tof21(2,2,2),tof22(2,2,2) |
232 |
|
|
REAL tof31(2,3,2),tof32(2,3,2) |
233 |
|
|
|
234 |
|
|
c Normalized ADC value |
235 |
|
|
REAL adc_c(4,12) |
236 |
|
|
|
237 |
|
|
c k1 constans for calculation of beta |
238 |
|
|
REAL k1_s11s31(24),k1_s12s32(18),k1_S21S31(6),k1_S22S32(6) |
239 |
|
|
|
240 |
|
|
c middle y (or x) position of the upper and middle ToF-Paddle |
241 |
|
|
c to calculate theta-angle without track information |
242 |
|
|
REAL tof11_x(8), tof21_y(2), tof31_x(3) |
243 |
|
|
REAL tof12_y(6), tof22_x(2), tof32_y(3) |
244 |
|
|
|
245 |
|
|
c relation of time differences in a tof paddle and the location of the |
246 |
|
|
c passage of the particle |
247 |
|
|
c first index : 1... number of paddle |
248 |
|
|
c second index : 1 = offset, 2 = slope |
249 |
|
|
REAL y_coor_lin11(8,2),x_coor_lin12(6,2) |
250 |
|
|
REAL x_coor_lin21(2,2),y_coor_lin22(2,2) |
251 |
|
|
REAL y_coor_lin31(3,2),x_coor_lin32(3,2) |
252 |
|
|
|
253 |
|
|
c ADC(x) - correction |
254 |
|
|
c first index : 1 = left, 2 = right |
255 |
|
|
c second index : 1..8 number of paddle |
256 |
|
|
c third index: parameter as follows |
257 |
|
|
c left: xkorr=par(1)*exp(-x/par(2)) |
258 |
|
|
c right:xkorr=par(1)*exp(x/par(2)) |
259 |
|
|
c then:adc(x,right/left)=adc(x,right/left)/xkorr |
260 |
|
|
c normalize to x=0 (middle of paddle) |
261 |
|
|
REAL adcx11(2,8,2),adcx12(2,6,2) |
262 |
|
|
REAL adcx21(2,2,2),adcx22(2,2,2) |
263 |
|
|
REAL adcx31(2,3,2),adcx32(2,3,2) |
264 |
|
|
|
265 |
|
|
|
266 |
|
|
c Time Walk - correction |
267 |
|
|
c first index : 1 = left, 2 = right |
268 |
|
|
c second index : 1..8 number of paddle |
269 |
|
|
REAL tw11(2,8),tw12(2,6) |
270 |
|
|
REAL tw21(2,2),tw22(2,2) |
271 |
|
|
REAL tw31(2,3),tw32(2,3) |
272 |
|
|
|
273 |
|
|
|
274 |
|
|
c value for status of each PM-data |
275 |
|
|
c first index : 1 = left, 2 = right |
276 |
|
|
c second index : 1... number of paddle |
277 |
|
|
INTEGER tof11_event(2,8),tof12_event(2,6) |
278 |
|
|
INTEGER tof21_event(2,2),tof22_event(2,2) |
279 |
|
|
INTEGER tof31_event(2,3),tof32_event(2,3) |
280 |
|
|
|
281 |
|
|
C---- |
282 |
|
|
|
283 |
|
|
INTEGER left,right,top,bot,mid,itdc,iadc |
284 |
|
|
INTEGER tdc_ev, adc_ev, none_ev, none_find |
285 |
|
|
INTEGER offset, slope |
286 |
|
|
INTEGER tof11_i,tof21_i,tof31_i,tof11_j,tof21_j,tof31_j |
287 |
|
|
INTEGER tof12_i,tof22_i,tof32_i,tof12_j,tof22_j,tof32_j |
288 |
|
|
* REAL adcoff(4,2,52),a,b |
289 |
|
|
c REAL delta_x12,delta_y12,delta_x23,delta_y23,delta_x13,delta_y13 |
290 |
|
|
REAL xtofpos(3),ytofpos(3) |
291 |
|
|
REAL xkorr, secure |
292 |
|
|
INTEGER i, j, ihelp |
293 |
|
|
LOGICAL check |
294 |
|
|
REAL theta12,theta13,theta23 |
295 |
|
|
|
296 |
|
|
REAL beta_a(5) |
297 |
|
|
|
298 |
|
|
INTEGER tof_i_flag(6),tof_j_flag(6) |
299 |
|
|
|
300 |
|
|
|
301 |
|
|
DATA TOFfst / 0/ |
302 |
|
|
|
303 |
|
|
PARAMETER (tofarm23 = 45.) |
304 |
|
|
PARAMETER (tofarm13 = 81.) |
305 |
|
|
PARAMETER (c2_13=108.) ! = 2.*tofarm13*0.01/(3.E08*50.E-12) |
306 |
|
|
PARAMETER (c2_23=60.) ! = 2.*tofarm23*0.01/(3.E08*50.E-12) |
307 |
|
|
|
308 |
|
|
|
309 |
|
|
* S11 8 paddles 33.0 x 5.1 cm |
310 |
|
|
* S12 6 paddles 40.8 x 5.5 cm |
311 |
|
|
* S21 2 paddles 18.0 x 7.5 cm |
312 |
|
|
* S22 2 paddles 15.0 x 9.0 cm |
313 |
|
|
* S31 3 paddles 15.0 x 6.0 cm |
314 |
|
|
* S32 3 paddles 18.0 x 5.0 cm |
315 |
|
|
|
316 |
|
|
DATA tof11_x/ -17.85,-12.75,-7.65,-2.55,2.55,7.65,12.75,17.85/ |
317 |
|
|
DATA tof12_y/ -13.75,-8.25,-2.75,2.75,8.25,13.75/ |
318 |
|
|
DATA tof21_y/ -3.75,3.75/ |
319 |
|
|
DATA tof22_x/ -4.5,4.5/ |
320 |
|
|
DATA tof31_x/ -6.0,0.,6.0/ |
321 |
|
|
DATA tof32_y/ -5.0,0.0,5.0/ |
322 |
|
|
|
323 |
|
|
integer ch11a(8),hb11a(8),ch11b(8),hb11b(8) |
324 |
|
|
integer ch12a(6),hb12a(6),ch12b(6),hb12b(6) |
325 |
|
|
integer ch21a(2),hb21a(2),ch21b(2),hb21b(2) |
326 |
|
|
integer ch22a(2),hb22a(2),ch22b(2),hb22b(2) |
327 |
|
|
integer ch31a(3),hb31a(3),ch31b(3),hb31b(3) |
328 |
|
|
integer ch32a(3),hb32a(3),ch32b(3),hb32b(3) |
329 |
|
|
|
330 |
|
|
|
331 |
|
|
data ch11a / 4, 4, 4, 4, 1, 1, 2, 2/ |
332 |
|
|
data hb11a / 1, 3, 5, 7, 10, 12, 2, 4/ |
333 |
|
|
data ch11b / 2, 2, 2, 2, 1, 1, 1, 1/ |
334 |
|
|
data hb11b / 6, 8, 12, 10, 8, 6, 4, 2/ |
335 |
|
|
|
336 |
|
|
data ch12a / 3, 3, 3, 3, 3, 3/ |
337 |
|
|
data hb12a / 2, 4, 6, 8, 10, 12/ |
338 |
|
|
data ch12b / 4, 4, 4, 4, 4, 4/ |
339 |
|
|
data hb12b / 12, 10, 8, 6, 4, 2/ |
340 |
|
|
|
341 |
|
|
data ch21a / 1, 1/ |
342 |
|
|
data hb21a / 1, 5/ |
343 |
|
|
data ch21b / 2, 1/ |
344 |
|
|
data hb21b / 9, 7/ |
345 |
|
|
|
346 |
|
|
data ch22a / 1, 1/ |
347 |
|
|
data hb22a / 3, 9/ |
348 |
|
|
data ch22b / 2, 1/ |
349 |
|
|
data hb22b / 11, 11/ |
350 |
|
|
|
351 |
|
|
data ch31a / 2, 3, 3/ |
352 |
|
|
data hb31a / 7, 9, 11/ |
353 |
|
|
data ch31b / 2, 2, 2/ |
354 |
|
|
data hb31b / 5, 3, 1/ |
355 |
|
|
|
356 |
|
|
data ch32a / 3, 3, 4/ |
357 |
|
|
data hb32a / 1, 5, 9/ |
358 |
|
|
data ch32b / 3, 3, 4/ |
359 |
|
|
data hb32b / 3, 7, 11/ |
360 |
|
|
|
361 |
|
|
common / tofcalc /k1_s11s31,k1_s12s32,k1_S21S31, |
362 |
|
|
& k1_S22S32,beta_a, |
363 |
|
|
& adcx11,adcx12,adcx21,adcx22,adcx31,adcx32, |
364 |
|
|
& tw11,tw12,tw21,tw22,tw31,tw32, |
365 |
|
|
& y_coor_lin11,x_coor_lin12,x_coor_lin21, |
366 |
|
|
& y_coor_lin22,y_coor_lin31,x_coor_lin32, |
367 |
|
|
& xtofpos,ytofpos,adc_c,tof_i_flag,tof_j_flag |
368 |
|
|
good_files.tar.gz0000744000076500001440000000325310314506262013203 0ustar mennusers�MC�]A�7ܳ_�8)Q�yM�N���p$���#v��>l C�vW]��3�[�&E�R��iy���__��$)Ւ�ҊV�������$�iN%I[_/������o��������O���O����O?�9��"u�L��n�W!&��{�������}�?��-��!p�W��w�.��A%� |
369 |
|
|
���N%��&� |
370 |
|
|
���O�c����T���ܪu��L�G��/�����J��F����!���JK���������t�����>D�_�@����D�G��G�ψ���/(߾�@+h]@Ym8\���_��ɹ%�����{[���oED���q��}���/=����_���o���.|@�]�z�����-�7�?����� |
371 |
|
|
1�����z��MT���������k����a����Ƶ�99�[q�k*j���@#�p��V�F��.�������������������p�:F���o�����/H����� �¬��Å<L��[+^���C0������+7<n��0���?\����%I�� ��YȻ$��s�����٪���e�����H�����E�����O���Ŷ�[W�����=�WL�)���{�Ƴ�S/����m
����{�o�$�m������02G��}�����V������
�0����"�+�"�+g�k:��[���X)���!��c�O1�����Gv�.�\�����"<�'���W�����b*X1�� |
372 |
|
|
(��+�����s����"�����@��*h-�ZA(� � |
373 |
|
|
�������E�+���n��x�N�(6�������b�w]l������te#�%��&�K�<�/����3R��=���+]?h{t��+�Z���d~�oc���wL�+&����YaŬ�bVX۷o����W
��6��&�xx \������j��Y����fC��S�?e'����?�����D�C�������>�����g��������a����4�q��|*�.�d���������4�����靫��?��_���b���i���t�3�~F��{�ϩ��{�4蚖��_�����1�����G�htʊ�i��%�O�2����f��%���|������s��������A�"�W$K����� p����M��4�� >M�i�i���_����1�+���f<�/]�1��TA3(��3�������Z.����a��/������J���*��K�~�������������o��@+hݞ �[������?�2\������o�������H�9��w��s������B����M?���`��g� |
374 |
|
|
�q+x�n�6�V�?W`�_K|��˭�l����_�����*�,���\�C��������ǀ��.{�nx4< |
375 |
|
|
x��Y��N�������VE��@{8�@�L�Sa�Sa��-<�m��;J������*���nN���78��.�d�{����z�M��{8���:��r����Z���k��?!p�G�ǥ��e\��q�� |
376 |
|
|
�[�cT��C��9L��m;��X��0���������_��Zj���@������ŭ`W�eE+ �
��S�(\�C��[�E��s�?�{��<��q�WƝ^y��k��&� � � �#�A����run-test.sh0000751000076500001440000001003310314240675012052 0ustar mennusers################################################################# |
377 |
|
|
# Shell script to run the tracker reduction programs |
378 |
|
|
################################################################# |
379 |
|
|
# |
380 |
|
|
# |
381 |
|
|
# |
382 |
|
|
#---------------------------------------------------------------- |
383 |
|
|
#local variables: |
384 |
|
|
rawdata_dir='raw-data/' |
385 |
|
|
rzdata_dir='rz-test/' |
386 |
|
|
|
387 |
|
|
if [ -n "$1" -a -n "$2" ] ;then |
388 |
|
|
|
389 |
|
|
lines=$(grep -n -c $ $1) |
390 |
|
|
list=`more $1` |
391 |
|
|
|
392 |
|
|
################################################################# |
393 |
|
|
# ------------------------- LEVEL0 ------------------------------ |
394 |
|
|
# |
395 |
|
|
# This part of the script creates the input to level0.exe and run it, |
396 |
|
|
# starting from a txt list of file IDs (format: YYMMDD_XXX). |
397 |
|
|
# |
398 |
|
|
# Tipical input of level0.exe is as follows: |
399 |
|
|
# ../level0.exe << EOF |
400 |
|
|
# 5 # N. of downlink to process |
401 |
|
|
# raw-data/ # raw-data directory |
402 |
|
|
# 050323_011 # 1^ file id |
403 |
|
|
# 050324_001 # 2^ |
404 |
|
|
# 050324_002 # .... |
405 |
|
|
# 050324_003 # |
406 |
|
|
# 050324_004 # |
407 |
|
|
# rz-test/ # output rz directory |
408 |
|
|
# 100000 # maximum number of events to be processed |
409 |
|
|
# EOF |
410 |
|
|
################################################################# |
411 |
|
|
if [ $2 = 'level0' ]; then |
412 |
|
|
echo $lines > input |
413 |
|
|
echo $rawdata_dir >> input |
414 |
|
|
for dnlk in $list |
415 |
|
|
do |
416 |
|
|
echo $dnlk >> input |
417 |
|
|
done |
418 |
|
|
echo $rzdata_dir >> input |
419 |
|
|
echo '100000' >> input |
420 |
|
|
./level0.exe < input > $1-level0 |
421 |
|
|
# rm -f input |
422 |
|
|
|
423 |
|
|
################################################################# |
424 |
|
|
# ------------------------- LEVEL1 ------------------------------ |
425 |
|
|
# |
426 |
|
|
# This script creates the input to level1.exe and run it |
427 |
|
|
# starting from a txt list of file IDs (format: YYMMDD_XXX). |
428 |
|
|
# |
429 |
|
|
# Tipical input of level1.exe is as follows: |
430 |
|
|
# ../level1.exe << EOF |
431 |
|
|
# raw-data/ # raw-data directory |
432 |
|
|
# 050323_011 # file id |
433 |
|
|
# rz-test/ # input/output rz directory |
434 |
|
|
# 100000 # maximum number of events to be processed |
435 |
|
|
# EOF |
436 |
|
|
################################################################# |
437 |
|
|
elif [ $2 = 'level1' ]; then |
438 |
|
|
if [ -f $1-level1 ];then |
439 |
|
|
rm $1-level1 |
440 |
|
|
fi |
441 |
|
|
touch $1-level1 |
442 |
|
|
for dnlk in $list |
443 |
|
|
do |
444 |
|
|
./level1.exe >> $1-level1 <<EOF |
445 |
|
|
$rzdata_dir |
446 |
|
|
$dnlk |
447 |
|
|
100000 |
448 |
|
|
EOF |
449 |
|
|
done |
450 |
|
|
################################################################# |
451 |
|
|
# ------------------------- LEVEL2 ------------------------------ |
452 |
|
|
# |
453 |
|
|
# This script creates the input to level2.exe and run it |
454 |
|
|
# starting from a txt list of file IDs (format: YYMMDD_XXX). |
455 |
|
|
# |
456 |
|
|
# Tipical input of level1.exe is as follows: |
457 |
|
|
# ../level2.exe << EOF |
458 |
|
|
# raw-data/ # raw-data directory |
459 |
|
|
# 050323_011 # file id |
460 |
|
|
# rz-test/ # input/output rz directory |
461 |
|
|
# 100000 # maximum number of events to be processed |
462 |
|
|
# F # (debug flag) |
463 |
|
|
# EOF |
464 |
|
|
################################################################# |
465 |
|
|
elif [ $2 = 'level2' ]; then |
466 |
|
|
if [ -f $1-level2 ];then |
467 |
|
|
rm $1-level2 |
468 |
|
|
fi |
469 |
|
|
touch $1-level2 |
470 |
|
|
for dnlk in $list |
471 |
|
|
do |
472 |
|
|
./level2.exe >> $1-level2 <<EOF |
473 |
|
|
$rzdata_dir |
474 |
|
|
$dnlk |
475 |
|
|
100000 |
476 |
|
|
COG2 |
477 |
|
|
F |
478 |
|
|
EOF |
479 |
|
|
done |
480 |
|
|
################################################################# |
481 |
|
|
# --------------------- TOFTRACK ----------------------------- |
482 |
|
|
# |
483 |
|
|
# This script creates the input to tofsoft.exe and run it |
484 |
|
|
# starting from a txt list of file IDs (format: YYMMDD_XXX). |
485 |
|
|
# |
486 |
|
|
# Typical input of toftrack.exe is as follows: |
487 |
|
|
# ../toftrack.exe << EOF |
488 |
|
|
# raw-data/ # raw-data directory |
489 |
|
|
# 050323_011 # file id |
490 |
|
|
# rz-test/ # input/output rz directory |
491 |
|
|
# 100000 # maximum number of events to be processed |
492 |
|
|
# F # (debug flag) |
493 |
|
|
# EOF |
494 |
|
|
################################################################# |
495 |
|
|
elif [ $2 = 'toftrack' ]; then |
496 |
|
|
if [ -f $1-toftrack ];then |
497 |
|
|
rm $1-toftrack |
498 |
|
|
fi |
499 |
|
|
touch $1-toftrack |
500 |
|
|
for dnlk in $list |
501 |
|
|
do |
502 |
|
|
./toftrack.exe <<EOF |
503 |
|
|
$rzdata_dir |
504 |
|
|
$dnlk |
505 |
|
|
1 |
506 |
|
|
100000 |
507 |
|
|
EOF |
508 |
|
|
done |
509 |
|
|
fi |
510 |
|
|
else |
511 |
|
|
echo "" |
512 |
|
|
echo "USAGE:" |
513 |
|
|
echo "./run-test.sh downlink-list-file-name level0/1/2/tofsoft" |
514 |
|
|
echo "( ex: ./run-test.sh 050323.txt level0 & )" |
515 |
|
|
echo "( ex: ./run-test.sh 050323.txt level1 & )" |
516 |
|
|
echo "( ex: ./run-test.sh 050323.txt level2 & )" |
517 |
|
|
echo "( ex: ./run-test.sh 050323.txt toftrack & )" |
518 |
|
|
echo "" |
519 |
|
|
fi |
520 |
|
|
|
521 |
|
|
tofcalib.rz0000644000076500001440000044000010314241134012066 0ustar mennusersUC�S-- �.��.���x7 8D&(`�<����% V����.���<'�<'�<'�<'�<'�<'�<'�<'�<'�<'�<'�<'�<'�<'�<'�<' �<'!�<'"�<'#�<'$�<'%�<'&�< �.�7�.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��C�C�G�G�G�HCON�B |
522 |
|
|
�\B~��B,{�ۅ@@�<���n�RA���?�\)�DG�������(�¼���z{W |
523 |
|
|
aH���Q�\AQB*�A�33��A���Dz��?�?�C�G�G�HCON�����[�R� |
524 |
|
|
� �3¤Ǯ�Σ������i\)��p���{�(�A5���θR��z�B�H��(��;�;�?�G�G�HCON�AθRBb�\B(���S� |
525 |
|
|
A�@AG��7�7�;�G�G�HCON��Q�A�� |
526 |
|
|
@�H��=q�hz�33�3�3�7�G�G�HCON������� |
527 |
|
|
��Q��R�R����� |
528 |
|
|
=�9���\Q��ff�z����������(Q��*�H�%�/�/�3�G�G�HCON�AK�A���@�G���(���� |
529 |
|
|
�t�ÿ�=q�(���(�����R��(��,+�/�G�G�HCON�A�33AF=q��� |
530 |
|
|
�\�((+�G�G�HCON�����7����Ϳ�G��$ |
531 |
|
|
$ (G�G� HCON���33�&p�����[��z=q�`��� $ G�G� |
532 |
|
|
HCON�?˅@j=q��z��Vff�n{�hQ�� G�G�HCON��G�G�HCON��G�G�
HCON��#"G�G�HCON��('"G�G�HCON��-,'G�G�HCON��21,G�G�HCON�B���Bgz�BA�Bg=qB�p�Bx��B�k�B�\)Bz{B��B�ǮB33B��BCG�B.��A�33A%G�A2�\A%p�A'�Ap�Az�AA ��A�A4A{@�A(�@���A
G�@�p��761G�G�HCON�B��B33BA홚BHBv�RA���BM�B<B�B��BA�33A��A=qAffAR�HA0��ADz�A\(�A+33A��AXQ�A��\��<�;6G�G�HCON�B�ffB�W |
533 |
|
|
B6(�B���A���A˙�Bp�A����A�@�;G�G�HCON�BH{B@Q�B��B��3E�&A�� |
534 |
|
|
A�G�A�����F�E�@G�G�HCON�B�3B�#�B�k�B�u�B�(�B�{@�ff@ᙚ@���@��@��H@�ff��K�J�EG�G�HCON�B��=B�=qB��HBɀB���B��RA |
535 |
|
|
�H@��H@�Q�@�@��H@θR.W��N�VH�H�I-IFI�I�JuJ�KK2K�K�LaLzMMM�M�NMNfN�O |
536 |
|
|
O�O�P9PRP�P�Q�Q�R%R>R�R�SmS�TT*T�T�UYUrU�W��KH�H�HNAM�" /,-����FI4I3HNAM�" -)-����AI�I�HNAM�" + |
537 |
|
|
&-���<J|J{HNAM�" ) |
538 |
|
|
#-�� |
539 |
|
|
7K KHNAM�" ' -��2K�K�HNAM�" %"-��*-LhLgHNAM�" $-���(MMHNAM�" #-���#M�M�HNAM�" "-���NTNSHNAM�" !
-���N�N�HNAM�" -���O�O�HNAM�" -��� P@P?HNAM�" |
540 |
|
|
-��J$ |
541 |
|
|
P�P�HNAM�"
-��R(Q�Q�HNAM�" -��Z,R,R+HNAM�" -��^/�R�R�HNAM�" -��b3�StSsHNAM�"
-��n7�TTHNAM�B |
542 |
|
|
-��~;�T�T�HNAM�B -���?�U`U_HNAM�B -���C�W�W�HNAM�B -�����QW�I4HBLK
TOFADC32���H�W�I�HBLK
TOFADC31��iI4W�J|HBLK
TOFADC22���I�W�K HBLK
TOFADC21��J|W�K�HBLK
TOFADC12��
K W�LhHBLK
TOFADC11��K�W�MHBLK
TOFTW32 ��%LhW�M�HBLK
TOFTW31 ��MW�NTHBLK
TOFTW22 ��=M�W�N�
HBLK
TOFTW21 ���NTW�O�HBLK
TOFTW12 ��UN�W�P@HBLK
TOFTW11 ���O�W�P� |
543 |
|
|
HBLK
TOFLIN32��mP@W�Q� HBLK
TOFLIN31���P�W�R,HBLK
TOFLIN22��Q�W�R�HBLK
TOFLIN21��R,W�StHBLK
TOFLIN12��R�W�THBLK
TOFLIN11��)StW�T�HBLK
TOFK1D ���TW�U`HBLK
TOFK1C ��AT�W�W�HBLK
TOFK1B W�W�HREA�W�W�HINT�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W�W�HCHA�K1_S11S31 K1_S12S32 K1_S21S31 K1_S22S32 X_COOR_LIN11Y_COOR_LIN12Y_COOR_LIN21X_COOR_LIN22Y_COOR_LIN31X_COOR_LIN32TW11TW12TW21TW22TW31TW32ADCX11 ADCX12 ADCX21 ADCX22 ADCX31 ADCX32 ���U`W�W�HBLK
TOFK1A �H�U�V�WW�\\<HIDT$�1/"< //Wntuple TOF CALIB HNAM�" /,-����FI4I3HNAM�" -)-����AI�I�HNAM�" + |
544 |
|
|
&-���<J|J{HNAM�" ) |
545 |
|
|
#-�� |
546 |
|
|
7K KHNAM�" ' -��2K�K�HNAM�" %"-��*-LhLgHNAM�" $-���(MMHNAM�" #-���#M�M�HNAM�" "-���NTNSHNAM�" !
-���N�N�HNAM�" -���O�O�HNAM�" -��� P@P?HNAM�" |
547 |
|
|
-��J$ |
548 |
|
|
P�P�HNAM�"
-��R(Q�Q�HNAM�" -��Ztofroutine.f0000664000076500001440000006721310321442276012320 0ustar mennusers SUBROUTINE TOFROUTINE(XOUT,YOUT,ALPHA) |
549 |
|
|
|
550 |
|
|
C------------------------------------------------ |
551 |
|
|
C W. Menn |
552 |
|
|
C |
553 |
|
|
C Version 1.00 August 2005 |
554 |
|
|
C Version 1.01 7-oct-2005 |
555 |
|
|
C changed initialization values of xtofpos and ytofpos to "100." |
556 |
|
|
C if the calculated values are unphysical (> +/- 100), then they |
557 |
|
|
C are set to "101." to avoid problems in the attenuation calculation |
558 |
|
|
C------------------------------------------------ |
559 |
|
|
|
560 |
|
|
|
561 |
|
|
include 'common_tofroutine.f' |
562 |
|
|
include 'common_tof.f' |
563 |
|
|
|
564 |
|
|
c ======================================= |
565 |
|
|
c variables for tracking routine |
566 |
|
|
c ======================================= |
567 |
|
|
parameter(NPOINT_MAX=100) |
568 |
|
|
REAL XOUT(NPOINT_MAX),YOUT(NPOINT_MAX) |
569 |
|
|
REAL ALPHA(5) |
570 |
|
|
|
571 |
|
|
|
572 |
|
|
* ****************************************************************** |
573 |
|
|
* eventcounter |
574 |
|
|
c write(*,*) '--- in beta.f ----' |
575 |
|
|
|
576 |
|
|
|
577 |
|
|
* amplitude has to be 'secure' higher than pedestal for an adc event |
578 |
|
|
secure = 2. |
579 |
|
|
|
580 |
|
|
xtop = 1000.0 |
581 |
|
|
xmid = 1000.0 |
582 |
|
|
xbot = 1000.0 |
583 |
|
|
|
584 |
|
|
offset = 1 |
585 |
|
|
slope = 2 |
586 |
|
|
top = 1 |
587 |
|
|
mid = 2 |
588 |
|
|
bot = 3 |
589 |
|
|
left = 1 |
590 |
|
|
right = 2 |
591 |
|
|
none_ev = 0 |
592 |
|
|
none_find = 0 |
593 |
|
|
tdc_ev = 1 |
594 |
|
|
adc_ev = 1 |
595 |
|
|
itdc = 1 |
596 |
|
|
iadc = 2 |
597 |
|
|
|
598 |
|
|
do i=1,5 |
599 |
|
|
beta_a(i) = 1000. |
600 |
|
|
enddo |
601 |
|
|
|
602 |
|
|
do i=1,4 |
603 |
|
|
do j=1,12 |
604 |
|
|
adc_c(i,j) = 1000. |
605 |
|
|
enddo |
606 |
|
|
enddo |
607 |
|
|
|
608 |
|
|
|
609 |
|
|
c the calibration files are read in the main program from xxx_tofcalib.rz |
610 |
|
|
|
611 |
|
|
IF (TOFfst.EQ.0) THEN |
612 |
|
|
TOFfst = 1 |
613 |
|
|
|
614 |
|
|
write(*,*) 'Calibration Data' |
615 |
|
|
write(*,*) 'K1 data ' |
616 |
|
|
write(*,*) 'S11-S31' |
617 |
|
|
DO i = 1,24 |
618 |
|
|
write(*,*) i,k1_S11S31(i) |
619 |
|
|
ENDDO |
620 |
|
|
|
621 |
|
|
write(*,*) 'S12-S32' |
622 |
|
|
DO i = 1,18 |
623 |
|
|
write (*,*) i,k1_S12S32(i) |
624 |
|
|
ENDDO |
625 |
|
|
|
626 |
|
|
write(*,*) 'S21-S31' |
627 |
|
|
DO i = 1,6 |
628 |
|
|
write(*,*) i,k1_S21S31(i) |
629 |
|
|
ENDDO |
630 |
|
|
|
631 |
|
|
write(*,*) 'S22-S32' |
632 |
|
|
DO i = 1,6 |
633 |
|
|
write (*,*) i,k1_S22S32(i) |
634 |
|
|
ENDDO |
635 |
|
|
|
636 |
|
|
|
637 |
|
|
C--- use TDC-difference to calculate incident point |
638 |
|
|
|
639 |
|
|
write(*,*) 'X-Y-Lin Coordinates' |
640 |
|
|
DO i = 1, 8 |
641 |
|
|
write(*,*) i,y_coor_lin11(i,1),y_coor_lin11(i,2) |
642 |
|
|
ENDDO |
643 |
|
|
DO i = 1, 6 |
644 |
|
|
write(*,*) i,x_coor_lin12(i,1),x_coor_lin12(i,2) |
645 |
|
|
ENDDO |
646 |
|
|
DO i = 1, 2 |
647 |
|
|
write(*,*) i,x_coor_lin21(i,1),x_coor_lin21(i,2) |
648 |
|
|
ENDDO |
649 |
|
|
DO i = 1, 2 |
650 |
|
|
write(*,*) i,y_coor_lin22(i,1),y_coor_lin22(i,2) |
651 |
|
|
ENDDO |
652 |
|
|
DO i = 1, 3 |
653 |
|
|
write(*,*) i,y_coor_lin31(i,1),y_coor_lin31(i,2) |
654 |
|
|
ENDDO |
655 |
|
|
DO i = 1, 3 |
656 |
|
|
write(*,*) i,x_coor_lin32(i,1),x_coor_lin32(i,2) |
657 |
|
|
ENDDO |
658 |
|
|
|
659 |
|
|
c---------- Time Walk |
660 |
|
|
|
661 |
|
|
write(*,*) 'Time Walk' |
662 |
|
|
DO i = 1,8 |
663 |
|
|
write(*,*) i,tw11(left,i), tw11(right,i) |
664 |
|
|
ENDDO |
665 |
|
|
DO i = 1,6 |
666 |
|
|
write(*,*) i,tw12(left,i), tw12(right,i) |
667 |
|
|
ENDDO |
668 |
|
|
DO i = 1,2 |
669 |
|
|
write(*,*) i,tw21(left,i), tw21(right,i) |
670 |
|
|
ENDDO |
671 |
|
|
DO i = 1,2 |
672 |
|
|
write(*,*) i,tw22(left,i), tw22(right,i) |
673 |
|
|
ENDDO |
674 |
|
|
DO i = 1,3 |
675 |
|
|
write(*,*) i,tw31(left,i), tw31(right,i) |
676 |
|
|
ENDDO |
677 |
|
|
DO i = 1,3 |
678 |
|
|
write(*,*) i,tw32(left,i), tw32(right,i) |
679 |
|
|
ENDDO |
680 |
|
|
|
681 |
|
|
c---------- ADC map |
682 |
|
|
c read ADC correction file |
683 |
|
|
|
684 |
|
|
write(*,*) 'ADC Map' |
685 |
|
|
write(*,*) 'ADC Map 1' |
686 |
|
|
DO i = 1,8 |
687 |
|
|
write(*,*) (adcx11(left,i,j),j=1,2) |
688 |
|
|
write(*,*) (adcx11(right,i,j),j=1,2) |
689 |
|
|
ENDDO |
690 |
|
|
DO i = 1,6 |
691 |
|
|
write(*,*) (adcx12(left,i,j),j=1,2) |
692 |
|
|
write(*,*) (adcx12(right,i,j),j=1,2) |
693 |
|
|
ENDDO |
694 |
|
|
|
695 |
|
|
write(*,*) 'ADC map 2' |
696 |
|
|
DO i = 1,2 |
697 |
|
|
write(*,*) (adcx21(left,i,j),j=1,2) |
698 |
|
|
write(*,*) (adcx21(right,i,j),j=1,2) |
699 |
|
|
ENDDO |
700 |
|
|
DO i = 1,2 |
701 |
|
|
write(*,*) (adcx22(left,i,j),j=1,2) |
702 |
|
|
write(*,*) (adcx22(right,i,j),j=1,2) |
703 |
|
|
ENDDO |
704 |
|
|
|
705 |
|
|
write(*,*) 'ADC map 3' |
706 |
|
|
DO i = 1,3 |
707 |
|
|
write(*,*) (adcx31(left,i,j),j=1,2) |
708 |
|
|
write(*,*) (adcx31(right,i,j),j=1,2) |
709 |
|
|
ENDDO |
710 |
|
|
DO i = 1,3 |
711 |
|
|
write(*,*) (adcx32(left,i,j),j=1,2) |
712 |
|
|
write(*,*) (adcx32(right,i,j),j=1,2) |
713 |
|
|
ENDDO |
714 |
|
|
|
715 |
|
|
ENDIF |
716 |
|
|
c end of reading parameter files |
717 |
|
|
|
718 |
|
|
c------------------------- get ToF data -------------------------------- |
719 |
|
|
|
720 |
|
|
c put the adc and tdc values from ntuple into tofxx(i,j,k) variables |
721 |
|
|
|
722 |
|
|
do j=1,8 |
723 |
|
|
tof11(1,j,2) = adc(ch11a(j),hb11a(j)) |
724 |
|
|
tof11(2,j,2) = adc(ch11b(j),hb11b(j)) |
725 |
|
|
tof11(1,j,1) = tdc(ch11a(j),hb11a(j)) |
726 |
|
|
tof11(2,j,1) = tdc(ch11b(j),hb11b(j)) |
727 |
|
|
c write(*,*) j,adc(ch11a(j),hb11a(j)),adc(ch11b(j),hb11b(j)) |
728 |
|
|
enddo |
729 |
|
|
|
730 |
|
|
do j=1,6 |
731 |
|
|
tof12(1,j,2) = adc(ch12a(j),hb12a(j)) |
732 |
|
|
tof12(2,j,2) = adc(ch12b(j),hb12b(j)) |
733 |
|
|
tof12(1,j,1) = tdc(ch12a(j),hb12a(j)) |
734 |
|
|
tof12(2,j,1) = tdc(ch12b(j),hb12b(j)) |
735 |
|
|
enddo |
736 |
|
|
|
737 |
|
|
do j=1,2 |
738 |
|
|
tof21(1,j,2) = adc(ch21a(j),hb21a(j)) |
739 |
|
|
tof21(2,j,2) = adc(ch21b(j),hb21b(j)) |
740 |
|
|
tof21(1,j,1) = tdc(ch21a(j),hb21a(j)) |
741 |
|
|
tof21(2,j,1) = tdc(ch21b(j),hb21b(j)) |
742 |
|
|
enddo |
743 |
|
|
|
744 |
|
|
do j=1,2 |
745 |
|
|
tof22(1,j,2) = adc(ch22a(j),hb22a(j)) |
746 |
|
|
tof22(2,j,2) = adc(ch22b(j),hb22b(j)) |
747 |
|
|
tof22(1,j,1) = tdc(ch22a(j),hb22a(j)) |
748 |
|
|
tof22(2,j,1) = tdc(ch22b(j),hb22b(j)) |
749 |
|
|
enddo |
750 |
|
|
|
751 |
|
|
do j=1,3 |
752 |
|
|
tof31(1,j,2) = adc(ch31a(j),hb31a(j)) |
753 |
|
|
tof31(2,j,2) = adc(ch31b(j),hb31b(j)) |
754 |
|
|
tof31(1,j,1) = tdc(ch31a(j),hb31a(j)) |
755 |
|
|
tof31(2,j,1) = tdc(ch31b(j),hb31b(j)) |
756 |
|
|
enddo |
757 |
|
|
|
758 |
|
|
do j=1,3 |
759 |
|
|
tof32(1,j,2) = adc(ch32a(j),hb32a(j)) |
760 |
|
|
tof32(2,j,2) = adc(ch32b(j),hb32b(j)) |
761 |
|
|
tof32(1,j,1) = tdc(ch32a(j),hb32a(j)) |
762 |
|
|
tof32(2,j,1) = tdc(ch32b(j),hb32b(j)) |
763 |
|
|
enddo |
764 |
|
|
|
765 |
|
|
C---------------------------------------------------------------------- |
766 |
|
|
|
767 |
|
|
DO i = 1,8 |
768 |
|
|
if (abs(tof11(1,i,itdc)).gt.10000.) tof11(1,i,itdc)= 10000. |
769 |
|
|
if (abs(tof11(2,i,itdc)).gt.10000.) tof11(2,i,itdc)= 10000. |
770 |
|
|
if (abs(tof11(1,i,iadc)).gt.10000.) tof11(1,i,iadc)= 10000. |
771 |
|
|
if (abs(tof11(2,i,iadc)).gt.10000.) tof11(2,i,iadc)= 10000. |
772 |
|
|
ENDDO |
773 |
|
|
|
774 |
|
|
DO i = 1,6 |
775 |
|
|
if (abs(tof12(1,i,itdc)).gt.10000.) tof12(1,i,itdc)= 10000. |
776 |
|
|
if (abs(tof12(2,i,itdc)).gt.10000.) tof12(2,i,itdc)= 10000. |
777 |
|
|
if (abs(tof12(1,i,iadc)).gt.10000.) tof12(1,i,iadc)= 10000. |
778 |
|
|
if (abs(tof12(2,i,iadc)).gt.10000.) tof12(2,i,iadc)= 10000. |
779 |
|
|
ENDDO |
780 |
|
|
|
781 |
|
|
|
782 |
|
|
DO i = 1,2 |
783 |
|
|
if (abs(tof21(1,i,itdc)).gt.10000.) tof21(1,i,itdc)= 10000. |
784 |
|
|
if (abs(tof21(2,i,itdc)).gt.10000.) tof21(2,i,itdc)= 10000. |
785 |
|
|
if (abs(tof21(1,i,iadc)).gt.10000.) tof21(1,i,iadc)= 10000. |
786 |
|
|
if (abs(tof21(2,i,iadc)).gt.10000.) tof21(2,i,iadc)= 10000. |
787 |
|
|
ENDDO |
788 |
|
|
|
789 |
|
|
DO i = 1,2 |
790 |
|
|
if (abs(tof22(1,i,itdc)).gt.10000.) tof22(1,i,itdc)= 10000. |
791 |
|
|
if (abs(tof22(2,i,itdc)).gt.10000.) tof22(2,i,itdc)= 10000. |
792 |
|
|
if (abs(tof22(1,i,iadc)).gt.10000.) tof22(1,i,iadc)= 10000. |
793 |
|
|
if (abs(tof22(2,i,iadc)).gt.10000.) tof22(2,i,iadc)= 10000. |
794 |
|
|
ENDDO |
795 |
|
|
|
796 |
|
|
DO i = 1,3 |
797 |
|
|
if (abs(tof31(1,i,itdc)).gt.10000.) tof31(1,i,itdc)= 10000. |
798 |
|
|
if (abs(tof31(2,i,itdc)).gt.10000.) tof31(2,i,itdc)= 10000. |
799 |
|
|
if (abs(tof31(1,i,iadc)).gt.10000.) tof31(1,i,iadc)= 10000. |
800 |
|
|
if (abs(tof31(2,i,iadc)).gt.10000.) tof31(2,i,iadc)= 10000. |
801 |
|
|
ENDDO |
802 |
|
|
|
803 |
|
|
DO i = 1,3 |
804 |
|
|
if (abs(tof32(1,i,itdc)).gt.10000.) tof32(1,i,itdc)= 10000. |
805 |
|
|
if (abs(tof32(2,i,itdc)).gt.10000.) tof32(2,i,itdc)= 10000. |
806 |
|
|
if (abs(tof32(1,i,iadc)).gt.10000.) tof32(1,i,iadc)= 10000. |
807 |
|
|
if (abs(tof32(2,i,iadc)).gt.10000.) tof32(2,i,iadc)= 10000. |
808 |
|
|
ENDDO |
809 |
|
|
|
810 |
|
|
C---------------------------------------------------------------- |
811 |
|
|
C------------ Check Paddles for hits ----------------------- |
812 |
|
|
C---------------------------------------------------------------- |
813 |
|
|
|
814 |
|
|
C upper tof S11 |
815 |
|
|
DO i = 1,8 |
816 |
|
|
DO j = 1,2 |
817 |
|
|
tof11_event(j,i) = none_ev |
818 |
|
|
IF ((tof11(j,i,itdc).LT.2000).AND.(tof11(j,i,itdc).GT.100)) |
819 |
|
|
+ tof11_event(j,i) = tof11_event(j,i) + tdc_ev |
820 |
|
|
IF ((tof11(j,i,iadc).GT.secure).AND. |
821 |
|
|
+ (tof11(j,i,iadc).LT.4095)) |
822 |
|
|
+ tof11_event(j,i) = tof11_event(j,i) + adc_ev |
823 |
|
|
ENDDO |
824 |
|
|
ENDDO |
825 |
|
|
|
826 |
|
|
c find single paddle in upper tof with tdc and adc signal |
827 |
|
|
tof11_i = none_find |
828 |
|
|
tof11_j = none_find |
829 |
|
|
check = .TRUE. |
830 |
|
|
DO i = 1, 8 |
831 |
|
|
IF ((tof11_event(left,i).GE.1).AND.(tof11_event(right,i).GE.1)) |
832 |
|
|
+ THEN |
833 |
|
|
c check if an other paddle has also an event - then set flag |
834 |
|
|
tof11_j = tof11_j + 2**(i-1) |
835 |
|
|
IF (check.EQV..TRUE.) THEN |
836 |
|
|
IF (tof11_i.EQ.none_find) THEN |
837 |
|
|
tof11_i = i |
838 |
|
|
ELSE |
839 |
|
|
tof11_i = -1 |
840 |
|
|
check = .FALSE. |
841 |
|
|
ENDIF |
842 |
|
|
ENDIF |
843 |
|
|
ENDIF |
844 |
|
|
ENDDO |
845 |
|
|
|
846 |
|
|
|
847 |
|
|
C upper tof S12 |
848 |
|
|
DO i = 1,6 |
849 |
|
|
DO j = 1,2 |
850 |
|
|
tof12_event(j,i) = none_ev |
851 |
|
|
IF ((tof12(j,i,itdc).LT.2000).AND.(tof12(j,i,itdc).GT.100)) |
852 |
|
|
+ tof12_event(j,i) = tof12_event(j,i) + tdc_ev |
853 |
|
|
IF ((tof12(j,i,iadc).GT.secure).AND. |
854 |
|
|
+ (tof12(j,i,iadc).LT.4095)) |
855 |
|
|
+ tof12_event(j,i) = tof12_event(j,i) + adc_ev |
856 |
|
|
ENDDO |
857 |
|
|
ENDDO |
858 |
|
|
|
859 |
|
|
c find single paddle in upper tof with tdc and adc signal |
860 |
|
|
tof12_i = none_find |
861 |
|
|
tof12_j = none_find |
862 |
|
|
check = .TRUE. |
863 |
|
|
DO i = 1, 6 |
864 |
|
|
IF ((tof12_event(left,i).GE.1).AND.(tof12_event(right,i).GE.1)) |
865 |
|
|
+ THEN |
866 |
|
|
c check if an other paddle has also an event - then set flag |
867 |
|
|
tof12_j = tof12_j + 2**(i-1) |
868 |
|
|
IF (check.EQV..TRUE.) THEN |
869 |
|
|
IF (tof12_i.EQ.none_find) THEN |
870 |
|
|
tof12_i = i |
871 |
|
|
ELSE |
872 |
|
|
tof12_i = -1 |
873 |
|
|
check = .FALSE. |
874 |
|
|
ENDIF |
875 |
|
|
ENDIF |
876 |
|
|
ENDIF |
877 |
|
|
ENDDO |
878 |
|
|
|
879 |
|
|
|
880 |
|
|
C middle tof S21 |
881 |
|
|
DO i = 1,2 |
882 |
|
|
DO j = 1,2 |
883 |
|
|
tof21_event(j,i) = none_ev |
884 |
|
|
IF ((tof21(j,i,itdc).LT.2000).AND.(tof21(j,i,itdc).GT.100)) |
885 |
|
|
+ tof21_event(j,i) = tof21_event(j,i) + tdc_ev |
886 |
|
|
IF ((tof21(j,i,iadc).GT.secure).AND. |
887 |
|
|
+ (tof21(j,i,iadc).LT.4095)) |
888 |
|
|
+ tof21_event(j,i) = tof21_event(j,i) + adc_ev |
889 |
|
|
ENDDO |
890 |
|
|
ENDDO |
891 |
|
|
|
892 |
|
|
c find single paddle in upper tof with tdc and adc signal |
893 |
|
|
tof21_i = none_find |
894 |
|
|
tof21_j = none_find |
895 |
|
|
check = .TRUE. |
896 |
|
|
DO i = 1, 2 |
897 |
|
|
IF ((tof21_event(left,i).GE.1).AND.(tof21_event(right,i).GE.1)) |
898 |
|
|
+ THEN |
899 |
|
|
c check if an other paddle has also an event - then set flag |
900 |
|
|
tof21_j = tof21_j + 2**(i-1) |
901 |
|
|
IF (check.EQV..TRUE.) THEN |
902 |
|
|
IF (tof21_i.EQ.none_find) THEN |
903 |
|
|
tof21_i = i |
904 |
|
|
ELSE |
905 |
|
|
tof21_i = -1 |
906 |
|
|
check = .FALSE. |
907 |
|
|
ENDIF |
908 |
|
|
ENDIF |
909 |
|
|
ENDIF |
910 |
|
|
ENDDO |
911 |
|
|
|
912 |
|
|
C middle tof S22 |
913 |
|
|
DO i = 1,2 |
914 |
|
|
DO j = 1,2 |
915 |
|
|
tof22_event(j,i) = none_ev |
916 |
|
|
IF ((tof22(j,i,itdc).LT.2000).AND.(tof22(j,i,itdc).GT.100)) |
917 |
|
|
+ tof22_event(j,i) = tof22_event(j,i) + tdc_ev |
918 |
|
|
IF ((tof22(j,i,iadc).GT.secure).AND. |
919 |
|
|
+ (tof22(j,i,iadc).LT.4095)) |
920 |
|
|
+ tof22_event(j,i) = tof22_event(j,i) + adc_ev |
921 |
|
|
ENDDO |
922 |
|
|
ENDDO |
923 |
|
|
|
924 |
|
|
c find single paddle in upper tof with tdc and adc signal |
925 |
|
|
tof22_i = none_find |
926 |
|
|
tof22_j = none_find |
927 |
|
|
check = .TRUE. |
928 |
|
|
DO i = 1, 2 |
929 |
|
|
IF ((tof22_event(left,i).GE.1).AND.(tof22_event(right,i).GE.1)) |
930 |
|
|
+ THEN |
931 |
|
|
c check if an other paddle has also an event - then set flag |
932 |
|
|
tof22_j = tof22_j + 2**(i-1) |
933 |
|
|
IF (check.EQV..TRUE.) THEN |
934 |
|
|
IF (tof22_i.EQ.none_find) THEN |
935 |
|
|
tof22_i = i |
936 |
|
|
ELSE |
937 |
|
|
tof22_i = -1 |
938 |
|
|
check = .FALSE. |
939 |
|
|
ENDIF |
940 |
|
|
ENDIF |
941 |
|
|
ENDIF |
942 |
|
|
ENDDO |
943 |
|
|
|
944 |
|
|
|
945 |
|
|
C bottom tof S31 |
946 |
|
|
DO i = 1,3 |
947 |
|
|
DO j = 1,2 |
948 |
|
|
tof31_event(j,i) = none_ev |
949 |
|
|
IF ((tof31(j,i,itdc).LT.2000).AND.(tof31(j,i,itdc).GT.100)) |
950 |
|
|
+ tof31_event(j,i) = tof31_event(j,i) + tdc_ev |
951 |
|
|
IF ((tof31(j,i,iadc).GT.secure).AND. |
952 |
|
|
+ (tof31(j,i,iadc).LT.4095)) |
953 |
|
|
+ tof31_event(j,i) = tof31_event(j,i) + adc_ev |
954 |
|
|
ENDDO |
955 |
|
|
ENDDO |
956 |
|
|
|
957 |
|
|
c find single paddle in upper tof with tdc and adc signal |
958 |
|
|
tof31_i = none_find |
959 |
|
|
tof31_j = none_find |
960 |
|
|
check = .TRUE. |
961 |
|
|
DO i = 1, 3 |
962 |
|
|
IF ((tof31_event(left,i).GE.1).AND.(tof31_event(right,i).GE.1)) |
963 |
|
|
+ THEN |
964 |
|
|
c check if an other paddle has also an event - then set flag |
965 |
|
|
tof31_j = tof31_j + 2**(i-1) |
966 |
|
|
IF (check.EQV..TRUE.) THEN |
967 |
|
|
IF (tof31_i.EQ.none_find) THEN |
968 |
|
|
tof31_i = i |
969 |
|
|
ELSE |
970 |
|
|
tof31_i = -1 |
971 |
|
|
check = .FALSE. |
972 |
|
|
ENDIF |
973 |
|
|
ENDIF |
974 |
|
|
ENDIF |
975 |
|
|
ENDDO |
976 |
|
|
|
977 |
|
|
C bottom tof S32 |
978 |
|
|
DO i = 1,3 |
979 |
|
|
DO j = 1,2 |
980 |
|
|
tof32_event(j,i) = none_ev |
981 |
|
|
IF ((tof32(j,i,itdc).LT.2000).AND.(tof32(j,i,itdc).GT.100)) |
982 |
|
|
+ tof32_event(j,i) = tof32_event(j,i) + tdc_ev |
983 |
|
|
IF ((tof32(j,i,iadc).GT.secure).AND. |
984 |
|
|
+ (tof32(j,i,iadc).LT.4095)) |
985 |
|
|
+ tof32_event(j,i) = tof32_event(j,i) + adc_ev |
986 |
|
|
ENDDO |
987 |
|
|
ENDDO |
988 |
|
|
|
989 |
|
|
c find single paddle in upper tof with tdc and adc signal |
990 |
|
|
tof32_i = none_find |
991 |
|
|
tof32_j = none_find |
992 |
|
|
check = .TRUE. |
993 |
|
|
DO i = 1, 3 |
994 |
|
|
IF ((tof32_event(left,i).GE.1).AND.(tof32_event(right,i).GE.1)) |
995 |
|
|
+ THEN |
996 |
|
|
c check if an other paddle has also an event - then set flag |
997 |
|
|
tof32_j = tof32_j + 2**(i-1) |
998 |
|
|
IF (check.EQV..TRUE.) THEN |
999 |
|
|
IF (tof32_i.EQ.none_find) THEN |
1000 |
|
|
tof32_i = i |
1001 |
|
|
ELSE |
1002 |
|
|
tof32_i = -1 |
1003 |
|
|
check = .FALSE. |
1004 |
|
|
ENDIF |
1005 |
|
|
ENDIF |
1006 |
|
|
ENDIF |
1007 |
|
|
ENDDO |
1008 |
|
|
|
1009 |
|
|
do i=1,6 |
1010 |
|
|
tof_i_flag(i)=0 |
1011 |
|
|
tof_j_flag(i)=0 |
1012 |
|
|
enddo |
1013 |
|
|
|
1014 |
|
|
tof_i_flag(1)=tof11_i |
1015 |
|
|
tof_i_flag(2)=tof12_i |
1016 |
|
|
tof_i_flag(3)=tof21_i |
1017 |
|
|
tof_i_flag(4)=tof22_i |
1018 |
|
|
tof_i_flag(5)=tof31_i |
1019 |
|
|
tof_i_flag(6)=tof32_i |
1020 |
|
|
|
1021 |
|
|
tof_j_flag(1)=tof11_j |
1022 |
|
|
tof_j_flag(2)=tof12_j |
1023 |
|
|
tof_j_flag(3)=tof21_j |
1024 |
|
|
tof_j_flag(4)=tof22_j |
1025 |
|
|
tof_j_flag(5)=tof31_j |
1026 |
|
|
tof_j_flag(6)=tof32_j |
1027 |
|
|
|
1028 |
|
|
C-------------------------------------------------------------------- |
1029 |
|
|
C-------------------- Time walk correction ------------------------- |
1030 |
|
|
C-------------------------------------------------------------------- |
1031 |
|
|
|
1032 |
|
|
IF (tof11_i.GT.none_find) THEN |
1033 |
|
|
tof11(left,tof11_i,itdc) = tof11(left,tof11_i,itdc) + |
1034 |
|
|
+ tw11(left,tof11_i)/sqrt(tof11(left,tof11_i,iadc)) |
1035 |
|
|
tof11(right,tof11_i,itdc) = tof11(right,tof11_i,itdc) + |
1036 |
|
|
+ tw11(right,tof11_i)/sqrt(tof11(right,tof11_i,iadc)) |
1037 |
|
|
ENDIF |
1038 |
|
|
|
1039 |
|
|
|
1040 |
|
|
IF (tof12_i.GT.none_find) THEN |
1041 |
|
|
tof12(left,tof12_i,itdc) = tof12(left,tof12_i,itdc) + |
1042 |
|
|
+ tw12(left,tof12_i)/sqrt(tof12(left,tof12_i,iadc)) |
1043 |
|
|
tof12(right,tof12_i,itdc) = tof12(right,tof12_i,itdc) + |
1044 |
|
|
+ tw12(right,tof12_i)/sqrt(tof12(right,tof12_i,iadc)) |
1045 |
|
|
ENDIF |
1046 |
|
|
|
1047 |
|
|
IF (tof21_i.GT.none_find) THEN |
1048 |
|
|
tof21(left,tof21_i,itdc) = tof21(left,tof21_i,itdc) + |
1049 |
|
|
+ tw21(left,tof21_i)/sqrt(tof21(left,tof21_i,iadc)) |
1050 |
|
|
tof21(right,tof21_i,itdc) = tof21(right,tof21_i,itdc) + |
1051 |
|
|
+ tw21(right,tof21_i)/sqrt(tof21(right,tof21_i,iadc)) |
1052 |
|
|
ENDIF |
1053 |
|
|
IF (tof22_i.GT.none_find) THEN |
1054 |
|
|
tof22(left,tof22_i,itdc) = tof22(left,tof22_i,itdc) + |
1055 |
|
|
+ tw22(left,tof22_i)/sqrt(tof22(left,tof22_i,iadc)) |
1056 |
|
|
tof22(right,tof22_i,itdc) = tof22(right,tof22_i,itdc) + |
1057 |
|
|
+ tw22(right,tof22_i)/sqrt(tof22(right,tof22_i,iadc)) |
1058 |
|
|
ENDIF |
1059 |
|
|
|
1060 |
|
|
IF (tof31_i.GT.none_find) THEN |
1061 |
|
|
tof31(left,tof31_i,itdc) = tof31(left,tof31_i,itdc) + |
1062 |
|
|
+ tw31(left,tof31_i)/sqrt(tof31(left,tof31_i,iadc)) |
1063 |
|
|
tof31(right,tof31_i,itdc) = tof31(right,tof31_i,itdc) + |
1064 |
|
|
+ tw31(right,tof31_i)/sqrt(tof31(right,tof31_i,iadc)) |
1065 |
|
|
ENDIF |
1066 |
|
|
|
1067 |
|
|
IF (tof32_i.GT.none_find) THEN |
1068 |
|
|
tof32(left,tof32_i,itdc) = tof32(left,tof32_i,itdc) + |
1069 |
|
|
+ tw32(left,tof32_i)/sqrt(tof32(left,tof32_i,iadc)) |
1070 |
|
|
tof32(right,tof32_i,itdc) = tof32(right,tof32_i,itdc) + |
1071 |
|
|
+ tw32(right,tof32_i)/sqrt(tof32(right,tof32_i,iadc)) |
1072 |
|
|
ENDIF |
1073 |
|
|
|
1074 |
|
|
|
1075 |
|
|
C------------------------------------------------------------------ |
1076 |
|
|
C--- calculate track position in paddle using timing difference |
1077 |
|
|
C------------------------------------------------------------------ |
1078 |
|
|
|
1079 |
|
|
do i=1,3 |
1080 |
|
|
xtofpos(i)=100. |
1081 |
|
|
ytofpos(i)=100. |
1082 |
|
|
enddo |
1083 |
|
|
C----------------------------- S1 -------------------------------- |
1084 |
|
|
|
1085 |
|
|
IF (tof11_i.GT.none_find) THEN |
1086 |
|
|
ytofpos(1) = ((tof11(1,tof11_i,itdc)-tof11(2,tof11_i,itdc))/2. |
1087 |
|
|
+ - y_coor_lin11(tof11_i,offset))/y_coor_lin11(tof11_i,slope) |
1088 |
|
|
endif |
1089 |
|
|
|
1090 |
|
|
IF (tof12_i.GT.none_find) THEN |
1091 |
|
|
xtofpos(1) = ((tof12(1,tof12_i,itdc)-tof12(2,tof12_i,itdc))/2. |
1092 |
|
|
+ - x_coor_lin12(tof12_i,offset))/x_coor_lin12(tof12_i,slope) |
1093 |
|
|
endif |
1094 |
|
|
|
1095 |
|
|
|
1096 |
|
|
C----------------------------- S2 -------------------------------- |
1097 |
|
|
|
1098 |
|
|
IF (tof21_i.GT.none_find) THEN |
1099 |
|
|
xtofpos(2) = ((tof21(1,tof21_i,itdc)-tof21(2,tof21_i,itdc))/2. |
1100 |
|
|
+ - x_coor_lin21(tof21_i,offset))/x_coor_lin21(tof21_i,slope) |
1101 |
|
|
endif |
1102 |
|
|
|
1103 |
|
|
IF (tof22_i.GT.none_find) THEN |
1104 |
|
|
ytofpos(2) = ((tof22(1,tof22_i,itdc)-tof22(2,tof22_i,itdc))/2. |
1105 |
|
|
+ - y_coor_lin22(tof22_i,offset))/y_coor_lin22(tof22_i,slope) |
1106 |
|
|
endif |
1107 |
|
|
|
1108 |
|
|
|
1109 |
|
|
C----------------------------- S3 -------------------------------- |
1110 |
|
|
|
1111 |
|
|
IF (tof31_i.GT.none_find) THEN |
1112 |
|
|
ytofpos(3) = ((tof31(1,tof31_i,itdc)-tof31(2,tof31_i,itdc))/2. |
1113 |
|
|
+ - y_coor_lin31(tof31_i,offset))/y_coor_lin31(tof31_i,slope) |
1114 |
|
|
c write(*,*) '31',tof31(1,tof31_i,itdc),tof31(2,tof31_i,itdc), |
1115 |
|
|
c + y_coor_lin31(tof31_i,offset),y_coor_lin31(tof31_i,slope), |
1116 |
|
|
c + ytofpos(3) |
1117 |
|
|
endif |
1118 |
|
|
|
1119 |
|
|
IF (tof32_i.GT.none_find) THEN |
1120 |
|
|
xtofpos(3) = ((tof32(1,tof32_i,itdc)-tof32(2,tof32_i,itdc))/2. |
1121 |
|
|
+ - x_coor_lin32(tof32_i,offset))/x_coor_lin32(tof32_i,slope) |
1122 |
|
|
c write(*,*) '32',tof32(1,tof32_i,itdc),tof32(2,tof32_i,itdc), |
1123 |
|
|
c + x_coor_lin32(tof32_i,offset),x_coor_lin32(tof32_i,slope), |
1124 |
|
|
c + xtofpos(3) |
1125 |
|
|
endif |
1126 |
|
|
|
1127 |
|
|
|
1128 |
|
|
do i=1,3 |
1129 |
|
|
if (abs(xtofpos(i)).gt.100.) then |
1130 |
|
|
xtofpos(i)=101. |
1131 |
|
|
endif |
1132 |
|
|
if (abs(ytofpos(i)).gt.100.) then |
1133 |
|
|
ytofpos(i)=101. |
1134 |
|
|
endif |
1135 |
|
|
enddo |
1136 |
|
|
|
1137 |
|
|
|
1138 |
|
|
C---------------------------------------------------------------------- |
1139 |
|
|
C-------------------- Corrections on ADC-data ------------------------- |
1140 |
|
|
C--------------------- zenith angle theta --------------------------- |
1141 |
|
|
C---------------------------------------------------------------------- |
1142 |
|
|
|
1143 |
|
|
C if we have a good track use tracking information |
1144 |
|
|
|
1145 |
|
|
dx=0. |
1146 |
|
|
dy=0. |
1147 |
|
|
dr=0. |
1148 |
|
|
theta13 = 0. |
1149 |
|
|
|
1150 |
|
|
if (xout(1).lt.100.) then |
1151 |
|
|
dx = xout(1)-xout(3) |
1152 |
|
|
dy = yout(1)-yout(3) |
1153 |
|
|
dr = sqrt(dx*dx+dy*dy) |
1154 |
|
|
theta13 = atan(dr/tofarm13) |
1155 |
|
|
else |
1156 |
|
|
IF ((tof12_i.GT.none_find).AND.(tof32_i.GT.none_find)) |
1157 |
|
|
& dx = xtofpos(1) - xtofpos(3) |
1158 |
|
|
IF ((tof11_i.GT.none_find).AND.(tof31_i.GT.none_find)) |
1159 |
|
|
& dy = ytofpos(1) - ytofpos(3) |
1160 |
|
|
dr = sqrt(dx*dx+dy*dy) |
1161 |
|
|
theta13 = atan(dr/tofarm13) |
1162 |
|
|
endif |
1163 |
|
|
|
1164 |
|
|
|
1165 |
|
|
C---------------------------------------------------------------------- |
1166 |
|
|
C------------------ angle and ADC(x) correction |
1167 |
|
|
C---------------------------------------------------------------------- |
1168 |
|
|
C----------------------------- S1 -------------------------------- |
1169 |
|
|
|
1170 |
|
|
yhelp=1000. |
1171 |
|
|
if (yout(1).lt.100.) then |
1172 |
|
|
yhelp=yout(1) |
1173 |
|
|
else |
1174 |
|
|
yhelp=ytofpos(1) |
1175 |
|
|
endif |
1176 |
|
|
|
1177 |
|
|
|
1178 |
|
|
IF (tof11_i.GT.none_find.AND.yhelp.lt.100) THEN |
1179 |
|
|
|
1180 |
|
|
i = tof11_i |
1181 |
|
|
xdummy=tof11(left,i,iadc) |
1182 |
|
|
tof11(left,i,iadc) = tof11(left,i,iadc)*cos(theta13) |
1183 |
|
|
if (tof11(left,i,iadc).lt.1000) then |
1184 |
|
|
xkorr=adcx11(left,i,1)*exp(-yhelp/adcx11(left,i,2)) |
1185 |
|
|
xkorr0=adcx11(left,i,1) |
1186 |
|
|
adc_c(ch11a(i),hb11a(i))=tof11(left,i,iadc)/xkorr |
1187 |
|
|
endif |
1188 |
|
|
|
1189 |
|
|
tof11(right,i,iadc) = tof11(right,i,iadc)*cos(theta13) |
1190 |
|
|
if (tof11(right,i,iadc).lt.1000) then |
1191 |
|
|
xkorr=adcx11(right,i,1)*exp(yhelp/adcx11(right,i,2)) |
1192 |
|
|
xkorr0=adcx11(right,i,1) |
1193 |
|
|
adc_c(ch11b(i),hb11b(i))=tof11(right,i,iadc)/xkorr |
1194 |
|
|
endif |
1195 |
|
|
ENDIF |
1196 |
|
|
|
1197 |
|
|
|
1198 |
|
|
xhelp=1000. |
1199 |
|
|
if (xout(1).lt.100.) then |
1200 |
|
|
xhelp=xout(1) |
1201 |
|
|
else |
1202 |
|
|
xhelp=xtofpos(1) |
1203 |
|
|
endif |
1204 |
|
|
|
1205 |
|
|
|
1206 |
|
|
IF (tof12_i.GT.none_find.AND.xhelp.lt.100) THEN |
1207 |
|
|
|
1208 |
|
|
i = tof12_i |
1209 |
|
|
tof12(left,i,iadc) = tof12(left,i,iadc)*cos(theta13) |
1210 |
|
|
if (tof12(left,i,iadc).lt.1000) then |
1211 |
|
|
xkorr=adcx12(left,i,1)*exp(-xhelp/adcx12(left,i,2)) |
1212 |
|
|
xkorr0=adcx12(left,i,1) |
1213 |
|
|
adc_c(ch12a(i),hb12a(i))=tof12(left,i,iadc)/xkorr |
1214 |
|
|
endif |
1215 |
|
|
|
1216 |
|
|
tof12(right,i,iadc) = tof12(right,i,iadc)*cos(theta13) |
1217 |
|
|
if (tof12(right,i,iadc).lt.1000) then |
1218 |
|
|
xkorr=adcx12(right,i,1)*exp(xhelp/adcx12(right,i,2)) |
1219 |
|
|
xkorr0=adcx12(right,i,1) |
1220 |
|
|
adc_c(ch12b(i),hb12b(i))=tof12(right,i,iadc)/xkorr |
1221 |
|
|
endif |
1222 |
|
|
ENDIF |
1223 |
|
|
|
1224 |
|
|
C----------------------------- S2 -------------------------------- |
1225 |
|
|
|
1226 |
|
|
xhelp=1000. |
1227 |
|
|
if (xout(2).lt.100.) then |
1228 |
|
|
xhelp=xout(2) |
1229 |
|
|
else |
1230 |
|
|
xhelp=xtofpos(2) |
1231 |
|
|
endif |
1232 |
|
|
|
1233 |
|
|
IF (tof21_i.GT.none_find.AND.xhelp.lt.100) THEN |
1234 |
|
|
|
1235 |
|
|
i = tof21_i |
1236 |
|
|
tof21(left,i,iadc) = tof21(left,i,iadc)*cos(theta13) |
1237 |
|
|
if (tof21(left,i,iadc).lt.1000) then |
1238 |
|
|
xkorr=adcx21(left,i,1)*exp(-xhelp/adcx21(left,i,2)) |
1239 |
|
|
xkorr0=adcx21(left,i,1) |
1240 |
|
|
adc_c(ch21a(i),hb21a(i))=tof21(left,i,iadc)/xkorr |
1241 |
|
|
endif |
1242 |
|
|
|
1243 |
|
|
tof21(right,i,iadc) = tof21(right,i,iadc)*cos(theta13) |
1244 |
|
|
if (tof21(right,i,iadc).lt.1000) then |
1245 |
|
|
xkorr=adcx21(right,i,1)*exp(xhelp/adcx21(right,i,2)) |
1246 |
|
|
xkorr0=adcx21(right,i,1) |
1247 |
|
|
adc_c(ch21b(i),hb21b(i))=tof21(right,i,iadc)/xkorr |
1248 |
|
|
endif |
1249 |
|
|
ENDIF |
1250 |
|
|
|
1251 |
|
|
yhelp=1000. |
1252 |
|
|
if (yout(2).lt.100.) then |
1253 |
|
|
yhelp=yout(2) |
1254 |
|
|
else |
1255 |
|
|
yhelp=ytofpos(2) |
1256 |
|
|
endif |
1257 |
|
|
|
1258 |
|
|
IF (tof22_i.GT.none_find.AND.yhelp.lt.100) THEN |
1259 |
|
|
|
1260 |
|
|
i = tof22_i |
1261 |
|
|
tof22(left,i,iadc) = tof22(left,i,iadc)*cos(theta13) |
1262 |
|
|
if (tof22(left,i,iadc).lt.1000) then |
1263 |
|
|
xkorr=adcx22(left,i,1)*exp(-yhelp/adcx22(left,i,2)) |
1264 |
|
|
xkorr0=adcx22(left,i,1) |
1265 |
|
|
adc_c(ch22a(i),hb22a(i))=tof22(left,i,iadc)/xkorr |
1266 |
|
|
endif |
1267 |
|
|
|
1268 |
|
|
tof22(right,i,iadc) = tof22(right,i,iadc)*cos(theta13) |
1269 |
|
|
if (tof22(right,i,iadc).lt.1000) then |
1270 |
|
|
xkorr=adcx22(right,i,1)*exp(yhelp/adcx22(right,i,2)) |
1271 |
|
|
xkorr0=adcx22(right,i,1) |
1272 |
|
|
adc_c(ch22b(i),hb22b(i))=tof22(right,i,iadc)/xkorr |
1273 |
|
|
endif |
1274 |
|
|
ENDIF |
1275 |
|
|
|
1276 |
|
|
C----------------------------- S3 -------------------------------- |
1277 |
|
|
|
1278 |
|
|
yhelp=1000. |
1279 |
|
|
if (yout(3).lt.100.) then |
1280 |
|
|
yhelp=yout(3) |
1281 |
|
|
else |
1282 |
|
|
yhelp=ytofpos(3) |
1283 |
|
|
endif |
1284 |
|
|
|
1285 |
|
|
IF (tof31_i.GT.none_find.AND.yhelp.lt.100) THEN |
1286 |
|
|
|
1287 |
|
|
i = tof31_i |
1288 |
|
|
tof31(left,i,iadc) = tof31(left,i,iadc)*cos(theta13) |
1289 |
|
|
if (tof31(left,i,iadc).lt.1000) then |
1290 |
|
|
xkorr=adcx31(left,i,1)*exp(-yhelp/adcx31(left,i,2)) |
1291 |
|
|
xkorr0=adcx31(left,i,1) |
1292 |
|
|
adc_c(ch31a(i),hb31a(i))=tof31(left,i,iadc)/xkorr |
1293 |
|
|
endif |
1294 |
|
|
|
1295 |
|
|
tof31(right,i,iadc) = tof31(right,i,iadc)*cos(theta13) |
1296 |
|
|
if (tof31(right,i,iadc).lt.1000) then |
1297 |
|
|
xkorr=adcx31(right,i,1)*exp(yhelp/adcx31(right,i,2)) |
1298 |
|
|
xkorr0=adcx31(right,i,1) |
1299 |
|
|
adc_c(ch31b(i),hb31b(i))=tof31(right,i,iadc)/xkorr |
1300 |
|
|
endif |
1301 |
|
|
ENDIF |
1302 |
|
|
|
1303 |
|
|
xhelp=1000. |
1304 |
|
|
if (xout(3).lt.100.) then |
1305 |
|
|
xhelp=xout(3) |
1306 |
|
|
else |
1307 |
|
|
xhelp=xtofpos(3) |
1308 |
|
|
endif |
1309 |
|
|
|
1310 |
|
|
IF (tof32_i.GT.none_find.AND.xhelp.lt.100) THEN |
1311 |
|
|
|
1312 |
|
|
i = tof32_i |
1313 |
|
|
tof32(left,i,iadc) = tof32(left,i,iadc)*cos(theta13) |
1314 |
|
|
if (tof32(left,i,iadc).lt.1000) then |
1315 |
|
|
xkorr=adcx32(left,i,1)*exp(-xhelp/adcx32(left,i,2)) |
1316 |
|
|
xkorr0=adcx32(left,i,1) |
1317 |
|
|
adc_c(ch32a(i),hb32a(i))=tof32(left,i,iadc)/xkorr |
1318 |
|
|
endif |
1319 |
|
|
|
1320 |
|
|
tof32(right,i,iadc) = tof32(right,i,iadc)*cos(theta13) |
1321 |
|
|
if (tof32(right,i,iadc).lt.1000) then |
1322 |
|
|
xkorr=adcx32(right,i,1)*exp(xhelp/adcx32(right,i,2)) |
1323 |
|
|
xkorr0=adcx32(right,i,1) |
1324 |
|
|
adc_c(ch32b(i),hb32b(i))=tof32(right,i,iadc)/xkorr |
1325 |
|
|
endif |
1326 |
|
|
ENDIF |
1327 |
|
|
|
1328 |
|
|
C----------------------------------------------------------------------- |
1329 |
|
|
C---------------------- calculate Beta ------------------------------ |
1330 |
|
|
C----------------------------------------------------------------------- |
1331 |
|
|
C------------------- difference of sums --------------------------- |
1332 |
|
|
C |
1333 |
|
|
C DS = (t1+t2) - t3+t4) |
1334 |
|
|
C DS = c1 + c2/beta*cos(theta) |
1335 |
|
|
C c2 = 2d/c gives c2 = 2d/(c*TDCresolution) TDC=50ps/channel |
1336 |
|
|
C => c2_23 = 60 for 0.45 m c2_13 = 109 for 0.81 m |
1337 |
|
|
|
1338 |
|
|
C S11 - S31 |
1339 |
|
|
IF (tof11_i.GT.none_find.AND.tof31_i.GT.none_find) THEN |
1340 |
|
|
xhelp1 = tof11(1,tof11_i,itdc)+tof11(2,tof11_i,itdc) |
1341 |
|
|
xhelp2 = tof31(1,tof31_i,itdc)+tof31(2,tof31_i,itdc) |
1342 |
|
|
ds = xhelp1-xhelp2 |
1343 |
|
|
ihelp=(tof11_i-1)*3+tof31_i |
1344 |
|
|
c1 = k1_S11S31(ihelp) |
1345 |
|
|
beta_a(1) = c2_13/(cos(theta13)*(ds-c1)) |
1346 |
|
|
ENDIF |
1347 |
|
|
|
1348 |
|
|
C S12 - S32 |
1349 |
|
|
IF (tof12_i.GT.none_find.AND.tof32_i.GT.none_find) THEN |
1350 |
|
|
xhelp1 = tof12(1,tof12_i,itdc)+tof12(2,tof12_i,itdc) |
1351 |
|
|
xhelp2 = tof32(1,tof32_i,itdc)+tof32(2,tof32_i,itdc) |
1352 |
|
|
ds = xhelp1-xhelp2 |
1353 |
|
|
ihelp=(tof12_i-1)*3+tof32_i |
1354 |
|
|
c1 = k1_S12S32(ihelp) |
1355 |
|
|
beta_a(2) = c2_13/(cos(theta13)*(ds-c1)) |
1356 |
|
|
ENDIF |
1357 |
|
|
|
1358 |
|
|
|
1359 |
|
|
C S21 - S31 |
1360 |
|
|
IF (tof21_i.GT.none_find.AND.tof31_i.GT.none_find) THEN |
1361 |
|
|
xhelp1 = tof21(1,tof21_i,itdc)+tof21(2,tof21_i,itdc) |
1362 |
|
|
xhelp2 = tof31(1,tof31_i,itdc)+tof31(2,tof31_i,itdc) |
1363 |
|
|
ds = xhelp1-xhelp2 |
1364 |
|
|
ihelp=(tof21_i-1)*3+tof31_i |
1365 |
|
|
c1 = k1_S21S31(ihelp) |
1366 |
|
|
beta_a(3) = c2_23/(cos(theta13)*(ds-c1)) |
1367 |
|
|
ENDIF |
1368 |
|
|
|
1369 |
|
|
C S22 - S32 |
1370 |
|
|
IF (tof22_i.GT.none_find.AND.tof32_i.GT.none_find) THEN |
1371 |
|
|
xhelp1 = tof22(1,tof22_i,itdc)+tof22(2,tof22_i,itdc) |
1372 |
|
|
xhelp2 = tof32(1,tof32_i,itdc)+tof32(2,tof32_i,itdc) |
1373 |
|
|
ds = xhelp1-xhelp2 |
1374 |
|
|
ihelp=(tof22_i-1)*3+tof32_i |
1375 |
|
|
c1 = k1_S22S32(ihelp) |
1376 |
|
|
beta_a(4) = c2_23/(cos(theta13)*(ds-c1)) |
1377 |
|
|
ENDIF |
1378 |
|
|
|
1379 |
|
|
C------- |
1380 |
|
|
|
1381 |
|
|
icount=0 |
1382 |
|
|
sw=0. |
1383 |
|
|
sxw=0. |
1384 |
|
|
beta_mean=100. |
1385 |
|
|
|
1386 |
|
|
do i=1,4 |
1387 |
|
|
if ((beta_a(i).gt.0.4).and.(beta_a(i).lt.1.5)) then |
1388 |
|
|
icount= icount+1 |
1389 |
|
|
if (i.le.2) w_i=1./(0.13**2.) |
1390 |
|
|
if (i.ge.3) w_i=1./(0.16**2.) |
1391 |
|
|
sxw=sxw + beta_a(i)*w_i |
1392 |
|
|
sw =sw + w_i |
1393 |
|
|
endif |
1394 |
|
|
enddo |
1395 |
|
|
if (icount.eq.4) beta_mean=sxw/sw |
1396 |
|
|
beta_a(5) = beta_mean |
1397 |
|
|
|
1398 |
|
|
|
1399 |
|
|
c ERROR MESSAGES |
1400 |
|
|
100 continue |
1401 |
|
|
* |
1402 |
|
|
RETURN |
1403 |
|
|
END |
1404 |
|
|
|
1405 |
|
|
toftrack.f0000775000076500001440000004000510321444754011733 0ustar mennusersC------------------------------------------------ |
1406 |
|
|
PROGRAM TOFTRACK |
1407 |
|
|
C------------------------------------------------ |
1408 |
|
|
C W. Menn |
1409 |
|
|
C |
1410 |
|
|
C Based on the "template" progran from Elena Vannuccini |
1411 |
|
|
C |
1412 |
|
|
C Version 1.00 August 2005 |
1413 |
|
|
C Version 1.01 07-oct-2005: Some bugs found |
1414 |
|
|
C - new rz file must be named "***_toftrack.rz' |
1415 |
|
|
C - booking of the EVENT and CPU blocks changed according |
1416 |
|
|
C to Elena's "book_level2" routine |
1417 |
|
|
C |
1418 |
|
|
C------------------------------------------------ |
1419 |
|
|
|
1420 |
|
|
include 'trk_level2.f' |
1421 |
|
|
include 'common_tofroutine.f' |
1422 |
|
|
include 'common_tof.f' |
1423 |
|
|
|
1424 |
|
|
c----- HBOOK |
1425 |
|
|
INTEGER HMEM |
1426 |
|
|
parameter (NWPAWC=8500000) |
1427 |
|
|
common/PAWC/HMEM(NWPAWC) |
1428 |
|
|
|
1429 |
|
|
parameter (ntp_level2=22) |
1430 |
|
|
parameter (ntp_new=2) |
1431 |
|
|
|
1432 |
|
|
c------------------------------------------------------------------------ |
1433 |
|
|
c local variables |
1434 |
|
|
c------------------------------------------------------------------------ |
1435 |
|
|
character*74 data_file !data file name |
1436 |
|
|
character*74 tof_file !tofdata file name |
1437 |
|
|
character*74 data_dir !data directory |
1438 |
|
|
character*74 data_file_level2 |
1439 |
|
|
character*74 data_file_tof |
1440 |
|
|
character*74 data_file_tofcalib |
1441 |
|
|
character*74 data_file_new |
1442 |
|
|
|
1443 |
|
|
parameter (lun_data_level2=72) !data file id number |
1444 |
|
|
|
1445 |
|
|
c------------------------------------------------------------------ |
1446 |
|
|
COMMON/QUEST/IQUEST(100) |
1447 |
|
|
|
1448 |
|
|
C------------------------------------------------------------------ |
1449 |
|
|
c ======================================= |
1450 |
|
|
c variables for tracking routine |
1451 |
|
|
c ======================================= |
1452 |
|
|
parameter(NPOINT_MAX=100) |
1453 |
|
|
DOUBLE PRECISION ZIN(NPOINT_MAX) |
1454 |
|
|
DOUBLE PRECISION XOUT1(NPOINT_MAX),YOUT1(NPOINT_MAX) |
1455 |
|
|
REAL XOUT(NPOINT_MAX),YOUT(NPOINT_MAX) |
1456 |
|
|
DOUBLE PRECISION AL_P(5) |
1457 |
|
|
REAL XFIT(6),YFIT(6),ZFIT(6),ALPHA(5),XGOOD1(6),YGOOD1(6) |
1458 |
|
|
c ======================================= |
1459 |
|
|
|
1460 |
|
|
c define TOF Z-coordinates |
1461 |
|
|
parameter (NPTOF=3) |
1462 |
|
|
REAL ZTOF(NPTOF) |
1463 |
|
|
c DATA ZTOF/55.,25.,-23/ !NB!!! from TOP to BOTTOM |
1464 |
|
|
DATA ZTOF/53.4,23.9,-23.4/ !Stockholm 29.9.2005 |
1465 |
|
|
|
1466 |
|
|
c------------------------------------------------------------------------ |
1467 |
|
|
C |
1468 |
|
|
CHARACTER*100 name |
1469 |
|
|
C |
1470 |
|
|
|
1471 |
|
|
INTEGER lrec, openntuple |
1472 |
|
|
INTEGER istat, ierr, icycle |
1473 |
|
|
PARAMETER (lrec=4096) |
1474 |
|
|
|
1475 |
|
|
|
1476 |
|
|
integer patterntrig1(6) |
1477 |
|
|
real chi |
1478 |
|
|
|
1479 |
|
|
character*35 block1,block2 |
1480 |
|
|
|
1481 |
|
|
C------------------------------------------------------------------------- |
1482 |
|
|
c |
1483 |
|
|
c HBOOK initialization |
1484 |
|
|
c |
1485 |
|
|
c------------------------------------------------------------------------ |
1486 |
|
|
|
1487 |
|
|
call HLIMIT(NWPAWC) |
1488 |
|
|
|
1489 |
|
|
C HERE A PATH where you can write! |
1490 |
|
|
C |
1491 |
|
|
c print * |
1492 |
|
|
c print *,'File saved in: ',name |
1493 |
|
|
C |
1494 |
|
|
C CHANGE here (hbname and hbnt if you want another ntuple id number |
1495 |
|
|
C |
1496 |
|
|
|
1497 |
|
|
111 format(a) |
1498 |
|
|
print*,'data dir:' |
1499 |
|
|
read(*,111)data_dir |
1500 |
|
|
c read(*,*)data_dir |
1501 |
|
|
print*,data_dir |
1502 |
|
|
print*,'tof file?' |
1503 |
|
|
print*,'(without estention: output_YYMMDD_XXX )' |
1504 |
|
|
read(*,*)tof_file |
1505 |
|
|
|
1506 |
|
|
print*,tof_file |
1507 |
|
|
print*,' ' |
1508 |
|
|
|
1509 |
|
|
print*,'first event:' |
1510 |
|
|
read(*,*) minevent |
1511 |
|
|
print*,minevent |
1512 |
|
|
c print*,' ' |
1513 |
|
|
|
1514 |
|
|
print*,'number of events to be analysed' |
1515 |
|
|
read(*,*) ntotev |
1516 |
|
|
print*,ntotev |
1517 |
|
|
|
1518 |
|
|
|
1519 |
|
|
c------------------------------------------------------------------------ |
1520 |
|
|
c--------------- open ToF rz file |
1521 |
|
|
c------------------------------------------------------------------------ |
1522 |
|
|
|
1523 |
|
|
print*, |
1524 |
|
|
$ data_dir(1:LNBLNK(data_dir))//tof_file(1:LNBLNK(tof_file)) |
1525 |
|
|
|
1526 |
|
|
|
1527 |
|
|
505 format(a,'DW_',a,'_tof.rz') |
1528 |
|
|
write(data_file_tof,505) |
1529 |
|
|
$ data_dir(1:LNBLNK(data_dir)) |
1530 |
|
|
$ ,tof_file(1:LNBLNK(tof_file)) |
1531 |
|
|
print*,'__________ opening TOF rz file __________' |
1532 |
|
|
print*,data_file_tof |
1533 |
|
|
|
1534 |
|
|
|
1535 |
|
|
call HROPEN(59, |
1536 |
|
|
$ 'EVENT',data_file_tof,'QP',4096,istat) !opens rz |
1537 |
|
|
|
1538 |
|
|
|
1539 |
|
|
if(istat.ne.0) stop |
1540 |
|
|
print*,' ' |
1541 |
|
|
print*,'reading TOF n-tuple...' |
1542 |
|
|
call HRIN(ntp_tof,9999,0) |
1543 |
|
|
CALL HBNAME(ntp_tof,' ',0,'$CLEAR') |
1544 |
|
|
CALL HBNAME(ntp_tof,'EVENT',good,'$SET') |
1545 |
|
|
CALL HBNAME(ntp_tof,'TRIGGER',trig_evcount,'$SET') |
1546 |
|
|
CALL HBNAME(ntp_tof,'TOF',tdcid,'$SET') |
1547 |
|
|
call HPRNTU(ntp_tof) |
1548 |
|
|
call HNOENT(ntp_tof,iemax0) |
1549 |
|
|
write(*,*) 'Number of events ToF ',iemax0 |
1550 |
|
|
|
1551 |
|
|
|
1552 |
|
|
c------------------------------------------------------------------------ |
1553 |
|
|
c--------------- open ToF calib rz file |
1554 |
|
|
c------------------------------------------------------------------------ |
1555 |
|
|
|
1556 |
|
|
print*, |
1557 |
|
|
$ data_dir(1:LNBLNK(data_dir))//tof_file(1:LNBLNK(tof_file)) |
1558 |
|
|
|
1559 |
|
|
506 format(a,'DW_',a,'_tofcalib.rz') |
1560 |
|
|
write(data_file_tofcalib,506) |
1561 |
|
|
$ data_dir(1:LNBLNK(data_dir)) |
1562 |
|
|
$ ,tof_file(1:LNBLNK(tof_file)) |
1563 |
|
|
print*,'__________ opening TOF calib rz file __________' |
1564 |
|
|
print*,data_file_tofcalib |
1565 |
|
|
|
1566 |
|
|
CALL HROPEN(59,'TOF K1A',data_file_tofcalib,'QP',4096,istat) |
1567 |
|
|
|
1568 |
|
|
if (istat.ne.0) then ! check if HROPEN was OK |
1569 |
|
|
write(*,*) 'Can''t open correct ToF calibration File !!!' |
1570 |
|
|
write(*,*) 'Will use standard file tofcalib.rz !!!' |
1571 |
|
|
507 format(a,'tofcalib.rz') |
1572 |
|
|
write(data_file_tofcalib,507) |
1573 |
|
|
$ data_dir(1:LNBLNK(data_dir)) |
1574 |
|
|
print*,'__________ opening TOF calib rz file __________' |
1575 |
|
|
print*,data_file_tofcalib |
1576 |
|
|
|
1577 |
|
|
CALL HROPEN(59,'TOF K1A',data_file_tofcalib,'QP',4096,istat) |
1578 |
|
|
endif |
1579 |
|
|
|
1580 |
|
|
print*,' reading TOF CALIB n-tuple...' |
1581 |
|
|
|
1582 |
|
|
call HRIN(ntp_tofcalib,9999,0) |
1583 |
|
|
|
1584 |
|
|
call HBNAME(ntp_tofcalib,' ',0,'$CLEAR') |
1585 |
|
|
|
1586 |
|
|
call HBNAME(ntp_tofcalib,'TOFK1A',k1_s11s31,'$SET') |
1587 |
|
|
call HBNAME(ntp_tofcalib,'TOFK1B',k1_s12s32,'$SET') |
1588 |
|
|
call HBNAME(ntp_tofcalib,'TOFK1C',k1_s21s31,'$SET') |
1589 |
|
|
call HBNAME(ntp_tofcalib,'TOFK1D',k1_s22s32,'$SET') |
1590 |
|
|
|
1591 |
|
|
call HBNAME(ntp_tofcalib,'TOFLIN11',y_coor_lin11,'$SET') |
1592 |
|
|
call HBNAME(ntp_tofcalib,'TOFLIN12',x_coor_lin12,'$SET') |
1593 |
|
|
call HBNAME(ntp_tofcalib,'TOFLIN21',x_coor_lin21,'$SET') |
1594 |
|
|
call HBNAME(ntp_tofcalib,'TOFLIN22',y_coor_lin22,'$SET') |
1595 |
|
|
call HBNAME(ntp_tofcalib,'TOFLIN31',y_coor_lin31,'$SET') |
1596 |
|
|
call HBNAME(ntp_tofcalib,'TOFLIN32',x_coor_lin32,'$SET') |
1597 |
|
|
|
1598 |
|
|
call HBNAME(ntp_tofcalib,'TOFTW11',tw11,'$SET') |
1599 |
|
|
call HBNAME(ntp_tofcalib,'TOFTW12',tw12,'$SET') |
1600 |
|
|
call HBNAME(ntp_tofcalib,'TOFTW21',tw21,'$SET') |
1601 |
|
|
call HBNAME(ntp_tofcalib,'TOFTW22',tw22,'$SET') |
1602 |
|
|
call HBNAME(ntp_tofcalib,'TOFTW31',tw31,'$SET') |
1603 |
|
|
call HBNAME(ntp_tofcalib,'TOFTW32',tw32,'$SET') |
1604 |
|
|
|
1605 |
|
|
call HBNAME(ntp_tofcalib,'TOFADC11',adcx11,'$SET') |
1606 |
|
|
call HBNAME(ntp_tofcalib,'TOFADC12',adcx12,'$SET') |
1607 |
|
|
call HBNAME(ntp_tofcalib,'TOFADC21',adcx21,'$SET') |
1608 |
|
|
call HBNAME(ntp_tofcalib,'TOFADC22',adcx22,'$SET') |
1609 |
|
|
call HBNAME(ntp_tofcalib,'TOFADC31',adcx31,'$SET') |
1610 |
|
|
call HBNAME(ntp_tofcalib,'TOFADC32',adcx32,'$SET') |
1611 |
|
|
|
1612 |
|
|
call HPRNTU(ntp_tofcalib) |
1613 |
|
|
|
1614 |
|
|
call HNOENT(ntp_tofcalib,iemax_cal) |
1615 |
|
|
c write(*,*) 'Number of Events CALIB ',iemax_cal |
1616 |
|
|
|
1617 |
|
|
do iev=1,iemax_cal |
1618 |
|
|
call HGNT(ntp_tofcalib,iev,ierr) !reads an event |
1619 |
|
|
enddo |
1620 |
|
|
|
1621 |
|
|
call hrout(ntp_tofcalib,icycle,' ') |
1622 |
|
|
call hrend('TOF K1A') |
1623 |
|
|
close(0) |
1624 |
|
|
|
1625 |
|
|
|
1626 |
|
|
|
1627 |
|
|
c------------------------------------------------------------------------ |
1628 |
|
|
c--------------- open Track Level2 rz file |
1629 |
|
|
c------------------------------------------------------------------------ |
1630 |
|
|
|
1631 |
|
|
data_file=tof_file |
1632 |
|
|
print*,'data dir:' |
1633 |
|
|
c read(*,111)data_dir |
1634 |
|
|
print*,data_dir |
1635 |
|
|
c print*,'data file?' |
1636 |
|
|
c print*,'(without estention: output_YYMMDD_XXX )' |
1637 |
|
|
c read(*,*)data_file |
1638 |
|
|
|
1639 |
|
|
print*,'data_file:' |
1640 |
|
|
print*,data_file |
1641 |
|
|
print*,' ' |
1642 |
|
|
|
1643 |
|
|
print*, |
1644 |
|
|
$ data_dir(1:LNBLNK(data_dir))//data_file(1:LNBLNK(data_file)) |
1645 |
|
|
|
1646 |
|
|
c------------------------------------------------------------------------ |
1647 |
|
|
504 format(a,'DW_',a,'_level2.rz') |
1648 |
|
|
write(data_file_level2,504) |
1649 |
|
|
$ data_dir(1:LNBLNK(data_dir)) |
1650 |
|
|
$ ,data_file(1:LNBLNK(data_file)) |
1651 |
|
|
print*,'__________ opening LEVEL2 rz file __________' |
1652 |
|
|
print*,data_file_level2 |
1653 |
|
|
print*,'__________ opening LEVEL2 rz file __________' |
1654 |
|
|
print*,data_file_level2 |
1655 |
|
|
IQUEST(10)=65000 |
1656 |
|
|
call HROPEN(lun_data_level2, |
1657 |
|
|
$ 'LEVEL2',data_file_level2,'QP',4096,istat) !opens rz |
1658 |
|
|
if(istat.ne.0) goto 19 |
1659 |
|
|
print*,'reading LEVEL2 n-tuple...' |
1660 |
|
|
call HRIN(ntp_level2,9999,0) |
1661 |
|
|
|
1662 |
|
|
* ----------------------------------------------- |
1663 |
|
|
CALL HBNAME(ntp_level2,' ',0,'$CLEAR') |
1664 |
|
|
CALL HBNAME(ntp_level2,'EVENT',GOOD2,'$SET') |
1665 |
|
|
CALL HBNAME(ntp_level2,'CPU',pkt_type,'$SET') |
1666 |
|
|
CALL HBNAME(ntp_level2,'TRACKS',ntrk,'$SET') |
1667 |
|
|
CALL HBNAME(ntp_level2,'SINGLETS',nclsx,'$SET') |
1668 |
|
|
* ----------------------------------------------- |
1669 |
|
|
|
1670 |
|
|
call HPRNTU(ntp_level2) |
1671 |
|
|
call HNOENT(ntp_level2,iemax2) |
1672 |
|
|
|
1673 |
|
|
write(*,*) 'Number of events LEVEL2 ',iemax2 |
1674 |
|
|
print*,'ok' |
1675 |
|
|
print*,' ' |
1676 |
|
|
|
1677 |
|
|
|
1678 |
|
|
|
1679 |
|
|
c------------------------------------------------------------------------ |
1680 |
|
|
c read magnetic field map |
1681 |
|
|
c------------------------------------------------------------------------ |
1682 |
|
|
c |
1683 |
|
|
c ======================= |
1684 |
|
|
|
1685 |
|
|
|
1686 |
|
|
c read magnetic field map |
1687 |
|
|
c ======================= |
1688 |
|
|
c |
1689 |
|
|
c------------------------------------------------------------------------ |
1690 |
|
|
print*,'- read magnetic field map' |
1691 |
|
|
print*,' ' |
1692 |
|
|
call read_B |
1693 |
|
|
print*,' ' |
1694 |
|
|
|
1695 |
|
|
c print*,' ' |
1696 |
|
|
c print*,'- read magnetic field map' |
1697 |
|
|
c print*,' ' |
1698 |
|
|
c call read_B_2maps |
1699 |
|
|
c |
1700 |
|
|
|
1701 |
|
|
|
1702 |
|
|
c------------------------------------------------------------------------ |
1703 |
|
|
c open new RZ file |
1704 |
|
|
c------------------------------------------------------------------------ |
1705 |
|
|
|
1706 |
|
|
503 format(a,'DW_',a,'_toftrack.rz') |
1707 |
|
|
write(data_file_new,503) |
1708 |
|
|
$ data_dir(1:LNBLNK(data_dir)) |
1709 |
|
|
$ ,data_file(1:LNBLNK(data_file)) |
1710 |
|
|
print*,'__________ opening NEW rz file __________' |
1711 |
|
|
print*,data_file_new |
1712 |
|
|
|
1713 |
|
|
|
1714 |
|
|
call HROPEN(10,'TEST',data_file_new,'NP',4096,istat) !opens rz |
1715 |
|
|
|
1716 |
|
|
call HBNT(ntp_new,'TOF',' ') |
1717 |
|
|
|
1718 |
|
|
|
1719 |
|
|
c call HBNAME(ntp_new,'EVENT',good,'GOOD:L,NEV_TRK:I') |
1720 |
|
|
|
1721 |
|
|
call HBNAME(ntp_new,'EVENT',good2,'GOOD2:L,NEV2:I') |
1722 |
|
|
|
1723 |
|
|
|
1724 |
|
|
c call HBNAME(ntp_new,'CPU',pkt_type |
1725 |
|
|
c $ ,'PKT_TYPE:I |
1726 |
|
|
c $ ,PKT_NUM:I |
1727 |
|
|
c $ ,OBT:I |
1728 |
|
|
c $ ,WHICH_CALIB:I') |
1729 |
|
|
|
1730 |
|
|
call HBNAME(ntp_new,'CPU',pkt_type |
1731 |
|
|
$ ,'PKT_TYPE:I::[0,50] |
1732 |
|
|
$ ,PKT_NUM:I |
1733 |
|
|
$ ,OBT:I |
1734 |
|
|
$ ,WHICH_CALIB:I::[0,50]') |
1735 |
|
|
|
1736 |
|
|
|
1737 |
|
|
|
1738 |
|
|
call HBNAME(ntp_new,'TOF',tdcid |
1739 |
|
|
$ ,'TDCID(12):I |
1740 |
|
|
$ ,EVCOUNT(12):I |
1741 |
|
|
$ ,TDCMASK(12):I |
1742 |
|
|
$ ,ADC(4,12):I |
1743 |
|
|
$ ,TDC(4,12):I |
1744 |
|
|
$ ,TEMP1(12):I |
1745 |
|
|
$ ,TEMP2(12):I') |
1746 |
|
|
|
1747 |
|
|
call HBNAME(ntp_new,'TOF',beta_a,'BETA(5)') |
1748 |
|
|
call HBNAME(ntp_new,'TOF',xtofpos,'XTOF(3)') |
1749 |
|
|
call HBNAME(ntp_new,'TOF',ytofpos,'YTOF(3)') |
1750 |
|
|
call HBNAME(ntp_new,'TOF',adc_c,'ADC_C(4,12)') |
1751 |
|
|
call HBNAME(ntp_new,'TOF',tof_i_flag,'IFLAG(6)') |
1752 |
|
|
call HBNAME(ntp_new,'TOF',tof_j_flag,'JFLAG(6)') |
1753 |
|
|
|
1754 |
|
|
call HBNAME(ntp_new,'TOF',xout,'XOUT(3)') |
1755 |
|
|
call HBNAME(ntp_new,'TOF',yout,'YOUT(3)') |
1756 |
|
|
|
1757 |
|
|
|
1758 |
|
|
call HBNAME(ntp_new,'TRIGGER',trig_evcount |
1759 |
|
|
$ ,'TRIG_EVCOUNT:I |
1760 |
|
|
$ ,PMTPL(3):I |
1761 |
|
|
$ ,TRIGRATE(6):I |
1762 |
|
|
$ ,DLTIME(2):I |
1763 |
|
|
$ ,S4CALCOUNT(2):I |
1764 |
|
|
$ ,PMTCOUNT1(24):I |
1765 |
|
|
$ ,PMTCOUNT2(24):I |
1766 |
|
|
$ ,PATTERNBUSY(3):I |
1767 |
|
|
$ ,PATTERNTRIG(6):I |
1768 |
|
|
$ ,TRIGCONF:I') |
1769 |
|
|
|
1770 |
|
|
|
1771 |
|
|
417 format('NTRK:I::[0,',I4,']') |
1772 |
|
|
418 format(',IMAGE(NTRK):I::[0,',I4,']') |
1773 |
|
|
write(block1,417)NTRKMAX |
1774 |
|
|
write(block2,418)NTRKMAX |
1775 |
|
|
call HBNAME(ntp_new,'TRACKS',NTRK, |
1776 |
|
|
$ block1// |
1777 |
|
|
$ block2//' |
1778 |
|
|
$ ,XM(6,NTRK):R |
1779 |
|
|
$ ,YM(6,NTRK):R |
1780 |
|
|
$ ,ZM(6,NTRK):R |
1781 |
|
|
$ ,RESX(6,NTRK):R |
1782 |
|
|
$ ,RESY(6,NTRK):R |
1783 |
|
|
$ ,AL(5,NTRK):R |
1784 |
|
|
$ ,COVAL(5,5,NTRK):R |
1785 |
|
|
$ ,CHI2(NTRK):R |
1786 |
|
|
$ ,XGOOD(6,NTRK):I::[0,1] |
1787 |
|
|
$ ,YGOOD(6,NTRK):I::[0,1] |
1788 |
|
|
$ ,XV(6,NTRK):R |
1789 |
|
|
$ ,YV(6,NTRK):R |
1790 |
|
|
$ ,ZV(6,NTRK):R |
1791 |
|
|
$ ,AXV(6,NTRK):R |
1792 |
|
|
$ ,AYV(6,NTRK):R |
1793 |
|
|
$ ,DEDXP(6,NTRK):R |
1794 |
|
|
$ ') |
1795 |
|
|
call HBNAME(ntp_new,'SINGLETS',nclsx, |
1796 |
|
|
$ 'NCLSX(6):I,NCLSY(6):I') |
1797 |
|
|
|
1798 |
|
|
|
1799 |
|
|
call HPRNTU(ntp_new) |
1800 |
|
|
|
1801 |
|
|
c------------------------------------------------------------------------ |
1802 |
|
|
|
1803 |
|
|
call HCDIR('//LEVEL2',' ') |
1804 |
|
|
|
1805 |
|
|
c------------------------------------------------------------------------ |
1806 |
|
|
c start loop on events |
1807 |
|
|
c------------------------------------------------------------------------ |
1808 |
|
|
|
1809 |
|
|
maxevent=minevent+ntotev |
1810 |
|
|
igoodevent=0 |
1811 |
|
|
|
1812 |
|
|
c do iev = 1,iemax0 |
1813 |
|
|
do iev = minevent,MIN(iemax0,maxevent) !loop on events |
1814 |
|
|
Call Hcdir('//EVENT',' ') |
1815 |
|
|
Call Hgnt(ntp_tof,iev,Ierr) |
1816 |
|
|
|
1817 |
|
|
do i=1,6 |
1818 |
|
|
patterntrig1(i) = patterntrig(i) |
1819 |
|
|
enddo |
1820 |
|
|
|
1821 |
|
|
* ---------------------------------------------- |
1822 |
|
|
Call Hcdir('//LEVEL2',' ') |
1823 |
|
|
call HGNT(ntp_level2,iev,ierr) !reads an event |
1824 |
|
|
|
1825 |
|
|
if(ierr.ne.0) goto 21 |
1826 |
|
|
* ---------------------------------------------- |
1827 |
|
|
|
1828 |
|
|
do i=1,nptof |
1829 |
|
|
xout(i)=1000. |
1830 |
|
|
yout(i)=1000. |
1831 |
|
|
enddo |
1832 |
|
|
do i=1,5 |
1833 |
|
|
ALPHA(i) = 1000. |
1834 |
|
|
enddo |
1835 |
|
|
do i=1,6 |
1836 |
|
|
XFIT(i) = 1000. |
1837 |
|
|
YFIT(i) = 1000. |
1838 |
|
|
ZFIT(i) = 1000. |
1839 |
|
|
XGOOD1(i) = 1000. |
1840 |
|
|
YGOOD1(i) = 1000. |
1841 |
|
|
enddo |
1842 |
|
|
|
1843 |
|
|
chi = 1000. |
1844 |
|
|
|
1845 |
|
|
*=======> INSTERT HERE YOUR CODE |
1846 |
|
|
|
1847 |
|
|
* ---- example ---- |
1848 |
|
|
* write(*,*) 'GOOD2 ',good2 |
1849 |
|
|
* if(GOOD2)then |
1850 |
|
|
if(NTRK.ne.0)then |
1851 |
|
|
print*,'Event ',iev,' # tracks ',ntrk |
1852 |
|
|
if(ntrk.eq.1)then |
1853 |
|
|
|
1854 |
|
|
chi = CHI2(1) |
1855 |
|
|
do i=1,5 |
1856 |
|
|
ALPHA(i) = AL(i,1) |
1857 |
|
|
enddo |
1858 |
|
|
do i=1,6 |
1859 |
|
|
XFIT(i) = XV(i,1) |
1860 |
|
|
YFIT(i) = YV(i,1) |
1861 |
|
|
ZFIT(i) = ZV(i,1) |
1862 |
|
|
XGOOD1(i)=XGOOD(i,1) |
1863 |
|
|
YGOOD1(i)=YGOOD(i,1) |
1864 |
|
|
enddo |
1865 |
|
|
|
1866 |
|
|
igoodevent = igoodevent+1 |
1867 |
|
|
* assigned input parameters for track routine |
1868 |
|
|
* 1) Z-coordinates where the trajectory is evaluated |
1869 |
|
|
do itof=1,NPTOF |
1870 |
|
|
ZIN(itof) = ZTOF(itof) |
1871 |
|
|
enddo |
1872 |
|
|
* 2) track status vector |
1873 |
|
|
do i=1,5 |
1874 |
|
|
AL_P(i) = AL(i,1) |
1875 |
|
|
enddo |
1876 |
|
|
* -------- *** tracking routine *** -------- |
1877 |
|
|
call track(NPTOF,ZIN,XOUT1,YOUT1,AL_P,IFAIL) |
1878 |
|
|
* ------------------------------------------ |
1879 |
|
|
do itof=1,NPTOF |
1880 |
|
|
XOUT(itof)=XOUT1(itof) |
1881 |
|
|
YOUT(itof)=YOUT1(itof) |
1882 |
|
|
enddo |
1883 |
|
|
|
1884 |
|
|
do itof=1,NPTOF |
1885 |
|
|
c print*,' ',itof,ZIN(itof),XOUT(itof),YOUT(itof) |
1886 |
|
|
enddo |
1887 |
|
|
endif |
1888 |
|
|
else |
1889 |
|
|
print*,'Event ',iev,' *** BAD ***' |
1890 |
|
|
endif |
1891 |
|
|
|
1892 |
|
|
|
1893 |
|
|
call tofroutine(xout,yout,alpha) |
1894 |
|
|
|
1895 |
|
|
|
1896 |
|
|
c--------------------- fill new rz file ----------------------------- |
1897 |
|
|
|
1898 |
|
|
call HFNT(2) |
1899 |
|
|
|
1900 |
|
|
enddo !end loop on events |
1901 |
|
|
GOTO 9000 !got to end |
1902 |
|
|
|
1903 |
|
|
c------------------------------------------------------------------------ |
1904 |
|
|
c |
1905 |
|
|
c data file opening error |
1906 |
|
|
c |
1907 |
|
|
c------------------------------------------------------------------------ |
1908 |
|
|
19 continue |
1909 |
|
|
|
1910 |
|
|
print*,' ' |
1911 |
|
|
print*,'ERROR OPENING DATA FILE: ',data_file |
1912 |
|
|
print*,' ' |
1913 |
|
|
print*,' ' |
1914 |
|
|
|
1915 |
|
|
goto 9000 !the end |
1916 |
|
|
|
1917 |
|
|
c------------------------------------------------------------------------ |
1918 |
|
|
c |
1919 |
|
|
c level2 ntuple event reading error |
1920 |
|
|
c |
1921 |
|
|
c------------------------------------------------------------------------ |
1922 |
|
|
|
1923 |
|
|
21 continue |
1924 |
|
|
|
1925 |
|
|
print*,' ' |
1926 |
|
|
print*,'ERROR WHILE READING LEVEL2 NTUPLE, AT EVENT |
1927 |
|
|
$ : ',iev |
1928 |
|
|
print*,' ' |
1929 |
|
|
print*,' ' |
1930 |
|
|
|
1931 |
|
|
goto 9000 !the end |
1932 |
|
|
|
1933 |
|
|
c------------------------------------------------------------------------ |
1934 |
|
|
c |
1935 |
|
|
c closes files and exits |
1936 |
|
|
c |
1937 |
|
|
c------------------------------------------------------------------------ |
1938 |
|
|
|
1939 |
|
|
9000 continue |
1940 |
|
|
|
1941 |
|
|
write(*,*) 'Good Events ',igoodevent |
1942 |
|
|
|
1943 |
|
|
|
1944 |
|
|
c-------------------------------------------------------------- |
1945 |
|
|
|
1946 |
|
|
call HCDIR('//EVENT',' ') |
1947 |
|
|
CALL HROUT(0,icycle,' ') |
1948 |
|
|
call HREND('EVENT') |
1949 |
|
|
close(0) |
1950 |
|
|
|
1951 |
|
|
call HCDIR('//LEVEL2',' ') |
1952 |
|
|
call HREND('level2') |
1953 |
|
|
close(lun_data_level2) |
1954 |
|
|
|
1955 |
|
|
|
1956 |
|
|
call HPRNTU(2) |
1957 |
|
|
call HCDIR('//TEST',' ') |
1958 |
|
|
CALL HROUT(0,icycle,' ') |
1959 |
|
|
call HREND('TEST') |
1960 |
|
|
close(0) |
1961 |
|
|
|
1962 |
|
|
STOP |
1963 |
|
|
END |
1964 |
|
|
|
1965 |
|
|
|
1966 |
|
|
include 'tofroutine.f' |
1967 |
|
|
|
1968 |
|
|
trk_level2.f0000644000076500001440000000607310314004227012156 0ustar mennusers************************************************************************* |
1969 |
|
|
* |
1970 |
|
|
* Common level2.f |
1971 |
|
|
* |
1972 |
|
|
* contains LEVEL2 ntuple variables definitions |
1973 |
|
|
* |
1974 |
|
|
* |
1975 |
|
|
************************************************************************* |
1976 |
|
|
|
1977 |
|
|
PARAMETER (NTRKMAX=50) !ncloyz_max*ncloxz_max) |
1978 |
|
|
|
1979 |
|
|
c EVENT block: |
1980 |
|
|
* ----------------------------------------------------------- |
1981 |
|
|
logical good2 !flag to mark good or noise events |
1982 |
|
|
integer nev2 !level2 event number |
1983 |
|
|
common/level2/good2,nev2 |
1984 |
|
|
|
1985 |
|
|
c CPU block (only for ground data): |
1986 |
|
|
* ----------------------------------------------------------- |
1987 |
|
|
integer pkt_type !CPU packet type identifier. see http://people.roma2.infn.it/~cpu/HB_list.txt |
1988 |
|
|
c 0x12 --> calibration board 0 |
1989 |
|
|
c 0x13 --> calibration board 1 |
1990 |
|
|
c 0x10 --> event |
1991 |
|
|
c 0x30 --> full event for calib special |
1992 |
|
|
c 0x83 --> tracker ALARM (control register) |
1993 |
|
|
integer pkt_num !CPU packet number |
1994 |
|
|
integer obt !CPU on-board time |
1995 |
|
|
integer which_calib !calibration file identifier. see DW_DATE_NUM_calib.txt file |
1996 |
|
|
common/level2_cpu/pkt_type,pkt_num,obt,which_calib |
1997 |
|
|
|
1998 |
|
|
|
1999 |
|
|
* ----------------------------------------------------------- |
2000 |
|
|
* Common to store TRACK info |
2001 |
|
|
* All the variables have a dimention equal to the number of |
2002 |
|
|
* found tracks |
2003 |
|
|
* ----------------------------------------------------------- |
2004 |
|
|
c TRACK PARAMETERS |
2005 |
|
|
integer ntrk !# identified tracks |
2006 |
|
|
integer image !flag to tag track-images |
2007 |
|
|
real al !track state vector |
2008 |
|
|
integer xgood !mask of used planes |
2009 |
|
|
integer ygood !* |
2010 |
|
|
real xm !me asured points |
2011 |
|
|
real ym !* |
2012 |
|
|
real zm !* |
2013 |
|
|
real resx !spatial resolution |
2014 |
|
|
real resy !* |
2015 |
|
|
real chi2 !chi2 |
2016 |
|
|
real xv !calculated points |
2017 |
|
|
real yv !* |
2018 |
|
|
real zv !* |
2019 |
|
|
real axv !calculated angles (deg) |
2020 |
|
|
real ayv !* |
2021 |
|
|
real dedxp |
2022 |
|
|
common/level2_tracks/ |
2023 |
|
|
$ ntrk |
2024 |
|
|
$ ,image(NTRKMAX) |
2025 |
|
|
$ ,xm(6,NTRKMAX) |
2026 |
|
|
$ ,ym(6,NTRKMAX) |
2027 |
|
|
$ ,zm(6,NTRKMAX) |
2028 |
|
|
$ ,resx(6,NTRKMAX) |
2029 |
|
|
$ ,resy(6,NTRKMAX) |
2030 |
|
|
$ ,al(5,NTRKMAX) |
2031 |
|
|
$ ,chi2(NTRKMAX) |
2032 |
|
|
$ ,xgood(6,NTRKMAX) |
2033 |
|
|
$ ,ygood(6,NTRKMAX) |
2034 |
|
|
$ ,xv(6,NTRKMAX) |
2035 |
|
|
$ ,yv(6,NTRKMAX) |
2036 |
|
|
$ ,zv(6,NTRKMAX) |
2037 |
|
|
$ ,axv(6,NTRKMAX) |
2038 |
|
|
$ ,ayv(6,NTRKMAX) |
2039 |
|
|
$ ,dedxp(6,NTRKMAX) |
2040 |
|
|
* ----------------------------------------------------------- |
2041 |
|
|
* Common to store SINGLET info |
2042 |
|
|
* (clusters not associated with any track) |
2043 |
|
|
* ----------------------------------------------------------- |
2044 |
|
|
integer nclsx !# unassociated clusters per plane X views |
2045 |
|
|
integer nclsy ! " " " " Y views |
2046 |
|
|
common/level2_singlets/ |
2047 |
|
|
$ nclsx(6),nclsy(6) |
2048 |
|
|
|
2049 |
|
|
|