7 |
|
|
8 |
|
|
9 |
*** * * * *** * * * *** * * * *** * * * *** * * * *** * * * *** |
*** * * * *** * * * *** * * * *** * * * *** * * * *** * * * *** |
10 |
real function pfa_eta(ic,angle) |
real function pfaeta(ic,angle) |
11 |
*-------------------------------------------------------------- |
*-------------------------------------------------------------- |
12 |
* this function returns the position (in strip units) |
* this function returns the position (in strip units) |
13 |
* it calls: |
* it calls: |
14 |
* - pfa_eta2(ic,angle) |
* - pfaeta2(ic,angle) |
15 |
* - pfa_eta3(ic,angle) |
* - pfaeta3(ic,angle) |
16 |
* - pfa_eta4(ic,angle) |
* - pfaeta4(ic,angle) |
17 |
* according to the angle |
* according to the angle |
18 |
*-------------------------------------------------------------- |
*-------------------------------------------------------------- |
19 |
include 'commontracker.f' |
include 'commontracker.f' |
20 |
c include 'calib.f' |
c include 'calib.f' |
21 |
include 'level1.f' |
include 'level1.f' |
22 |
|
|
23 |
pfa_eta = 0 |
pfaeta = 0 |
24 |
|
|
25 |
if(mod(int(VIEW(ic)),2).eq.1)then !Y-view |
if(mod(int(VIEW(ic)),2).eq.1)then !Y-view |
26 |
|
|
27 |
pfa_eta = pfa_eta2(ic,angle) |
pfaeta = pfaeta2(ic,angle) |
28 |
|
|
29 |
else !X-view |
else !X-view |
30 |
|
|
31 |
if(abs(angle).le.10.)then |
if(abs(angle).le.10.)then |
32 |
pfa_eta = pfa_eta2(ic,angle) |
pfaeta = pfaeta2(ic,angle) |
33 |
elseif(abs(angle).gt.10..and.abs(angle).le.15.)then |
elseif(abs(angle).gt.10..and.abs(angle).le.15.)then |
34 |
pfa_eta = pfa_eta3(ic,angle) |
pfaeta = pfaeta3(ic,angle) |
35 |
elseif(abs(angle).gt.15.)then |
elseif(abs(angle).gt.15.)then |
36 |
pfa_eta = pfa_eta4(ic,angle) |
pfaeta = pfaeta4(ic,angle) |
37 |
endif |
endif |
38 |
|
|
39 |
endif |
endif |
46 |
real function ris_eta(ic,angle) |
real function ris_eta(ic,angle) |
47 |
*-------------------------------------------------------------- |
*-------------------------------------------------------------- |
48 |
* this function returns the average spatial resolution |
* this function returns the average spatial resolution |
49 |
* (in cm) for the ETA algorithm (function pfa_eta(ic,angle)) |
* (in cm) for the ETA algorithm (function pfaeta(ic,angle)) |
50 |
* it calls: |
* it calls: |
51 |
* - risx_eta2(angle) |
* - risx_eta2(angle) |
52 |
* - risy_eta2(angle) |
* - risy_eta2(angle) |
129 |
c***************************************************** |
c***************************************************** |
130 |
cccccc 02/02/2006 modified by Elena Vannuccini --> (1) |
cccccc 02/02/2006 modified by Elena Vannuccini --> (1) |
131 |
c***************************************************** |
c***************************************************** |
132 |
c real function pfa_eta2(cog2,view,lad,angle) |
c real function pfaeta2(cog2,view,lad,angle) |
133 |
real function pfa_eta2(ic,angle) !(1) |
real function pfaeta2(ic,angle) !(1) |
134 |
*-------------------------------------------------------------- |
*-------------------------------------------------------------- |
135 |
* this function returns |
* this function returns |
136 |
* |
* |
155 |
iview = VIEW(ic) !(1) |
iview = VIEW(ic) !(1) |
156 |
lad = nld(MAXS(ic),VIEW(ic)) !(1) |
lad = nld(MAXS(ic),VIEW(ic)) !(1) |
157 |
cog2 = cog(2,ic) !(1) |
cog2 = cog(2,ic) !(1) |
158 |
pfa_eta2=cog2 |
pfaeta2=cog2 |
159 |
|
|
160 |
* find angular bin |
* find angular bin |
161 |
* (in futuro possiamo pensare di interpolare anche sull'angolo) |
* (in futuro possiamo pensare di interpolare anche sull'angolo) |
167 |
endif |
endif |
168 |
enddo |
enddo |
169 |
if(DEBUG) |
if(DEBUG) |
170 |
$ print*,'pfa_eta2 *** warning *** angle out of range: ',angle |
$ print*,'pfaeta2 *** warning *** angle out of range: ',angle |
171 |
if(angle.lt.angL(1))iang=1 |
if(angle.lt.angL(1))iang=1 |
172 |
if(angle.gt.angR(nangbin))iang=nangbin |
if(angle.gt.angR(nangbin))iang=nangbin |
173 |
98 continue !jump here if ok |
98 continue !jump here if ok |
177 |
c$$$ iflag=0 |
c$$$ iflag=0 |
178 |
c$$$* -------------------------------- |
c$$$* -------------------------------- |
179 |
c$$$ if(cog2.lt.eta2(1,iang).or.cog2.gt.eta2(netaval,iang))then |
c$$$ if(cog2.lt.eta2(1,iang).or.cog2.gt.eta2(netaval,iang))then |
180 |
c$$$c print*,'pfa_eta2 *** warning *** argument out of range: ',cog2 |
c$$$c print*,'pfaeta2 *** warning *** argument out of range: ',cog2 |
181 |
c$$$* goto 100 |
c$$$* goto 100 |
182 |
c$$$* ---------------------------------------------- |
c$$$* ---------------------------------------------- |
183 |
c$$$* non salto piu`, ma scalo di 1 o -1 |
c$$$* non salto piu`, ma scalo di 1 o -1 |
230 |
AA=(y2-y1)/(x2-x1) |
AA=(y2-y1)/(x2-x1) |
231 |
BB=y1-AA*x1 |
BB=y1-AA*x1 |
232 |
|
|
233 |
pfa_eta2 = AA*cog2+BB |
pfaeta2 = AA*cog2+BB |
234 |
pfa_eta2 = pfa_eta2 - iadd |
pfaeta2 = pfaeta2 - iadd |
235 |
|
|
236 |
c$$$ if(iflag.eq.1)then |
c$$$ if(iflag.eq.1)then |
237 |
c$$$ pfa_eta2=pfa_eta2-1. !temp |
c$$$ pfaeta2=pfaeta2-1. !temp |
238 |
c$$$ cog2=cog2-1. !temp |
c$$$ cog2=cog2-1. !temp |
239 |
c$$$ endif |
c$$$ endif |
240 |
c$$$ if(iflag.eq.-1)then |
c$$$ if(iflag.eq.-1)then |
241 |
c$$$ pfa_eta2=pfa_eta2+1. !temp |
c$$$ pfaeta2=pfaeta2+1. !temp |
242 |
c$$$ cog2=cog2+1. !temp |
c$$$ cog2=cog2+1. !temp |
243 |
c$$$ endif |
c$$$ endif |
244 |
|
|
245 |
if(DEBUG)print*,'ETA2 (ic ',ic,' ang',angle,')' |
if(DEBUG)print*,'ETA2 (ic ',ic,' ang',angle,')' |
246 |
$ ,cog2-iadd,' -->',pfa_eta2 |
$ ,cog2-iadd,' -->',pfaeta2 |
247 |
|
|
248 |
|
|
249 |
100 return |
100 return |
253 |
c***************************************************** |
c***************************************************** |
254 |
cccccc 02/02/2006 modified by Elena Vannuccini --> (1) |
cccccc 02/02/2006 modified by Elena Vannuccini --> (1) |
255 |
c***************************************************** |
c***************************************************** |
256 |
c real function pfa_eta3(cog3,view,lad,angle) |
c real function pfaeta3(cog3,view,lad,angle) |
257 |
real function pfa_eta3(ic,angle) !(1) |
real function pfaeta3(ic,angle) !(1) |
258 |
*-------------------------------------------------------------- |
*-------------------------------------------------------------- |
259 |
* this function returns |
* this function returns |
260 |
* |
* |
280 |
iview = VIEW(ic) !(1) |
iview = VIEW(ic) !(1) |
281 |
lad = nld(MAXS(ic),VIEW(ic)) !(1) |
lad = nld(MAXS(ic),VIEW(ic)) !(1) |
282 |
cog3 = cog(3,ic) !(1) |
cog3 = cog(3,ic) !(1) |
283 |
pfa_eta3=cog3 |
pfaeta3=cog3 |
284 |
|
|
285 |
* find angular bin |
* find angular bin |
286 |
* (in futuro possiamo pensare di interpolare anche sull'angolo) |
* (in futuro possiamo pensare di interpolare anche sull'angolo) |
292 |
endif |
endif |
293 |
enddo |
enddo |
294 |
if(DEBUG) |
if(DEBUG) |
295 |
$ print*,'pfa_eta3 *** warning *** angle out of range: ',angle |
$ print*,'pfaeta3 *** warning *** angle out of range: ',angle |
296 |
if(angle.lt.angL(1))iang=1 |
if(angle.lt.angL(1))iang=1 |
297 |
if(angle.gt.angR(nangbin))iang=nangbin |
if(angle.gt.angR(nangbin))iang=nangbin |
298 |
98 continue !jump here if ok |
98 continue !jump here if ok |
354 |
AA=(y2-y1)/(x2-x1) |
AA=(y2-y1)/(x2-x1) |
355 |
BB=y1-AA*x1 |
BB=y1-AA*x1 |
356 |
|
|
357 |
pfa_eta3 = AA*cog3+BB |
pfaeta3 = AA*cog3+BB |
358 |
pfa_eta3 = pfa_eta3 - iadd |
pfaeta3 = pfaeta3 - iadd |
359 |
|
|
360 |
c$$$ if(iflag.eq.1)then |
c$$$ if(iflag.eq.1)then |
361 |
c$$$ pfa_eta2=pfa_eta2-1. !temp |
c$$$ pfaeta2=pfaeta2-1. !temp |
362 |
c$$$ cog2=cog2-1. !temp |
c$$$ cog2=cog2-1. !temp |
363 |
c$$$ endif |
c$$$ endif |
364 |
c$$$ if(iflag.eq.-1)then |
c$$$ if(iflag.eq.-1)then |
365 |
c$$$ pfa_eta2=pfa_eta2+1. !temp |
c$$$ pfaeta2=pfaeta2+1. !temp |
366 |
c$$$ cog2=cog2+1. !temp |
c$$$ cog2=cog2+1. !temp |
367 |
c$$$ endif |
c$$$ endif |
368 |
|
|
369 |
if(DEBUG)print*,'ETA3 (ic ',ic,' ang',angle,')' |
if(DEBUG)print*,'ETA3 (ic ',ic,' ang',angle,')' |
370 |
$ ,cog3-iadd,' -->',pfa_eta3 |
$ ,cog3-iadd,' -->',pfaeta3 |
371 |
|
|
372 |
100 return |
100 return |
373 |
end |
end |
376 |
c***************************************************** |
c***************************************************** |
377 |
cccccc 02/02/2006 modified by Elena Vannuccini --> (1) |
cccccc 02/02/2006 modified by Elena Vannuccini --> (1) |
378 |
c***************************************************** |
c***************************************************** |
379 |
c real function pfa_eta4(cog4,view,lad,angle) |
c real function pfaeta4(cog4,view,lad,angle) |
380 |
real function pfa_eta4(ic,angle) !(1) |
real function pfaeta4(ic,angle) !(1) |
381 |
*-------------------------------------------------------------- |
*-------------------------------------------------------------- |
382 |
* this function returns |
* this function returns |
383 |
* |
* |
399 |
c logical DEBUG |
c logical DEBUG |
400 |
c common/dbg/DEBUG |
c common/dbg/DEBUG |
401 |
|
|
402 |
iview = VIEW(ic) !(1) |
iview = VIEW(ic) !(1) |
403 |
lad = nld(MAXS(ic),VIEW(ic)) !(1) |
lad = nld(MAXS(ic),VIEW(ic)) !(1) |
404 |
cog4=cog(4,ic) !(1) |
cog4=cog(4,ic) !(1) |
405 |
pfa_eta4=cog4 |
pfaeta4=cog4 |
406 |
|
|
407 |
* find angular bin |
* find angular bin |
408 |
* (in futuro possiamo pensare di interpolare anche sull'angolo) |
* (in futuro possiamo pensare di interpolare anche sull'angolo) |
414 |
endif |
endif |
415 |
enddo |
enddo |
416 |
if(DEBUG) |
if(DEBUG) |
417 |
$ print*,'pfa_eta4 *** warning *** angle out of range: ',angle |
$ print*,'pfaeta4 *** warning *** angle out of range: ',angle |
418 |
if(angle.lt.angL(1))iang=1 |
if(angle.lt.angL(1))iang=1 |
419 |
if(angle.gt.angR(nangbin))iang=nangbin |
if(angle.gt.angR(nangbin))iang=nangbin |
420 |
98 continue !jump here if ok |
98 continue !jump here if ok |
476 |
AA=(y2-y1)/(x2-x1) |
AA=(y2-y1)/(x2-x1) |
477 |
BB=y1-AA*x1 |
BB=y1-AA*x1 |
478 |
|
|
479 |
pfa_eta4 = AA*cog4+BB |
pfaeta4 = AA*cog4+BB |
480 |
pfa_eta4 = pfa_eta4 - iadd |
pfaeta4 = pfaeta4 - iadd |
481 |
|
|
482 |
c$$$ if(iflag.eq.1)then |
c$$$ if(iflag.eq.1)then |
483 |
c$$$ pfa_eta2=pfa_eta2-1. !temp |
c$$$ pfaeta2=pfaeta2-1. !temp |
484 |
c$$$ cog2=cog2-1. !temp |
c$$$ cog2=cog2-1. !temp |
485 |
c$$$ endif |
c$$$ endif |
486 |
c$$$ if(iflag.eq.-1)then |
c$$$ if(iflag.eq.-1)then |
487 |
c$$$ pfa_eta2=pfa_eta2+1. !temp |
c$$$ pfaeta2=pfaeta2+1. !temp |
488 |
c$$$ cog2=cog2+1. !temp |
c$$$ cog2=cog2+1. !temp |
489 |
c$$$ endif |
c$$$ endif |
490 |
|
|
491 |
if(DEBUG)print*,'ETA4 (ic ',ic,' ang',angle,')' |
if(DEBUG)print*,'ETA4 (ic ',ic,' ang',angle,')' |
492 |
$ ,cog4-iadd,' -->',pfa_eta4 |
$ ,cog4-iadd,' -->',pfaeta4 |
493 |
|
|
494 |
100 return |
100 return |
495 |
end |
end |
655 |
|
|
656 |
COG = 0. |
COG = 0. |
657 |
|
|
658 |
if(ncog.eq.2)then |
if(ncog.eq.1)then |
659 |
|
COG = 0. |
660 |
|
elseif(ncog.eq.2)then |
661 |
if(sl1.gt.sr1)then |
if(sl1.gt.sr1)then |
662 |
COG = -sl1/(sl1+sc) |
COG = -sl1/(sl1+sc) |
663 |
elseif(sl1.le.sr1)then |
elseif(sl1.le.sr1)then |
688 |
if(mod(iv,2).eq.1)incut=incuty |
if(mod(iv,2).eq.1)incut=incuty |
689 |
if(mod(iv,2).eq.0)incut=incutx |
if(mod(iv,2).eq.0)incut=incutx |
690 |
|
|
691 |
istart=INDSTART(IC) |
istart = INDSTART(IC) |
692 |
istop=TOTCLLENGTH |
istop = TOTCLLENGTH |
693 |
if(ic.lt.NCLSTR1)istop=INDSTART(IC+1)-1 |
if(ic.lt.NCLSTR1)istop=INDSTART(IC+1)-1 |
694 |
COG=0 |
COG = 0 |
695 |
mu=0 |
mu = 0 |
696 |
do i=istart,istop |
do i = istart,istop |
697 |
ipos=i-INDMAX(ic) |
ipos = i-INDMAX(ic) |
698 |
ivk=nvk(MAXS(ic)+ipos) |
cc ivk = nvk(MAXS(ic)+ipos) |
699 |
is=nst(MAXS(ic)+ipos) |
cc is = nst(MAXS(ic)+ipos) |
700 |
* print*,'******************',istart,istop,ipos |
* print*,'******************',istart,istop,ipos |
701 |
* $ ,MAXS(ic)+ipos,iv,ivk,is |
* $ ,MAXS(ic)+ipos,iv,ivk,is |
702 |
cut=incut*SIGMA(iv,ivk,is) |
cc cut = incut*SIGMA(iv,ivk,is) |
703 |
|
cut = incut*CLSIGMA(i) |
704 |
|
c if(SIGMA(iv,ivk,is).ne.CLSIGMA(i)) |
705 |
|
c $ print*,'cog(0,ic) --> hai fatto qualche cazzata' |
706 |
if(CLSIGNAL(i).ge.cut)then |
if(CLSIGNAL(i).ge.cut)then |
707 |
COG = COG + ipos*CLSIGNAL(i) |
COG = COG + ipos*CLSIGNAL(i) |
708 |
mu = mu + 1 |
mu = mu + 1 |
709 |
c print*,ipos,CLSIGNAL(i),incut,cut |
c print*,ipos,CLSIGNAL(i),incut,cut |
710 |
endif |
endif |
711 |
enddo |
enddo |
712 |
COG=COG/DEDX(ic) |
if(DEDX(ic).le.0)then |
713 |
|
print*,'cog(0,ic) --> ic, dedx ',ic,DEDX(ic) |
714 |
|
print*,(CLSIGNAL(i)/CLSIGMA(i),i=istart,istop) |
715 |
|
print*,(CLSIGNAL(i),i=istart,istop) |
716 |
|
print*,'cog(0,ic) --> NOT EVALUATED ' |
717 |
|
else |
718 |
|
COG=COG/DEDX(ic) |
719 |
|
endif |
720 |
c if(DEBUG)print*,'COG (ic ',ic,' m',mu,')' |
c if(DEBUG)print*,'COG (ic ',ic,' m',mu,')' |
721 |
c $ ,cog |
c $ ,cog |
722 |
|
|