124 {
125 static int nfound = 0;
126 static float sumprob = 0.0;
127
128 MdcxHel thel( 0., 0., 0., 0., 0. );
130 int nSeg = segList.length();
131 for ( int i = 0; i < nSeg; i++ ) { segList[i]->SetUsedOnHel( 0 ); }
132
133 double xp, yp, xl1, yl1, rl1, xl2, yl2, rl2;
134 double d0g, phi0g, omegag, z0g, tanlg;
135 double d0g_sl, phi0g_sl, omegag_sl, z0g_sl, tanlg_sl;
136 double zintAU, zintAV, zintAU_sl, zintAV_sl = 9999.;
137 double rl1_sl, rl2_sl;
138 double xc = 1.e9, yc = 1.e9;
139 double sinPhi0g_sl, cosPhi0g_sl, xp_sl, yp_sl;
140 double phiAx = 1.e9, phiStU, phiStV, xl1_sl, yl1_sl, xl2_sl, yl2_sl, xl1_0, yl1_0, xl2_0, yl2_0;
141 double sx1, sy1, sx2, sy2;
142 double x0g, y0g;
143 double fltAx = 1.e9, ztest, fltL_sl, ztest_sl;
144 int floop, trkCount = 0;
145
146
148 {
149
153
155 std::cout << " Test combo: (" << axlay << "," << stUlay << "," << stVlay << ")"
156 << std::endl;
157
160
161
162
163
164 for ( int iAx = 0; iAx < nSeg; iAx++ )
165 {
166 bool b_useGood_stU = true;
167 bool b_useGood_stV = true;
168 if ( ( segList[iAx]->GetUsedOnHel() != 0 ) || ( segList[iAx]->Fail() != 0 ) ||
169 ( segList[iAx]->
SuperLayer( 0 ) != axlay ) || ( segList[iAx]->Origin() != -1 ) )
170 continue;
171
173 {
174 std::cout << "---------1.Ax seg------ No." << iAx << std::endl;
175 segList[iAx]->printSegAll();
176 }
177
178
179 omegag = segList[iAx]->Omega();
181 {
182 if ( 4 ==
m_debug ) std::cout <<
"SKIP by maxTrkOmega " << fabs( omegag ) << std::endl;
183 continue;
184 }
185 if ( 4 ==
m_debug ) std::cout <<
" iAx omegag = " << omegag << std::endl;
187
188 const HepAList<MdcxHit>& hitsAx = segList[iAx]->XHitList();
189
190
191 d0g_sl = segList[iAx]->D0_sl_approx();
192 phi0g_sl = segList[iAx]->Phi0_sl_approx();
193 omegag_sl = 0.0;
194
195
196 sinPhi0g_sl = -
sin( phi0g_sl );
197 cosPhi0g_sl =
cos( phi0g_sl );
198 xp_sl = segList[iAx]->Xref() + sinPhi0g_sl * d0g_sl;
199 yp_sl = segList[iAx]->Yref() + cosPhi0g_sl * d0g_sl;
200 d0g_sl = yp_sl * cosPhi0g_sl + xp_sl * sinPhi0g_sl;
201 fltL_sl = segList[iAx]->Xref() * cosPhi0g_sl - segList[iAx]->Yref() * sinPhi0g_sl;
203 {
204 std::cout <<
"--Ax :" prt( d0g_sl )
prt( phi0g_sl )
prt( omegag_sl )
prt( sinPhi0g_sl )
206 << std::endl;
207 }
208
210 {
212 omegag = ohel.
Omega();
219 phiAx = atan2( y0g - yc, x0g - xc );
220 fltAx =
dlen( -2, phi0g, -1, segList[iAx]->Phi0(), omegag );
221
223 {
224 std::cout << "--Ax :"
225 << " ohel ";
227 }
228 }
229
230
231
232
233
234 for ( int iStU = -1; true; )
235 {
236 if ( !b_useGood_stU && ( iStU >= ( nSeg - 1 ) ) ) break;
237 if ( b_useGood_stU && ( iStU >= ( nSeg - 1 ) ) )
238 {
239 iStU = -1;
240 b_useGood_stU = false;
241 }
242 iStU++;
243 if ( ( segList[iAx]->GetUsedOnHel() != 0 ) || ( segList[iStU]->GetUsedOnHel() != 0 ) ||
244 ( segList[iStU]->Fail() != 0 ) || ( segList[iStU]->
SuperLayer( 0 ) != stUlay ) ||
245 ( segList[iStU]->Origin() != -1 )
246
247 || ( b_useGood_stU && ( segList[iStU]->Nhits() < 4 ) ) )
248 { continue; }
249
251 {
252 std::cout << " Test combo: AUV " << axlay << "," << stUlay << "," << stVlay
253 << std::endl;
254 std::cout << "---------2.St U seg ------No." << iStU << std::endl;
255 segList[iStU]->printSeg();
256 std::cout << " omega of seg iStU = " << segList[iStU]->Omega() << std::endl;
257 }
258
259
260 const HepAList<MdcxHit>& hitsStU = segList[iStU]->XHitList();
261 double dPhiAU = fabs( hitsAx[0]->phiMid() - hitsStU[0]->phiMid() );
264 {
265 if ( dPhiAU > max_dPhiAU )
266 { cout << "SKIP by dPhiAU " << dPhiAU << " > " << max_dPhiAU << endl; }
267 else { cout << "KEEP by dPhiAU " << dPhiAU << " <= " << max_dPhiAU << endl; }
268 std::cout << " phi mid Ax " << hitsAx[0]->phiMid() << " StU " << hitsStU[0]->phiMid()
269 << std::endl;
270 std::cout << std::endl;
271 }
273
274 if ( dPhiAU > max_dPhiAU ) { continue; }
275
276
277 xl1_0 = segList[iStU]->Xline_bbrrf();
278 yl1_0 = segList[iStU]->Yline_bbrrf();
279 sx1 = segList[iStU]->Xline_slope();
280 sy1 = segList[iStU]->Yline_slope();
282 std::cout
prt( xl1_0 )
prt( yl1_0 )
prt( sx1 )
prt( sy1 )
prt( omegag ) << std::endl;
284 {
285 zintAU =
findz_cyl( iAx, iStU, segList );
286 xl1 = xl1_0 + sx1 * zintAU;
287 yl1 = yl1_0 + sy1 * zintAU;
288 rl1 = sqrt( xl1 * xl1 + yl1 * yl1 );
289 phiStU = atan2( yl1 - yc, xl1 - xc );
291 cout
prt( zintAU )
prt( xl1 )
prt( yl1 )
prt( rl1 )
prt( phiStU ) << endl;
292 }
293 else { zintAU = -9999.; }
294
295
296 zintAU_sl =
findz_sl( iAx, iStU, segList );
297 xl1_sl = xl1_0 + sx1 * zintAU_sl;
298 yl1_sl = yl1_0 + sy1 * zintAU_sl;
299 rl1_sl = sqrt( xl1_sl * xl1_sl + yl1_sl * yl1_sl );
301 cout
prt( zintAU_sl )
prt( xl1_sl )
prt( yl1_sl )
prt( rl1_sl ) << endl;
302
303
306 {
309 << std::endl;
310 continue;
311 }
314 {
317 << std::endl;
318 continue;
319 }
320
321
322
323
324 for ( int iStV = -1; true; )
325 {
326 if ( !b_useGood_stV && ( iStV >= ( nSeg - 1 ) ) )
327 {
328 if ( 4 ==
m_debug ) std::cout << iStV <<
" no segments in V slayer " << std::endl;
329 break;
330 }
331 if ( b_useGood_stV && ( iStV >= ( nSeg - 1 ) ) )
332 {
333 iStV = -1;
334 b_useGood_stV = false;
335 }
336 iStV++;
337 if ( ( segList[iStV]->GetUsedOnHel() != 0 ) ||
338 ( segList[iStU]->GetUsedOnHel() != 0 ) ||
339 ( segList[iAx]->GetUsedOnHel() != 0 ) || ( segList[iStV]->Fail() != 0 ) ||
340 ( segList[iStV]->
SuperLayer( 0 ) != stVlay ) ||
341 ( segList[iStV]->Origin() != -1 )
342
343 || ( b_useGood_stV && ( segList[iStV]->Nhits() < 4 ) ) )
344 { continue; }
345
347 {
348 std::cout << " Test combo: AUV " << axlay << "," << stUlay << "," << stVlay
349 << std::endl;
350 std::cout << "---------3.St V seg ------No." << iStV << std::endl;
351 segList[iStV]->printSeg();
352 std::cout << " omega of seg iStV = " << segList[iStV]->Omega() << std::endl;
353 }
354
355
356 const HepAList<MdcxHit>& hitsStV = segList[iStV]->XHitList();
357 double dPhiAV = fabs( hitsAx[0]->phiMid() - hitsStV[0]->phiMid() );
359
361 {
362 if ( dPhiAV > max_dPhiAV )
363 { cout << "SKIP by dPhiAV " << dPhiAV << " > " << max_dPhiAV << endl; }
364 else { cout << "KEEP by dPhiAV " << dPhiAV << " <= " << max_dPhiAV << endl; }
365 std::cout << " phi mid Ax " << hitsAx[0]->phiMid() << " StV "
366 << hitsStV[0]->phiMid() << std::endl;
367 std::cout << std::endl;
368 }
370 if ( dPhiAV > max_dPhiAV ) { continue; }
371
372
373 xl2_0 = segList[iStV]->Xline_bbrrf();
374 yl2_0 = segList[iStV]->Yline_bbrrf();
375 sx2 = segList[iStV]->Xline_slope();
376 sy2 = segList[iStV]->Yline_slope();
378 {
379 zintAV =
findz_cyl( iAx, iStV, segList );
380 xl2 = xl2_0 + sx2 * zintAV;
381 yl2 = yl2_0 + sy2 * zintAV;
382 rl2 = sqrt( xl2 * xl2 + yl2 * yl2 );
384 {
385 segList[iAx]->printSeg();
386 segList[iStV]->printSeg();
387 cout << "zintAV " << zintAV << endl;
388 }
389 phiStV = atan2( yl2 - yc, xl2 - xc );
390 }
391 else { zintAV = -9999.; }
392
393
394 zintAV_sl =
findz_sl( iAx, iStV, segList );
395 xl2_sl = xl2_0 + sx2 * zintAV_sl;
396 yl2_sl = yl2_0 + sy2 * zintAV_sl;
397 rl2_sl = sqrt( xl2_sl * xl2_sl + yl2_sl * yl2_sl );
398
399
402 {
405 << std::endl;
406 continue;
407 }
410 {
413 << std::endl;
414 continue;
415 }
416
417
419 {
420
421
422 segList[iAx]->printSeg();
423 segList[iStU]->printSeg();
424 segList[iStV]->printSeg();
425 }
426 MdcxFittedHel fithel;
428 double first_prob = 0.0;
429 HepAList<MdcxHit> hitlist;
430 hitlist.append( hitsAx );
431 hitlist.append( hitsStU );
432 hitlist.append( hitsStV );
434 for ( int i = 0; i < hitlist.length(); i++ )
435 {
g_trkllmk->fill( hitlist[i]->Layer() ); }
436
437
438
439
440 floop = 1;
441 while ( floop )
442 {
444 std::cout << "---------4.Ax circle fit------" << std::endl;
446 {
447 if ( 4 ==
m_debug ) std::cout <<
"SKIP by omegag==0 " << std::endl;
448 break;
449 }
452 {
454 std::cout << "SKIP by zintAU out of range " << zintAU << " "
456 break;
457 }
460 {
462 std::cout << "SKIP by zintAU out of range " << zintAU << " "
464 break;
465 }
466
467
469 cout << "dlen calc. slay U " << segList[iStU]->SuperLayer() << " slay V "
470 << segList[iStV]->SuperLayer() << endl;
471 double fltLenUV =
473 omegag );
474
476 { cout
prt( fltLenUV )
prt( phiStU )
prt( phiStV )
prt( omegag ) << std::endl; }
478 {
481 break;
482 }
483 tanlg = ( zintAV - zintAU ) / fltLenUV;
485 cout << "dlen calc. slay A " << segList[iAx]->SuperLayer() << " slay U "
486 << segList[iStU]->SuperLayer() << endl;
487 double fltLenAU =
489 omegag );
490
492 {
505 }
506
507 z0g = zintAU - fltLenAU * tanlg;
509 cout
prt( z0g )
prt( tanlg )
prt( fltLenAU )
prt( zintAU )
prt( zintAV ) << endl;
510
511
514 {
516 std::cout << "SKIP by z0g out of range " << z0g << ">"
518 break;
519 }
520 ztest = z0g + fltAx * tanlg;
521 if ( 4 ==
m_debug ) std::cout
prt( ztest )
prt( fltAx ) << std::endl;
522
523
524
525 MdcxHel ghel( segList[iAx]->D0(), segList[iAx]->Phi0(), segList[iAx]->Omega(),
526 ztest, tanlg, 0.0, 11111, 0, segList[iAx]->Xref(),
527 segList[iAx]->Yref() );
528
529 MdcxFittedHel firstfit( hitlist, ghel, helixFitSigma );
530 first_prob = firstfit.Prob();
532 {
533 std::cout << " after first fit: " << std::endl;
534 firstfit.FitPrint();
535 }
537 {
539 MdcxFittedHel nextfit( hitlist, helixOrigin, helixFitSigma );
540 first_prob = nextfit.Prob();
541 fithel = nextfit;
543 for ( int i = 0; i < nextfit.Nhits(); i++ )
545 }
547 if ( 4 ==
m_debug ) cout <<
" prob after helix fitting = " << first_prob << endl;
548 floop = 0;
549 }
550
551
552
553
554
555 floop = 1;
556 while ( floop )
557 {
559 std::cout << "---------4.2 straight line fit------" << std::endl;
561 cout << " zintAU_sl " << zintAU_sl << " zintAV_sl " << zintAV_sl << endl;
563 {
564 if ( 4 ==
m_debug ) cout <<
" helix fit good , exit straight line fit." << endl;
565 break;
566 }
567
570 break;
573 break;
574
575 double dx = xl2_sl - xl1_sl;
576 double dy = yl2_sl - yl1_sl;
577 double dl = sqrt( dx * dx + dy * dy );
578 tanlg_sl = ( zintAV_sl - zintAU_sl ) / dl;
579 dx = xl1_sl + d0g_sl *
sin( phi0g_sl );
580 dy = yl1_sl - d0g_sl *
cos( phi0g_sl );
581 dl = sqrt( dx * dx + dy * dy );
582 z0g_sl = zintAU_sl - dl * tanlg_sl;
584 cout
prt( d0g_sl )
prt( phi0g_sl )
prt( z0g_sl )
prt( tanlg_sl ) << endl;
585
588 {
591 << std::endl;
592 break;
593 }
594
595 ztest_sl = z0g_sl + fltL_sl * tanlg_sl;
596 if ( 4 ==
m_debug ) cout
prt( ztest_sl ) << endl;
597
598
599 MdcxHel ghel( segList[iAx]->D0_sl_approx(), segList[iAx]->Phi0_sl_approx(),
600 omegag_sl, ztest_sl, tanlg_sl, 0.0, 11111, 0, segList[iAx]->Xref(),
601 segList[iAx]->Yref() );
602
603 MdcxFittedHel firstfit( hitlist, ghel, helixFitSigma );
604 first_prob = firstfit.Prob();
605
607 {
608 ghel.print();
609 std::cout << "first_prob " << first_prob << std::endl;
610 }
611
613 {
615 MdcxFittedHel nextfit( hitlist, helixOrigin, helixFitSigma );
616 first_prob = nextfit.Prob();
617 fithel = nextfit;
619 {
620 cout << " three seg sl nextfit" << endl;
621 nextfit.FitPrint();
622 }
623 }
624 floop = 0;
625 }
626
627
628
629
630 floop = 1;
631 while ( floop )
632 {
633 floop = 0;
635 std::cout << "---------5. try add seg to helix------" << std::endl;
637 {
639 std::cout <<
"prob" << first_prob <<
" " <<
probmin
640 << " fit NOT good, exit add segs " << std::endl;
641 break;
642 }
643 float bchisq = fithel.
Chisq() * helixFitSigma * helixFitSigma;
644 int bndof = fithel.
Nhits() - 5;
646 trkCount++;
647 segList[iAx]->SetUsedOnHel( trkCount );
648 segList[iStU]->SetUsedOnHel( trkCount );
649 segList[iStV]->SetUsedOnHel( trkCount );
650
652 {
653 cout << "in add seg to trail helix, klm seg:" << endl;
654 segList[iAx]->printSeg();
655 segList[iStU]->printSeg();
656 segList[iStV]->printSeg();
657 }
658
659
661 {
663 for ( int iSeg = 0; iSeg < nSeg; iSeg++ )
664 {
665 if ( ( segList[iSeg]->
SuperLayer( 0 ) != ilay ) ||
666 ( segList[iSeg]->GetUsedOnHel() != 0 ) ||
667 ( segList[iSeg]->Fail() != 0 ) || ( segList[iSeg]->Origin() != -1 ) )
668 continue;
670 {
671 std::cout << endl << "== add seg " << iSeg << " ";
672 segList[iSeg]->printSeg();
673 }
674
675
676 float phiAxSeg = segList[iAx]->XHitList()[0]->phiMid();
677 float phiAddSeg = segList[iSeg]->XHitList()[0]->phiMid();
678 double phiKNSegDiff = fabs( phiAxSeg - phiAddSeg );
679
680
681
682
683 int t_same = -999;
685 {
686
687
701 }
702
704
705 {
707 std::cout << " SKIP by phi diff,same " << t_same << " Ax " << phiAxSeg
708 << " iSeg " << phiAddSeg << " diff " << phiKNSegDiff
709 << std::endl;
710 continue;
711 }
712 else
713 {
715 std::cout << " phi diff OK, Ax " << phiAxSeg << " added " << phiAddSeg
716 << " diff=" << phiKNSegDiff << std::endl;
717 }
718
719
720 xp = segList[iSeg]->Xref() - segList[iSeg]->SinPhi0() * segList[iSeg]->D0();
721 yp = segList[iSeg]->Yref() + segList[iSeg]->CosPhi0() * segList[iSeg]->D0();
722 const HepAList<MdcxHit>& hitsSegAdd = segList[iSeg]->XHitList();
723 double proca = fithel.
Doca( hitsSegAdd[0]->wx(), hitsSegAdd[0]->wy(),
724 hitsSegAdd[0]->wz(), xp, yp );
726
727
729 {
735 }
736
739 {
740
742 {
743 std::cout << " SKIP by fabs(proca):" << fabs( proca ) << "<"
745 <<
" or Doca_Len:" << fithel.
Doca_Len() <<
"<" << fithel.
Lmax()
746 << std::endl;
747 }
748 }
749 else
750 {
752 {
753 std::cout << " proca & len OK, |proca| " << fabs( proca ) << "<"
755 <<
" && Doca_Len:" << fithel.
Doca_Len() <<
"<" << fithel.
Lmax()
756 << std::endl;
757 }
758 }
759 if ( fithel.
Doca_Len() < 0 )
continue;
760
763 {
764 MdcxFittedHel newhel;
765 newhel.
Grow( fithel, hitsSegAdd );
766 if ( newhel.
Nhits() != hitlist.length() )
767 {
769 {
770 cout <<
" rcs " << newhel.
Rcs() <<
"<=?"
772 }
773
774
776 {
778 {
779 cout <<
" prob " << newhel.
Prob() <<
"<" <<
probmin <<
", ReFit"
780 << endl;
781 }
783 }
785 {
786 cout <<
" refit prob " << newhel.
Prob() <<
"<" <<
probmin <<
" Fail? "
787 << newhel.
Fail() << endl;
788 }
789
791 {
792
793
794 fithel = newhel;
796 segList[iSeg]->SetUsedOnHel( trkCount );
797 bchisq = fithel.
Chisq() * helixFitSigma * helixFitSigma;
798 bndof = fithel.
Nhits() - 5;
800 if ( tprob > bprob ) bprob = tprob;
802 { cout <<
" segment ADDED, prob=" << newhel.
Prob() << endl; }
803 }
804 else
805 {
806 if ( 4 ==
m_debug ) std::cout <<
" fit FAILED" << std::endl;
807 }
808 }
809 else
810 {
811 segList[iSeg]->SetUsedOnHel( trkCount );
812 if ( 4 ==
m_debug ) cout <<
" segment ADDED, but no new hits" << endl;
813 }
814 }
815 }
816 }
817 if ( ( ( fithel.
Prob() < 0.90 ) && ( fithel.
Nhits() == 12 ) ) ||
818 ( fithel.
Fail() != 0 ) )
819 {
820 for ( int i = 0; i < nSeg; i++ )
821 {
822 if ( segList[i]->GetUsedOnHel() == trkCount ) segList[i]->SetUsedOnHel( 0 );
823 }
824 trkCount--;
825 break;
826 }
827
829 {
830 std::cout << "Track after add segs" << std::endl;
832 }
833
834
836 std::cout << "---------6. flip------" << std::endl;
838
839
840 int kki = 0;
841 int notduplicate = 1;
843 {
845 std::cout << "---------7. test saved track------" << std::endl;
846 const HepAList<MdcxHit>& junk =
MdcxTrklist[kki]->XHitList();
847 int overl = 0;
848 int kkj = 0;
849 while ( junk[kkj] )
850 {
851 int kkl = 0;
852 while ( hitlist[kkl] )
853 {
854 if ( hitlist[kkl] == junk[kkj] ) overl++;
855 kkl++;
856 }
857 kkj++;
858 }
860 cout << "overlap with track # " << kki << " is " << junk.length()
861 << " hitList " << hitlist.length() << " overlap " << overl << endl;
862 if ( ( hitlist.length() / 4. ) <= overl ) notduplicate = 0;
863
864
865 kki++;
866 }
867
869 for (
int iHit = 0; iHit < fithel.
Nhits(); iHit++ )
871
872
873 if ( notduplicate )
874 {
876 std::cout << "---------8. test worth saving?------"
877 << std::endl;
878 MdcxFittedHel* finehel = new MdcxFittedHel( hitlist, fithel );
879
881 {
882 std::cout << __FILE__ <<
" finehel Prob>0.001 " << finehel->
Prob() <<
" nhits "
883 << finehel->
Nhits() <<
">=15? "
884 <<
" bprob " << bprob <<
" >=?probmin " <<
probmin <<
" Fail==0? "
885 << finehel->
Fail() << std::endl;
887 }
888
889 if ( ( ( finehel->
Prob() > 0.001 ) || ( finehel->
Nhits() >= 15 ) ||
891
892 ) &&
893 ( finehel->
Fail() == 0 ) )
894 {
895 nfound++;
896 sumprob += finehel->
Prob();
897
898
899
900
901 int nodrop = 0;
902 if ( ( finehel->
Prob() > 0.05 ) || nodrop )
903 {
905
906 for (
int iHit = 0; iHit < finehel->
Nhits(); iHit++ )
907 {
910 }
911
912 }
913 else
914 {
915 MdcxFittedHel* drophel =
new MdcxFittedHel(
drophits( finehel ) );
916 float ratdrop = float( drophel->
Nhits() ) / float( finehel->
Nhits() );
918 cout << "APPEND track " << trkCount << ", drops "
919 << finehel->
Nhits() - drophel->
Nhits() <<
" helixnhit "
920 << finehel->
Nhits() <<
" drophit " << drophel->
Nhits()
921 << " hits, drop rate=" << ratdrop << ">?" << 0.5 << " prob "
922 << drophel->
Prob() <<
" >?" << finehel->
Prob() <<
" fail==0? "
923 << drophel->
Fail() << endl;
924 if ( ( drophel->
Prob() > finehel->
Prob() ) && ( ratdrop > 0.50 ) &&
925 ( drophel->
Fail() == 0 ) )
926 {
927 if ( 4 ==
m_debug ) cout <<
"append drop helix " << endl;
930 for (
int iHit = 0; iHit < drophel->
Nhits(); iHit++ )
932 delete finehel;
933 }
934 else
935 {
936 if ( 4 ==
m_debug ) cout <<
"append fine helix " << endl;
939 for (
int iHit = 0; iHit < finehel->
Nhits(); iHit++ )
941 delete drophel;
942 }
943 }
944
945
947 if ( ( 4 ==
m_debug ) && ( nwl > -1 ) )
948 {
950 {
951 cout << endl << "found track " << trkCount << std::endl;
954 }
955 }
956 }
957 else
958 {
959 for ( int i = 0; i < nSeg; i++ )
960 {
961 if ( segList[i]->GetUsedOnHel() == trkCount ) segList[i]->SetUsedOnHel( 0 );
962 }
963 delete finehel;
964 trkCount--;
965 }
966 }
967 }
968 }
969 }
970 }
971 if ( 4 ==
m_debug ) cout <<
"end of this combo" << endl;
972 }
974 cout << " In MdcxFindTracks, found " << trkCount << " good tracks" << endl;
975}
AIDA::IHistogram1D * g_dPhiAV
NTuple::Item< double > m_addSegAddPhiLay
AIDA::IHistogram1D * g_trklappend2
NTuple::Item< double > m_addSegSeedPhi0
NTuple::Item< double > m_segCombDLenUV
AIDA::IHistogram1D * g_trklappend1
NTuple::Item< long > m_addSegSlayer
NTuple::Item< long > m_addSegSame
AIDA::IHistogram1D * g_trklproca
NTuple::Item< double > m_addSegSeedSl
NTuple::Tuple * m_xtupleAddSeg1
NTuple::Item< double > m_addSegLen
NTuple::Item< double > m_addSegSeedPhiLay
NTuple::Item< double > m_segCombSlV
NTuple::Item< double > m_addSegSeedD0
AIDA::IHistogram1D * g_trklappend3
AIDA::IHistogram1D * g_trklhelix
AIDA::IHistogram1D * g_trkllmk
NTuple::Item< double > m_segCombPhiA
NTuple::Item< double > m_segCombSlA
NTuple::Item< double > m_segCombDLenAU
AIDA::IHistogram1D * g_trklgood
NTuple::Item< double > m_segCombSlU
NTuple::Item< double > m_segCombPhiU
AIDA::IHistogram1D * g_dPhiAU
NTuple::Item< double > m_segCombSameUV
NTuple::Item< double > m_addSegAddPhi
NTuple::Item< double > m_addSegSeedPhi
NTuple::Item< double > m_segCombPhiV
NTuple::Item< double > m_addSegAddPhi0
NTuple::Tuple * m_xtupleSegComb
NTuple::Item< double > m_addSegAddSl
NTuple::Item< double > m_segCombOmega
NTuple::Item< double > m_addSegAddD0
NTuple::Item< double > m_segCombSameAU
AIDA::IHistogram1D * g_trklfirstProb
NTuple::Tuple * m_xtupleAddSeg2
AIDA::IHistogram1D * g_omegag
NTuple::Item< long > m_addSegEvtNo
NTuple::Item< double > m_addSegPoca
float Mdcxprobab(int &ndof, float &chisq)
unsigned SuperLayer(const AList< TMLink > &list)
returns super layer pattern.
static const double twoPi
static const int nSuperLayer
static const double epsilon
MdcxFittedHel drophits(MdcxFittedHel *f)
double findz_sl(int i1, int i2, const HepAList< MdcxSeg > &slclus)
double findz_cyl(int i1, int i2, const HepAList< MdcxSeg > &slclus)
bool testFromSameTrack(MdcxSeg *seg1, MdcxSeg *seg2)
double dlen(int slay1, double p1, int slay2, double p2, double om)
MdcxHel TakeToOrigin(MdcxHel &)
int Layer(int hitno=0) const
const HepAList< MdcxHit > & XHitList() const
int Fail(float Probmin=0.0) const
MdcxFittedHel & Grow(const MdcxFittedHel &, const HepAList< MdcxHit > &)
static const double maxMdcZLen
static const double maxDlen
static const double maxTrkOmega
Track attribute.
static const float maxDp12[nSegCombo]
static const int layerSet2AddSeg[nSegCombo][11]
static const float maxDp13[nSegCombo]
static double maxRcsInAddSeg
static const int nSegCombo
relative to MdcxFindTracks
static const int findTrkGroup[nSegCombo][3]
– relative to MdcxFindTracks
static double helixFitSigma