146 MsgStream log(
msgSvc(), name() );
147 log << MSG::INFO <<
"in execute()" << endmsg;
149 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(),
"/Event/EventHeader" );
150 int runNo = eventHeader->runNumber();
151 int eventNo = eventHeader->eventNumber();
158 SmartDataPtr<EvtRecVeeVertexCol> evtRecVeeVertexCol( eventSvc(),
159 "/Event/EvtRec/EvtRecVeeVertexCol" );
160 if ( !evtRecVeeVertexCol )
162 log << MSG::FATAL <<
"Could not find EvtRecVeeVertexCol" << endmsg;
163 return StatusCode::FAILURE;
167 SmartDataPtr<EvtRecPi0Col> recPi0Col( eventSvc(),
"/Event/EvtRec/EvtRecPi0Col" );
170 log << MSG::FATAL <<
"Could not find EvtRecPi0Col" << endmsg;
171 return StatusCode::FAILURE;
175 Hep3Vector xorigin( 0, 0, 0 );
177 Gaudi::svcLocator()->service(
"VertexDbSvc", vtxsvc ).ignore();
183 xorigin.setX( vertex[0] );
184 xorigin.setY( vertex[1] );
185 xorigin.setZ( vertex[2] );
196 return StatusCode::SUCCESS;
202 cout <<
"size of dtag:******:" << iter_end - iter_begin << endl;
211 cout <<
" there are " << mode.size() <<
" candidates for this mode" << endl;
212 for (
int i = 0; i < mode.size(); i++ )
216 cout <<
"No." << i + 1 <<
" candidate deltaE is : " << ( *iter )->deltaE() << endl;
222 for (
DTagToolIterator iter_dtag = iter_begin; iter_dtag != iter_end; iter_dtag++ )
226 cout <<
"***********" << endl;
227 cout <<
"***********" << endl;
228 dtagTool << iter_dtag;
237 HepLorentzVector p4 = ( *iter_dtag )->p4();
238 p4.boost( -0.011, 0, 0 );
240 Hep3Vector p3 = p4.v();
242 m_mode = ( *iter_dtag )->decayMode();
243 m_type = ( *iter_dtag )->type();
244 m_charge = ( *iter_dtag )->charge();
245 m_charm = ( *iter_dtag )->charm();
246 m_numofchildren = ( *iter_dtag )->numOfChildren();
247 m_mass = ( *iter_dtag )->mass();
248 m_mBC = ( *iter_dtag )->mBC();
249 m_e = ( *iter_dtag )->beamE();
250 m_deltae = ( *iter_dtag )->deltaE();
252 SmartRefVector<EvtRecTrack> tracks = ( *iter_dtag )->tracks();
253 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
254 SmartRefVector<EvtRecTrack> othershowers = ( *iter_dtag )->otherShowers();
255 m_ntrk = othertracks.size();
257 m_tuple4->write().ignore();
261 cout <<
"same side track 1 charge is:" << mdcKalTrk1->
charge() << endl;
262 cout <<
"same side track 2 charge is:" << mdcKalTrk2->
charge() << endl;
264 for (
int tk = 0; tk < othertracks.size(); tk++ )
267 double pch = mdcTrk->
p();
268 double x0 = mdcTrk->
x();
269 double y0 = mdcTrk->
y();
270 double z0 = mdcTrk->
z();
271 double phi0 = mdcTrk->
helix( 1 );
272 double xp = xorigin.x();
273 double yp = xorigin.y();
274 double Rxy = ( x0 - xp ) *
cos( phi0 ) + ( y0 - yp ) *
sin( phi0 );
280 m_tuple1->write().ignore();
281 nCharge += mdcTrk->
charge();
283 std::cout <<
"other side track ID is: " << othertracks[tk]->trackId() << std::endl;
285 if ( dtagTool.
isPion( othertracks[tk] ) ) cout <<
"it is pion" << endl;
286 if ( dtagTool.
isKaon( othertracks[tk] ) ) cout <<
"it is kaon" << endl;
292 for (
int i = 0; i < othershowers.size(); i++ )
306 m_mode = ( *iter_dtag )->decayMode();
307 m_type = ( *iter_dtag )->type();
308 m_charge = ( *iter_dtag )->charge();
309 m_charm = ( *iter_dtag )->charm();
310 m_numofchildren = ( *iter_dtag )->numOfChildren();
311 m_mass = ( *iter_dtag )->mass();
312 m_mBC = ( *iter_dtag )->mBC();
313 m_e = ( *iter_dtag )->beamE();
314 m_deltae = ( *iter_dtag )->deltaE();
316 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
317 m_ntrk = othertracks.size();
319 m_tuple4->write().ignore();
324 vector<int> pi0id = dtagTool.
pi0Id( iter_dtag );
325 cout <<
"xxxxxxxxxxxxxxxxxxxxxxxxx"
326 <<
"num of pi0 is:" << pi0id.size() << endl;
328 for (
int i = 0; i < pi0id.size(); i++ )
331 cout <<
"pi0Mass: " << ( *pi0Itr )->unconMass() << endl;
335 SmartRefVector<EvtRecTrack> showers = ( *iter_dtag )->showers();
337 for ( EvtRecPi0Col::iterator pi0Itr = recPi0Col->begin(); pi0Itr < recPi0Col->end();
345 int heGammaTrkId = heGammaTrk->
trackId();
346 int leGammaTrkId = leGammaTrk->
trackId();
348 if ( ( heGammaTrkId != showers[0]->trackId() ) &&
349 ( heGammaTrkId != showers[1]->trackId() ) )
351 if ( ( leGammaTrkId != showers[0]->trackId() ) &&
352 ( leGammaTrkId != showers[1]->trackId() ) )
358 cout <<
"pi0Mass: " << ( *pi0Itr )->unconMass() << endl;
359 cout <<
" E(high): " << heGamma->
energy() << endl;
360 cout <<
" E(low) : " << leGamma->
energy() << endl;
362 m_pi0mass = ( *pi0Itr )->unconMass();
363 m_pi0mode = ( *iter_dtag )->decayMode();
364 m_tuple3->write().ignore();
379 m_mode = ( *iter_dtag )->decayMode();
380 m_type = ( *iter_dtag )->type();
381 m_charge = ( *iter_dtag )->charge();
382 m_charm = ( *iter_dtag )->charm();
383 m_numofchildren = ( *iter_dtag )->numOfChildren();
384 m_mass = ( *iter_dtag )->mass();
385 m_mBC = ( *iter_dtag )->mBC();
386 m_e = ( *iter_dtag )->beamE();
387 m_deltae = ( *iter_dtag )->deltaE();
389 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
390 m_ntrk = othertracks.size();
392 m_tuple4->write().ignore();
397 vector<int> ksid = dtagTool.
ksId( iter_dtag );
398 cout <<
"xxxxxxxxxxxxxxxxxxxxxxxxx"
399 <<
"num of ks is:" << ksid.size() << endl;
401 for (
int i = 0; i < ksid.size(); i++ )
404 cout <<
"ksMass: " << ( *ksItr )->mass() << endl;
408 SmartRefVector<EvtRecTrack> tracks = ( *iter_dtag )->tracks();
410 for ( EvtRecVeeVertexCol::iterator ksItr = evtRecVeeVertexCol->begin();
411 ksItr < evtRecVeeVertexCol->end(); ksItr++ )
415 if ( ( *ksItr )->vertexId() != 310 )
continue;
417 EvtRecTrack* aKsChild1Trk = ( *ksItr )->daughter( 0 );
418 EvtRecTrack* aKsChild2Trk = ( *ksItr )->daughter( 1 );
420 int ksChild1TrkId = aKsChild1Trk->
trackId();
421 int ksChild2TrkId = aKsChild2Trk->
trackId();
423 if ( ( ksChild1TrkId != tracks[0]->trackId() ) &&
424 ( ksChild1TrkId != tracks[1]->trackId() ) )
426 if ( ( ksChild2TrkId != tracks[0]->trackId() ) &&
427 ( ksChild2TrkId != tracks[1]->trackId() ) )
430 cout <<
"ksMass: " << ( *ksItr )->mass() << endl;
432 Hep3Vector ks_D3( 0, 0, 0 );
433 ks_D3.set( ( *ksItr )->w()[4], ( *ksItr )->w()[5], ( *ksItr )->w()[6] );
435 m_ksmass = ( *ksItr )->mass();
437 m_ksmode = ( *iter_dtag )->decayMode();
438 m_tuple2->write().ignore();
453 m_mode = ( *iter_dtag )->decayMode();
454 m_type = ( *iter_dtag )->type();
455 m_charge = ( *iter_dtag )->charge();
456 m_charm = ( *iter_dtag )->charm();
457 m_numofchildren = ( *iter_dtag )->numOfChildren();
458 m_mass = ( *iter_dtag )->mass();
459 m_mBC = ( *iter_dtag )->mBC();
460 m_e = ( *iter_dtag )->beamE();
461 m_deltae = ( *iter_dtag )->deltaE();
463 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
464 m_ntrk = othertracks.size();
466 m_tuple4->write().ignore();
475 m_mode = ( *iter_dtag )->decayMode();
476 m_type = ( *iter_dtag )->type();
477 m_charge = ( *iter_dtag )->charge();
478 m_charm = ( *iter_dtag )->charm();
479 m_numofchildren = ( *iter_dtag )->numOfChildren();
480 m_mass = ( *iter_dtag )->mass();
481 m_mBC = ( *iter_dtag )->mBC();
482 m_e = ( *iter_dtag )->beamE();
483 m_deltae = ( *iter_dtag )->deltaE();
485 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
486 m_ntrk = othertracks.size();
488 m_tuple4->write().ignore();
494 cout <<
"**************" << endl;
495 cout <<
"**************" << endl;
496 cout <<
"test print only D0/Dp/Ds modes" << endl;
499 vector<int> d0itindex = dtagTool.
D0modes();
500 for (
int i = 0; i < d0itindex.size(); i++ )
503 cout <<
"No." << i + 1 <<
" D0 mode is :" << ( *iter )->decayMode() << endl;
507 vector<int> dpitindex = dtagTool.
Dpmodes();
508 for (
int i = 0; i < dpitindex.size(); i++ )
511 cout <<
"No." << i + 1 <<
" Dp mode is :" << ( *iter )->decayMode() << endl;
515 vector<int> dsitindex = dtagTool.
Dsmodes();
516 for (
int i = 0; i < dsitindex.size(); i++ )
519 cout <<
"No." << i + 1 <<
" Ds mode is :" << ( *iter )->decayMode() << endl;
524 cout <<
"**************" << endl;
525 cout <<
"**************" << endl;
526 cout <<
"test single tag " << endl;
529 cout <<
" find single tag mode: " << ( *dtagTool.
stag() )->decayMode() << endl;
534 cout <<
"cosmic and lepton backgaround veto" << endl;
535 cout <<
" find single tag mode: " << ( *dtagTool.
stag() )->decayMode() << endl;
540 cout <<
"**************" << endl;
541 cout <<
"**************" << endl;
542 cout <<
"test double tag " << endl;
550 cout <<
" find double tag mode 1 :" << endl;
551 dtagTool << dtagTool.
dtag1();
552 cout <<
" find double tag mode 2: " << endl;
553 dtagTool << dtagTool.
dtag2();
560 cout <<
" find double tag mode 1 :" << endl;
561 dtagTool << dtagTool.
dtag1();
562 cout <<
" find double tag mode 2: " << endl;
563 dtagTool << dtagTool.
dtag2();
570 cout <<
" double tag by invariant mass:" << endl;
571 cout <<
" find double tag mode 1 :" << endl;
572 dtagTool << dtagTool.
dtag1();
573 cout <<
" find double tag mode 2: " << endl;
574 dtagTool << dtagTool.
dtag2();
582 vector<DTagToolIterator> vdtag1 = dtagTool.
vdtag1();
583 vector<DTagToolIterator> vdtag2 = dtagTool.
vdtag2();
585 cout <<
" list of all doule tags:" << endl;
586 for (
int i = 0; i < vdtag1.size(); i++ )
588 cout <<
" find double tag mode 1 :" << endl;
589 dtagTool << vdtag1[i];
590 cout <<
" find double tag mode 2: " << endl;
591 dtagTool << vdtag2[i];
597 return StatusCode::SUCCESS;