66 if(istampa>1) {cout<<
"in BadTrack_ParStt : Xingresso "<<Xcross[0]<<
", Yingresso "<<Ycross[0]
67 <<
", Xuscita "<<Xcross[1]<<
", Yuscita "<<Ycross[1]<<
", Lungh. arco "
68 <<length<<
", islack "<<islack<<endl;
73 for(ihit=0; ihit<
nHits;ihit++){
74 S =
atan2(info[ListHits[ihit]][1]-Oyy,info[ListHits[ihit]][0]-Oxx);
87 (info[ListHits[ihit]][0]-Xprevious)*
88 (info[ListHits[ihit]][0]-Xprevious)+
89 (info[ListHits[ihit]][1]-Yprevious)*
90 (info[ListHits[ihit]][1]-Yprevious);
91 if(istampa>1) {cout<<
"in BadTrack_ParStt :hit || n. "<<ListHits[ihit]<<
", X "<<info[ListHits[ihit]][0]
92 <<
", Y "<<info[ListHits[ihit]][1]<<
"\n\tX prima "<<Xprevious
93 <<
", Y prima "<<Yprevious<<
", Distanza "<<
sqrt(Distance[ihit])<<
", cut = "
96 Xprevious=info[ListHits[ihit]][0];
97 Yprevious=info[ListHits[ihit]][1];
100 if(Distance[ihit]>cut2){
101 if(Distance[ihit]>16.*cut2){
113 nume = 0.5*length/strawradius -islack;
114 if( ninside < nume ){
116 int icz = 0.5*length/strawradius;
117 cout<<
"in BadTrack_ParStt, n. Hits inside = "<<ninside
118 <<
" is < n. hits that should be inside at least = "
119 <<icz<<
"-islack ("<<islack<<
"), track rejected!\n";
138 (info[ListHits[nHits-1]][0]-Xcross[1])*
139 (info[ListHits[nHits-1]][0]-Xcross[1])+
140 (info[ListHits[nHits-1]][1]-Ycross[1])*
141 (info[ListHits[nHits-1]][1]-Ycross[1]);
143 if(istampa>1)cout<<
"in BadTrack_ParStt, Stt || hit n. (original notation) "
144 <<ListHits[nHits-1]<<
", Distance to boundary = "
145 <<
sqrt(Distance[nHits])<<
", 4*cut "<<4.*cut<<endl;
147 if( Distance[nHits]>cut2 ){
148 if( Distance[nHits]>16.*cut2)
return true;
153 if(istampa>1)cout<<
"in BadTrack_ParStt, ibad "<<ibad<<
", max bad allowed = "<< maxnum<<endl;
155 if( ibad > maxnum)
return true;
173 bool farthest_hit_is_boundary,
183 Short_t *nParContiguous,
184 Short_t ListParContiguous[][6],
254 if( farthest_hit_is_boundary ){
255 index = TubeID[ ListHits[nHits-1] ];
256 if( StrawCode[ index -1 ] == -1 && StrawCode2[ index -1 ] ==-1 ) {
263 for(i=0;i<nParContiguous[index-1];i++){
264 if( StrawCode[ ListParContiguous[index-1][i] -1 ] > -1 ||
265 StrawCode2[ ListParContiguous[index-1][i] -1 ] > -1)
272 if(!yes)
return false;
281 for(i=0;i<nHits-1;i++){
288 dist2 = (info[ListHits[outer]][0]-info[ListHits[inner]][0])*(info[ListHits[outer]][0]-info[ListHits[inner]][0]);
289 dist2 += (info[ListHits[outer]][1]-info[ListHits[inner]][1])*(info[ListHits[outer]][1]-info[ListHits[inner]][1]);
319 index_last = TubeID[ListHits[0]] -1 ;
321 if(!(StrawCode[index_last] == -1 && StrawCode2[index_last] == -1)){
334 Xend[0] = Yend[0] = 0. ;
335 Xend[1] = xTube[index_last];
336 Yend[1] = yTube[index_last];
337 for(j=0;j<nParContiguous[ index_last ];j++){
338 tube_next = ListParContiguous[index_last][j] ;
343 dist2 = xxyyTube[tube_next-1] -2.*(xTube[tube_next-1]*Ox + yTube[tube_next-1]*Oy)+
353 fi =
atan2( yTube[tube_next-1]-Oy, xTube[tube_next-1]-Ox);
354 if(fi<0.) fi += 2.*
PI;
357 if( GeometryCalculator.
IsInsideArc(Ox,Oy,Charge,Xend,Yend,fi)){
359 if( !(StrawCode[tube_next-1] == -1 && StrawCode2[tube_next-1] == -1) ) {
388 Short_t nPixelHitsinTrack,
389 Short_t * ListMvdPixelHitsinTrack,
393 Short_t nStripHitsinTrack,
394 Short_t * ListMvdStripHitsinTrack,
410 for(j=0;j<nPixelHitsinTrack;j++){
414 fabs(XMvdPixel[ ListMvdPixelHitsinTrack[j] ]-Xintersect) < Ximprecision
415 &&
fabs(YMvdPixel[ ListMvdPixelHitsinTrack[j] ]-Yintersect) < Yimprecision
416 &&
fabs(ZMvdPixel[ ListMvdPixelHitsinTrack[j] ] - Zintersect) < Zimprecision
420 for(j=0;j<nStripHitsinTrack;j++){
423 fabs(XMvdStrip[ ListMvdStripHitsinTrack[j] ]-Xintersect) < Ximprecision
424 &&
fabs(YMvdStrip[ ListMvdStripHitsinTrack[j] ]-Yintersect) < Yimprecision
425 &&
fabs(ZMvdStrip[ ListMvdStripHitsinTrack[j] ] - Zintersect) < Zimprecision
444 Short_t nPixelHitsinTrack,
445 Short_t * ListMvdPixelHitsinTrack,
450 Short_t nStripHitsinTrack,
451 Short_t * ListMvdStripHitsinTrack,
469 if( ZLayerBegin == 1.97){
473 for(i=0;i<nPixelHitsinTrack;i++){
474 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
475 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
479 XMvdPixel[ListMvdPixelHitsinTrack[i]],
480 YMvdPixel[ListMvdPixelHitsinTrack[i]]
488 for(i=0;i<nStripHitsinTrack;i++){
489 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
490 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
494 XMvdStrip[ListMvdStripHitsinTrack[i]],
495 YMvdStrip[ListMvdStripHitsinTrack[i]]
505 }
else if( ZLayerBegin == 2.41) {
509 for(i=0;i<nPixelHitsinTrack;i++){
510 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
511 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
515 XMvdPixel[ListMvdPixelHitsinTrack[i]],
516 YMvdPixel[ListMvdPixelHitsinTrack[i]]
524 for(i=0;i<nStripHitsinTrack;i++){
525 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
526 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
530 XMvdStrip[ListMvdStripHitsinTrack[i]],
531 YMvdStrip[ListMvdStripHitsinTrack[i]]
540 }
else if( ZLayerBegin == 3.97) {
545 for(i=0;i<nPixelHitsinTrack;i++){
546 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
547 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
551 XMvdPixel[ListMvdPixelHitsinTrack[i]],
552 YMvdPixel[ListMvdPixelHitsinTrack[i]]
560 for(i=0;i<nStripHitsinTrack;i++){
561 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
562 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
566 XMvdStrip[ListMvdStripHitsinTrack[i]],
567 YMvdStrip[ListMvdStripHitsinTrack[i]]
577 }
else if( ZLayerBegin == 4.41) {
582 for(i=0;i<nPixelHitsinTrack;i++){
583 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
584 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
588 XMvdPixel[ListMvdPixelHitsinTrack[i]],
589 YMvdPixel[ListMvdPixelHitsinTrack[i]]
597 for(i=0;i<nStripHitsinTrack;i++){
598 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
599 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
603 XMvdStrip[ListMvdStripHitsinTrack[i]],
604 YMvdStrip[ListMvdStripHitsinTrack[i]]
614 }
else if( ZLayerBegin == 6.97) {
619 for(i=0;i<nPixelHitsinTrack;i++){
620 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
621 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
625 XMvdPixel[ListMvdPixelHitsinTrack[i]],
626 YMvdPixel[ListMvdPixelHitsinTrack[i]]
634 for(i=0;i<nStripHitsinTrack;i++){
635 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
636 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
640 XMvdStrip[ListMvdStripHitsinTrack[i]],
641 YMvdStrip[ListMvdStripHitsinTrack[i]]
650 }
else if( ZLayerBegin == 7.41) {
655 for(i=0;i<nPixelHitsinTrack;i++){
656 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
657 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
661 XMvdPixel[ListMvdPixelHitsinTrack[i]],
662 YMvdPixel[ListMvdPixelHitsinTrack[i]]
670 for(i=0;i<nStripHitsinTrack;i++){
671 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
672 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
676 XMvdStrip[ListMvdStripHitsinTrack[i]],
677 YMvdStrip[ListMvdStripHitsinTrack[i]]
687 }
else if( ZLayerBegin == 9.97) {
692 for(i=0;i<nPixelHitsinTrack;i++){
693 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
694 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
698 XMvdPixel[ListMvdPixelHitsinTrack[i]],
699 YMvdPixel[ListMvdPixelHitsinTrack[i]]
707 for(i=0;i<nStripHitsinTrack;i++){
708 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
709 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
713 XMvdStrip[ListMvdStripHitsinTrack[i]],
714 YMvdStrip[ListMvdStripHitsinTrack[i]]
724 }
else if( ZLayerBegin == 10.41) {
729 for(i=0;i<nPixelHitsinTrack;i++){
730 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
731 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
735 XMvdPixel[ListMvdPixelHitsinTrack[i]],
736 YMvdPixel[ListMvdPixelHitsinTrack[i]]
744 for(i=0;i<nStripHitsinTrack;i++){
745 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
746 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
750 XMvdStrip[ListMvdStripHitsinTrack[i]],
751 YMvdStrip[ListMvdStripHitsinTrack[i]]
761 }
else if( ZLayerBegin == 14.77) {
766 for(i=0;i<nPixelHitsinTrack;i++){
767 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
768 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
772 XMvdPixel[ListMvdPixelHitsinTrack[i]],
773 YMvdPixel[ListMvdPixelHitsinTrack[i]]
781 for(i=0;i<nStripHitsinTrack;i++){
782 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
783 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
787 XMvdStrip[ListMvdStripHitsinTrack[i]],
788 YMvdStrip[ListMvdStripHitsinTrack[i]]
798 }
else if( ZLayerBegin == 15.21) {
803 for(i=0;i<nPixelHitsinTrack;i++){
804 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
805 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
809 XMvdPixel[ListMvdPixelHitsinTrack[i]],
810 YMvdPixel[ListMvdPixelHitsinTrack[i]]
818 for(i=0;i<nStripHitsinTrack;i++){
819 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
820 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
824 XMvdStrip[ListMvdStripHitsinTrack[i]],
825 YMvdStrip[ListMvdStripHitsinTrack[i]]
835 }
else if( ZLayerBegin == 21.77) {
840 for(i=0;i<nPixelHitsinTrack;i++){
841 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
842 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
846 XMvdPixel[ListMvdPixelHitsinTrack[i]],
847 YMvdPixel[ListMvdPixelHitsinTrack[i]]
855 for(i=0;i<nStripHitsinTrack;i++){
856 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
857 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
861 XMvdStrip[ListMvdStripHitsinTrack[i]],
862 YMvdStrip[ListMvdStripHitsinTrack[i]]
872 }
else if( ZLayerBegin == 22.21) {
877 for(i=0;i<nPixelHitsinTrack;i++){
878 if( ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] <= ZLayerBegin+0.02
879 && ZMvdPixel[ ListMvdPixelHitsinTrack[i] ] >= ZLayerBegin){
883 XMvdPixel[ListMvdPixelHitsinTrack[i]],
884 YMvdPixel[ListMvdPixelHitsinTrack[i]]
892 for(i=0;i<nStripHitsinTrack;i++){
893 if( ZMvdStrip[ ListMvdStripHitsinTrack[i] ] <= ZLayerBegin+0.02
894 && ZMvdStrip[ ListMvdStripHitsinTrack[i] ] >= ZLayerBegin){
898 XMvdStrip[ListMvdStripHitsinTrack[i]],
899 YMvdStrip[ListMvdStripHitsinTrack[i]]
910 cout<<
"PndTrkCleanup.cxx::IsThereHitInMvdMiniDisk WARNING, this Mvd MiniDisk apparently"<<
911 " is not in the list of known Mvd MiniDisks !";
941 Short_t nPixelHitsinTrack,
942 Short_t * ListMvdPixelHitsinTrack,
943 Short_t nStripHitsinTrack,
944 Short_t * ListMvdStripHitsinTrack,
1025 yes_hit = Track_Crosses_MvdBarrelFullAzimuthalCoverage(
1050 if( IsThereMvdHitInBarrel(
1056 ListMvdPixelHitsinTrack,
1061 ListMvdStripHitsinTrack,
1066 ) n_present_hits ++;
1077 nFaults = n_forseen_hits - n_present_hits;
1078 if( nFaults > 1 )
return false;
1097 yes_hit = Track_Crosses_MvdBarrelPartialAzimuthalCoverage(
1138 if(Xintersect[j] < -99998.) continue ;
1145 IsThereMvdHitInBarrel(
1151 ListMvdPixelHitsinTrack,
1156 ListMvdStripHitsinTrack,
1161 ) n_present_hits ++;
1176 nFaults = n_forseen_hits - n_present_hits;
1177 if( nFaults > 1 )
return false;
1188 if( Track_Crosses_MvdMiniDisk_withMargin (
1202 yes_hit = IsThereHitInMvdMiniDisk(
1205 ListMvdPixelHitsinTrack,
1211 ListMvdStripHitsinTrack,
1228 if( nFaults > 1 )
return false;
1246 X_disk = Ox + R*
cos(phase) ;
1249 Y_disk = Oy + R*
sin(phase) ;
1255 r =
sqrt(X_disk*X_disk + Y_disk*Y_disk);
1257 rmax = r + extra_distance;
1259 rmin = r - extra_distance;
1260 if(rmin<0.) rmin=0.;
1263 type_of_intersection_in_disk[
i]=1;
1265 type_of_intersection_in_disk[
i]= -1;
1267 type_of_intersection_in_disk[
i]= 0;
1280 if (type_of_intersection_in_disk[i]==1){
1285 for(j=0;j< nPixelHitsinTrack; j++){
1286 if(
fabs( ZMvdPixel[ ListMvdPixelHitsinTrack[j] ]-
MVD_DISK_Z[i]) < 1.)
1294 for(j=0;j< nStripHitsinTrack; j++){
1295 if(
fabs( ZMvdStrip[ ListMvdStripHitsinTrack[j] ]-
MVD_DISK_Z[i]) < 1.)
1307 if(nFaults>1)
return false;
1348 ) && nMvdHits==0 )
return false;
1366 Short_t *nInnerHits,
1367 Short_t *ListInnerHits,
1368 Short_t *nOuterHits,
1369 Short_t *ListOuterHits,
1371 Short_t *nInnerHitsLeft,
1372 Short_t *ListInnerHitsLeft,
1373 Short_t *nInnerHitsRight,
1374 Short_t *ListInnerHitsRight,
1376 Short_t *nOuterHitsLeft,
1377 Short_t *ListOuterHitsLeft,
1378 Short_t *nOuterHitsRight,
1379 Short_t *ListOuterHitsRight
1395 for(ihit=0 ;ihit<
nHits;ihit++){
1396 r =
sqrt( info[ListHits[ihit]][0]*info[ListHits[ihit]][0] +
1397 info[ListHits[ihit]][1]*info[ListHits[ihit]][1]);
1400 if(r>R_STT_INNER_PAR_MAX ){
1401 ListOuterHits[ *nOuterHits ] = ListHits[ihit];
1403 if(info[ListHits[ihit]][0]<0.){
1404 ListOuterHitsLeft[ *nOuterHitsLeft ] = ListHits[ihit];
1405 (*nOuterHitsLeft)++;
1407 ListOuterHitsRight[ *nOuterHitsRight ] = ListHits[ihit];
1408 (*nOuterHitsRight)++;
1411 ListInnerHits[ *nInnerHits ] = ListHits[ihit];
1413 if(info[ListHits[ihit]][0]<0.){
1414 ListInnerHitsLeft[ *nInnerHitsLeft ] = ListHits[ihit];
1415 (*nInnerHitsLeft)++;
1417 ListInnerHitsRight[ *nInnerHitsRight ] = ListHits[ihit];
1418 (*nInnerHitsRight)++;
1443 Short_t *ListInnerHitsLeft,
1444 Short_t *ListInnerHitsRight,
1445 Short_t *ListOuterHitsLeft,
1446 Short_t *ListOuterHitsRight,
1447 Short_t *nInnerHitsLeft,
1448 Short_t *nInnerHitsRight,
1449 Short_t *nOuterHitsLeft,
1450 Short_t *nOuterHitsRight
1464 for(ihit=0 ;ihit<
nHits;ihit++){
1465 r =
sqrt( info[ListHits[ihit]][0]*info[ListHits[ihit]][0] +
1466 info[ListHits[ihit]][1]*info[ListHits[ihit]][1]);
1469 if(r>R_STT_INNER_PAR_MAX ){
1470 if(info[ListHits[ihit]][0]<0.){
1471 ListOuterHitsLeft[ *nOuterHitsLeft ] = ListHits[ihit];
1472 (*nOuterHitsLeft)++;
1474 ListOuterHitsRight[ *nOuterHitsRight ] = ListHits[ihit];
1475 (*nOuterHitsRight)++;
1478 if(info[ListHits[ihit]][0]<0.){
1479 ListInnerHitsLeft[ *nInnerHitsLeft ] = ListHits[ihit];
1480 (*nInnerHitsLeft)++;
1482 ListInnerHitsRight[ *nInnerHitsRight ] = ListHits[ihit];
1483 (*nInnerHitsRight)++;
1508 Short_t *Listofhits,
1533 Short_t flagInnerSttL,
1550 ListInnerHits[
nHits],
1551 ListInnerHitsLeft[
nHits],
1552 ListInnerHitsRight[
nHits],
1553 ListOuterHits[
nHits],
1554 ListOuterHitsLeft[
nHits],
1555 ListOuterHitsRight[
nHits];
1568 XintersectionList[7],
1569 YintersectionList[7];
1579 LimitCoord[0] = Oxx+Rr*
cos(FiLimitAdmissible);
1580 LimitCoord[1] = Oyy+Rr*
sin(FiLimitAdmissible);
1589 epsilonTheta = strawradius/Rr;
1591 for(i=0, ipurged=0; i<
nHits; i++){
1593 fi =
atan2( info[Listofhits[i]][1]-Oyy,info[Listofhits[i]][0]-Oxx);
1594 if (fi<0.) fi+=2.*
PI;
1598 if( fi>FiLimitAdmissible+epsilonTheta)
continue;
1601 if( fi >FiLimitAdmissible+epsilonTheta )
continue;
1607 if (fi < FiLimitAdmissible-epsilonTheta)
continue;
1610 ListHits[ipurged]=Listofhits[
i];
1639 SeparateInnerOuterParallel(
1645 2.*ApotemaInnerParMax/
sqrt(3.),
1733 if( flagInnerSttL == 1 || flagInnerSttR == 1 ){
1742 if( flagInnerSttR == 0 && (XcrossR[0]-XcrossR[1])*(XcrossR[0]-XcrossR[1])+
1743 (YcrossR[0]-YcrossR[1])*(YcrossR[0]-YcrossR[1])
1744 < 9.*strawradius*strawradius ) flagInnerSttR=-1;
1746 if( flagInnerSttL == 0 && (XcrossL[0]-XcrossL[1])*(XcrossL[0]-XcrossL[1])+
1747 (YcrossL[0]-YcrossL[1])*(YcrossL[0]-YcrossL[1])
1748 < 9.*strawradius*strawradius ) flagInnerSttR=-1;
1755 if( flagInnerSttL == -1 && flagInnerSttR == -1 ){
1761 if( flagInnerSttL == 0 && flagInnerSttR == 0 ) {
1765 XintersectionList[0]=XcrossL[0];
1766 YintersectionList[0]=YcrossL[0];
1767 XintersectionList[1]=XcrossL[1];
1768 YintersectionList[1]=YcrossL[1];
1769 XintersectionList[2]=XcrossR[0];
1770 YintersectionList[2]=YcrossR[0];
1771 XintersectionList[3]=XcrossR[1];
1772 YintersectionList[3]=YcrossR[1];
1786 if( (
fabs(XcrossL[0]-Xcross[0])<1.e-5&&
fabs(YcrossL[0]-Ycross[0])<1.e-5)
1788 (
fabs(XcrossL[1]-Xcross[0])<1.e-5&&
fabs(YcrossL[1]-Ycross[0])<1.e-5)
1799 if( flagInnerSttL == 0){
1800 nConsideredHits=nInnerHitsLeft;
1803 XintersectionList[
i]=XcrossL[
i];
1804 YintersectionList[
i]=YcrossL[
i];
1807 nConsideredHits=nInnerHitsRight;
1811 XintersectionList[
i]=XcrossR[
i];
1812 YintersectionList[
i]=YcrossR[
i];
1818 if(
fabs(FiLimitAdmissible-FI0) < 2.*
PI)
1822 XintersectionList[2]=LimitCoord[0];
1823 YintersectionList[2]=LimitCoord[1];
1829 XintersectionList[nintersections]=XcrossOut[0];
1830 XintersectionList[nintersections+1]=XcrossOut[1];
1831 YintersectionList[nintersections]=YcrossOut[0];
1832 YintersectionList[nintersections+1]=YcrossOut[1];
1856 if(
fabs(FiLimitAdmissible-FI0) < 2.*
PI)
1860 if(
fabs(LimitCoord[0]-Xcross[0])<1.e-5&&
fabs(LimitCoord[1]-Ycross[0])<1.e-5 )
1879 && ((
fabs(XcrossOut[0]-Xcross[0])<1.e-5
1880 &&
fabs(YcrossOut[0]-Ycross[0])<1.e-5 )
1882 (
fabs(XcrossOut[1]-Xcross[0])<1.e-5
1883 &&
fabs(YcrossOut[1]-Ycross[0])<1.e-5 )
1892 if (nConsideredHits == 0)
1900 if(
fabs(LimitCoord[0]-Xcross[1])<1.e-5&&
fabs(LimitCoord[1]-Ycross[1])<1.e-5 )
1911 if( (
fabs(XcrossOut[0]-Xcross[0])<1.e-5
1912 &&
fabs(YcrossOut[0]-Ycross[0])<1.e-5 )
1914 (
fabs(XcrossOut[1]-Xcross[0])<1.e-5
1915 &&
fabs(YcrossOut[1]-Ycross[0])<1.e-5 )
1923 if (nConsideredHits == 0)
1936 cout<<
"SttParalCleanup, evento n. "<<IVOLTE<<
", prima di BadTrack_ParStt; Xin Inner "<<
1937 Xcross[0]<<
", Yin Inner "<<Ycross[0]<<
1938 ", Xout Inner "<<Xcross[1]<<
", Yout Inner "<<Ycross[1]<<endl; }
1941 if ( BadTrack_ParStt(
2010 cout<<
"SttParalCleanup, evento n. "<<IVOLTE<<
2011 ", flagOuterSttR (-1,or 0 --> 2 or more inter.) = "<<flagOuterSttR
2012 <<
", flagOuterSttL "<<flagOuterSttL<<endl; }
2020 if( flagOuterSttR == 0 && (XcrossR[0]-XcrossR[1])*(XcrossR[0]-XcrossR[1])+
2021 (YcrossR[0]-YcrossR[1])*(YcrossR[0]-YcrossR[1])
2022 < 9.*strawradius*strawradius ) flagOuterSttR=-1;
2024 if( flagOuterSttL == 0 && (XcrossL[0]-XcrossL[1])*(XcrossL[0]-XcrossL[1])+
2025 (YcrossL[0]-YcrossL[1])*(YcrossL[0]-YcrossL[1])
2026 < 9.*strawradius*strawradius ) flagOuterSttR=-1;
2032 if( flagOuterSttL == -1 && flagOuterSttR == -1 ){
2040 if( flagOuterSttL == 0 && flagOuterSttR == 0 ) {
2043 XintersectionList[0]=XcrossL[0];
2044 YintersectionList[0]=YcrossL[0];
2045 XintersectionList[1]=XcrossL[1];
2046 YintersectionList[1]=YcrossL[1];
2047 XintersectionList[2]=XcrossR[0];
2048 YintersectionList[2]=YcrossR[0];
2049 XintersectionList[3]=XcrossR[1];
2050 YintersectionList[3]=YcrossR[1];
2064 if( (
fabs(XcrossL[0]-Xcross[0])<1.e-5&&
fabs(YcrossL[0]-Ycross[0])<1.e-5)
2066 (
fabs(XcrossL[1]-Xcross[0])<1.e-5&&
fabs(YcrossL[1]-Ycross[0])<1.e-5)
2075 if( flagOuterSttL == 0){
2076 nConsideredHits=nOuterHitsLeft;
2080 XintersectionList[
i]=XcrossL[
i];
2081 YintersectionList[
i]=YcrossL[
i];
2085 nConsideredHits=nOuterHitsRight;
2087 XintersectionList[
i]=XcrossR[
i];
2088 YintersectionList[
i]=YcrossR[
i];
2096 if(
fabs(FiLimitAdmissible-FI0) < 2.*
PI){
2099 XintersectionList[2]=LimitCoord[0];
2100 YintersectionList[2]=LimitCoord[1];
2104 cout<<
"in SttParalCleanup Outer, caso in cui FiLimitAdmissible = "<< FiLimitAdmissible
2110 if( flagOutStt ==0){
2111 XintersectionList[nintersections]=XcrossOut[0];
2112 XintersectionList[nintersections+1]=XcrossOut[1];
2113 YintersectionList[nintersections]=YcrossOut[0];
2114 YintersectionList[nintersections+1]=YcrossOut[1];
2119 cout<<
"in SttParalCleanup Outer, prima di ChooseEntranceExitbis, nintersections "
2120 << nintersections<<
" e loro lista :"<<endl;
2121 for(
int ic=0;ic<nintersections;ic++){
2122 cout<<
"\tX["<<ic<<
"] = "<<XintersectionList[ic]
2123 <<
", Y["<<ic<<
"] = "<<YintersectionList[ic]<<endl;
2145 cout<<
"in SttParalCleanup Outer, dopo di ChooseEntranceExitbis, Xin"
2146 << Xcross[0]<<
", Yin "<< Ycross[0]<<
", Xout " << Xcross[1]<<
", Yout "<< Ycross[1]
2152 if(
fabs(FiLimitAdmissible-FI0) < 2.*
PI){
2156 if(
fabs(LimitCoord[0]-Xcross[0])<1.e-5&&
fabs(LimitCoord[1]-Ycross[0])<1.e-5 ){
2160 if( flagOutStt ==0){
2163 if( (
fabs(XcrossOut[0]-Xcross[0])<1.e-5
2164 &&
fabs(YcrossOut[0]-Ycross[0])<1.e-5 )
2166 (
fabs(XcrossOut[1]-Xcross[0])<1.e-5
2167 &&
fabs(YcrossOut[1]-Ycross[0])<1.e-5 )
2178 if (nConsideredHits == 0){
2185 if(
fabs(LimitCoord[0]-Xcross[1])<1.e-5&&
fabs(LimitCoord[1]-Ycross[1])<1.e-5 ){
2191 if( flagOutStt ==0){
2194 if( (
fabs(XcrossOut[0]-Xcross[0])<1.e-5
2195 &&
fabs(YcrossOut[0]-Ycross[0])<1.e-5 )
2197 (
fabs(XcrossOut[1]-Xcross[0])<1.e-5
2198 &&
fabs(YcrossOut[1]-Ycross[0])<1.e-5 )
2209 if (nConsideredHits == 0){
2220 cout<<
"SttParalCleanup, OUTER, caso R || L true, IVOLTE = "<<IVOLTE<<
"\n\t Xcross[0] "
2221 << Xcross[0]<<
", Ycross[0] " <<Ycross[0]<<
"\n\t Xcross[1] "
2222 << Xcross[1]<<
", Ycross[1] " <<Ycross[1]<<
" e charge = "<<Charge<<
", FiLimitAdmissible "
2223 <<FiLimitAdmissible<<
" (X="<<Oxx+Rr*
cos(FiLimitAdmissible)
2224 <<
", Y="<< Oyy+Rr*
sin(FiLimitAdmissible)<<
")." <<endl;
2234 if ( BadTrack_ParStt(
2283 Short_t *Listofhits,
2326 Distance[MAXSTTHITS+1],
2335 XintersectionList[5],
2336 YintersectionList[5];
2353 epsilonTheta = strawradius/Rr;
2356 cout<<
"\n\nevt "<<IVOLTE<<
", FI0 "<<FI0<<
", Filimit "
2357 << FiLimitAdmissible+epsilonTheta <<
", Ox "<<Oxx<<
", Oy "<<Oyy<<
", R "<<Rr<<endl;
2359 for(i=0, ipurged=0; i<
nHits; i++){
2362 if(istampa>1)cout<<
"\thit // n. "<<Listofhits[
i]<<
", fi "<<fi<<endl;
2366 if( fi>FiLimitAdmissible+epsilonTheta)
continue;
2369 if( fi > FiLimitAdmissible+epsilonTheta )
continue;
2375 if (fi < FiLimitAdmissible-epsilonTheta)
continue;
2377 if(istampa>1)cout<<
"in SttSkewCleanup : hit preso!"<<endl;
2379 ListHits[ipurged]=Listofhits[
i];
2384 if(istampa>1)cout<<
"in SttSkewCleanup : hit skew prima di purga = "
2385 <<nHits<<
", dopo purga "<<ipurged<<endl;
2390 nHitsRight=nHitsLeft=0;
2398 nHitsRight=nHitsLeft=0;
2399 for(i=0;i<
nHits; i++){
2400 if(info[ListHits[i]][0]<0.){
2409 if(istampa>1)cout<<
"in SttSkewCleanup : n. hit skew Left = "
2410 <<nHitsLeft<<
", right "<< nHitsRight <<endl;
2461 if(istampa>1)cout<<
"in SttSkewCleanup : flagLeft (-1,0,1) = "<<flagSttL
2462 <<
", right "<< flagSttR <<endl;
2463 if (flagSttR == 1 || flagSttL == 1 ) {
2471 if( flagSttR == 0 && (XcrossR[0]-XcrossR[1])*(XcrossR[0]-XcrossR[1])+
2472 (YcrossR[0]-YcrossR[1])*(YcrossR[0]-YcrossR[1])
2473 < 16.*strawradius*strawradius ){
2475 if(istampa>1)cout<<
"in SttSkewCleanup : distanza entrata-uscita<4*strawradius,flagSttR set at -1!\n";
2478 if( flagSttL == 0 && (XcrossL[0]-XcrossL[1])*(XcrossL[0]-XcrossL[1])+
2479 (YcrossL[0]-YcrossL[1])*(YcrossL[0]-YcrossL[1])
2480 < 16.*strawradius*strawradius ){
2482 if(istampa>1)cout<<
"in SttSkewCleanup : distanza entrata-uscita<4*strawradius,flagSttL set at -1!\n";
2485 if (flagSttR != 0 && flagSttL != 0 ) {
2487 if(istampa>1)cout<<
"in SttSkewCleanup : flagSttR = "<<flagSttR
2488 <<
", e flagSttL = "<<flagSttL<<
", exit con true!\n";
2500 if( flagSttL == 0 && flagSttR == 0 ) {
2501 XintersectionList[0]=XcrossL[0];
2502 YintersectionList[0]=YcrossL[0];
2503 XintersectionList[1]=XcrossL[1];
2504 YintersectionList[1]=YcrossL[1];
2505 XintersectionList[2]=XcrossR[0];
2506 YintersectionList[2]=YcrossR[0];
2507 XintersectionList[3]=XcrossR[1];
2508 YintersectionList[3]=YcrossR[1];
2522 if( (
fabs(XcrossL[0]-Xcross[0])<1.e-5&&
fabs(YcrossL[0]-Ycross[0])<1.e-5)
2524 (
fabs(XcrossL[1]-Xcross[0])<1.e-5&&
fabs(YcrossL[1]-Ycross[0])<1.e-5)
2541 XintersectionList[
i]=XcrossL[
i];
2542 YintersectionList[
i]=YcrossL[
i];
2548 XintersectionList[
i]=XcrossR[
i];
2549 YintersectionList[
i]=YcrossR[
i];
2554 if(
fabs(FiLimitAdmissible-FI0) < 2.*
PI){
2557 aux[0]=Oxx+Rr*
cos(FiLimitAdmissible);
2558 aux[1]=Oyy+Rr*
sin(FiLimitAdmissible);
2559 XintersectionList[2]=aux[0];
2560 YintersectionList[2]=aux[1];
2565 if( flagOutStt ==0){
2566 XintersectionList[nintersections]=XcrossOut[0];
2567 XintersectionList[nintersections+1]=XcrossOut[1];
2568 YintersectionList[nintersections]=YcrossOut[0];
2569 YintersectionList[nintersections+1]=YcrossOut[1];
2585 if(
fabs(FiLimitAdmissible-FI0) < 2.*
PI){
2588 if(
fabs(aux[0]-Xcross[0])<1.e-5&&
fabs(aux[1]-Ycross[0])<1.e-5 ){
2591 if( flagOutStt ==0){
2594 if( (
fabs(XcrossOut[0]-Xcross[0])<1.e-5
2595 &&
fabs(YcrossOut[0]-Ycross[0])<1.e-5 )
2597 (
fabs(XcrossOut[1]-Xcross[0])<1.e-5
2598 &&
fabs(YcrossOut[1]-Ycross[0])<1.e-5 )
2605 if (nnn == 0)
return false;
2610 if(
fabs(aux[0]-Xcross[1])<1.e-5&&
fabs(aux[1]-Ycross[1])<1.e-5 ){
2616 if( flagOutStt ==0){
2619 if( (
fabs(XcrossOut[0]-Xcross[0])<1.e-5
2620 &&
fabs(YcrossOut[0]-Ycross[0])<1.e-5 )
2622 (
fabs(XcrossOut[1]-Xcross[0])<1.e-5
2623 &&
fabs(YcrossOut[1]-Ycross[0])<1.e-5 )
2630 if (nnn == 0)
return false;
2645 cout<<
"in SttSkewCleanup, IVOLTE = "<<IVOLTE<<
"\n\t Xcross[0] "
2646 << Xcross[0]<<
", Ycross[0] " <<Ycross[0]<<
"\n\t Xcross[1] "
2647 << Xcross[1]<<
", Ycross[1] " <<Ycross[1]<<
", R = "<<Rr<<
", Lungh. arco "<<length<<endl;
2654 Sprevious =
atan2(Ycross[0]-Oyy,Xcross[0]-Oxx);
2658 for (i=0; i<
nHits;i++){
2666 if(istampa>1)cout<<
"in SttSkewCleanup :hit n. "<< ListHits[
i]
2667 <<
" is NOT inside the arc between entrance and exit; hit excluded!\n";
2672 Distance[
i] = 2.*Rr*Rr*(1.-
cos(S[i]-Sprevious));
2677 if(Distance[i]<0.) Distance[
i]=0.;
2678 if(istampa>=2)cout<<
"in SttSkewCleanup, Hit n. "<< ListHits[
i]<<
" has Distance "
2679 <<
sqrt(Distance[i]) <<endl;
2680 if(Distance[i]>cut2){
2681 if(Distance[i]>16.*cut2){
2682 if(istampa>=2)cout<<
"in SttSkewCleanup, Hit n. "<< ListHits[
i]<<
" has Distance "
2683 <<
sqrt(Distance[i]) <<
" which is >4.*cut [="<<cut<<
"], discard the track!"<<endl;
2686 if(istampa>=2)cout<<
"in SttSkewCleanup, Hit n. "<< ListHits[
i]<<
" has Distance "
2687 <<
sqrt(Distance[i]) <<
" which is > cut [="<<cut<<
"]."<<endl;
2695 if( ninside < ((
int) 0.5*length/strawradius )-islack ){
2697 cout<<
"in SttSkewCleanup, n. Hits inside = "<<ninside
2698 <<
" is < n. hits that should be inside at least = "
2699 <<((int) 0.5*length/strawradius)<<
"-islack ("<<
2700 islack<<
"), track rejected!\n";
2715 (Oxx+Rr*
cos(S[nHits-1])-Xcross[1])*(Oxx+Rr*
cos(S[nHits-1])-Xcross[1]) +
2716 (Oyy+Rr*
sin(S[nHits-1])-Ycross[1])*(Oyy+Rr*
sin(S[nHits-1])-Ycross[1]);
2718 if(istampa>=2)cout<<
"in SttSkewCleanup, last Hit n. "<< ListHits[nHits-1]<<
" has Distance from boundary "
2719 <<
sqrt(Distance[nHits]) <<endl;
2720 if( Distance[nHits]>cut2 ){
2721 if( Distance[nHits]>16.*cut2){
2722 if(istampa>=2)cout<<
"in SttSkewCleanup, last Hit n. "<< ListHits[nHits-1]<<
" has Distance from boundary "
2723 <<
sqrt(Distance[nHits]) <<
" which is >4 .*cut [="<<cut<<
"], discard the track!"<<endl;
2726 if(istampa>=2)cout<<
"in SttSkewCleanup, last Hit n. "<< ListHits[nHits-1]<<
" has Distance from boundary "
2727 <<
sqrt(Distance[nHits]) <<
" and it is > cut [="<<cut<<
"]."<<endl;
2735 if(istampa>=2)cout<<
"in SttSkewCleanup, reject this track because ibad = "<< ibad
2736 <<
" and it is > maxnum [="<<maxnum<<
"].\n";
2763 Short_t *ListHitsPar,
2840 cout<<
" IVOLTE = "<<IVOLTE<<
", prima di paral cleanup, nHitsPar "<<nHitsPar<<
2841 ", KAPPA = "<<KAPPA <<
", charge "<<Charge<<
", FI0 "<<FI0
2842 <<
"\n\tFiLimitAdmissible "<<
2843 FiLimitAdmissible<<
", X limit "<<Oxx+Rr*
cos(FiLimitAdmissible)<<
2844 ", Y limit "<<Oyy+Rr*
sin(FiLimitAdmissible)<<
", Ox "<<Oxx<<
", Oy "<<Oyy<<
", R "<<Rr<<endl;
2851 if(!SttParalCleanup(
2917 Short_t yes_intersect;
2944 if(yes_intersect==0 ) {
2959 Xintersect = Xcross[0];
2960 Yintersect = Ycross[0];
2963 Zintersect = (FiOrderedList[0]-fi0)/kappa;
2973 if( Zintersect<= Zup - extra_distance_Z &&
2974 Zintersect>= Zlow + extra_distance_Z
3066 if(yes_intersect==0 ) {
3082 Zintersect[0] = (FiOrderedList[0]-fi0)/kappa;
3090 if( Zintersect[0]<= Zup - extra_distance_Z &&
3091 Zintersect[0]>= Zlow + extra_distance_Z
3095 fi =
atan2(Ycross[0],Xcross[0]);
3101 for(i=0; i<ngapInner; i++){
3102 if( fi <gap_upInner[i] && fi > gap_lowInner[i] ) {
3119 Xintersect[0] = Xcross[0];
3120 Yintersect[0] = Ycross[0];
3125 Xintersect[0] = -99999. ;
3131 if(ROuterBarrel < 0. ){
3133 Xintersect[1] = -99999. ;
3149 if(yes_intersect==0 ) {
3165 Zintersect[1] = (FiOrderedList[0]-fi0)/kappa;
3175 if( Zintersect[1]<= Zup - extra_distance_Z &&
3176 Zintersect[1]>= Zlow + extra_distance_Z
3179 fi =
atan2(Ycross[0],Xcross[0]);
3185 Xintersect[1] = Xcross[0];
3186 for(i=0; i<ngapOuter; i++){
3187 if( fi <gap_upOuter[i] && fi > gap_lowOuter[i] ) {
3188 Xintersect[1] = -99999.;
3193 Xintersect[1] = -99999.;
3197 Xintersect[1] = -99999.;
3201 if( Xintersect[1] > -99998. )
3203 Yintersect[1] = Ycross[0];
3244 if( -charge*kappa * ZLayerBegin <= 0. ) {
3251 angle = fi0 + ZLayerBegin* kappa;
3253 X = Ox + R*
cos( angle );
3256 Y = Oy + R*
sin( angle );
3262 if ( ZLayerBegin == 1.97){
3265 )
return true ;
else return false;
3267 }
else if( ZLayerBegin == 2.41) {
3270 )
return true ;
else return false;
3272 }
else if( ZLayerBegin == 3.97) {
3275 )
return true ;
else return false;
3277 }
else if( ZLayerBegin == 4.41) {
3280 )
return true ;
else return false;
3282 }
else if( ZLayerBegin == 6.97) {
3285 )
return true ;
else return false;
3287 }
else if( ZLayerBegin == 7.41) {
3290 )
return true ;
else return false;
3292 }
else if( ZLayerBegin == 9.97) {
3295 )
return true ;
else return false;
3297 }
else if( ZLayerBegin == 10.41) {
3300 )
return true ;
else return false;
3302 }
else if( ZLayerBegin == 14.77) {
3305 )
return true ;
else return false;
3307 }
else if( ZLayerBegin == 15.21) {
3310 )
return true ;
else return false;
3312 }
else if( ZLayerBegin == 21.77) {
3315 )
return true ;
else return false;
3317 }
else if( ZLayerBegin == 22.21) {
3320 )
return true ;
else return false;
3323 cout<<
"PndTrkCleanup.cxx::Track_Crosses_MvdMiniDisk_withMargin WARNING, this Mvd MiniDisk apparently"<<
3324 " is not in the list of known Mvd MiniDisks !";
3342 Short_t (*ListParContiguous)[6],
3343 Short_t *nParContiguous,
3345 Short_t *StrawCode2,
3359 Short_t nScitilHitsInTrack,
3360 Short_t* ListSciTilHitsinTrack,
3366 farthest_hit_is_boundary,
3377 tListInnerHitsLeft[
nHits],
3378 tListInnerHitsRight[
nHits],
3379 tListOuterHitsLeft[
nHits],
3380 tListOuterHitsRight[
nHits],
3404 ListInnerHitsLeft(tListInnerHitsLeft,nHits,
"ListInnerHitsLeft"),
3405 ListInnerHitsRight(tListInnerHitsRight,nHits,
"ListInnerHitsRight"),
3406 ListOuterHitsLeft(tListOuterHitsLeft,nHits,
"ListOuterHitsLeft"),
3407 ListOuterHitsRight(tListOuterHitsRight,nHits,
"ListOuterHitsRight");
3439 FiStart =
atan2(-Oy,-Ox);
3440 if( FiStart < 0.) FiStart +=
TWO_PI;
3441 if( FiStart < 0.) FiStart = 0.;
3457 for(i=0;i<nScitilHitsInTrack;i++){
3458 dist2 = (posizSciTil[ ListSciTilHitsinTrack[
i] ][0] - Xcross[0])*
3459 (posizSciTil[ ListSciTilHitsinTrack[i] ][0] - Xcross[0])
3461 (posizSciTil[ ListSciTilHitsinTrack[
i] ][1] - Ycross[0])*
3462 (posizSciTil[ ListSciTilHitsinTrack[i] ][1] - Ycross[0]);
3469 if(!good)
return false;
3519 if(istampa>0){ cout<<
"from XYCleanup,after ListAxialSectorsCrossedbyTrack_and_Hits :"<<endl<<
3520 "\tnArcs_populated "<<nArcs_populated<<
", ordered list of Sectors crossed :"<<endl;
3521 for(
int kg=0;kg<nArcs_populated;kg++){cout<<
"\tSector populated with "
3522 <<nHitsInArc[kg]<<
" hits; loro lista :"<<endl;
3523 for(
int nn=0;nn<nHitsInArc[kg];nn++){cout<<
"\t\taxial hit n. "<<ListHitsInArc[nn][kg]<<
3524 ", R**2 "<< info[ListHitsInArc[nn][kg]][0]*info[ListHitsInArc[nn][kg]][0]+
3525 info[ListHitsInArc[nn][kg]][1]*info[ListHitsInArc[nn][kg]][1] << endl;}
3549 farthest_hit_is_boundary =
false;
3552 for(i=nArcs_populated-1;i>=0; i--){
3553 for(j=0;j<nHitsInArc[
i];j++){auxListHits[j]=ListHitsInArc[j][
i];}
3557 farthest_hit_is_boundary,
3578 farthest_hit_is_boundary=
true;
bool SttSkewCleanup(Double_t ApotemaMaxSkew, Double_t ApotemaMinSkew, Short_t Charge, Double_t cut, Double_t FI0, Double_t FiLimitAdmissible, Double_t GAP, Double_t info[][7], int istampa, int IVOLTE, Short_t *Listofhits, Short_t maxnum, int MAXSTTHITS, Short_t nHits, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RStrawDetMax, Double_t *S, Double_t Start[3], Double_t Strawradius)
const int MVD_BARREL_LAYERS_PARTIAL_AZIMUTH
bool IsInMvdMiniDisk6_97to6_99(Double_t X, Double_t Y)
bool IsInMvdMiniDisk9_97to9_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
friend F32vec4 cos(const F32vec4 &a)
void ListAxialSectorsCrossedbyTrack_and_Hits(Double_t Ox, Double_t Oy, Double_t R, Double_t Charge, Short_t nHits, Short_t *ListHits, Double_t info[][7], Short_t &nArcs_populated, Short_t nHitsInArc[56], Short_t(*ListHitsInArc)[56])
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_GAP_LOW_OUTER[11][13]
const Double_t DIAMETERSTRAWTUBE2
bool IsThereHitInMvdMiniDisk(Double_t ZLayerBegin, Short_t nPixelHitsinTrack, Short_t *ListMvdPixelHitsinTrack, Double_t *XMvdPixel, Double_t *YMvdPixel, Double_t *ZMvdPixel, Short_t nStripHitsinTrack, Short_t *ListMvdStripHitsinTrack, Double_t *XMvdStrip, Double_t *YMvdStrip, Double_t *ZMvdStrip, PndTrkCTGeometryCalculations *GeometryCalculator)
bool Track_Crosses_MvdBarrelPartialAzimuthalCoverage(Double_t Ox, Double_t Oy, Double_t R, Double_t fi0, Double_t kappa, Double_t charge, Double_t Zlow, Double_t Zup, Double_t RInnerBarrel, int ngapInner, const Double_t *gap_lowInner, const Double_t *gap_upInner, Double_t ROuterBarrel, int ngapOuter, const Double_t *gap_lowOuter, const Double_t *gap_upOuter, PndTrkCTGeometryCalculations *GeometryCalculator, Double_t extra_distance_Z, Double_t *Xintersect, Double_t *Yintersect, Double_t *Zintersect)
friend F32vec4 sqrt(const F32vec4 &a)
const int MVD_MINIDISK_LAYERS
bool IsInTargetPipe(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t fi0, Double_t kappa, Short_t charge, Double_t gap)
void ChooseEntranceExit3(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList, Double_t *FiOrderedList)
bool IsInMvdMiniDisk6_97to6_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
friend F32vec4 sin(const F32vec4 &a)
bool IsInMvdMiniDisk10_41to10_43(Double_t X, Double_t Y)
bool IsInMvdMiniDisk2_41to2_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool Track_Crosses_MvdMiniDisk_withMargin(Double_t ZLayerBegin, Double_t xmargin, Double_t ymargin, Double_t Ox, Double_t Oy, Double_t R, Double_t fi0, Double_t kappa, Double_t charge, PndTrkCTGeometryCalculations *GeometryCalculator)
Short_t FindTrackEntranceExitHexagonCircleLeft(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2])
bool IsInMvdMiniDisk9_97to9_99(Double_t X, Double_t Y)
bool IsInMvdMiniDisk21_77to21_79withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInMvdMiniDisk7_41to7_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
void SeparateInnerOuterParallel(Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t RStrawDetInnerParMax, Short_t *nInnerHits, Short_t *ListInnerHits, Short_t *nOuterHits, Short_t *ListOuterHits, Short_t *nInnerHitsLeft, Short_t *ListInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *ListInnerHitsRight, Short_t *nOuterHitsLeft, Short_t *ListOuterHitsLeft, Short_t *nOuterHitsRight, Short_t *ListOuterHitsRight)
bool IsInMvdMiniDisk14_77to14_79(Double_t X, Double_t Y)
void ChooseEntranceExitbis(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList, Double_t Xcross[2], Double_t Ycross[2])
const int MVD_DISK_LAYERS
const int MAX_NOT_CONNECTED
void SeparateInnerOuterRightLeftAxialStt(Double_t info[][7], Short_t *ListHits, Short_t nHits, Double_t RStrawDetInnerParMax, Short_t *ListInnerHitsLeft, Short_t *ListInnerHitsRight, Short_t *ListOuterHitsLeft, Short_t *ListOuterHitsRight, Short_t *nInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *nOuterHitsLeft, Short_t *nOuterHitsRight)
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_GAP_LOW_INNER[11][13]
bool XYCleanup(int istampa, Double_t info[][7], Short_t(*ListParContiguous)[6], Short_t *nParContiguous, Short_t *StrawCode, Short_t *StrawCode2, Short_t *TubeID, Double_t *xTube, Double_t *yTube, Double_t *zTube, Double_t *xxyyTube, Double_t Ox, Double_t Oy, Double_t R, Short_t Charge, Short_t *ListHits, Short_t nHits, Double_t RStrawDetInnerParMax, Short_t nScitilHitsInTrack, Short_t *ListSciTilHitsinTrack, Double_t posizSciTil[][3])
bool IsInMvdMiniDisk15_21to15_23withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
const Double_t RADIUSSCITIL
const int MVD_BARREL_LAYERS_FULL_AZIMUTH
const Double_t SEMILENGTH_STRAIGHT
const Double_t STRAWRADIUS
bool SttParalCleanup(Double_t ApotemaInnerParMax, Double_t ApotemaMinOuterPar, Short_t Charge, Double_t FI0, Double_t FiLimitAdmissible, Double_t GAP, Double_t info[][7], int istampa, int IVOLTE, Short_t *Listofhits, Short_t nHits, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RStrawDetMax, Double_t RStrawDetMin, Double_t Start[3], Double_t Strawradius)
bool IsInMvdMiniDisk1_97to1_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
const Double_t MVD_BARREL_FULL_AZIMUTH_MAX_RADIUS[3]
bool IsInMvdMiniDisk22_21to22_23(Double_t X, Double_t Y)
bool IsInMvdMiniDisk21_77to21_79(Double_t X, Double_t Y)
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_RADIUS_INNER[11]
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_GAP_UP_INNER[11][13]
bool IsInMvdMiniDisk14_77to14_79withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
friend F32vec4 fabs(const F32vec4 &a)
const Double_t MVD_DISK_Z[2]
bool IsInsideArc(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Double_t Spoint)
bool Track_Crosses_MvdBarrelFullAzimuthalCoverage(Double_t Ox, Double_t Oy, Double_t R, Double_t fi0, Double_t kappa, Double_t charge, const Double_t Zlow, const Double_t Zup, Double_t RBarrel, PndTrkCTGeometryCalculations *GeometryCalculator, Double_t extra_distance_Z, Double_t &Xintersect, Double_t &Yintersect, Double_t &Zintersect)
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_Z_LOW[11]
const int MAXSTTHITSINTRACK
const Double_t MVD_BARREL_FULL_AZIMUTH_Z_LOW[3]
bool IsInMvdMiniDisk4_41to4_43(Double_t X, Double_t Y)
Short_t FindTrackEntranceExitHexagonCircleRight(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2])
const Double_t MVD_Z_LAYER_BEGIN[12]
bool IsInMvdMiniDisk2_41to2_43(Double_t X, Double_t Y)
bool IsInMvdMiniDisk7_41to7_43(Double_t X, Double_t Y)
bool BadTrack_ParStt(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t Stawradius, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Short_t nHits, Short_t *ListHits, Double_t info[][7], int istampa, Double_t cut, Short_t maxnum, Short_t islack)
bool IsInMvdMiniDisk15_21to15_23(Double_t X, Double_t Y)
const Double_t MVD_DISK_MAX_RADIUS[2]
bool GoodTrack(Double_t info[][7], bool farthest_hit_is_boundary, Double_t Ox, Double_t Oy, Double_t R, Short_t Charge, Short_t nHits, Short_t *ListHits, Short_t *StrawCode, Short_t *StrawCode2, Short_t *TubeID, Short_t *nParContiguous, Short_t ListParContiguous[][6], Double_t *xTube, Double_t *yTube, Double_t *zTube, Double_t *xxyyTube, Short_t &holes)
bool IsInMvdMiniDisk3_97to3_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
Short_t FindIntersectionsOuterCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RMax, Double_t Xcross[2], Double_t Ycross[2])
Double_t CalculateArcLength(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t *Xcross, Double_t *Ycross)
bool IsThereMvdHitInBarrel(Double_t Xintersect, Double_t Yintersect, Double_t Zintersect, Short_t nPixelHitsinTrack, Short_t *ListMvdPixelHitsinTrack, Double_t *XMvdPixel, Double_t *YMvdPixel, Double_t *ZMvdPixel, Short_t nStripHitsinTrack, Short_t *ListMvdStripHitsinTrack, Double_t *XMvdStrip, Double_t *YMvdStrip, Double_t *ZMvdStrip)
Short_t FindTrackEntranceExitbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2])
Short_t FindTrackEntranceExitbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2])
const Double_t MVD_DISK_MIN_RADIUS[2]
bool IsInMvdMiniDisk22_21to22_23withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInMvdMiniDisk4_41to4_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_Z_UP[11]
bool TrackCleanup(Double_t ApotemaMaxInnerPar, Double_t ApotemaMaxSkew, Double_t ApotemaMinOuterPar, Double_t ApotemaMinSkew, Double_t *auxS, Short_t Charge, Double_t FI0, Double_t GAP, Double_t info[][7], int istampa, int IVOLTE, Double_t KAPPA, Short_t *ListHitsPar, Short_t *ListHitsSkew, int MAXSTTHITS, Short_t nHitsPar, Short_t nHitsSkew, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RStrawDetMax, Double_t RStrawDetMin, Double_t Start[3], Double_t Strawradius)
bool IsInMvdMiniDisk1_97to1_99(Double_t X, Double_t Y)
const Double_t MVD_BARREL_FULL_AZIMUTH_Z_UP[3]
const int MVD_BARREL_PARTIAL_AZIMUTH_NGAP[11][2]
bool IsInMvdMiniDisk3_97to3_99(Double_t X, Double_t Y)
bool MvdCleanup(Double_t Ox, Double_t Oy, Double_t R, Double_t fi0, Double_t kappa, Double_t charge, Double_t *XMvdPixel, Double_t *XMvdStrip, Double_t *YMvdPixel, Double_t *YMvdStrip, Double_t *ZMvdPixel, Double_t *ZMvdStrip, Short_t nPixelHitsinTrack, Short_t *ListMvdPixelHitsinTrack, Short_t nStripHitsinTrack, Short_t *ListMvdStripHitsinTrack, Double_t extra_distance, Double_t extra_distance_Z, PndTrkCTGeometryCalculations *GeomCalculator)
const Double_t ZCENTER_STRAIGHT
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_RADIUS_OUTER[11]
bool IsInMvdMiniDisk10_41to10_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
const Double_t MVD_BARREL_PARTIAL_AZIMUTH_GAP_UP_OUTER[11][13]
const Double_t DIMENSIONSCITIL
bool MvdCleanup_prova(Double_t Ox, Double_t Oy, Double_t R, Double_t fi0, Double_t kappa, Double_t charge, Double_t semiverticalgap, Short_t nMvdHits, PndTrkCTGeometryCalculations *GeomCalculator)