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