231 {
232
233 MsgStream log(
msgSvc(), name() );
234 log << MSG::INFO << "in execute()" << endmsg;
235
236
237
238
239
240 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
241 m_runNo = eventHeader->runNumber();
242 m_event = eventHeader->eventNumber();
243 log << MSG::DEBUG << "run, evtnum = " << m_runNo << " , " << m_event << endmsg;
244
246
247
248 log << MSG::DEBUG << "ncharg, nneu, tottks = " << evtRecEvent->totalCharged() << " , "
249 << evtRecEvent->totalNeutral() << " , " << evtRecEvent->totalTracks() << endmsg;
250
252
253 if ( evtRecEvent->totalNeutral() > 100 ) { return StatusCode::SUCCESS; }
254
256 iGood.clear();
257
258 Hep3Vector xorigin( 0, 0, 0 );
259
260 IVertexDbSvc* vtxsvc;
261 Gaudi::svcLocator()->service( "VertexDbSvc", vtxsvc ).ignore();
263 {
266 xorigin.setX( dbv[0] );
267 xorigin.setY( dbv[1] );
268 xorigin.setZ( dbv[2] );
269 log << MSG::INFO << "xorigin.x=" << xorigin.x() << ", "
270 << "xorigin.y=" << xorigin.y() << ", "
271 << "xorigin.z=" << xorigin.z() << ", " << endmsg;
272 }
273
274 int nCharge = 0;
275 for ( int i = 0; i < evtRecEvent->totalCharged(); i++ )
276 {
278 if ( !( *itTrk )->isMdcTrackValid() ) continue;
279 if ( !( *itTrk )->isMdcKalTrackValid() ) continue;
280 RecMdcTrack* mdcTrk = ( *itTrk )->mdcTrack();
281
282 double pch = mdcTrk->
p();
283 double x0 = mdcTrk->
x();
284 double y0 = mdcTrk->
y();
285 double z0 = mdcTrk->
z();
286 double phi0 = mdcTrk->
helix( 1 );
287 double xv = xorigin.x();
288 double yv = xorigin.y();
289 double Rxy = fabs( ( x0 - xv ) *
cos( phi0 ) + ( y0 - yv ) *
sin( phi0 ) );
290 double vx0 = x0;
291 double vy0 = y0;
292 double vz0 = z0 - xorigin.z();
293 double vr0 = Rxy;
294 double Vct =
cos( mdcTrk->
theta() );
295
296 HepVector a = mdcTrk->
helix();
297 HepSymMatrix Ea = mdcTrk->
err();
299 HepPoint3D IP( xorigin[0], xorigin[1], xorigin[2] );
300 VFHelix helixip( point0, a, Ea );
301 helixip.pivot( IP );
302 HepVector vecipa = helixip.a();
303 double Rvxy0 = fabs( vecipa[0] );
304 double Rvz0 = vecipa[3];
305 double Rvphi0 = vecipa[1];
306
307
308
309
310 if ( fabs( Rvz0 ) >= m_vz0cut ) continue;
311 if ( Rvxy0 >= m_vr0cut ) continue;
312
313
314 iGood.push_back( i );
315 nCharge += mdcTrk->
charge();
316 }
317
318
319
320
321 int m_ngch = iGood.size();
322 log << MSG::DEBUG << "ngood, totcharge = " << m_ngch << " , " << nCharge << endmsg;
323 if ( ( m_ngch != 4 ) || ( nCharge != 0 ) ) { return StatusCode::SUCCESS; }
324
325
326
327 Vint ipip, ipim, ikp, ikm, ipp, ipm;
328 ipip.clear();
329 ipim.clear();
330 ikp.clear();
331 ikm.clear();
332 ipp.clear();
333 ipm.clear();
334
335 Vp4 p_pip, p_pim, p_kp, p_km, p_pp, p_pm;
336 p_pip.clear();
337 p_pim.clear();
338 p_kp.clear();
339 p_km.clear();
340 p_pp.clear();
341 p_pm.clear();
342
344 for ( int i = 0; i < m_ngch; i++ )
345 {
347
353
354
356
357
358
361
362 RecMdcTrack* mdcTrk = ( *itTrk )->mdcTrack();
363 RecMdcKalTrack* mdcKalTrk = 0;
364 if ( ( *itTrk )->isMdcKalTrackValid() ) mdcKalTrk = ( *itTrk )->mdcKalTrack();
365
369
370 HepLorentzVector ptrk;
371 ptrk.setPx( mdcTrk->
px() );
372 ptrk.setPy( mdcTrk->
py() );
373 ptrk.setPz( mdcTrk->
pz() );
374 double p3 = ptrk.mag();
375
376 if ( prob_pi > prob_K && prob_pi > prob_p )
377 {
378 m_pidcode[i] = 2;
379 m_pidprob[i] = pid->
prob( 2 );
380 m_pidchiDedx[i] = pid->
chiDedx( 2 );
381 m_pidchiTof1[i] = pid->
chiTof1( 2 );
382 m_pidchiTof2[i] = pid->
chiTof2( 2 );
383 ptrk.setE( sqrt( p3 * p3 +
xmass[2] *
xmass[2] ) );
384 if ( mdcTrk->
charge() > 0 )
385 {
386 ipip.push_back( iGood[i] );
387 p_pip.push_back( ptrk );
388 }
389 if ( mdcTrk->
charge() < 0 )
390 {
391 ipim.push_back( iGood[i] );
392 p_pim.push_back( ptrk );
393 }
394 }
395
396 if ( prob_K > prob_pi && prob_K > prob_p )
397 {
398 m_pidcode[i] = 3;
399 m_pidprob[i] = pid->
prob( 3 );
400 m_pidchiDedx[i] = pid->
chiDedx( 3 );
401 m_pidchiTof1[i] = pid->
chiTof1( 3 );
402 m_pidchiTof2[i] = pid->
chiTof2( 3 );
403 ptrk.setE( sqrt( p3 * p3 +
xmass[3] *
xmass[3] ) );
404 if ( mdcTrk->
charge() > 0 )
405 {
406 ikp.push_back( iGood[i] );
407 p_kp.push_back( ptrk );
408 }
409 if ( mdcTrk->
charge() < 0 )
410 {
411 ikm.push_back( iGood[i] );
412 p_km.push_back( ptrk );
413 }
414 }
415
416 if ( prob_p > prob_pi && prob_p > prob_K )
417 {
418 m_pidcode[i] = 4;
419 m_pidprob[i] = pid->
prob( 4 );
420 m_pidchiDedx[i] = pid->
chiDedx( 4 );
421 m_pidchiTof1[i] = pid->
chiTof1( 4 );
422 m_pidchiTof2[i] = pid->
chiTof2( 4 );
423 ptrk.setE( sqrt( p3 * p3 +
xmass[4] *
xmass[4] ) );
424 if ( mdcTrk->
charge() > 0 )
425 {
426 ipp.push_back( iGood[i] );
427 p_pp.push_back( ptrk );
428 }
429 if ( mdcTrk->
charge() < 0 )
430 {
431 ipm.push_back( iGood[i] );
432 p_pm.push_back( ptrk );
433 }
434 }
435 }
436
437 m_npip = ipip.size();
438 m_npim = ipim.size();
439 m_nkp = ikp.size();
440 m_nkm = ikm.size();
441 m_np = ipp.size();
442 m_npb = ipm.size();
443
444
445 if ( m_npip * m_npim != 2 ) { return StatusCode::SUCCESS; }
446
447 if ( m_nkp + m_nkm != 1 ) { return StatusCode::SUCCESS; }
448
449
450
452 HepSymMatrix Evx( 3, 0 );
453 double bx = 1E+6;
454 double by = 1E+6;
455 double bz = 1E+6;
456 Evx[0][0] = bx * bx;
457 Evx[1][1] = by * by;
458 Evx[2][2] = bz * bz;
459
460 VertexParameter vxpar;
463
467
468 RecMdcKalTrack *pi1KalTrk{ nullptr }, *pi2KalTrk{ nullptr }, *pi3KalTrk{ nullptr },
469 *k1KalTrk{ nullptr };
470 RecMdcKalTrack *pipKalTrk{ nullptr }, *pimKalTrk{ nullptr }, *piKalTrk{ nullptr },
471 *kKalTrk{ nullptr };
472 WTrackParameter wks, vwks;
473
474 double chi_temp = 999.0;
475 double mks_temp = 10.0;
476 bool okloop = false;
477 for ( unsigned int i1 = 0; i1 < m_npip; i1++ )
478 {
479 RecMdcKalTrack* pi1KalTrk = ( *( evtRecTrkCol->begin() + ipip[i1] ) )->mdcKalTrack();
482
483 for ( unsigned int i2 = 0; i2 < m_npim; i2++ )
484 {
485 RecMdcKalTrack* pi2KalTrk = ( *( evtRecTrkCol->begin() + ipim[i2] ) )->mdcKalTrack();
488
493
494 if ( !( vtxfit_s->
Fit( 0 ) ) )
continue;
496 m_vfits_chi = vtxfit_s->
chisq( 0 );
498 VertexParameter vparks = vtxfit_s->
vpar( 0 );
499
500 m_vfits_vx = ( vparks.
Vx() )[0];
501 m_vfits_vy = ( vparks.
Vx() )[1];
502 m_vfits_vz = ( vparks.
Vx() )[2];
503 m_vfits_vr = sqrt( m_vfits_vx * m_vfits_vx + m_vfits_vy * m_vfits_vy );
504
505 if ( m_npip == 2 )
506 {
507 int j = i1;
508 int jj = ( i1 == 1 ) ? 0 : 1;
509 pi3KalTrk = ( *( evtRecTrkCol->begin() + ipip[jj] ) )->mdcKalTrack();
510 k1KalTrk = ( *( evtRecTrkCol->begin() + ikm[0] ) )->mdcKalTrack();
511 }
512 if ( m_npim == 2 )
513 {
514 int j = i2;
515 int jj = ( i2 == 1 ) ? 0 : 1;
516 pi3KalTrk = ( *( evtRecTrkCol->begin() + ipim[jj] ) )->mdcKalTrack();
517 k1KalTrk = ( *( evtRecTrkCol->begin() + ikp[0] ) )->mdcKalTrack();
518 }
519
521 WTrackParameter wpi3trk(
xmass[2], pi3KalTrk->getZHelix(), pi3KalTrk->getZError() );
523 WTrackParameter wk1trk(
xmass[3], k1KalTrk->getZHelixK(), k1KalTrk->getZErrorK() );
524
526
530 if ( !( vtxfit_p->
Fit( 0 ) ) )
continue;
531
532 m_vfitp_chi = vtxfit_p->
chisq( 0 );
533
534 VertexParameter primaryVpar = vtxfit_p->
vpar( 0 );
535 m_vfitp_vx = ( primaryVpar.
Vx() )[0];
536 m_vfitp_vy = ( primaryVpar.
Vx() )[1];
537 m_vfitp_vz = ( primaryVpar.
Vx() )[2];
538 m_vfitp_vr = sqrt( m_vfitp_vx * m_vfitp_vx + m_vfitp_vy * m_vfitp_vy );
539
544 if ( !vtxfit2->
Fit() )
continue;
545
546 if ( fabs( ( ( vtxfit2->
wpar() ).p() ).m() -
mks0 ) < mks_temp )
547 {
548 mks_temp = fabs( ( ( vtxfit2->
wpar() ).p() ).m() -
mks0 );
549
550 okloop = true;
551
552 wks = vtxfit2->
wpar();
553 m_vfit2_mks = ( wks.
p() ).m();
554 m_vfit2_chi = vtxfit2->
chisq();
555 m_vfit2_ct = vtxfit2->
ctau();
558
559 pipKalTrk = pi1KalTrk;
560 pimKalTrk = pi2KalTrk;
561 piKalTrk = pi3KalTrk;
562 kKalTrk = k1KalTrk;
563 }
564 }
565 }
566
567 if ( !okloop ) { return StatusCode::SUCCESS; }
568
573
576 WTrackParameter wpim(
xmass[2], pimKalTrk->getZHelix(),
577 pimKalTrk->getZError() );
578
579 WTrackParameter wpi(
xmass[2], piKalTrk->getZHelix(), piKalTrk->getZError() );
580 WTrackParameter wk(
xmass[3], kKalTrk->getZHelixK(), kKalTrk->getZErrorK() );
581
582
583
584 int ii{ 0 };
585 for ( int j = 0; j < m_ngch; j++ )
586 {
587 m_charge[j] = 9999.0;
588 m_vx0[j] = 9999.0;
589 m_vy0[j] = 9999.0;
590 m_vz0[j] = 9999.0;
591 m_vr0[j] = 9999.0;
592
593 m_vx[j] = 9999.0;
594 m_vy[j] = 9999.0;
595 m_vz[j] = 9999.0;
596 m_vr[j] = 9999.0;
597
598 m_px[j] = 9999.0;
599 m_py[j] = 9999.0;
600 m_pz[j] = 9999.0;
601 m_p[j] = 9999.0;
602 m_cost[j] = 9999.0;
603
604 m_probPH[j] = 9999.0;
605 m_normPH[j] = 9999.0;
606 m_chie[j] = 9999.0;
607 m_chimu[j] = 9999.0;
608 m_chipi[j] = 9999.0;
609 m_chik[j] = 9999.0;
610 m_chip[j] = 9999.0;
611 m_ghit[j] = 9999.0;
612 m_thit[j] = 9999.0;
613
614 m_e_emc[j] = 9999.0;
615
616 m_qual_etof[j] = 9999.0;
617 m_tof_etof[j] = 9999.0;
618 m_te_etof[j] = 9999.0;
619 m_tmu_etof[j] = 9999.0;
620 m_tpi_etof[j] = 9999.0;
621 m_tk_etof[j] = 9999.0;
622 m_tp_etof[j] = 9999.0;
623
624 m_qual_btof1[j] = 9999.0;
625 m_tof_btof1[j] = 9999.0;
626 m_te_btof1[j] = 9999.0;
627 m_tmu_btof1[j] = 9999.0;
628 m_tpi_btof1[j] = 9999.0;
629 m_tk_btof1[j] = 9999.0;
630 m_tp_btof1[j] = 9999.0;
631
632 m_qual_btof2[j] = 9999.0;
633 m_tof_btof2[j] = 9999.0;
634 m_te_btof2[j] = 9999.0;
635 m_tmu_btof2[j] = 9999.0;
636 m_tpi_btof2[j] = 9999.0;
637 m_tk_btof2[j] = 9999.0;
638 m_tp_btof2[j] = 9999.0;
639
640 m_pidcode[j] = 9999.0;
641 m_pidprob[j] = 9999.0;
642 m_pidchiDedx[j] = 9999.0;
643 m_pidchiTof1[j] = 9999.0;
644 m_pidchiTof2[j] = 99999.0;
645 }
646
647 for ( int i = 0; i < m_ngch; i++ )
648 {
649
651 if ( !( *itTrk )->isMdcTrackValid() ) continue;
652 RecMdcTrack* mdcTrk = ( *itTrk )->mdcTrack();
653 RecMdcKalTrack* mdcKalTrk = ( *itTrk )->mdcKalTrack();
654
655 if ( mdcKalTrk == pipKalTrk )
656 {
657 ii = 0;
659 }
660 if ( mdcKalTrk == pimKalTrk )
661 {
662 ii = 1;
664 }
665 if ( mdcKalTrk == piKalTrk )
666 {
667 ii = 2;
669 }
670 if ( mdcKalTrk == kKalTrk )
671 {
672 ii = 3;
674 }
675
676 m_charge[ii] = mdcTrk->
charge();
677 double x0 = mdcTrk->
x();
678 double y0 = mdcTrk->
y();
679 double z0 = mdcTrk->
z();
680 double phi0 = mdcTrk->
helix( 1 );
681 double xv = xorigin.x();
682 double yv = xorigin.y();
683 double zv = xorigin.z();
684 double rv = ( x0 - xv ) *
cos( phi0 ) + ( y0 - yv ) *
sin( phi0 );
685
686 m_vx0[ii] = x0 - xv;
687 m_vy0[ii] = y0 - yv;
688 m_vz0[ii] = z0 - zv;
689 m_vr0[ii] = rv;
690
694 rv = ( x0 - xv ) *
cos( phi0 ) + ( y0 - yv ) *
sin( phi0 );
695
696 m_vx[ii] = x0 - xv;
697 m_vy[ii] = y0 - yv;
698 m_vz[ii] = z0 - zv;
699 m_vr[ii] = rv;
700
701 m_px[ii] = mdcKalTrk->
px();
702 m_py[ii] = mdcKalTrk->
py();
703 m_pz[ii] = mdcKalTrk->
pz();
704 m_p[ii] = sqrt( m_px[ii] * m_px[ii] + m_py[ii] * m_py[ii] + m_pz[ii] * m_pz[ii] );
705 m_cost[ii] = m_pz[ii] / m_p[ii];
706
707 double ptrk = m_p[ii];
708 if ( ( *itTrk )->isMdcDedxValid() )
709 {
710 RecMdcDedx* dedxTrk = ( *itTrk )->mdcDedx();
711 m_probPH[ii] = dedxTrk->
probPH();
712 m_normPH[ii] = dedxTrk->
normPH();
713
714 m_chie[ii] = dedxTrk->
chiE();
715 m_chimu[ii] = dedxTrk->
chiMu();
716 m_chipi[ii] = dedxTrk->
chiPi();
717 m_chik[ii] = dedxTrk->
chiK();
718 m_chip[ii] = dedxTrk->
chiP();
721 }
722
723 if ( ( *itTrk )->isEmcShowerValid() )
724 {
725 RecEmcShower* emcTrk = ( *itTrk )->emcShower();
726 m_e_emc[ii] = emcTrk->
energy();
727 }
728
729 if ( ( *itTrk )->isTofTrackValid() )
730 {
731 SmartRefVector<RecTofTrack> tofTrkCol = ( *itTrk )->tofTrack();
732
733 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin();
734
735 for ( ; iter_tof != tofTrkCol.end(); iter_tof++ )
736 {
737 TofHitStatus* status = new TofHitStatus;
738 status->
setStatus( ( *iter_tof )->status() );
739
741 {
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++ )
752 {
753 double gb = ptrk /
xmass[j];
754 double beta = gb / sqrt( 1 + gb * gb );
755 texp[j] = path / beta /
velc;
756 }
757
758 m_qual_etof[ii] = qual;
759 m_tof_etof[ii] = tof;
760 }
761 else
762 {
764 if ( status->
layer() == 1 )
765 {
766 double path = ( *iter_tof )->path();
767 double tof = ( *iter_tof )->tof();
768 double ph = ( *iter_tof )->ph();
769 double rhit = ( *iter_tof )->zrhit();
770 double qual = 0.0 + ( *iter_tof )->quality();
771 double cntr = 0.0 + ( *iter_tof )->tofID();
772 double texp[5];
773 for ( int j = 0; j < 5; j++ )
774 {
775 double gb = ptrk /
xmass[j];
776 double beta = gb / sqrt( 1 + gb * gb );
777 texp[j] = path / beta /
velc;
778 }
779
780 m_qual_btof1[ii] = qual;
781 m_tof_btof1[ii] = tof;
782 }
783
784 if ( status->
layer() == 2 )
785 {
786 double path = ( *iter_tof )->path();
787 double tof = ( *iter_tof )->tof();
788 double ph = ( *iter_tof )->ph();
789 double rhit = ( *iter_tof )->zrhit();
790 double qual = 0.0 + ( *iter_tof )->quality();
791 double cntr = 0.0 + ( *iter_tof )->tofID();
792 double texp[5];
793 for ( int j = 0; j < 5; j++ )
794 {
795 double gb = ptrk /
xmass[j];
796 double beta = gb / sqrt( 1 + gb * gb );
797 texp[j] = path / beta /
velc;
798 }
799
800 m_qual_btof2[ii] = qual;
801 m_tof_btof2[ii] = tof;
802 }
803 }
804 }
805 }
806 }
807
808
810
812 double chisq = 9999.;
813 m_4c_chi2 = 9999.;
814 m_4c_mks = 10.0;
815 m_4c_mkspi = 10.0;
816 m_4c_mksk = 10.0;
817 m_4c_mkpi = 10.0;
818 m_4c_ks_px = 10.0;
819 m_4c_ks_py = 10.0;
820 m_4c_ks_pz = 10.0;
821 m_4c_ks_p = 10.0;
822 m_4c_ks_cos = 10.0;
823
829 bool oksq = kmfit->
Fit();
830 if ( oksq )
831 {
832 chisq = kmfit->
chisq();
833
834 HepLorentzVector pk = kmfit->
pfit( 1 );
835 HepLorentzVector pks = kmfit->
pfit( 2 );
836 HepLorentzVector pkspi = kmfit->
pfit( 0 ) + kmfit->
pfit( 2 );
837 HepLorentzVector pksk = kmfit->
pfit( 1 ) + kmfit->
pfit( 2 );
838 HepLorentzVector pkpi = kmfit->
pfit( 0 ) + kmfit->
pfit( 1 );
839
841 pkspi.boost(
u_cms );
844
845 m_4c_chi2 = chisq;
846 m_4c_mks = pks.m();
847 m_4c_mkspi = pkspi.m();
848 m_4c_mksk = pksk.m();
849 m_4c_mkpi = pkpi.m();
850
851 m_4c_ks_px = pks.px();
852 m_4c_ks_py = pks.py();
853 m_4c_ks_pz = pks.pz();
854 m_4c_ks_p = ( pks.vect() ).mag();
855 m_4c_ks_cos = m_4c_ks_pz / m_4c_ks_p;
856 }
857
858 chisq = 9999.;
859 m_chi2_fs4c = 9999.;
860 m_mks_fs4c = 10.0;
861 m_mkspi_fs4c = 10.0;
862 m_mksk_fs4c = 10.0;
863 m_mkpi_fs4c = 10.0;
864
872 if ( oksq )
873 {
874 chisq = kmfit->
chisq();
875
876 HepLorentzVector pks = kmfit->
pfit( 0 ) + kmfit->
pfit( 1 );
877 HepLorentzVector pkspi = pks + kmfit->
pfit( 2 );
878 HepLorentzVector pksk = pks + kmfit->
pfit( 3 );
879 HepLorentzVector pkpi = kmfit->
pfit( 2 ) + kmfit->
pfit( 3 );
880
882 pkspi.boost(
u_cms );
885
886 m_chi2_fs4c = chisq;
887 m_mks_fs4c = pks.m();
888 m_mkspi_fs4c = pkspi.m();
889 m_mksk_fs4c = pksk.m();
890 m_mkpi_fs4c = pkpi.m();
891 }
892
893
894 if ( chisq > 20 ) { return StatusCode::SUCCESS; }
895 if ( m_vfit2_dl < 0.5 ) { return StatusCode::SUCCESS; }
896 if ( fabs( m_4c_mks -
mks0 ) > 0.01 ) {
return StatusCode::SUCCESS; }
897 if ( m_4c_mkspi < 1.25 ) { return StatusCode::SUCCESS; }
898
899
900 TH1* h( 0 );
901 if ( m_thsvc->getHist( "/DQAHist/DQAKsKpi/hks_dl", h ).isSuccess() )
902 { h->Fill( m_vfit2_dl ); }
903 else { log << MSG::ERROR << "Couldn't retrieve hks_dl" << endmsg; }
904
905 if ( m_thsvc->getHist( "/DQAHist/DQAKsKpi/hks_m", h ).isSuccess() ) { h->Fill( m_4c_mks ); }
906 else { log << MSG::ERROR << "Couldn't retrieve hks_m" << endmsg; }
907
908 if ( m_thsvc->getHist( "/DQAHist/DQAKsKpi/hkspi_m", h ).isSuccess() )
909 { h->Fill( m_4c_mkspi ); }
910 else { log << MSG::ERROR << "Couldn't retrieve hkspi_m" << endmsg; }
911
912 if ( m_thsvc->getHist( "/DQAHist/DQAKsKpi/hks_p", h ).isSuccess() ) { h->Fill( m_4c_ks_p ); }
913 else { log << MSG::ERROR << "Couldn't retrieve hks_p" << endmsg; }
914
915 if ( m_thsvc->getHist( "/DQAHist/DQAKsKpi/hkpi_m", h ).isSuccess() )
916 { h->Fill( m_4c_mkpi ); }
917 else { log << MSG::ERROR << "Couldn't retrieve hkpi_m" << endmsg; }
918
919
920
921
922
923
924 if ( m_npip == 2 && m_npim == 1 )
925 {
926 ( *( evtRecTrkCol->begin() + ipip[0] ) )->setPartId( 2 );
927 ( *( evtRecTrkCol->begin() + ipip[1] ) )->setPartId( 2 );
928 ( *( evtRecTrkCol->begin() + ipim[0] ) )->setPartId( 2 );
929 ( *( evtRecTrkCol->begin() + ikm[0] ) )->setPartId( 4 );
930 }
931 if ( m_npip == 1 && m_npim == 2 )
932 {
933 ( *( evtRecTrkCol->begin() + ipip[0] ) )->setPartId( 2 );
934 ( *( evtRecTrkCol->begin() + ipim[0] ) )->setPartId( 2 );
935 ( *( evtRecTrkCol->begin() + ipim[1] ) )->setPartId( 2 );
936 ( *( evtRecTrkCol->begin() + ikp[0] ) )->setPartId( 4 );
937 }
938
939
940
941
942
943 if ( m_npip == 2 && m_npim == 1 )
944 {
945 ( *( evtRecTrkCol->begin() + ipip[0] ) )->setQuality( 1 );
946 ( *( evtRecTrkCol->begin() + ipip[1] ) )->setQuality( 1 );
947 ( *( evtRecTrkCol->begin() + ipim[0] ) )->setQuality( 1 );
948 ( *( evtRecTrkCol->begin() + ikm[0] ) )->setQuality( 1 );
949 }
950 if ( m_npip == 1 && m_npim == 2 )
951 {
952 ( *( evtRecTrkCol->begin() + ipip[0] ) )->setQuality( 1 );
953 ( *( evtRecTrkCol->begin() + ipim[0] ) )->setQuality( 1 );
954 ( *( evtRecTrkCol->begin() + ipim[1] ) )->setQuality( 1 );
955 ( *( evtRecTrkCol->begin() + ikp[0] ) )->setQuality( 1 );
956 }
957
958
959
960 setFilterPassed( true );
961
962
963 m_tuple->write().ignore();
964
965 return StatusCode::SUCCESS;
966}
HepGeom::Point3D< double > HepPoint3D
const HepLorentzVector p_cms(0.034067, 0.0, 0.0, 3.097)
EvtRecTrackCol::iterator EvtRecTrackIterator
std::vector< HepLorentzVector > Vp4
double sin(const BesAngle a)
double cos(const BesAngle a)
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
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