144 {
145
146 MsgStream log(
msgSvc(), name() );
147 log << MSG::INFO << "in execute()" << endmsg;
148
149 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
150 int runNo = eventHeader->runNumber();
151 int eventNo = eventHeader->eventNumber();
152
153
154
155
156
157
158 SmartDataPtr<EvtRecVeeVertexCol> evtRecVeeVertexCol( eventSvc(),
159 "/Event/EvtRec/EvtRecVeeVertexCol" );
160 if ( !evtRecVeeVertexCol )
161 {
162 log << MSG::FATAL << "Could not find EvtRecVeeVertexCol" << endmsg;
163 return StatusCode::FAILURE;
164 }
165
166
167 SmartDataPtr<EvtRecPi0Col> recPi0Col( eventSvc(), "/Event/EvtRec/EvtRecPi0Col" );
168 if ( !recPi0Col )
169 {
170 log << MSG::FATAL << "Could not find EvtRecPi0Col" << endmsg;
171 return StatusCode::FAILURE;
172 }
173
174
175 Hep3Vector xorigin( 0, 0, 0 );
176 IVertexDbSvc* vtxsvc;
177 Gaudi::svcLocator()->service( "VertexDbSvc", vtxsvc ).ignore();
179 {
180
181
183 xorigin.setX( vertex[0] );
184 xorigin.setY( vertex[1] );
185 xorigin.setZ( vertex[2] );
186 }
187
188
189
190
191
192 DTagTool dtagTool;
194 {
195
196 return StatusCode::SUCCESS;
197 }
198
201
202 cout << "size of dtag:******:" << iter_end - iter_begin << endl;
203
204 int nCharge = 0;
205
206
208
209
211 cout << " there are " << mode.size() << " candidates for this mode" << endl;
212 for ( int i = 0; i < mode.size(); i++ )
213 {
214
216 cout << "No." << i + 1 << " candidate deltaE is : " << ( *iter )->deltaE() << endl;
217 }
218
219
220
221
222 for (
DTagToolIterator iter_dtag = iter_begin; iter_dtag != iter_end; iter_dtag++ )
223 {
224
225
226 cout << "***********" << endl;
227 cout << "***********" << endl;
228 dtagTool << iter_dtag;
229
230
231
232
233
235 {
236
237 HepLorentzVector p4 = ( *iter_dtag )->p4();
238 p4.boost( -0.011, 0, 0 );
239
240 Hep3Vector p3 = p4.v();
241
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();
251
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();
256
257 m_tuple4->write().ignore();
258
259 RecMdcKalTrack* mdcKalTrk1 = tracks[0]->mdcKalTrack();
260 RecMdcKalTrack* mdcKalTrk2 = tracks[1]->mdcKalTrack();
261 cout <<
"same side track 1 charge is:" << mdcKalTrk1->
charge() << endl;
262 cout <<
"same side track 2 charge is:" << mdcKalTrk2->
charge() << endl;
263
264 for ( int tk = 0; tk < othertracks.size(); tk++ )
265 {
266 RecMdcTrack* mdcTrk = othertracks[tk]->mdcTrack();
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 );
275
276 m_vx0 = x0;
277 m_vy0 = y0;
278 m_vz0 = z0;
279 m_vr0 = Rxy;
280 m_tuple1->write().ignore();
281 nCharge += mdcTrk->
charge();
282
283 std::cout << "other side track ID is: " << othertracks[tk]->trackId() << std::endl;
284
285 if ( dtagTool.
isPion( othertracks[tk] ) ) cout <<
"it is pion" << endl;
286 if ( dtagTool.
isKaon( othertracks[tk] ) ) cout <<
"it is kaon" << endl;
287
288
289
290 }
291
292 for ( int i = 0; i < othershowers.size(); i++ )
293 {
294
295
296 }
297
298 }
299
300
301
302
304 {
305
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();
315
316 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
317 m_ntrk = othertracks.size();
318
319 m_tuple4->write().ignore();
320
321
322
323
324 vector<int> pi0id = dtagTool.
pi0Id( iter_dtag );
325 cout << "xxxxxxxxxxxxxxxxxxxxxxxxx"
326 << "num of pi0 is:" << pi0id.size() << endl;
327
328 for ( int i = 0; i < pi0id.size(); i++ )
329 {
331 cout << "pi0Mass: " << ( *pi0Itr )->unconMass() << endl;
332 }
333
334
335 SmartRefVector<EvtRecTrack> showers = ( *iter_dtag )->showers();
336
337 for ( EvtRecPi0Col::iterator pi0Itr = recPi0Col->begin(); pi0Itr < recPi0Col->end();
338 pi0Itr++ )
339 {
340
341
342 EvtRecTrack* heGammaTrk = const_cast<EvtRecTrack*>( ( *pi0Itr )->hiEnGamma() );
343 EvtRecTrack* leGammaTrk = const_cast<EvtRecTrack*>( ( *pi0Itr )->loEnGamma() );
344
345 int heGammaTrkId = heGammaTrk->
trackId();
346 int leGammaTrkId = leGammaTrk->
trackId();
347
348 if ( ( heGammaTrkId != showers[0]->trackId() ) &&
349 ( heGammaTrkId != showers[1]->trackId() ) )
350 continue;
351 if ( ( leGammaTrkId != showers[0]->trackId() ) &&
352 ( leGammaTrkId != showers[1]->trackId() ) )
353 continue;
354
355 const RecEmcShower* heGamma = heGammaTrk->
emcShower();
356 const RecEmcShower* leGamma = leGammaTrk->
emcShower();
357
358 cout << "pi0Mass: " << ( *pi0Itr )->unconMass() << endl;
359 cout <<
" E(high): " << heGamma->
energy() << endl;
360 cout <<
" E(low) : " << leGamma->
energy() << endl;
361
362 m_pi0mass = ( *pi0Itr )->unconMass();
363 m_pi0mode = ( *iter_dtag )->decayMode();
364 m_tuple3->write().ignore();
365
366
367 break;
368
369 }
370
371 }
372
373
374
375
377 {
378
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();
388
389 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
390 m_ntrk = othertracks.size();
391
392 m_tuple4->write().ignore();
393
394
395
396
397 vector<int> ksid = dtagTool.
ksId( iter_dtag );
398 cout << "xxxxxxxxxxxxxxxxxxxxxxxxx"
399 << "num of ks is:" << ksid.size() << endl;
400
401 for ( int i = 0; i < ksid.size(); i++ )
402 {
404 cout << "ksMass: " << ( *ksItr )->mass() << endl;
405 }
406
407
408 SmartRefVector<EvtRecTrack> tracks = ( *iter_dtag )->tracks();
409
410 for ( EvtRecVeeVertexCol::iterator ksItr = evtRecVeeVertexCol->begin();
411 ksItr < evtRecVeeVertexCol->end(); ksItr++ )
412 {
413
414
415 if ( ( *ksItr )->vertexId() != 310 ) continue;
416
417 EvtRecTrack* aKsChild1Trk = ( *ksItr )->daughter( 0 );
418 EvtRecTrack* aKsChild2Trk = ( *ksItr )->daughter( 1 );
419
420 int ksChild1TrkId = aKsChild1Trk->
trackId();
421 int ksChild2TrkId = aKsChild2Trk->
trackId();
422
423 if ( ( ksChild1TrkId != tracks[0]->trackId() ) &&
424 ( ksChild1TrkId != tracks[1]->trackId() ) )
425 continue;
426 if ( ( ksChild2TrkId != tracks[0]->trackId() ) &&
427 ( ksChild2TrkId != tracks[1]->trackId() ) )
428 continue;
429
430 cout << "ksMass: " << ( *ksItr )->mass() << endl;
431
432 Hep3Vector ks_D3( 0, 0, 0 );
433 ks_D3.set( ( *ksItr )->w()[4], ( *ksItr )->w()[5], ( *ksItr )->w()[6] );
434
435 m_ksmass = ( *ksItr )->mass();
436 m_ksd = ks_D3.mag();
437 m_ksmode = ( *iter_dtag )->decayMode();
438 m_tuple2->write().ignore();
439
440
441 break;
442
443 }
444
445 }
446
447
448
449
451 {
452
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();
462
463 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
464 m_ntrk = othertracks.size();
465
466 m_tuple4->write().ignore();
467 }
468
469
470
471
473 {
474
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();
484
485 SmartRefVector<EvtRecTrack> othertracks = ( *iter_dtag )->otherTracks();
486 m_ntrk = othertracks.size();
487
488 m_tuple4->write().ignore();
489 }
490
491 }
492
493
494 cout << "**************" << endl;
495 cout << "**************" << endl;
496 cout << "test print only D0/Dp/Ds modes" << endl;
497
498
499 vector<int> d0itindex = dtagTool.
D0modes();
500 for ( int i = 0; i < d0itindex.size(); i++ )
501 {
503 cout << "No." << i + 1 << " D0 mode is :" << ( *iter )->decayMode() << endl;
504 }
505
506
507 vector<int> dpitindex = dtagTool.
Dpmodes();
508 for ( int i = 0; i < dpitindex.size(); i++ )
509 {
511 cout << "No." << i + 1 << " Dp mode is :" << ( *iter )->decayMode() << endl;
512 }
513
514
515 vector<int> dsitindex = dtagTool.
Dsmodes();
516 for ( int i = 0; i < dsitindex.size(); i++ )
517 {
519 cout << "No." << i + 1 << " Ds mode is :" << ( *iter )->decayMode() << endl;
520 }
521
522
523
524 cout << "**************" << endl;
525 cout << "**************" << endl;
526 cout << "test single tag " << endl;
527
529 cout <<
" find single tag mode: " << ( *dtagTool.
stag() )->decayMode() << endl;
530
531
533 {
534 cout << "cosmic and lepton backgaround veto" << endl;
535 cout <<
" find single tag mode: " << ( *dtagTool.
stag() )->decayMode() << endl;
536 }
537
538
539
540 cout << "**************" << endl;
541 cout << "**************" << endl;
542 cout << "test double tag " << endl;
543
544
545
546
548 if ( dtagflag )
549 {
550 cout << " find double tag mode 1 :" << endl;
551 dtagTool << dtagTool.
dtag1();
552 cout << " find double tag mode 2: " << endl;
553 dtagTool << dtagTool.
dtag2();
554 }
555
556
558 if ( dtagflag )
559 {
560 cout << " find double tag mode 1 :" << endl;
561 dtagTool << dtagTool.
dtag1();
562 cout << " find double tag mode 2: " << endl;
563 dtagTool << dtagTool.
dtag2();
564 }
565
566
568 if ( dtagflag )
569 {
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();
575 }
576
577
579 if ( dtagflag )
580 {
581
582 vector<DTagToolIterator> vdtag1 = dtagTool.
vdtag1();
583 vector<DTagToolIterator> vdtag2 = dtagTool.
vdtag2();
584
585 cout << " list of all doule tags:" << endl;
586 for ( int i = 0; i < vdtag1.size(); i++ )
587 {
588 cout << " find double tag mode 1 :" << endl;
589 dtagTool << vdtag1[i];
590 cout << " find double tag mode 2: " << endl;
591 dtagTool << vdtag2[i];
592 }
593 }
594
596
597 return StatusCode::SUCCESS;
598}
double sin(const BesAngle a)
double cos(const BesAngle a)
const HepVector helix() const
......
RecEmcShower * emcShower()
virtual bool isVertexValid()=0
virtual double * PrimaryVertex()=0