188 {
189
190 MsgStream log(
msgSvc(), name());
191 log << MSG::INFO << "TofRec in execute()!" << endreq;
192
193 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
194 if( !eventHeader ) {
195 log << MSG::FATAL << "TofRec could not find Event Header!" << endreq;
196 return StatusCode::FAILURE;
197 }
198 int run = eventHeader->runNumber();
199 int event = eventHeader->eventNumber();
200 if( ( event % 1000 == 0 ) && m_printOutInfo ) {
201 std::cout << "run:" << run << " event: " << event << std::endl;
202 }
203 log << MSG::INFO << "run= " << run << " event= " << event << endreq;
204
207
208
209 if( m_acceleratorStatus == "Colliding" ) {
210
211 SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
212 if( !estimeCol || ( estimeCol->size() == 0 ) ) {
213 log << MSG::WARNING << "TofRec Could not find RecEsTimeCol! Run = " << run << " Event = " << event << endreq;
214 return StatusCode::SUCCESS;
215 }
216 RecEsTimeCol::iterator iter_ESTime=estimeCol->begin();
217 double t0 = (*iter_ESTime)->getTest();
218 int t0Stat = (*iter_ESTime)->getStat();
219 log << MSG::INFO << "t0= " << t0 << " t0Stat= " << t0Stat << endreq;
220
221
222 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol");
223 if( !mdcKalTrackCol ) {
224 log << MSG::WARNING << "No MdcKalTrackCol in TDS! Run = " << run << " Event = " << event << endreq;
225 return StatusCode::SUCCESS;
226 }
227 SmartDataPtr<RecMdcTrackCol> mdcTrackCol(eventSvc(),"/Event/Recon/RecMdcTrackCol");
228 if( !mdcTrackCol ) {
229 log << MSG::FATAL << "Could NOT find RecMdcTrackCol in TDS! Run = " << run << " Event = " << event << endreq;
230 return StatusCode::SUCCESS;
231 }
232
233
234 SmartDataPtr<RecExtTrackCol> extTrackCol(eventSvc(),"/Event/Recon/RecExtTrackCol");
235 if( !extTrackCol ) {
236 log << MSG::WARNING << "No ExtTrackCol in TDS! Run = " << run << " Event = " << event << endreq;
237 return StatusCode::SUCCESS;
238 }
239 else {
240 if( m_printOutInfo ) { m_printOut->
setExtTrackNum( extTrackCol->size() ); }
241 if( m_checkDigi && m_checkDigiExt ) { m_checkdigi_tuple->
FillCol( *eventHeader, mdcTrackCol, mdcKalTrackCol, extTrackCol ); }
242 }
243
244
245 if( m_forCalibration ) {
246 if( m_printOutInfo ) { m_printOut->
addNumber(0); }
247
248 if( t0Stat%10 != 1 ) return StatusCode::SUCCESS;
249 if( m_printOutInfo ) { m_printOut->
addNumber(1); }
250
251 if( extTrackCol->size() != 2 ) return StatusCode::SUCCESS;
252 if( m_printOutInfo ) { m_printOut->
addNumber(2); }
253
254 if( mdcTrackCol->size() != 2 ) return StatusCode::SUCCESS;
255 if( m_printOutInfo ) { m_printOut->
addNumber(3); }
256
257 SmartDataPtr<RecEmcShowerCol> emcShowerCol(eventSvc(),"/Event/Recon/RecEmcShowerCol");
258 if( !emcShowerCol ) {
259 log << MSG::FATAL << "Could NOT find EmcRecShowerCol in TDS! Run = " << run << " Event = " << event << endreq;
260 return StatusCode::SUCCESS;
261 }
262 if( m_printOutInfo ) { m_printOut->
addNumber(4); }
263
264 if( emcShowerCol->size() < 2 ) return StatusCode::SUCCESS;
265 if( m_printOutInfo ) { m_printOut->
addNumber(5); }
266
267 RecMdcTrackCol::iterator iter_mdc1 = mdcTrackCol->begin();
268 RecMdcTrackCol::iterator iter_mdc2 = mdcTrackCol->begin() + 1;
269
270 RecMdcKalTrackCol::iterator iter_kal1 = mdcKalTrackCol->begin();
271 RecMdcKalTrackCol::iterator iter_kal2 = mdcKalTrackCol->begin() + 1;
272
273 RecExtTrackCol::iterator iter_ext1 = extTrackCol->begin();
274 RecExtTrackCol::iterator iter_ext2 = extTrackCol->begin() + 1;
275 Hep3Vector extPos1 = (*iter_ext1)->emcPosition();
276 Hep3Vector extPos2 = (*iter_ext2)->emcPosition();
277
278 RecEmcShowerCol::iterator iter_emc1 = emcShowerCol->begin();
279 RecEmcShowerCol::iterator iter_emc2 = emcShowerCol->begin() + 1;
280 Hep3Vector emcPos1((*iter_emc1)->x(),(*iter_emc1)->y(),(*iter_emc1)->z());
281 Hep3Vector emcPos2((*iter_emc2)->x(),(*iter_emc2)->y(),(*iter_emc2)->z());
282
283 Hep3Vector pep = (*iter_mdc1)->p3();
284 Hep3Vector pem = (*iter_mdc2)->p3();
285 double delta_angle = 180.0 - pep.angle( pem.unit() )*180.0/
pi;
286 double delta_phi =
abs( (*iter_mdc1)->phi() - (*iter_mdc2)->phi() )*180.0/
pi;
287
288 Hep3Vector distant1 = extPos1 - emcPos1;
289 Hep3Vector distant2 = extPos2 - emcPos1;
290 if( distant1.r() > distant2.r() ) {
291 RecEmcShowerCol::iterator iter_tmp = iter_emc1;
292 iter_emc1 = iter_emc2;
293 iter_emc2 = iter_tmp;
294 Hep3Vector emc_tmp = emcPos1;
295 emcPos1 = emcPos2;
296 emcPos2 = emc_tmp;
297 }
298 distant1 = extPos1 - emcPos1;
299 distant2 = extPos2 - emcPos2;
300
301 double p1 = (*iter_mdc1)->p();
302 double p2 = (*iter_mdc2)->p();
303 double e1 = (*iter_emc1)->energy();
304 double e2 = (*iter_emc2)->energy();
306 RecEmcShowerCol::iterator iter_emc = emcShowerCol->begin();
307 for( ; iter_emc != emcShowerCol->end(); iter_emc++ ) {
308 etot += (*iter_emc)->energy();
309 }
310
311 if( m_checkDigi ) { m_checkdigi_tuple->
FillCol( *eventHeader, extTrackCol, mdcTrackCol, emcShowerCol, mdcKalTrackCol ); }
312
313 if( ( (*iter_mdc1)->charge() + (*iter_mdc2)->charge() )!= 0 ) return StatusCode::SUCCESS;
314 if( m_printOutInfo ) { m_printOut->
addNumber(6); }
315
316 if( delta_angle > 10.0 ) return StatusCode::SUCCESS;
317 if( m_printOutInfo ) { m_printOut->
addNumber(7); }
318
319 if( (*iter_kal1)->getStat(1,0)!=0 || (*iter_kal2)->getStat(1,0)!=0 ) return StatusCode::SUCCESS;
320 if( m_printOutInfo ) { m_printOut->
addNumber(8); }
321
322 if( distant1.r()>6.0 || distant2.r()>6.0 ) return StatusCode::SUCCESS;
323 if( m_printOutInfo ) { m_printOut->
addNumber(9); }
324
325
326 if( m_data == "jpsi09" ) {
327 if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>0.4 || (*iter_mdc1)->y()<-0.5 || (*iter_mdc1)->y()>0.1 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
328 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
329 if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>0.4 || (*iter_mdc2)->y()<-0.5 || (*iter_mdc2)->y()>0.1 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
330 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
331 if( delta_phi<174.0 || delta_phi>186.0 ) return StatusCode::SUCCESS;
332 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
333 if( m_calibData == "Bhabha" ) {
334 if(
e1 < 1.1 ||
e2 < 1.1 )
return StatusCode::SUCCESS;
335 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
336 }
337 }
338
339 else if( m_data == "psip09" ) {
340 if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>0.4 || (*iter_mdc1)->y()<-0.5 || (*iter_mdc1)->y()>0.1 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
341 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
342 if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>0.4 || (*iter_mdc2)->y()<-0.5 || (*iter_mdc2)->y()>0.1 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
343 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
344 if( delta_phi<174.0 || delta_phi>183.0 ) return StatusCode::SUCCESS;
345 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
346 if( m_calibData == "Bhabha" ) {
347 if(
e1 < 1.4 ||
e2 < 1.4 )
return StatusCode::SUCCESS;
348 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
349 }
350 }
351
352 else if( m_data == "psipp10" ) {
353 if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>1.2 || (*iter_mdc1)->y()<-0.9 || (*iter_mdc1)->y()>0.5 ||
abs((*iter_mdc1)->z())>6.0 )
return StatusCode::SUCCESS;
354 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
355 if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>1.2 || (*iter_mdc2)->y()<-0.9 || (*iter_mdc2)->y()>0.5 ||
abs((*iter_mdc2)->z())>6.0 )
return StatusCode::SUCCESS;
356 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
357 if( delta_phi<174.0 || delta_phi>186.0 ) return StatusCode::SUCCESS;
358 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
359 if( m_calibData == "Bhabha" ) {
360 if(
e1 < 1.4 ||
e2 < 1.4 )
return StatusCode::SUCCESS;
361 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
362 }
363 }
364
365 else if( m_data == "psipp11" ) {
366 if( (*iter_mdc1)->x()<-0.15 || (*iter_mdc1)->x()>0.3 || (*iter_mdc1)->y()<-0.3 || (*iter_mdc1)->y()>0.15 ||
abs((*iter_mdc1)->z())>6.0 )
return StatusCode::SUCCESS;
367 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
368 if( (*iter_mdc2)->x()<-0.15 || (*iter_mdc2)->x()>0.3 || (*iter_mdc2)->y()<-0.3 || (*iter_mdc2)->y()>0.15 ||
abs((*iter_mdc2)->z())>6.0 )
return StatusCode::SUCCESS;
369 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
370 if( delta_phi<174.0 || delta_phi>184.0 ) return StatusCode::SUCCESS;
371 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
372 if( m_calibData == "Bhabha" ) {
373 if(
e1 < 1.4 ||
e2 < 1.4 )
return StatusCode::SUCCESS;
374 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
375 }
376 }
377
378 else if( m_data == "psip12" ) {
379 if( (*iter_mdc1)->x()<-0.25 || (*iter_mdc1)->x()>0.3 || (*iter_mdc1)->y()<-0.3 || (*iter_mdc1)->y()>0.15 ||
abs((*iter_mdc1)->z())>6.0 )
return StatusCode::SUCCESS;
380 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
381 if( (*iter_mdc2)->x()<-0.25 || (*iter_mdc2)->x()>0.3 || (*iter_mdc2)->y()<-0.3 || (*iter_mdc2)->y()>0.15 ||
abs((*iter_mdc2)->z())>6.0 )
return StatusCode::SUCCESS;
382 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
383 if( delta_phi<172.0 || delta_phi>188.0 ) return StatusCode::SUCCESS;
384 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
385 if( m_calibData == "Bhabha" ) {
386 if(
e1 < 1.4 ||
e2 < 1.4 )
return StatusCode::SUCCESS;
387 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
388 }
389 }
390
391 else if( m_data == "jpsi12" ) {
392 if( (*iter_mdc1)->x()<-0.2 || (*iter_mdc1)->x()>0.4 || (*iter_mdc1)->y()<-0.4 || (*iter_mdc1)->y()>0.2 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
393 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
394 if( (*iter_mdc2)->x()<-0.2 || (*iter_mdc2)->x()>0.4 || (*iter_mdc2)->y()<-0.4 || (*iter_mdc2)->y()>0.2 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
395 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
396 if( delta_phi<172.0 || delta_phi>188.0 ) return StatusCode::SUCCESS;
397 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
398 if( m_calibData == "Bhabha" ) {
399 if(
e1 < 1.1 ||
e2 < 1.1 )
return StatusCode::SUCCESS;
400 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
401 }
402 }
403
404 else if( m_data == "psi13" ) {
405 if( (*iter_mdc1)->x()<-0.15 || (*iter_mdc1)->x()>0.35 || (*iter_mdc1)->y()<-0.35 || (*iter_mdc1)->y()>0.15 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
406 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
407 if( (*iter_mdc2)->x()<-0.15 || (*iter_mdc2)->x()>0.35 || (*iter_mdc2)->y()<-0.35 || (*iter_mdc2)->y()>0.15 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
408 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
409 if( delta_phi<172.0 || delta_phi>188.0 ) return StatusCode::SUCCESS;
410 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
411 if( m_calibData == "Bhabha" ) {
412 if(
e1 < 1.5 ||
e2 < 1.5 )
return StatusCode::SUCCESS;
413 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
414 }
415 }
416 else if( m_data == "rxyz14" ) {
417 if( (*iter_mdc1)->x()<-0.15 || (*iter_mdc1)->x()>0.35 || (*iter_mdc1)->y()<-0.35 || (*iter_mdc1)->y()>0.15 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
418 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
419 if( (*iter_mdc2)->x()<-0.15 || (*iter_mdc2)->x()>0.35 || (*iter_mdc2)->y()<-0.35 || (*iter_mdc2)->y()>0.15 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
420 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
421 if( delta_phi<175.0 || delta_phi>185.0 ) return StatusCode::SUCCESS;
422 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
423 if( m_calibData == "Bhabha" ) {
424 if(
e1/p1 < 0.75 ||
e2/p2 < 0.75 )
return StatusCode::SUCCESS;
425 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
426 }
427 }
428 else if( m_data == "r15" ) {
429 if( (*iter_mdc1)->x()<-0.15 || (*iter_mdc1)->x()>0.35 || (*iter_mdc1)->y()<-0.35 || (*iter_mdc1)->y()>0.15 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
430 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
431 if( (*iter_mdc2)->x()<-0.15 || (*iter_mdc2)->x()>0.35 || (*iter_mdc2)->y()<-0.35 || (*iter_mdc2)->y()>0.15 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
432 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
433 if( delta_phi<175.0 || delta_phi>185.0 ) return StatusCode::SUCCESS;
434 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
435 if( m_calibData == "Bhabha" ) {
436 if(
e1/p1 < 0.75 ||
e2/p2 < 0.75 )
return StatusCode::SUCCESS;
437 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
438 }
439 }
440 else if( m_data == "data16" ) {
441 if( (*iter_mdc1)->x()<-0.15 || (*iter_mdc1)->x()>0.35 || (*iter_mdc1)->y()<-0.35 || (*iter_mdc1)->y()>0.2 ||
abs((*iter_mdc1)->z())>4.0 )
return StatusCode::SUCCESS;
442 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
443 if( (*iter_mdc2)->x()<-0.15 || (*iter_mdc2)->x()>0.35 || (*iter_mdc2)->y()<-0.35 || (*iter_mdc2)->y()>0.2 ||
abs((*iter_mdc2)->z())>4.0 )
return StatusCode::SUCCESS;
444 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
445 if( delta_phi<170.0 || delta_phi>190.0 ) return StatusCode::SUCCESS;
446 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
447 if( m_calibData == "Bhabha" ) {
448 if(
e1/p1 < 0.75 ||
e2/p2 < 0.75 )
return StatusCode::SUCCESS;
449 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
450 }
451 }
452 else if( m_data == "data17" ) {
453 if( (*iter_mdc1)->x()<-0.15 || (*iter_mdc1)->x()>0.35 || (*iter_mdc1)->y()<-0.3 || (*iter_mdc1)->y()>0.2 || (*iter_mdc1)->z()<-3.5 || (*iter_mdc1)->z()>4.5 ) return StatusCode::SUCCESS;
454 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
455 if( (*iter_mdc2)->x()<-0.15 || (*iter_mdc2)->x()>0.35 || (*iter_mdc2)->y()<-0.3 || (*iter_mdc2)->y()>0.2 || (*iter_mdc2)->z()<-3.5 || (*iter_mdc2)->z()>4.5 ) return StatusCode::SUCCESS;
456 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
457 if( delta_phi<170.0 || delta_phi>190.0 ) return StatusCode::SUCCESS;
458 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
459 if( m_calibData == "Bhabha" ) {
460 if(
e1/p1 < 0.75 ||
e2/p2 < 0.75 )
return StatusCode::SUCCESS;
461 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
462 }
463 }
464 else if( m_data == "jpsi18" ) {
465 if( (*iter_mdc1)->x()<-0.1 || (*iter_mdc1)->x()>0.4 || (*iter_mdc1)->y()<-0.3 || (*iter_mdc1)->y()>0.2 || (*iter_mdc1)->z()<-3.5 || (*iter_mdc1)->z()>4.0 ) return StatusCode::SUCCESS;
466 if( m_printOutInfo ) { m_printOut->
addNumber(10); }
467 if( (*iter_mdc2)->x()<-0.1 || (*iter_mdc2)->x()>0.4 || (*iter_mdc2)->y()<-0.3 || (*iter_mdc2)->y()>0.2 || (*iter_mdc2)->z()<-3.5 || (*iter_mdc2)->z()>4.0 ) return StatusCode::SUCCESS;
468 if( m_printOutInfo ) { m_printOut->
addNumber(11); }
469 if( delta_phi<170.0 || delta_phi>190.0 ) return StatusCode::SUCCESS;
470 if( m_printOutInfo ) { m_printOut->
addNumber(12); }
471 if( m_calibData == "Bhabha" ) {
472 if(
e1/p1 < 0.75 ||
e2/p2 < 0.75 )
return StatusCode::SUCCESS;
473 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
474 }
475 }
476
477 if( m_calibData == "Bhabha" ) {
478 if( (
etot -
e1 -
e2 ) > 0.3 )
return StatusCode::SUCCESS;
479 if( m_printOutInfo ) { m_printOut->
addNumber(14); }
480 }
481 else if( m_calibData == "Dimu" ) {
482 if(
e1 > 0.5 ||
e2 > 0.5 )
return StatusCode::SUCCESS;
483 if( m_printOutInfo ) { m_printOut->
addNumber(13); }
484 }
485 }
486
487
489 RecExtTrackCol::iterator iter_track = extTrackCol->begin();
490 for( ; iter_track < extTrackCol->end(); iter_track++ ) {
491 RecMdcTrackCol::iterator iter_mdc = mdcTrackCol->begin();
492 for( ; iter_mdc != mdcTrackCol->end(); iter_mdc++ ) {
493 if( (*iter_mdc)->trackId() == (*iter_track)->trackId() ) break;
494 }
495 double costheta =
cos( (*iter_mdc)->theta() );
496 RecMdcKalTrackCol::iterator iter_kal = mdcKalTrackCol->begin();
497 for( ; iter_kal != mdcKalTrackCol->end(); iter_kal++ ) {
498 if( (*iter_kal)->trackId() == (*iter_track)->trackId() ) break;
499 }
500 double p[5] = {-1.0};
501 int kal[5] = {-1};
502 if( iter_kal != mdcKalTrackCol->end() ) {
503 for( unsigned int i=0; i<5; i++ ) {
509 p[i] = (*iter_kal)->p3().mag();
510 kal[i] = (*iter_kal)->getStat(0,i);
511 }
512 }
514 tof->
setExtTrack( (*iter_track), costheta, p, kal, t0, t0Stat );
515
516 if( tofTrackVec->size()>0 ) {
517 std::vector<TofTrack*>::iterator iterExt = tofTrackVec->begin();
518 for( ; iterExt < tofTrackVec->end(); iterExt++ ) {
519 if( (*iterExt)->isNoHit() ) continue;
521 }
522 }
523
524 tofTrackVec->push_back( tof );
525 }
526
527 if( m_printOutInfo ) {
529 }
530
531
533 if( tofDataMap.empty() ) {
534 log << MSG::WARNING << "No Tof Data Map in RawDataProviderSvc! Run=" << run << " Event=" << event << endreq;
535 }
536
537 if( m_checkDigi && m_checkDigiRaw ) {
538 SmartDataPtr<TofDigiCol> tofDigiCol(eventSvc(),"/Event/Digi/TofDigiCol");
539 if( !tofDigiCol ) {
540 log << MSG::ERROR << "TofRec could not find Tof digi! Event = " << event << endreq;
541 }
542 else { m_checkdigi_tuple->
FillCol( *eventHeader, tofDigiCol, t0, t0Stat ); }
543
544 m_checkdigi_tuple->
FillCol( *eventHeader, tofDataMap, t0, t0Stat );
545 }
546
547 std::vector<int> deadId;
548 if( m_forCalibration ) {
549 for( unsigned int i=0; i<5; i++ ) {
551 if( identmp != 0x2fffffff ) {
552 deadId.push_back( identmp );
553 }
555 if( identmp != 0x2fffffff ) {
556 deadId.push_back( identmp );
557 }
559 if( identmp != 0x2fffffff ) {
560 deadId.push_back( identmp );
561 }
562 }
563 }
564
565 std::vector<TofTrack*>::iterator
iter = tofTrackVec->begin();
566 for( ;
iter < tofTrackVec->end();
iter++ ) {
567 if( (*iter)->isNoHit() ) continue;
568 (*iter)->setTofData( tofDataMap );
570 if( (*iter)->isNoHit() ) continue;
571 (*iter)->match( m_forCalibration, deadId, tofTrackVec );
573 }
574
575 iter = tofTrackVec->begin();
576 for( ;
iter < tofTrackVec->end();
iter++ ) {
577
578 (*iter)->setCalibration();
579
580 if( m_checkDigi ) {
581 if( m_checkTrigger ) {
582
583 SmartDataPtr<TrigData> trigData(eventSvc(), "/Event/Trig/TrigData");
584 if (!trigData) {
585 log << MSG::FATAL << "Could not find Trigger Data for physics analysis" << endreq;
587 }
588 else {
590 }
591 }
592 else {
593 if( ( run < 0 ) && m_checkMcTruth ) {
594 SmartDataPtr<TofMcHitCol> tofMcCol(eventSvc(),"/Event/MC/TofMcHitCol");
595 SmartDataPtr<McParticleCol> mcParticleCol(eventSvc(),"/Event/MC/McParticleCol");
596 if ( !tofMcCol || !mcParticleCol ) {
597 m_checkdigi_tuple->
Fill_TofTrack( *eventHeader, *
iter, t0, t0Stat, mdcKalTrackCol );
598 }
599 else {
600 m_checkdigi_tuple->
Fill_TofTrack( *eventHeader, *
iter, t0, t0Stat, mdcKalTrackCol, tofMcCol, mcParticleCol, m_calibData );
601 }
602 }
603 else {
604 m_checkdigi_tuple->
Fill_TofTrack( *eventHeader, *
iter, t0, t0Stat, mdcKalTrackCol );
605 }
606 }
607 }
608 }
609
610 tds.
RegisterTDS( eventHeader->runNumber(), eventHeader->eventNumber(), tofTrackVec, m_forCalibration, m_calibData );
611
613
614
615 SmartDataPtr<RecTofTrackCol> tofTrackCol(eventSvc(),"/Event/Recon/RecTofTrackCol");
616 if (!tofTrackCol) {
617 log << MSG::FATAL << "TofRec could not find RecTofTrackCol!" << endreq;
618 return StatusCode::FAILURE;
619 }
620 else{
621 if( m_saveRootFile ) {
622 m_checkdata_tuple->
FillCol( *eventHeader, tofTrackCol, mdcKalTrackCol );
623 }
624 }
625
626 if( m_forCalibration ) {
627 SmartDataPtr<RecBTofCalHitCol> bhitCol(eventSvc(),"/Event/Recon/RecBTofCalHitCol");
628 if (!bhitCol) {
629 log << MSG::WARNING << "TofRec could not find RecBTofCalHitCol!" << endreq;
630 }
631 else {
632 if( m_saveRootFile ) {
633 m_checkdata_tuple->
FillCol( *eventHeader, bhitCol );
634 }
635 }
636
637 SmartDataPtr<RecETofCalHitCol> ehitCol(eventSvc(),"/Event/Recon/RecETofCalHitCol");
638 if (!ehitCol) {
639 log << MSG::WARNING << "TofRec could not find RecETofCalHitCol!" << endreq;
640 }
641 else {
642 if( m_saveRootFile ) {
643 m_checkdata_tuple->
FillCol( *eventHeader, ehitCol );
644 }
645 }
646 }
647
648 }
649 else {
650 log << MSG::FATAL << "In TofRec: AcceleratorStatus is NOT correct! m_acceleratorStatus = " << m_acceleratorStatus << endreq;
651 return StatusCode::FAILURE;
652 }
653
654 return StatusCode::SUCCESS;
655
656}
std::multimap< unsigned int, TofData * > TofDataMap
double cos(const BesAngle a)
std::vector< TofTrack * > TofTrackVec
IRawDataProviderSvc * tofDigiSvc
virtual TofDataMap & tofDataMapTof(double estime=0)=0
virtual const int BrWest(unsigned int No)=0
virtual const int BrEast(unsigned int No)=0
virtual const int Endcap(unsigned int No)=0
void FillCol(Event::EventHeader &, RecTofTrackCol &, RecMdcKalTrackCol &)
void Fill_TofTrack(Event::EventHeader &, TofTrack *&, double, int)
void FillCol(Event::EventHeader &, TofDigiCol &, double, int)
void setExtTrackNum(unsigned int ntrk)
void setTrack1Col(std::vector< TofTrack * > *&tofTrackVec)
void addNumber(unsigned int i)
void setTrack3(TofTrack *&tof)
void setTrack2(TofTrack *&tof)
StatusCode RegisterTDS(int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, bool m_forCalibration, std::string m_calibData)
StatusCode RegisterNullRecTofTrackCol()
void clearTofTrackVec(std::vector< TofTrack * > *&tofTrackVec)
void getMultiHit(TofTrack *&)
void setExtTrack(RecExtTrack *extTrack, double costheta, double p[5], int kal[5], double t0, int t0Stat)