1 |
|
2 |
C These are the common blocks used in |
3 |
C |
4 |
C momanhough.f |
5 |
C |
6 |
C Author: Vannuccini Elena |
7 |
C Date: 2004/2005 |
8 |
C |
9 |
|
10 |
c include 'level1.f' |
11 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
12 |
c SPEP 1 CLUSTERS ----> COUPLES and SINGLETS |
13 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
14 |
c |
15 |
c Variables to associate X and Y clusters in each plane |
16 |
c according to |
17 |
c * geometrical criteria |
18 |
c * charge correlation |
19 |
c |
20 |
c------------------------------------------------------------------------ |
21 |
|
22 |
* maximum (total) number of STORED clusters |
23 |
parameter (nclstrmax_level2 = nclstrmax) ! same as level1 |
24 |
|
25 |
* ----------------------------------------------------------- |
26 |
* maximum number of cluster (per view) required to perform |
27 |
* track serching with full Hough transform |
28 |
* (singlets recovered during track refinement) |
29 |
parameter (nclusterlimit=6) |
30 |
* ----------------------------------------------------------- |
31 |
* maximum number of couples (per plane) required to perform |
32 |
* track serching with full Hough transform |
33 |
* (couples recovered during track refinement) |
34 |
parameter (ncouplelimit=8) |
35 |
|
36 |
* ----------------------------------------------------------- |
37 |
* maximum number of STORED couples, per plane and total |
38 |
* (to dimension the vectors) |
39 |
c parameter (ncouplemax=2*(nclstrmax_level2/nplanes)**2) |
40 |
c parameter (ncouplemaxtot=ncouplemax*nplanes) |
41 |
parameter (ncouplemax = nclusterlimit*nclusterlimit) |
42 |
parameter (ncouplemaxtot = ncouplemax*nplanes) |
43 |
* ----------------------------------------------------------- |
44 |
* maximum number of STORED couples |
45 |
* (if the identified couples exceeds this number the |
46 |
* track identification is not performed and the event is |
47 |
* tagged as not good) |
48 |
c parameter (ncp_max=10*nplanes) |
49 |
c parameter (ncp_max=10*nplanes) |
50 |
c parameter (ncp_max = ncouplemaxtot) |
51 |
|
52 |
|
53 |
|
54 |
* ----------------------------------------------------------- |
55 |
* mask of views |
56 |
* 0 = ok |
57 |
* 1 = n.clusters > nclusterlimit |
58 |
* 8 = n.couples > ncouplelimit |
59 |
* 2 = n.couples > ncouplemax |
60 |
* 3 = n.doublets > ndblt_max |
61 |
* 4 = n.triplets > ntrpt_max |
62 |
* 5 = n.clouds yz > ncloyz_max |
63 |
* 6 = n.clouds xz > ncloxz_max |
64 |
* 7 = n.track candidates > NTRACKSMAX |
65 |
integer mask_view(nviews) |
66 |
common/maskview/mask_view |
67 |
|
68 |
|
69 |
* ----------------------------------------------------------- |
70 |
* --- CLUSTERS ---------------------------------------------- |
71 |
* ----------------------------------------------------------- |
72 |
* mask for GOOD cluster |
73 |
* 1 = good |
74 |
* 0 = bad |
75 |
* (- the three central strips should have BAD=0) NOT ANY MORE! |
76 |
* - the charge should be greater than |
77 |
* DEDX_X_MIN and DEDX_Y_MIN respectivelly |
78 |
integer cl_good(nclstrmax_level2) |
79 |
* ----------------------------------------------------------- |
80 |
* mask for clusters associated to a track |
81 |
* 1 = used |
82 |
* 0 = not used |
83 |
integer cl_used(nclstrmax_level2) |
84 |
integer ncl_view(nviews) !n.clusters per plane |
85 |
* ----------------------------------------------------------- |
86 |
common/clusters/cl_good,cl_used,ncl_view |
87 |
|
88 |
* ----------------------------------------------------------- |
89 |
* --- COUPLES ----------------------------------------------- |
90 |
* ----------------------------------------------------------- |
91 |
* Clusters are associated to form couples. |
92 |
* The j-th couple on i-th plane is formed by |
93 |
* clusters numbers CLX(i,j) and CLY(i,j) |
94 |
integer clx(nplanes,ncouplemax),cly(nplanes,ncouplemax) |
95 |
* number of couples |
96 |
integer ncp_plane(nplanes) !per plane |
97 |
integer ncp_tot !total |
98 |
* ----------------------------------------------------------- |
99 |
* COMMENT: |
100 |
* the REAL number of couples is NCP_TOT, however the VIRTUAL |
101 |
* number of couples is 2*NCP_TOT becouse of the |
102 |
* ambiguity in Y view (2 sensors) |
103 |
* Each real couples has two images: one on sensor 1, |
104 |
* the other on sensor 2 |
105 |
* ----------------------------------------------------------- |
106 |
common/couples/clx,cly,ncp_plane,ncp_tot |
107 |
* ----------------------------------------------------------- |
108 |
* FUNCTIONS to retrieve couple info |
109 |
* |
110 |
* id_cp(ip,icp,is) -- returns a GLOBAL couple ID, |
111 |
* given the plane, the sensor, |
112 |
* and the couple id relative to the plane |
113 |
* ID < 0 if sensor =1 |
114 |
* ID > 0 if sensor =2 |
115 |
* |
116 |
* Given the global couple ID: |
117 |
* |
118 |
* ip_cp(id) -- returns the plane number |
119 |
* is_cp(id) -- returns the plane number |
120 |
* icp_cp(id) -- returns the id number relative to the plane |
121 |
* ----------------------------------------------------------- |
122 |
|
123 |
|
124 |
* ----------------------------------------------------------- |
125 |
* --- SINGLETS ---------------------------------------------- |
126 |
* ----------------------------------------------------------- |
127 |
* single clusters, not associated in any couple |
128 |
integer ncls(nplanes) |
129 |
integer cls(nplanes,nclstrmax_level2) |
130 |
* ----------------------------------------------------------- |
131 |
* mask for clusters not inlcuded in a couple |
132 |
* 1 = single |
133 |
* 0 = non single |
134 |
integer cl_single(nclstrmax_level2) |
135 |
* ----------------------------------------------------------- |
136 |
common/singlets/ncls,cls,cl_single |
137 |
|
138 |
|
139 |
c+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + |
140 |
c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + |
141 |
c------------------------------------------------------------------------ |
142 |
c HOUGH-TRANSFORM parameters |
143 |
c------------------------------------------------------------------------ |
144 |
c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + |
145 |
c+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + |
146 |
|
147 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
148 |
c SPEP 2 COUPLES ----> DOUBLETS and TRIPLETS |
149 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
150 |
c |
151 |
c Variables to associate couples in |
152 |
C |
153 |
c DOUBLETS for Y-Z view |
154 |
c TRIPLETS for X-Z view |
155 |
c |
156 |
c The 3D particle track can be approximated with a straight line |
157 |
c in the Y-Z view and with a circle sector in the X-Z view. |
158 |
c The Hough trasform is applied independently to the two views. |
159 |
c The parameters of the projected tracks are evaluated for each |
160 |
c combination of points (doublets in YZ and triplets in XZ). |
161 |
c |
162 |
c Hence track candidates will be identified by looking for |
163 |
c "clusters" of points (CLOUDS) in the parameter space. |
164 |
c |
165 |
c------------------------------------------------------------------------ |
166 |
parameter (ndblt_max=5000) !maximum number of doublets |
167 |
parameter (ntrpt_max=10*ndblt_max) !maximum number of triplets |
168 |
* ----------------------------------------------------------- |
169 |
* number of doublets and triplets |
170 |
integer ndblt,ntrpt |
171 |
* ----------------------------------------------------------- |
172 |
* List of couple absolute IDs that form doublets and triplets |
173 |
integer cpyz1(ndblt_max),cpyz2(ndblt_max) |
174 |
integer cpxz1(ntrpt_max),cpxz2(ntrpt_max),cpxz3(ntrpt_max) |
175 |
* ----------------------------------------------------------- |
176 |
* parameters of the projected tracks |
177 |
real |
178 |
$ alfayz1(ndblt_max), !Y0 |
179 |
$ alfayz2(ndblt_max) !tg theta-yz |
180 |
real |
181 |
$ alfaxz1(ntrpt_max), !X0 |
182 |
$ alfaxz2(ntrpt_max), !tg theta-xz |
183 |
$ alfaxz3(ntrpt_max) !1/r |
184 |
* ----------------------------------------------------------- |
185 |
common/hough_param/ |
186 |
$ alfayz1, !Y0 |
187 |
$ alfayz2, !tg theta-yz |
188 |
$ alfaxz1, !X0 |
189 |
$ alfaxz2, !tg theta-xz |
190 |
$ alfaxz3 !1/r |
191 |
common/doublets/ndblt,cpyz1,cpyz2 |
192 |
common/triplets/ntrpt,cpxz1,cpxz2,cpxz3 |
193 |
|
194 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
195 |
c SPEP 3 DOUBLETS and TRIPLETS ----> YZ and XZ-CLOUDS |
196 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
197 |
c |
198 |
c Variables to group doublets and triplets in CLOUDS, according to |
199 |
c their relative distance in parameter space. |
200 |
c The association is done indipendently on YZ and XZ views. |
201 |
c |
202 |
c------------------------------------------------------------------------ |
203 |
parameter (ncloyz_max=200)!maximum number of clouds |
204 |
parameter (ncloxz_max=200)! " |
205 |
* ----------------------------------------------------------- |
206 |
* Number of YZ and XZ clouds |
207 |
integer nclouds_yz,nclouds_xz |
208 |
* ----------------------------------------------------------- |
209 |
* mask to store combinations of couples selected as clouds |
210 |
* NOTATION: |
211 |
* 0 = not selected |
212 |
* 1 = selected couple image in SENSOR 1 |
213 |
* 2 = selected couple image in SENSOR 2 |
214 |
* 3 = selected both images |
215 |
integer cpcloud_yz(ncloyz_max,ncouplemaxtot) |
216 |
integer cpcloud_xz(ncloxz_max,ncouplemaxtot) |
217 |
* ----------------------------------------------------------- |
218 |
* doublet and triplet ID in the selected clouds |
219 |
integer db_cloud(ndblt_max) |
220 |
integer tr_cloud(ntrpt_max) |
221 |
* ----------------------------------------------------------- |
222 |
* number of points in the cloud |
223 |
integer ptcloud_yz(ncloyz_max) |
224 |
integer ptcloud_xz(ncloxz_max) |
225 |
* ----------------------------------------------------------- |
226 |
* average parameters |
227 |
real alfayz1_av(ncloyz_max),alfayz2_av(ncloyz_max) |
228 |
real alfaxz1_av(ncloxz_max),alfaxz2_av(ncloxz_max) |
229 |
$ ,alfaxz3_av(ncloxz_max) |
230 |
common/clouds_yz/ |
231 |
$ nclouds_yz |
232 |
$ ,alfayz1_av,alfayz2_av |
233 |
$ ,ptcloud_yz,db_cloud,cpcloud_yz |
234 |
common/clouds_xz/ |
235 |
$ nclouds_xz |
236 |
$ ,alfaxz1_av,alfaxz2_av,alfaxz3_av |
237 |
$ ,ptcloud_xz,tr_cloud,cpcloud_xz |
238 |
|
239 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
240 |
c SPEP 4 YZ and XZ-CLOUDS ----> TRACK CANDIDATES |
241 |
c+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
242 |
c |
243 |
c Variables to store information about track-candidates, |
244 |
c evaluated by combining YZ and XZ clouds. |
245 |
c |
246 |
c NB ! ! ! |
247 |
c |
248 |
c While until now the plane number followed the mechanical notation |
249 |
c (1 to 6, from bottom to top), variables related to the tracks |
250 |
c are referred to the mini notation (1 to 6, from top to bottom) |
251 |
c |
252 |
c------------------------------------------------------------------------ |
253 |
|
254 |
* ----------------------------------------------------- |
255 |
* default p.f.a. |
256 |
* used to fit track candidates |
257 |
* ----------------------------------------------------- |
258 |
character*5 PFAdef |
259 |
parameter (PFAdef='COG1') |
260 |
|
261 |
c------------------------------------------------------------------------ |
262 |
c variable related to track selection and fitting |
263 |
c------------------------------------------------------------------------ |
264 |
|
265 |
* track candidates |
266 |
PARAMETER (NTRACKSMAX=ncloyz_max*ncloxz_max) |
267 |
INTEGER NTRACKS !number of track candidates |
268 |
REAL AL_STORE(5,NTRACKSMAX) |
269 |
REAL XM_STORE(NPLANES,NTRACKSMAX) |
270 |
REAL YM_STORE(NPLANES,NTRACKSMAX) |
271 |
REAL ZM_STORE(NPLANES,NTRACKSMAX) |
272 |
REAL RESX_STORE(NPLANES,NTRACKSMAX) |
273 |
REAL RESY_STORE(NPLANES,NTRACKSMAX) |
274 |
REAL XV_STORE(NPLANES,NTRACKSMAX) |
275 |
REAL YV_STORE(NPLANES,NTRACKSMAX) |
276 |
REAL ZV_STORE(NPLANES,NTRACKSMAX) |
277 |
REAL AXV_STORE(NPLANES,NTRACKSMAX) |
278 |
REAL AYV_STORE(NPLANES,NTRACKSMAX) |
279 |
REAL XGOOD_STORE(NPLANES,NTRACKSMAX) |
280 |
REAL YGOOD_STORE(NPLANES,NTRACKSMAX) |
281 |
INTEGER CP_STORE(NPLANES,NTRACKSMAX) |
282 |
INTEGER CLS_STORE(NPLANES,NTRACKSMAX) |
283 |
INTEGER SENSOR_STORE(NPLANES,NTRACKSMAX) |
284 |
INTEGER LADDER_STORE(NPLANES,NTRACKSMAX) |
285 |
REAL BX_STORE(NPLANES,NTRACKSMAX) |
286 |
REAL BY_STORE(NPLANES,NTRACKSMAX) |
287 |
REAL RCHI2_STORE(NTRACKSMAX) |
288 |
common/track_candidates/NTRACKS,AL_STORE |
289 |
$ ,XV_STORE,YV_STORE,ZV_STORE |
290 |
$ ,XM_STORE,YM_STORE,ZM_STORE |
291 |
$ ,RESX_STORE,RESY_STORE |
292 |
$ ,AXV_STORE,AYV_STORE |
293 |
$ ,XGOOD_STORE,YGOOD_STORE |
294 |
$ ,CP_STORE,CLS_STORE |
295 |
$ ,SENSOR_STORE,LADDER_STORE |
296 |
$ ,BX_STORE,BY_STORE |
297 |
$ ,RCHI2_STORE |
298 |
|
299 |
|
300 |
* best-candidate selection |
301 |
PARAMETER (CHI2MAX=15) |
302 |
|
303 |
|
304 |
|
305 |
c------------------------------------------------------------------------ |
306 |
c CUTS and other parameters |
307 |
c------------------------------------------------------------------------ |
308 |
PARAMETER (PIGR=3.14) !159265359)!(1) |
309 |
* ----------------------------------------------------- |
310 |
* cuts on cluster signal |
311 |
* ----------------------------------------------------- |
312 |
parameter (dedx_x_min=0.) |
313 |
parameter (dedx_y_min=0.) |
314 |
* ----------------------------------------------------- |
315 |
* number of GOOD strips around MAXS |
316 |
* (NB this cut has been removed in track fitting but |
317 |
* not in calibration) |
318 |
* ----------------------------------------------------- |
319 |
parameter (ngoodstr=2) |
320 |
* ----------------------------------------------------- |
321 |
* first cuts on the parameters determined with |
322 |
* the hough transform, in order to exclude from the |
323 |
* analysis non physical dublets and triplets |
324 |
* (out of the geometrical acceptance of the apparatus) |
325 |
* ----------------------------------------------------- |
326 |
* geometrical acceptance whit 6 planes |
327 |
c$$$ parameter (alfyz1_max=8.7) !Y0 (real acc+1cm) |
328 |
c$$$ parameter (alfyz2_max=0.47) !tg theta-yz (18+7deg) |
329 |
c$$$ parameter (alfxz1_max=9.5) !X0 (real acc+1cm) |
330 |
c$$$ parameter (alfxz2_max=0.47) !tg theta-xz (18+7deg) |
331 |
|
332 |
c$$$* geometrical acceptance whit the last 5 planes |
333 |
c$$$ parameter (alfyz1_max=12.4) !Y0 (real acc+1cm) |
334 |
c$$$ parameter (alfyz2_max=0.55) !tg theta-yz (22+7deg) |
335 |
c$$$ parameter (alfxz1_max=13.7) !X0 (real acc+1cm) |
336 |
c$$$ parameter (alfxz2_max=0.55) !tg theta-xz (22+7deg) |
337 |
c$$$ |
338 |
c$$$* geometrical acceptance whit the last 4 planes |
339 |
c$$$ parameter (alfyz1_max=18.6) !Y0 (real acc+1cm) |
340 |
c$$$ parameter (alfyz2_max=0.70) !tg theta-yz (28+7deg) |
341 |
c$$$ parameter (alfxz1_max=20.6) !X0 (real acc+1cm) |
342 |
c$$$ parameter (alfxz2_max=0.70) !tg theta-xz (28+7deg) |
343 |
c$$$ |
344 |
* geometrical acceptance whit the last 3 planes |
345 |
parameter (alfyz1_max=31.0) !Y0 (real acc+1cm) |
346 |
parameter (alfyz2_max=1.04) !tg theta-yz (39+7deg) |
347 |
parameter (alfxz1_max=34.4) !X0 (real acc+1cm) |
348 |
parameter (alfxz2_max=1.04) !tg theta-xz (39+7deg) |
349 |
* ----------------------------------------------------- |
350 |
* cut on the position of the circle center: |
351 |
* center inside the spectrometer volume is not physical |
352 |
* ==> THE TRIPLET IS REJECTED |
353 |
* ----------------------------------------------------- |
354 |
parameter (xclimit=8.) !cm |
355 |
* ----------------------------------------------------- |
356 |
* Parameter normalization constants, needed to evaluate |
357 |
* distances in parameter space |
358 |
* ----------------------------------------------------- |
359 |
|
360 |
* --- David ground |
361 |
c$$$ parameter (Dalfayz1=0.8864e-1) |
362 |
c$$$ parameter (Dalfayz2=0.6204e-3) |
363 |
c$$$ parameter (Dalfaxz1=0.2909e-1) |
364 |
c$$$ parameter (Dalfaxz2=0.2759e-2) |
365 |
* --- David flight |
366 |
parameter (Dalfayz1=0.64e-3) |
367 |
parameter (Dalfayz2=0.54e-3) |
368 |
parameter (Dalfaxz1=0.50e-3) |
369 |
parameter (Dalfaxz2=0.12e-3) |
370 |
parameter (Dalfaxz3=0.86e-5) |
371 |
|
372 |
|
373 |
* ----------------------------------------------------- |
374 |
* Cut on normalized distances in parameter space. |
375 |
* Doublets/triplets are recursively included in a cloud |
376 |
* if the distance from any of the points already included |
377 |
* is less than this cut. |
378 |
* ----------------------------------------------------- |
379 |
* --- David ground |
380 |
c$$$ parameter(cutystart=0.3) |
381 |
c$$$ parameter(cutystep=0.3) |
382 |
c$$$ parameter(cutxstart=1.) |
383 |
c$$$ parameter(cutxstep=1.) |
384 |
c$$$ parameter(maxcuty=100.) |
385 |
c$$$ parameter(maxcutx=150.) |
386 |
c$$$ parameter(nstepx=50) !inclusion-cut increasing steps |
387 |
c$$$ parameter(nstepy=50) |
388 |
* --- David flight (preliminary) |
389 |
c$$$ parameter(cutystart=7.) |
390 |
c$$$ parameter(cutystep=5.) |
391 |
c$$$ parameter(cutxstart=5.) |
392 |
c$$$ parameter(cutxstep=2.) |
393 |
c$$$ parameter(maxcuty=200.) |
394 |
c$$$ parameter(maxcutx=150.) |
395 |
c$$$ parameter(nstepx=5) !inclusion-cut increasing steps |
396 |
c$$$ parameter(nstepy=5) |
397 |
* --- David flight |
398 |
parameter(cutystart=30.) |
399 |
parameter(cutystep=10.) !buoni??? |
400 |
parameter(cutxstart=5.) |
401 |
parameter(cutxstep=2.) |
402 |
parameter(maxcuty=1000.) |
403 |
parameter(maxcutx=1000.) |
404 |
parameter(nstepx=10) !inclusion-cut increasing steps |
405 |
parameter(nstepy=30) |
406 |
|
407 |
|
408 |
real cutdistyz !y0 / tg theta_yz space |
409 |
real cutdistxz !x0 / tg theta_xz space |
410 |
common/cutdi/cutdistyz,cutdistxz |
411 |
* (NB deflection is not considered in the selection criteria) |
412 |
* -------------------------------------------------- |
413 |
* cloud selection |
414 |
* -------------------------------------------------- |
415 |
parameter(x_min_start=4) |
416 |
parameter(x_min_step=1) |
417 |
|
418 |
integer ncpxz_min |
419 |
integer nptxz_min !for a circle |
420 |
integer nplxz_min !for a circle |
421 |
|
422 |
common/cutxclouds/ncpxz_min,nptxz_min,nplxz_min |
423 |
|
424 |
parameter(y_min_start=3) |
425 |
|
426 |
integer ncpyz_min |
427 |
integer nptyz_min !for a straight line |
428 |
integer nplyz_min !for a circle |
429 |
common/cutyclouds/ncpyz_min,nptyz_min,nplyz_min |
430 |
* -------------------------------------------------- |
431 |
|
432 |
* ----------------------------------------------------- |
433 |
* minimum number of matching couples required to combine |
434 |
* XZ-YZ clouds and perform the fit |
435 |
* ----------------------------------------------------- |
436 |
parameter (ncpok=3) |
437 |
|
438 |
* ----------------------------------------------------- |
439 |
* maximum value of deflection from Hough transform |
440 |
* accepted in order to perform the track fit |
441 |
* ----------------------------------------------------- |
442 |
c parameter (defmax=10000.) !GV-1 |
443 |
parameter (defmax=100.) !GV-1 |
444 |
|
445 |
* ----------------------------------------------------- |
446 |
* cut to include new couple or single clusters in the |
447 |
* track fitting, after the first fit |
448 |
* ----------------------------------------------------- |
449 |
c parameter (clinc=3) |
450 |
parameter (clinc=7) |
451 |
|
452 |
|
453 |
|