246 {
247
248 MsgStream log(
msgSvc(), name());
249 log << MSG::INFO << "in execute()" << endreq;
250
251
252
253
254
255 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
256 m_runNo = eventHeader->runNumber();
257 m_event=eventHeader->eventNumber();
258 log << MSG::DEBUG <<"run, evtnum = "
259 << m_runNo << " , "
260 << m_event <<endreq;
261
263
264
265 log << MSG::DEBUG <<"ncharg, nneu, tottks = "
266 << evtRecEvent->totalCharged() << " , "
267 << evtRecEvent->totalNeutral() << " , "
268 << evtRecEvent->totalTracks() <<endreq;
269
271
272 if(evtRecEvent->totalNeutral()>100) {
273 return StatusCode::SUCCESS;
274 }
275
277 iGood.clear();
278
279 Hep3Vector xorigin(0,0,0);
280
281 IVertexDbSvc* vtxsvc;
282 Gaudi::svcLocator()->service("VertexDbSvc", vtxsvc);
286 xorigin.setX(dbv[0]);
287 xorigin.setY(dbv[1]);
288 xorigin.setZ(dbv[2]);
289 log << MSG::INFO
290 <<"xorigin.x="<<xorigin.x()<<", "
291 <<"xorigin.y="<<xorigin.y()<<", "
292 <<"xorigin.z="<<xorigin.z()<<", "
293 <<endreq ;
294 }
295
296 int nCharge = 0;
297 for(int i = 0; i < evtRecEvent->totalCharged(); i++){
299 if(!(*itTrk)->isMdcTrackValid()) continue;
300 if (!(*itTrk)->isMdcKalTrackValid()) continue;
301 RecMdcTrack *mdcTrk = (*itTrk)->mdcTrack();
302
303 double pch =mdcTrk->
p();
304 double x0 =mdcTrk->
x();
305 double y0 =mdcTrk->
y();
306 double z0 =mdcTrk->
z();
307 double phi0=mdcTrk->
helix(1);
308 double xv=xorigin.x();
309 double yv=xorigin.y();
310 double Rxy=fabs((x0-xv)*
cos(phi0)+(y0-yv)*
sin(phi0));
311 double vx0 = x0;
312 double vy0 = y0;
313 double vz0 = z0-xorigin.z();
314 double vr0 = Rxy;
316
317 HepVector a = mdcTrk->
helix();
318 HepSymMatrix Ea = mdcTrk->
err();
320 HepPoint3D IP(xorigin[0],xorigin[1],xorigin[2]);
321 VFHelix helixip(point0,a,Ea);
322 helixip.pivot(IP);
323 HepVector vecipa = helixip.a();
324 double Rvxy0=fabs(vecipa[0]);
325 double Rvz0=vecipa[3];
326 double Rvphi0=vecipa[1];
327
328
329
330
331 if(fabs(Rvz0) >= m_vz0cut) continue;
332 if(fabs(Rvxy0) >= m_vr0cut) continue;
333
334
335
336 iGood.push_back(i);
337 nCharge += mdcTrk->
charge();
338 }
339
340
341
342
343 int m_ngch = iGood.size();
344 log << MSG::DEBUG << "ngood, totcharge = " << m_ngch << " , " << nCharge << endreq;
345 if((m_ngch != 4)||(nCharge!=0)){
346 return StatusCode::SUCCESS;
347 }
348
349
350
351 Vint ipip, ipim, ikp, ikm, ipp, ipm;
352 ipip.clear();
353 ipim.clear();
354 ikp.clear();
355 ikm.clear();
356 ipp.clear();
357 ipm.clear();
358
359 Vp4 p_pip, p_pim, p_kp, p_km, p_pp, p_pm ;
360 p_pip.clear();
361 p_pim.clear();
362 p_kp.clear();
363 p_km.clear();
364 p_pp.clear();
365 p_pm.clear();
366
368 for(int i = 0; i < m_ngch; i++) {
370
375
378
379
380
383
384 RecMdcTrack* mdcTrk = (*itTrk)->mdcTrack();
385 RecMdcKalTrack* mdcKalTrk = 0 ;
386 if((*itTrk)->isMdcKalTrackValid()) mdcKalTrk = (*itTrk)->mdcKalTrack();
387
391
392 HepLorentzVector
ptrk;
393 ptrk.setPx(mdcTrk->
px()) ;
394 ptrk.setPy(mdcTrk->
py()) ;
395 ptrk.setPz(mdcTrk->
pz()) ;
397
398 if (prob_pi > prob_K && prob_pi > prob_p) {
399 m_pidcode[i]=2;
400 m_pidprob[i]=pid->
prob(2);
401 m_pidchiDedx[i]=pid->
chiDedx(2);
402 m_pidchiTof1[i]=pid->
chiTof1(2);
403 m_pidchiTof2[i]=pid->
chiTof2(2);
405 if(mdcTrk->
charge() > 0) {
406 ipip.push_back(iGood[i]);
407 p_pip.push_back(
ptrk);
408 }
409 if (mdcTrk->
charge() < 0) {
410 ipim.push_back(iGood[i]);
411 p_pim.push_back(
ptrk);
412 }
413 }
414
415 if (prob_K > prob_pi && prob_K > prob_p) {
416 m_pidcode[i]=3;
417 m_pidprob[i]=pid->
prob(3);
418 m_pidchiDedx[i]=pid->
chiDedx(3);
419 m_pidchiTof1[i]=pid->
chiTof1(3);
420 m_pidchiTof2[i]=pid->
chiTof2(3);
422 if(mdcTrk->
charge() > 0) {
423 ikp.push_back(iGood[i]);
424 p_kp.push_back(
ptrk);
425 }
426 if (mdcTrk->
charge() < 0) {
427 ikm.push_back(iGood[i]);
428 p_km.push_back(
ptrk);
429 }
430 }
431
432 if (prob_p > prob_pi && prob_p > prob_K) {
433 m_pidcode[i]=4;
434 m_pidprob[i]=pid->
prob(4);
435 m_pidchiDedx[i]=pid->
chiDedx(4);
436 m_pidchiTof1[i]=pid->
chiTof1(4);
437 m_pidchiTof2[i]=pid->
chiTof2(4);
439 if(mdcTrk->
charge() > 0) {
440 ipp.push_back(iGood[i]);
441 p_pp.push_back(
ptrk);
442 }
443 if (mdcTrk->
charge() < 0) {
444 ipm.push_back(iGood[i]);
445 p_pm.push_back(
ptrk);
446 }
447 }
448 }
449
450 m_npip= ipip.size() ;
451 m_npim= ipim.size() ;
452 m_nkp = ikp.size() ;
453 m_nkm = ikm.size() ;
454 m_np = ipp.size() ;
455 m_npb = ipm.size() ;
456
457
458 if( m_npip*m_npim != 2 ) {
459 return StatusCode::SUCCESS;
460 }
461
462 if( m_nkp+m_nkm != 1 ) {
463 return StatusCode::SUCCESS;
464 }
465
466
467
469 HepSymMatrix Evx(3, 0);
470 double bx = 1E+6;
471 double by = 1E+6;
472 double bz = 1E+6;
473 Evx[0][0] = bx*bx;
474 Evx[1][1] = by*by;
475 Evx[2][2] = bz*bz;
476
477 VertexParameter vxpar;
480
484
485 RecMdcKalTrack *pi1KalTrk, *pi2KalTrk, *pi3KalTrk, *k1KalTrk;
486 RecMdcKalTrack *pipKalTrk, *pimKalTrk, *piKalTrk, *kKalTrk;
487 WTrackParameter wks,vwks;
488
489 double chi_temp = 999.0;
490 double mks_temp = 10.0 ;
491 bool okloop=false;
492 for(unsigned int i1 = 0; i1 < m_npip; i1++) {
493 RecMdcKalTrack *pi1KalTrk = (*(evtRecTrkCol->begin()+ipip[i1]))-> mdcKalTrack();
496
497 for(unsigned int i2 = 0; i2 < m_npim; i2++) {
498 RecMdcKalTrack *pi2KalTrk = (*(evtRecTrkCol->begin()+ipim[i2]))-> mdcKalTrack();
501
506
507 if(!(vtxfit_s->
Fit(0)))
continue;
509 m_vfits_chi = vtxfit_s->
chisq(0);
511 VertexParameter vparks = vtxfit_s->
vpar(0);
512
513 m_vfits_vx = (vparks.
Vx())[0];
514 m_vfits_vy = (vparks.
Vx())[1];
515 m_vfits_vz = (vparks.
Vx())[2];
516 m_vfits_vr = sqrt(m_vfits_vx*m_vfits_vx + m_vfits_vy*m_vfits_vy) ;
517
518 if ( m_npip == 2 ) {
519 int j = i1 ;
520 int jj = ( i1 == 1 ) ? 0 : 1;
521 pi3KalTrk = (*(evtRecTrkCol->begin()+ipip[jj]))->mdcKalTrack();
522 k1KalTrk = (*(evtRecTrkCol->begin()+ikm[0]))->mdcKalTrack();
523 }
524 if (m_npim == 2 ) {
525 int j = i2 ;
526 int jj = ( i2 == 1 ) ? 0 : 1;
527 pi3KalTrk = (*(evtRecTrkCol->begin()+ipim[jj]))->mdcKalTrack();
528 k1KalTrk = (*(evtRecTrkCol->begin()+ikp[0]))->mdcKalTrack();
529 }
530
535
537
541 if(!(vtxfit_p->
Fit(0)))
continue;
542
543 m_vfitp_chi = vtxfit_p->
chisq(0) ;
544
545 VertexParameter primaryVpar = vtxfit_p->
vpar(0);
546 m_vfitp_vx = (primaryVpar.
Vx())[0];
547 m_vfitp_vy = (primaryVpar.
Vx())[1];
548 m_vfitp_vz = (primaryVpar.
Vx())[2];
549 m_vfitp_vr = sqrt(m_vfitp_vx*m_vfitp_vx + m_vfitp_vy*m_vfitp_vy);
550
555 if(!vtxfit2->
Fit())
continue;
556
557 if ( fabs(((vtxfit2->
wpar()).p()).m()-
mks0) < mks_temp ) {
558 mks_temp = fabs(((vtxfit2->
wpar()).p()).m()-
mks0) ;
559
560 okloop = true;
561
562 wks = vtxfit2->
wpar();
563 m_vfit2_mks = (wks.
p()).m();
564 m_vfit2_chi = vtxfit2->
chisq();
565 m_vfit2_ct = vtxfit2->
ctau();
568
569 pipKalTrk = pi1KalTrk ;
570 pimKalTrk = pi2KalTrk ;
571 piKalTrk = pi3KalTrk ;
572 kKalTrk = k1KalTrk ;
573
574 }
575 }
576 }
577
578 if (! okloop ) {
579 return StatusCode::SUCCESS;
580 }
581
586
589
592
593
594
595 int ii ;
596 for(int j=0; j<m_ngch; j++){
597 m_charge[j] = 9999.0;
598 m_vx0[j] = 9999.0;
599 m_vy0[j] = 9999.0;
600 m_vz0[j] = 9999.0;
601 m_vr0[j] = 9999.0;
602
603 m_vx[j] = 9999.0;
604 m_vy[j] = 9999.0;
605 m_vz[j] = 9999.0;
606 m_vr[j] = 9999.0;
607
608 m_px[j] = 9999.0;
609 m_py[j] = 9999.0;
610 m_pz[j] = 9999.0;
611 m_p[j] = 9999.0;
612 m_cost[j] = 9999.0;
613
614 m_probPH[j] = 9999.0;
615 m_normPH[j] = 9999.0;
616 m_chie[j] = 9999.0;
617 m_chimu[j] = 9999.0;
618 m_chipi[j] = 9999.0;
619 m_chik[j] = 9999.0;
620 m_chip[j] = 9999.0;
621 m_ghit[j] = 9999.0;
622 m_thit[j] = 9999.0;
623
624 m_e_emc[j] = 9999.0;
625
626 m_qual_etof[j] = 9999.0;
627 m_tof_etof[j] = 9999.0;
628 m_te_etof[j] = 9999.0;
629 m_tmu_etof[j] = 9999.0;
630 m_tpi_etof[j] = 9999.0;
631 m_tk_etof[j] = 9999.0;
632 m_tp_etof[j] = 9999.0;
633
634 m_qual_btof1[j] = 9999.0;
635 m_tof_btof1[j] = 9999.0;
636 m_te_btof1[j] = 9999.0;
637 m_tmu_btof1[j] = 9999.0;
638 m_tpi_btof1[j] = 9999.0;
639 m_tk_btof1[j] = 9999.0;
640 m_tp_btof1[j] = 9999.0;
641
642 m_qual_btof2[j] = 9999.0;
643 m_tof_btof2[j] = 9999.0;
644 m_te_btof2[j] = 9999.0;
645 m_tmu_btof2[j] = 9999.0;
646 m_tpi_btof2[j] = 9999.0;
647 m_tk_btof2[j] = 9999.0;
648 m_tp_btof2[j] = 9999.0;
649
650 m_pidcode[j] = 9999.0;
651 m_pidprob[j] = 9999.0;
652 m_pidchiDedx[j] = 9999.0;
653 m_pidchiTof1[j] = 9999.0;
654 m_pidchiTof2[j] = 99999.0;
655 }
656
657 for(int i = 0; i < m_ngch; i++ ){
658
660 if(!(*itTrk)->isMdcTrackValid()) continue;
661 RecMdcTrack* mdcTrk = (*itTrk)->mdcTrack();
662 RecMdcKalTrack *mdcKalTrk = (*itTrk)->mdcKalTrack();
663
664 if ( mdcKalTrk == pipKalTrk ) {
665 ii = 0 ;
667 }
668 if ( mdcKalTrk == pimKalTrk ) {
669 ii = 1 ;
671 }
672 if ( mdcKalTrk == piKalTrk ) {
673 ii = 2 ;
675 }
676 if ( mdcKalTrk == kKalTrk ) {
677 ii = 3 ;
679 }
680
681 m_charge[ii] = mdcTrk->
charge();
682 double x0=mdcTrk->
x();
683 double y0=mdcTrk->
y();
684 double z0=mdcTrk->
z();
685 double phi0=mdcTrk->
helix(1);
686 double xv=xorigin.x();
687 double yv=xorigin.y();
688 double zv=xorigin.z();
689 double rv=(x0-xv)*
cos(phi0)+(y0-yv)*
sin(phi0);
690
691 m_vx0[ii] = x0-xv ;
692 m_vy0[ii] = y0-yv ;
693 m_vz0[ii] = z0-zv ;
694 m_vr0[ii] = rv ;
695
699 rv=(x0-xv)*
cos(phi0)+(y0-yv)*
sin(phi0);
700
701 m_vx[ii] = x0-xv ;
702 m_vy[ii] = y0-yv ;
703 m_vz[ii] = z0-zv ;
704 m_vr[ii] = rv ;
705
706 m_px[ii] = mdcKalTrk->
px();
707 m_py[ii] = mdcKalTrk->
py();
708 m_pz[ii] = mdcKalTrk->
pz();
709 m_p[ii] = mdcKalTrk->
p();
710 m_cost[ii] = mdcKalTrk->
pz()/mdcKalTrk->
p();
711
712 double ptrk = mdcKalTrk->
p() ;
713 if((*itTrk)->isMdcDedxValid()) {
714 RecMdcDedx* dedxTrk = (*itTrk)->mdcDedx();
715 m_probPH[ii]= dedxTrk->
probPH();
716 m_normPH[ii]= dedxTrk->
normPH();
717
718 m_chie[ii] = dedxTrk->
chiE();
719 m_chimu[ii] = dedxTrk->
chiMu();
720 m_chipi[ii] = dedxTrk->
chiPi();
721 m_chik[ii] = dedxTrk->
chiK();
722 m_chip[ii] = dedxTrk->
chiP();
725 }
726
727 if((*itTrk)->isEmcShowerValid()) {
728 RecEmcShower *emcTrk = (*itTrk)->emcShower();
729 m_e_emc[ii] = emcTrk->
energy();
730 }
731
732 if((*itTrk)->isTofTrackValid()) {
733 SmartRefVector<RecTofTrack> tofTrkCol = (*itTrk)->tofTrack();
734
735 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
736
737 for(;iter_tof != tofTrkCol.end(); iter_tof++ ) {
738 TofHitStatus *status = new TofHitStatus;
739 status->
setStatus((*iter_tof)->status());
740
743 if( status->
layer()!=0 )
continue;
744 double path=(*iter_tof)->path();
745 double tof = (*iter_tof)->tof();
746 double ph = (*iter_tof)->ph();
747 double rhit = (*iter_tof)->zrhit();
748 double qual = 0.0 + (*iter_tof)->quality();
749 double cntr = 0.0 + (*iter_tof)->tofID();
750 double texp[5];
751 for(int j = 0; j < 5; j++) {
753 double beta = gb/sqrt(1+gb*gb);
754 texp[j] = path /beta/
velc;
755 }
756
757 m_qual_etof[ii] = qual;
758 m_tof_etof[ii] = tof ;
759 }
760 else {
762 if(status->
layer()==1){
763 double path=(*iter_tof)->path();
764 double tof = (*iter_tof)->tof();
765 double ph = (*iter_tof)->ph();
766 double rhit = (*iter_tof)->zrhit();
767 double qual = 0.0 + (*iter_tof)->quality();
768 double cntr = 0.0 + (*iter_tof)->tofID();
769 double texp[5];
770 for(int j = 0; j < 5; j++) {
772 double beta = gb/sqrt(1+gb*gb);
773 texp[j] = path /beta/
velc;
774 }
775
776 m_qual_btof1[ii] = qual;
777 m_tof_btof1[ii] = tof ;
778 }
779
780 if(status->
layer()==2){
781 double path=(*iter_tof)->path();
782 double tof = (*iter_tof)->tof();
783 double ph = (*iter_tof)->ph();
784 double rhit = (*iter_tof)->zrhit();
785 double qual = 0.0 + (*iter_tof)->quality();
786 double cntr = 0.0 + (*iter_tof)->tofID();
787 double texp[5];
788 for(int j = 0; j < 5; j++) {
790 double beta = gb/sqrt(1+gb*gb);
791 texp[j] = path /beta/
velc;
792 }
793
794 m_qual_btof2[ii] = qual;
795 m_tof_btof2[ii] = tof ;
796 }
797 }
798 }
799 }
800 }
801
802
804
806 double chisq = 9999.;
807 m_4c_chi2 = 9999.;
808 m_4c_mks = 10.0;
809 m_4c_mkspi = 10.0;
810 m_4c_mksk = 10.0;
811 m_4c_mkpi = 10.0;
812 m_4c_ks_px = 10.0;
813 m_4c_ks_py = 10.0;
814 m_4c_ks_pz = 10.0;
815 m_4c_ks_p = 10.0;
816 m_4c_ks_cos= 10.0;
817
823 bool oksq = kmfit->
Fit();
824 if(oksq) {
825 chisq = kmfit->
chisq();
826
827 HepLorentzVector pk = kmfit->
pfit(1);
828 HepLorentzVector pks = kmfit->
pfit(2);
829 HepLorentzVector pkspi = kmfit->
pfit(0) + kmfit->
pfit(2);
830 HepLorentzVector pksk = kmfit->
pfit(1) + kmfit->
pfit(2);
831 HepLorentzVector pkpi = kmfit->
pfit(0) + kmfit->
pfit(1);
832
837
838 m_4c_chi2 = chisq ;
839 m_4c_mks = pks.m();
840 m_4c_mkspi = pkspi.m();
841 m_4c_mksk = pksk.m();
842 m_4c_mkpi = pkpi.m();
843
844 m_4c_ks_px = pks.px() ;
845 m_4c_ks_py = pks.py() ;
846 m_4c_ks_pz = pks.pz() ;
847 m_4c_ks_p = (pks.vect()).mag() ;
848 m_4c_ks_cos = m_4c_ks_pz/m_4c_ks_p ;
849
850 }
851
852 chisq = 9999.;
853 m_chi2_fs4c = 9999.;
854 m_mks_fs4c = 10.0;
855 m_mkspi_fs4c = 10.0;
856 m_mksk_fs4c = 10.0;
857 m_mkpi_fs4c = 10.0;
858
866 if(oksq) {
867 chisq = kmfit->
chisq();
868
869 HepLorentzVector pks = kmfit->
pfit(0) + kmfit->
pfit(1);
870 HepLorentzVector pkspi = pks + kmfit->
pfit(2);
871 HepLorentzVector pksk = pks + kmfit->
pfit(3);
872 HepLorentzVector pkpi = kmfit->
pfit(2) + kmfit->
pfit(3);
873
878
879 m_chi2_fs4c = chisq ;
880 m_mks_fs4c = pks.m();
881 m_mkspi_fs4c = pkspi.m();
882 m_mksk_fs4c = pksk.m();
883 m_mkpi_fs4c = pkpi.m();
884 }
885
886
887 if(chisq > 20) { return StatusCode::SUCCESS; }
888 if(m_vfit2_dl < 0.5) { return StatusCode::SUCCESS; }
889 if(fabs(m_4c_mks-
mks0) > 0.01) {
return StatusCode::SUCCESS; }
890 if(m_4c_mkspi < 1.25) { return StatusCode::SUCCESS; }
891
892
893 TH1 *h(0);
894 if (m_thsvc->getHist("/DQAHist/DQAKsKpiDEDX/hks_dl", h).isSuccess()) {
895 h->Fill(m_vfit2_dl);
896 } else {
897 log << MSG::ERROR << "Couldn't retrieve hks_dl" << endreq;
898 }
899
900 if (m_thsvc->getHist("/DQAHist/DQAKsKpiDEDX/hks_m", h).isSuccess()) {
901 h->Fill(m_4c_mks);
902 } else {
903 log << MSG::ERROR << "Couldn't retrieve hks_m" << endreq;
904 }
905
906 if (m_thsvc->getHist("/DQAHist/DQAKsKpiDEDX/hkspi_m", h).isSuccess()) {
907 h->Fill(m_4c_mkspi);
908 } else {
909 log << MSG::ERROR << "Couldn't retrieve hkspi_m" << endreq;
910 }
911
912 if (m_thsvc->getHist("/DQAHist/DQAKsKpiDEDX/hks_p", h).isSuccess()) {
913 h->Fill(m_4c_ks_p);
914 } else {
915 log << MSG::ERROR << "Couldn't retrieve hks_p" << endreq;
916 }
917
918 if (m_thsvc->getHist("/DQAHist/DQAKsKpiDEDX/hkpi_m", h).isSuccess()) {
919 h->Fill(m_4c_mkpi);
920 } else {
921 log << MSG::ERROR << "Couldn't retrieve hkpi_m" << endreq;
922 }
923
924
925
926
927
928
929 if(m_npip==2 && m_npim==1){
930 (*(evtRecTrkCol->begin()+ipip[0]))->setPartId(2);
931 (*(evtRecTrkCol->begin()+ipip[1]))->setPartId(2);
932 (*(evtRecTrkCol->begin()+ipim[0]))->setPartId(2);
933 (*(evtRecTrkCol->begin()+ikm[0]))->setPartId(4);
934 }
935 if(m_npip==1 && m_npim==2){
936 (*(evtRecTrkCol->begin()+ipip[0]))->setPartId(2);
937 (*(evtRecTrkCol->begin()+ipim[0]))->setPartId(2);
938 (*(evtRecTrkCol->begin()+ipim[1]))->setPartId(2);
939 (*(evtRecTrkCol->begin()+ikp[0]))->setPartId(4);
940 }
941
942
943
944
945
946 if(m_npip==2 && m_npim==1){
947 (*(evtRecTrkCol->begin()+ipip[0]))->setQuality(2);
948 (*(evtRecTrkCol->begin()+ipip[1]))->setQuality(2);
949 (*(evtRecTrkCol->begin()+ipim[0]))->setQuality(2);
950 (*(evtRecTrkCol->begin()+ikm[0]))->setQuality(2);
951 }
952 if(m_npip==1 && m_npim==2){
953 (*(evtRecTrkCol->begin()+ipip[0]))->setQuality(2);
954 (*(evtRecTrkCol->begin()+ipim[0]))->setQuality(2);
955 (*(evtRecTrkCol->begin()+ipim[1]))->setQuality(2);
956 (*(evtRecTrkCol->begin()+ikp[0]))->setQuality(2);
957 }
958
959
960
961 setFilterPassed(true);
962
963
964 m_tuple->write();
965
966 return StatusCode::SUCCESS;
967
968}
double sin(const BesAngle a)
double cos(const BesAngle a)
const HepLorentzVector p_cms(0.034067, 0.0, 0.0, 3.097)
EvtRecTrackCol::iterator EvtRecTrackIterator
HepGeom::Point3D< double > HepPoint3D
std::vector< HepLorentzVector > Vp4
static void setPidType(PidType pidType)
const double theta() const
const HepSymMatrix err() const
const HepVector helix() const
......
virtual bool isVertexValid()=0
virtual double * SigmaPrimaryVertex()=0
virtual double * PrimaryVertex()=0
static KinematicFit * instance()
void AddFourMomentum(int number, HepLorentzVector p4)
HepLorentzVector pfit(int n) const
int methodProbability() const
int onlyPionKaonProton() const
void setChiMinCut(const double chi=4)
void setRecTrack(EvtRecTrack *trk)
void setMethod(const int method)
double chiTof2(int n) const
void identify(const int pidcase)
void usePidSys(const int pidsys)
static ParticleID * instance()
bool IsPidInfoValid() const
double chiTof1(int n) const
double probProton() const
double chiDedx(int n) const
const HepVector & getZHelix() const
const HepSymMatrix & getZError() const
HepSymMatrix & getZErrorK()
void setPrimaryVertex(const VertexParameter vpar)
double decayLength() const
double decayLengthError() const
static SecondVertexFit * instance()
void setVpar(const VertexParameter vpar)
WTrackParameter wpar() const
unsigned int layer() const
void setStatus(unsigned int status)
void AddTrack(const int number, const double mass, const RecMdcTrack *trk)
WTrackParameter wVirtualTrack(int n) const
void AddVertex(int number, VertexParameter vpar, std::vector< int > lis)
static VertexFit * instance()
VertexParameter vpar(int n) const
void BuildVirtualParticle(int number)
void setEvx(const HepSymMatrix &eVx)
void setVx(const HepPoint3D &vx)
HepLorentzVector p() const
_EXTERN_ std::string EvtRecEvent
_EXTERN_ std::string EvtRecTrackCol