70 eventSvc()->registerObject(
"/Event/EvtRec/EvtRecVeeVertexCol", aNewEvtRecVeeVertexCol );
78 MsgStream log(
msgSvc(), name() );
79 log << MSG::INFO <<
"in execute()" << endmsg;
86 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
89 log << MSG::DEBUG <<
"run and event = " << eventHeader->runNumber() <<
" "
90 << eventHeader->eventNumber() << endmsg;
91 log << MSG::DEBUG <<
"ncharg, nneu, tottks = " << recEvent->totalCharged() <<
" , "
92 << recEvent->totalNeutral() <<
" , " << recEvent->totalTracks() << endmsg;
93 int evtNo = eventHeader->eventNumber();
98 SmartDataPtr<EvtRecVeeVertexCol> veeVertexCol( eventSvc(),
103 sc = registerEvtRecVeeVertexCol( veeVertexCol, log );
104 if ( sc != StatusCode::SUCCESS ) {
return sc; }
110 Vint ipip, ipim, iGood;
111 for (
unsigned int i = 0; i < recEvent->totalCharged(); i++ )
115 if ( !( *itTrk )->isMdcTrackValid() )
continue;
116 if ( !( *itTrk )->isMdcKalTrackValid() )
continue;
118 if ( fabs(
cos( mdcTrk->
theta() ) ) >= m_cosThetaCut )
continue;
119 if ( fabs( mdcTrk->
z() ) >= m_vzCut )
continue;
120 iGood.push_back( i );
121 if ( mdcTrk->
charge() > 0 ) ipip.push_back( i );
122 if ( mdcTrk->
charge() < 0 ) ipim.push_back( i );
126 if ( ipip.size() < 1 || ipim.size() < 1 )
return StatusCode::SUCCESS;
132 HepSymMatrix Evx( 3, 0 );
142 for (
unsigned int i1 = 0; i1 < ipip.size(); i1++ )
145 RecMdcKalTrack* pipKalTrk = ( *( recTrackCol->begin() + ip1 ) )->mdcKalTrack();
149 for (
unsigned int i2 = 0; i2 < ipim.size(); i2++ )
152 RecMdcKalTrack* pimKalTrk = ( *( recTrackCol->begin() + ip2 ) )->mdcKalTrack();
170 bool fitok = vtxfit0->
Fit();
171 if ( !fitok )
continue;
176 if ( vtxfit0->
chisq( 0 ) > m_chisqCut )
continue;
178 std::pair<int, int> pair;
182 EvtRecTrack* track0 = *( recTrackCol->begin() + ip1 );
183 EvtRecTrack* track1 = *( recTrackCol->begin() + ip2 );
190 KsVertex->
setMass( wKshort.
p().m() );
191 KsVertex->
setW( wKshort.
w() );
192 KsVertex->
setEw( wKshort.
Ew() );
198 veeVertexCol->push_back( KsVertex );
220 if ( !( vtxfit0->
Fit( 0 ) ) )
continue;
222 if ( vtxfit0->
chisq( 0 ) > m_chisqCut )
continue;
224 std::pair<int, int> pair;
228 EvtRecTrack* track0 = *( recTrackCol->begin() + ip1 );
229 EvtRecTrack* track1 = *( recTrackCol->begin() + ip2 );
236 KsVertex->
setMass( wKshort.
p().m() );
237 KsVertex->
setW( wKshort.
w() );
238 KsVertex->
setEw( wKshort.
Ew() );
244 veeVertexCol->push_back( KsVertex );
259 return StatusCode::SUCCESS;