1#include "GaudiKernel/MsgStream.h"
2#include "GaudiKernel/AlgFactory.h"
3#include "GaudiKernel/ISvcLocator.h"
4#include "GaudiKernel/SmartDataPtr.h"
5#include "GaudiKernel/IDataProviderSvc.h"
6#include "GaudiKernel/PropertyMgr.h"
8#include "GaudiKernel/Bootstrap.h"
9#include "GaudiKernel/ISvcLocator.h"
22#include "GaudiKernel/INTupleSvc.h"
23#include "GaudiKernel/NTuple.h"
24#include "GaudiKernel/Bootstrap.h"
25#include "GaudiKernel/IHistogramSvc.h"
26#include "CLHEP/Vector/ThreeVector.h"
27#include "CLHEP/Vector/LorentzVector.h"
28#include "CLHEP/Vector/TwoVector.h"
29using CLHEP::Hep3Vector;
30using CLHEP::Hep2Vector;
31using CLHEP::HepLorentzVector;
32#include "CLHEP/Geometry/Point3D.h"
33#ifndef ENABLE_BACKWARDS_COMPATIBILITY
45const double mpi = 0.13957;
46const double mk = 0.493677;
47const double xmass[5] = {0.000511, 0.105658, 0.139570,0.493677, 0.938272};
49const double velc = 299.792458;
50typedef std::vector<int>
Vint;
51typedef std::vector<HepLorentzVector>
Vp4;
53int Ncut0,
Ncut1,
Ncut2,
Ncut3,
Ncut4,
Ncut5,
Ncut6,
Ncut7,
Ncut8,
Ncut9,
Ncut10;
59 Algorithm(name, pSvcLocator) {
62 declareProperty(
"Vr0cut", m_vr0cut=5.0);
63 declareProperty(
"Vz0cut", m_vz0cut=20.0);
64 declareProperty(
"Vr1cut", m_vr1cut=1.0);
65 declareProperty(
"Vz1cut", m_vz1cut=5.0);
66 declareProperty(
"Vctcut", m_cthcut=0.93);
67 declareProperty(
"EnergyThreshold", m_energyThreshold=0.04);
68 declareProperty(
"GammaAngCut", m_gammaAngCut=20.0);
69 declareProperty(
"Test4C", m_test4C = 1);
70 declareProperty(
"Test5C", m_test5C = 1);
71 declareProperty(
"CheckDedx", m_checkDedx = 1);
72 declareProperty(
"CheckTof", m_checkTof = 1);
77 MsgStream log(
msgSvc(), name());
79 log << MSG::INFO <<
"in initialize()" << endmsg;
293 log << MSG::INFO <<
"successfully return from initialize()" <<endmsg;
294 return StatusCode::SUCCESS;
303 MsgStream log(
msgSvc(), name());
304 log << MSG::INFO <<
"in execute()" << endreq;
306 setFilterPassed(
false);
308 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),
"/Event/EventHeader");
309 int runNo=eventHeader->runNumber();
310 int event=eventHeader->eventNumber();
311 log << MSG::DEBUG <<
"runNo, evtnum = "
319 log << MSG::INFO <<
"get event tag OK" << endreq;
320 log << MSG::DEBUG <<
"ncharg, nneu, tottks = "
321 << evtRecEvent->totalCharged() <<
" , "
322 << evtRecEvent->totalNeutral() <<
" , "
323 << evtRecEvent->totalTracks() <<endreq;
332 if(evtRecEvent->totalNeutral()>100) {
333 return StatusCode::SUCCESS;
336 Vint iGood, ipip, ipim;
344 Hep3Vector xorigin(0,0,0);
348 Gaudi::svcLocator()->service(
"VertexDbSvc", vtxsvc);
354 xorigin.setX(dbv[0]);
355 xorigin.setY(dbv[1]);
356 xorigin.setZ(dbv[2]);
360 for(
int i = 0; i < evtRecEvent->totalCharged(); i++){
362 if(!(*itTrk)->isMdcTrackValid())
continue;
363 if (!(*itTrk)->isMdcKalTrackValid())
continue;
366 double pch =mdcTrk->
p();
367 double x0 =mdcTrk->
x();
368 double y0 =mdcTrk->
y();
369 double z0 =mdcTrk->
z();
370 double phi0=mdcTrk->
helix(1);
371 double xv=xorigin.x();
372 double yv=xorigin.y();
373 double Rxy=fabs((x0-xv)*
cos(phi0)+(y0-yv)*
sin(phi0));
377 double m_vz0 = z0-xorigin.z();
379 double m_Vctc=z0/sqrt(Rxy*Rxy+z0*z0);
384 if(fabs(m_vz0) >= m_vz0cut)
continue;
385 if(m_vr0 >= m_vr0cut)
continue;
387 iGood.push_back((*itTrk)->trackId());
388 nCharge += mdcTrk->
charge();
394 int nGood = iGood.size();
396 log << MSG::DEBUG <<
"ngood, totcharge = " << nGood <<
" , " << nCharge << endreq;
397 if((nGood != 4)||(nCharge!=0)){
398 return StatusCode::SUCCESS;
405 for(
int i = evtRecEvent->totalCharged(); i< evtRecEvent->totalTracks(); i++) {
407 if(!(*itTrk)->isEmcShowerValid())
continue;
409 Hep3Vector emcpos(emcTrk->
x(), emcTrk->
y(), emcTrk->
z());
414 log << MSG::DEBUG <<
"liuf neu= " <<i <<endreq;
415 for(
int j = 0; j < evtRecEvent->totalCharged(); j++) {
417 if(!(*jtTrk)->isExtTrackValid())
continue;
421 log << MSG::DEBUG <<
"liuf charge= " <<j <<endreq;
423 double angd = extpos.angle(emcpos);
424 double thed = extpos.theta() - emcpos.theta();
425 double phid = extpos.deltaPhi(emcpos);
426 thed = fmod(thed+CLHEP::twopi+CLHEP::twopi+
pi, CLHEP::twopi) - CLHEP::pi;
427 phid = fmod(phid+CLHEP::twopi+CLHEP::twopi+
pi, CLHEP::twopi) - CLHEP::pi;
437 if(dang>=200)
continue;
438 double eraw = emcTrk->
energy();
439 dthe = dthe * 180 / (CLHEP::pi);
440 dphi = dphi * 180 / (CLHEP::pi);
441 dang = dang * 180 / (CLHEP::pi);
443 double m_dthe = dthe;
444 double m_dphi = dphi;
445 double m_dang = dang;
446 double m_eraw = eraw;
449 log << MSG::DEBUG <<
"eraw dang= " << eraw <<
" , " <<dang <<
"," <<i <<endreq;
450 if(eraw < m_energyThreshold)
continue;
451 if(dang < m_gammaAngCut)
continue;
456 iGam.push_back((*itTrk)->trackId());
462 int nGam = iGam.size();
464 log << MSG::DEBUG <<
"num Good Photon " << nGam <<
" , " <<evtRecEvent->totalNeutral()<<endreq;
466 return StatusCode::SUCCESS;
480 for(
int i = 0; i < nGam; i++) {
483 double eraw = emcTrk->
energy();
484 double phi = emcTrk->
phi();
485 double the = emcTrk->
theta();
486 HepLorentzVector
ptrk;
494 pGam.push_back(
ptrk);
498 for(
int i = 0; i < nGood; i++) {
500 if (!(*itTrk)->isMdcTrackValid())
continue;
502 if (!(*itTrk)->isMdcKalTrackValid())
continue;
505 if(mdcKalTrk->
charge() >0 ) {
506 ipip.push_back(iGood[i]);
507 HepLorentzVector
ptrk;
508 ptrk.setPx(mdcKalTrk->
px());
509 ptrk.setPy(mdcKalTrk->
py());
510 ptrk.setPz(mdcKalTrk->
pz());
513 ppip.push_back(
ptrk);
515 ipim.push_back(iGood[i]);
516 HepLorentzVector
ptrk;
517 ptrk.setPx(mdcKalTrk->
px());
518 ptrk.setPy(mdcKalTrk->
py());
519 ptrk.setPz(mdcKalTrk->
pz());
522 ppim.push_back(
ptrk);
527 int npip = ipip.size();
528 int npim = ipim.size();
529 if(npip!=2||npim != 2)
return SUCCESS;
543 HepLorentzVector pTot0(0.011*3.6862,0,0,3.6862);
544 HepLorentzVector pTrec1,pTrec2,pTrec3,pTrec4;
545 HepLorentzVector pTrecf;
546 double m_recjpsi1,m_recjpsi2,m_recjpsi3,m_recjpsi4,m_recppf;
547 double deljp1,deljp2,deljp3,deljp4;
548 pTrec1 = pTot0 - ppip[0] - ppim[0];
549 pTrec2 = pTot0 - ppip[0] - ppim[1];
550 pTrec3 = pTot0 - ppip[1] - ppim[0];
551 pTrec4 = pTot0 - ppip[1] - ppim[1];
552 m_recjpsi1 = pTrec1.m();
553 m_recjpsi2 = pTrec2.m();
554 m_recjpsi3 = pTrec3.m();
555 m_recjpsi4 = pTrec4.m();
556 deljp1=fabs(m_recjpsi1-3.097);
557 deljp2=fabs(m_recjpsi2-3.097);
558 deljp3=fabs(m_recjpsi3-3.097);
559 deljp4=fabs(m_recjpsi4-3.097);
561 int itmp,itmp1,itmp2;
562 HepLorentzVector ptmp,ptmp1,ptmp2;
567 if(deljp2<deljp1&&deljp2<deljp3&&deljp2<deljp4)
580 if(deljp3<deljp1&&deljp3<deljp2&&deljp3<deljp4)
593 if(deljp4<deljp1&&deljp4<deljp2&&deljp4<deljp3)
612 if(fabs(m_recppf-3.097)>0.2)
return SUCCESS;
614 log << MSG::DEBUG <<
"ngood track ID after jpsi = " << ipip[0] <<
" , "
615 << ipim[0]<<
" , " << ipip[1] <<
" , " << ipim[1] << endreq;
618 HepLorentzVector ppi2_no1 = ppip[0] + ppim[0];
619 HepLorentzVector ppi2_no2 = ppip[1] + ppim[1];
620 HepLorentzVector ppi2_no3 = ppip[0] + ppim[1];
621 HepLorentzVector ppi2_no4 = ppip[1] + ppim[0];
622 HepLorentzVector p4pi_no = ppi2_no1+ ppi2_no2;
639 double phi01=mdcTrkp1->
helix(1);
640 double m_p1vx = mdcTrkp1->
x();
641 double m_p1vy = mdcTrkp1->
y();
642 double m_p1vz = mdcTrkp1->
z()-xorigin.z();
643 double m_p1vr = fabs((mdcTrkp1->
x()-xorigin.x())*
cos(phi01)+(mdcTrkp1->
y()-xorigin.y())*
sin(phi01));
644 double m_p1vct=
cos(mdcTrkp1->
theta());
645 double m_p1ptot=mdcKalTrkp1->
p();
646 double m_p1pxy=sqrt(mdcKalTrkp1->
px()*mdcKalTrkp1->
px()+mdcKalTrkp1->
py()*mdcKalTrkp1->
py());
648 if((*itTrkp1)->isEmcShowerValid()){
649 emcTg1=emcTrkp1->
energy();
651 if((*itTrkp1)->isMucTrackValid()){
654 double m_laypip1=laypi1;
662 double phi02=mdcTrkm1->
helix(1);
663 double m_m1vx = mdcTrkm1->
x();
664 double m_m1vy = mdcTrkm1->
y();
665 double m_m1vz = mdcTrkm1->
z()-xorigin.z();
666 double m_m1vr = fabs((mdcTrkm1->
x()-xorigin.x())*
cos(phi02)+(mdcTrkm1->
y()-xorigin.y())*
sin(phi02));
667 double m_m1vct=
cos(mdcTrkm1->
theta());
668 double m_m1ptot=mdcKalTrkm1->
p();
669 double m_m1pxy=sqrt(mdcKalTrkm1->
px()*mdcKalTrkm1->
px()+mdcKalTrkm1->
py()*mdcKalTrkm1->
py());
671 if((*itTrkm1)->isEmcShowerValid()){
672 emcTg2= emcTrkm1->
energy();
674 if((*itTrkm1)->isMucTrackValid()){
677 double m_laypim1=laypi2;
685 double phi03=mdcTrkp2->
helix(1);
686 double m_p2vx = mdcTrkp2->
x();
687 double m_p2vy = mdcTrkp2->
y();
688 double m_p2vz = mdcTrkp2->
z()-xorigin.z();
689 double m_p2vr = fabs((mdcTrkp2->
x()-xorigin.x())*
cos(phi03)+(mdcTrkp2->
y()-xorigin.y())*
sin(phi03));
690 double m_p2vct=
cos(mdcTrkp2->
theta());
691 double m_p2ptot=mdcKalTrkp2->
p();
692 double m_p2pxy=sqrt(mdcKalTrkp2->
px()*mdcKalTrkp2->
px()+mdcKalTrkp2->
py()*mdcKalTrkp2->
py());
694 if((*itTrkp2)->isEmcShowerValid()){
695 emcTg3= emcTrkp2->
energy();
697 if((*itTrkp2)->isMucTrackValid()){
700 double m_laypip2=laypi3;
708 double phi04=mdcTrkm2->
helix(1);
709 double m_m2vx = mdcTrkm2->
x();
710 double m_m2vy = mdcTrkm2->
y();
711 double m_m2vz = mdcTrkm2->
z()-xorigin.z();
712 double m_m2vr = fabs((mdcTrkm2->
x()-xorigin.x())*
cos(phi04)+(mdcTrkm2->
y()-xorigin.y())*
sin(phi04));
713 double m_m2vct=
cos(mdcTrkm2->
theta());
714 double m_m2ptot=mdcKalTrkm2->
p();
715 double m_m2pxy=sqrt(mdcKalTrkm2->
px()*mdcKalTrkm2->
px()+mdcKalTrkm2->
py()*mdcKalTrkm2->
py());
717 if((*itTrkm2)->isEmcShowerValid()){
718 emcTg4= emcTrkm2->
energy();
720 if((*itTrkm2)->isMucTrackValid()){
723 double m_laypim2=laypi4;
725 double m_emcTp1 =emcTg1;
726 double m_emcTm1 =emcTg2;
727 double m_emcTp2 =emcTg3;
728 double m_emcTm2 =emcTg4;
730 if(fabs(m_p1vz) >= m_vz1cut)
return SUCCESS;
731 if(m_p1vr >= m_vr1cut)
return SUCCESS;
732 if(fabs(m_p1vct)>=m_cthcut)
return SUCCESS;
734 if(fabs(m_m1vz) >= m_vz1cut)
return SUCCESS;
735 if(m_m1vr >= m_vr1cut)
return SUCCESS;
736 if(fabs(m_m1vct)>=m_cthcut)
return SUCCESS;
739 HepLorentzVector p4muonp = ppip[1];
740 HepLorentzVector p4muonm = ppim[1];
741 HepLorentzVector p4uu = pTrecf;
744 Hep3Vector p3jpsiUnit = (p4uu.vect()).
unit();
745 double jBeta = p4uu.beta();
754 HepLorentzVector pTot;
756 for(
int i = 0; i < nGam - 1; i++){
757 for(
int j = i+1; j < nGam; j++) {
758 HepLorentzVector p2g = pGam[i] + pGam[j];
759 pTot = ppip[0] + ppim[0] + ppip[1] + ppim[1];
761 if(fabs(p2g.m()-0.135)<minpi0){
762 minpi0 = fabs(p2g.m()-0.135);
764 double m_m2gg = p2g.m();
766 HepLorentzVector prho0_no = ppi2_no2;
767 HepLorentzVector prhop_no = ppip[1] + p2g;
768 HepLorentzVector prhom_no = ppim[1] + p2g;
769 HepLorentzVector prho0pi0 = ppi2_no2 + p2g;
770 HepLorentzVector frho1pi0 = ppi2_no1 + p2g;
771 HepLorentzVector frho2pi0 = ppi2_no3 + p2g;
772 HepLorentzVector frho3pi0 = ppi2_no4 + p2g;
773 HepLorentzVector prho0g1 = ppi2_no2 + pGam[i];
774 HepLorentzVector prho0g2 = ppi2_no2 + pGam[j];
775 HepLorentzVector frho1g1 = ppi2_no1 + pGam[i];
776 HepLorentzVector frho1g2 = ppi2_no1 + pGam[j];
777 HepLorentzVector frho2g1 = ppi2_no3 + pGam[i];
778 HepLorentzVector frho2g2 = ppi2_no3 + pGam[j];
779 HepLorentzVector frho3g1 = ppi2_no4 + pGam[i];
780 HepLorentzVector frho3g2 = ppi2_no4 + pGam[j];
781 HepLorentzVector p5pi_no = p4pi_no + p2g;
784 double m_prho0_no = prho0_no.m();
785 double m_prhop_no = prhop_no.m();
786 double m_prhom_no = prhom_no.m();
787 double m_prho0pi0 = prho0pi0.m();
788 double m_frho1pi0 = frho1pi0.m();
789 double m_frho2pi0 = frho2pi0.m();
790 double m_frho3pi0 = frho3pi0.m();
791 double m_prho0g1 = prho0g1.m();
792 double m_prho0g2 = prho0g2.m();
793 double m_frho1g1 = frho1g1.m();
794 double m_frho1g2 = frho1g2.m();
795 double m_frho2g1 = frho2g1.m();
796 double m_frho2g2 = frho2g2.m();
797 double m_frho3g1 = frho3g1.m();
798 double m_frho3g2 = frho3g2.m();
799 double m_p4pi_no = p4pi_no.m();
800 double m_p5pi_no = p5pi_no.m();
801 double m_mdcpx1=ppip[0].px();
802 double m_mdcpy1=ppip[0].py();
803 double m_mdcpz1=ppip[0].pz();
804 double m_mdcpe1=ppip[0].e();
805 double m_mdcpx2=ppim[0].px();
806 double m_mdcpy2=ppim[0].py();
807 double m_mdcpz2=ppim[0].pz();
808 double m_mdcpe2=ppim[0].e();
809 double m_mdcpx3=ppip[1].px();
810 double m_mdcpy3=ppip[1].py();
811 double m_mdcpz3=ppip[1].pz();
812 double m_mdcpe3=ppip[1].e();
813 double m_mdcpx4=ppim[1].px();
814 double m_mdcpy4=ppim[1].py();
815 double m_mdcpz4=ppim[1].pz();
816 double m_mdcpe4=ppim[1].e();
817 double m_mdcpxg1=pGam[i].px();
818 double m_mdcpyg1=pGam[i].py();
819 double m_mdcpzg1=pGam[i].pz();
820 double m_mdcpeg1=pGam[i].e();
821 double m_mdcpxg2=pGam[j].px();
822 double m_mdcpyg2=pGam[j].py();
823 double m_mdcpzg2=pGam[j].pz();
824 double m_mdcpeg2=pGam[j].e();
825 double m_etot = pTot.e();
826 double m_mrecjp1=m_recjpsi1;
827 double m_mrecjp2=m_recjpsi2;
828 double m_mrecjp3=m_recjpsi3;
829 double m_mrecjp4=m_recjpsi4;
843 HepSymMatrix Evx(3, 0);
861 RecMdcKalTrack *pipTrk1 = (*(evtRecTrkCol->begin()+ipip[0]))->mdcKalTrack();
862 RecMdcKalTrack *pimTrk1 = (*(evtRecTrkCol->begin()+ipim[0]))->mdcKalTrack();
863 RecMdcKalTrack *pipTrk2 = (*(evtRecTrkCol->begin()+ipip[1]))->mdcKalTrack();
864 RecMdcKalTrack *pimTrk2 = (*(evtRecTrkCol->begin()+ipim[1]))->mdcKalTrack();
875 if(!vtxfit->
Fit(0))
return SUCCESS;
890 HepLorentzVector pTgam1(0,0,0,0);
891 HepLorentzVector pTgam2(0,0,0,0);
895 HepLorentzVector
ecms(0.011*3.6862,0,0,3.6862);
903 double chisq = 9999.;
907 for(
int i = 0; i < nGam-1; i++) {
908 RecEmcShower *g1Trk = (*(evtRecTrkCol->begin()+iGam[i]))->emcShower();
909 for(
int j = i+1; j < nGam; j++) {
910 RecEmcShower *g2Trk = (*(evtRecTrkCol->begin()+iGam[j]))->emcShower();
920 bool oksq = kmfit->
Fit();
921 if(oksq&&kmfit->
chisq()<chikk) {
922 chikk = kmfit->
chisq();
935 for(
int i = 0; i < nGam-1; i++) {
936 RecEmcShower *g1Trk = (*(evtRecTrkCol->begin()+iGam[i]))->emcShower();
937 for(
int j = i+1; j < nGam; j++) {
938 RecEmcShower *g2Trk = (*(evtRecTrkCol->begin()+iGam[j]))->emcShower();
948 bool oksq = kmfit->
Fit();
950 double chi2 = kmfit->
chisq();
965 if(chisq > 200)
return SUCCESS;
971 jGood.push_back(ipip[0]);
972 jGood.push_back(ipim[0]);
973 jGood.push_back(ipip[1]);
974 jGood.push_back(ipim[1]);
980 jGgam.push_back(igbf1);
981 jGgam.push_back(igbf2);
983 double chi1_pp=9999.0;
985 RecEmcShower *g1Trk = (*(evtRecTrkCol->begin()+ig1))->emcShower();
986 RecEmcShower *g2Trk = (*(evtRecTrkCol->begin()+ig2))->emcShower();
995 bool oksq = kmfit->
Fit();
997 chi1_pp = kmfit->
chisq();
998 HepLorentzVector ppi0 = kmfit->
pfit(4) + kmfit->
pfit(5);
999 HepLorentzVector prho0= kmfit->
pfit(2) + kmfit->
pfit(3);
1000 HepLorentzVector prhop= kmfit->
pfit(2) + ppi0;
1001 HepLorentzVector prhom= kmfit->
pfit(3) + ppi0;
1002 HepLorentzVector pjjj = prho0 + ppi0;
1004 HepLorentzVector p2pi1=kmfit->
pfit(0) + kmfit->
pfit(1);
1005 HepLorentzVector f2pi1g1= p2pi1 + kmfit->
pfit(4);
1006 HepLorentzVector f2pi1g2= p2pi1 + kmfit->
pfit(5);
1007 HepLorentzVector f2pi1pi0=p2pi1 + ppi0;
1009 HepLorentzVector t2pi2g1= prho0 + kmfit->
pfit(4);
1010 HepLorentzVector t2pi2g2= prho0 + kmfit->
pfit(5);
1012 HepLorentzVector p2pi3=kmfit->
pfit(0) + kmfit->
pfit(3);
1013 HepLorentzVector f2pi3g1= p2pi3 + kmfit->
pfit(4);
1014 HepLorentzVector f2pi3g2= p2pi3 + kmfit->
pfit(5);
1015 HepLorentzVector f2pi3pi0=p2pi3 + ppi0;
1017 HepLorentzVector p2pi4=kmfit->
pfit(1) + kmfit->
pfit(2);
1018 HepLorentzVector f2pi4g1= p2pi4 + kmfit->
pfit(4);
1019 HepLorentzVector f2pi4g2= p2pi4 + kmfit->
pfit(5);
1020 HepLorentzVector f2pi4pi0=p2pi4 + ppi0;
1022 HepLorentzVector p4pi= p2pi1 + prho0;
1023 HepLorentzVector p4pig1= p4pi + kmfit->
pfit(4);
1024 HepLorentzVector p4pig2= p4pi + kmfit->
pfit(5);
1025 HepLorentzVector ppptot= p4pi + ppi0;
1028 HepLorentzVector be4cpi0= pTgam1 + pTgam2;
1029 HepLorentzVector be4c_ppi1 = ppip[0] + ppim[0];
1030 HepLorentzVector be4c_ppi2 = ppip[1] + ppim[1];
1031 HepLorentzVector be4cjp= be4cpi0 + be4c_ppi2;
1437 setFilterPassed(
true);
1439 (*(evtRecTrkCol->begin()+ipip[0]))->setPartId(2);
1440 (*(evtRecTrkCol->begin()+ipim[0]))->setPartId(2);
1441 (*(evtRecTrkCol->begin()+ipip[1]))->setPartId(2);
1442 (*(evtRecTrkCol->begin()+ipim[1]))->setPartId(2);
1445 return StatusCode::SUCCESS;
1451 cout<<
"total number: "<<
Ncut0<<endl;
1452 cout<<
"nGood==4, nCharge==0: "<<
Ncut1<<endl;
1453 cout<<
"nGam>=2: "<<
Ncut2<<endl;
1454 cout<<
"Pass no Pid: "<<
Ncut3<<endl;
1455 cout<<
"ChangeID recfrom psp: "<<
Ncut4<<endl;
1456 cout<<
"vetex position: "<<
Ncut5<<endl;
1457 cout<<
"Mass from MDC: "<<
Ncut6<<endl;
1458 cout<<
"primary vetex fit: "<<
Ncut7<<endl;
1459 cout<<
"Pass 4C for ppkkp0: "<<
Ncut8<<endl;
1460 cout<<
"Pass 4C for 4pi+pi0: "<<
Ncut9<<endl;
1461 cout<<
"Pass 4C <200: "<<
Ncut10<<endl;
1462 MsgStream log(
msgSvc(), name());
1463 log << MSG::INFO <<
"in finalize()" << endmsg;
1464 return StatusCode::SUCCESS;
double sin(const BesAngle a)
double cos(const BesAngle a)
EvtRecTrackCol::iterator EvtRecTrackIterator
*******INTEGER m_nBinMax INTEGER m_NdiMax !No of bins in histogram for cell exploration division $ !Last vertex $ !Last active cell $ !Last cell in buffer $ !No of sampling when dividing cell $ !No of function total $ !Flag for random ceel for $ !Flag for type of for WtMax $ !Flag which decides whether vertices are included in the sampling $ entire domain is hyp !Maximum effective eevents per saves r n generator level $ !Flag for chat level in !Latex Output unit
std::vector< HepLorentzVector > Vp4
HepGeom::Point3D< double > HepPoint3D
std::vector< HepLorentzVector > Vp4
const Hep3Vector emcPosition() const
const int emcVolumeNumber() const
static void setPidType(PidType pidType)
const double theta() const
const HepVector helix() const
......
virtual bool isVertexValid()=0
virtual double * SigmaPrimaryVertex()=0
virtual double * PrimaryVertex()=0
static KinematicFit * instance()
void setDynamicerror(const bool dynamicerror=1)
void AddFourMomentum(int number, HepLorentzVector p4)
HepLorentzVector pfit(int n) const
const HepVector & getZHelix() const
const HepSymMatrix & getZError() const
HepSymMatrix & getZErrorK()
void AddTrack(const int number, const double mass, const RecMdcTrack *trk)
WTrackParameter wtrk(int n) const
void AddVertex(int number, VertexParameter vpar, std::vector< int > lis)
static VertexFit * instance()
void setEvx(const HepSymMatrix &eVx)
void setVx(const HepPoint3D &vx)
_EXTERN_ std::string EvtRecEvent
_EXTERN_ std::string EvtRecTrackCol