#include <TofRec.h>
Definition at line 17 of file TofRec.h.
TofRec::TofRec | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 49 of file TofRec.cxx.
References m_acceleratorStatus, m_calibData, m_checkDigi, m_checkDigiExt, m_checkDigiRaw, m_checkMcTruth, m_checkTrigger, m_data, m_firstIteration, m_forCalibration, m_magneticField, m_printOutInfo, and m_saveRootFile.
00049 : 00050 Algorithm(name, pSvcLocator) 00051 { 00052 declareProperty( "AcceleratorStatus", m_acceleratorStatus ); 00053 declareProperty( "MagneticField", m_magneticField ); 00054 declareProperty( "ForCalibration", m_forCalibration ); 00055 declareProperty( "Data", m_data ); 00056 declareProperty( "CalibData", m_calibData ); 00057 // declareProperty( "CalibDataBarrel", m_calibDataBarrel ); 00058 declareProperty( "FirstIteration", m_firstIteration ); 00059 declareProperty( "CheckTrigger", m_checkTrigger ); 00060 declareProperty( "SaveRootFile4Rec", m_saveRootFile ); 00061 declareProperty( "PrintOutInfo", m_printOutInfo ); 00062 declareProperty( "CheckDigi", m_checkDigi ); 00063 declareProperty( "CheckDigiRaw", m_checkDigiRaw ); 00064 declareProperty( "CheckDigiExt", m_checkDigiExt ); 00065 declareProperty( "CheckMcTruth", m_checkMcTruth ); 00066 }
StatusCode TofRec::beginRun | ( | ) |
Definition at line 180 of file TofRec.cxx.
References Bes_Common::INFO, and msgSvc().
00180 { 00181 MsgStream log(msgSvc(), name()); 00182 log << MSG::INFO <<"TofRec begin_run!"<< endreq; 00183 return StatusCode::SUCCESS; 00184 }
void TofRec::clearTofTrackVec | ( | std::vector< TofTrack * > *& | tofTrackVec | ) |
Definition at line 652 of file TofRec.cxx.
References iter().
Referenced by execute().
00652 { 00653 if( tofTrackVec ) { 00654 std::vector<TofTrack*>::iterator iter = tofTrackVec->begin(); 00655 for( ; iter < tofTrackVec->end(); iter++ ) { 00656 delete (*iter); 00657 } 00658 tofTrackVec->clear(); 00659 delete tofTrackVec; 00660 } 00661 return; 00662 }
StatusCode TofRec::execute | ( | ) |
Definition at line 188 of file TofRec.cxx.
References abs, TofCount::addNumber(), ITofCaliSvc::BrEast(), ITofCaliSvc::BrWest(), clearTofTrackVec(), cos(), DstMdcKalTrack::electron, ITofCaliSvc::Endcap(), calibUtil::ERROR, Bes_Common::FATAL, TofCheckDigi::Fill_TofTrack(), TofCheckData::FillCol(), TofCheckDigi::FillCol(), TofTrack::getMultiHit(), genRecEmupikp::i, Bes_Common::INFO, iter(), DstMdcKalTrack::kaon, m_acceleratorStatus, m_calibData, m_checkdata_tuple, m_checkDigi, m_checkdigi_tuple, m_checkDigiExt, m_checkDigiRaw, m_checkMcTruth, m_checkTrigger, m_data, m_forCalibration, m_printOut, m_printOutInfo, m_saveRootFile, msgSvc(), DstMdcKalTrack::muon, pi, DstMdcKalTrack::pion, DstMdcKalTrack::proton, TofRecTDS::RegisterNullRecTofTrackCol(), TofRecTDS::RegisterTDS(), TofTrack::setExtTrack(), TofCount::setExtTrackNum(), TofCount::setTrack1Col(), TofCount::setTrack2(), TofCount::setTrack3(), tofCaliSvc, IRawDataProviderSvc::tofDataMapTof(), tofDigiSvc, and Bes_Common::WARNING.
00188 { 00189 00190 MsgStream log(msgSvc(), name()); 00191 log << MSG::INFO << "TofRec in execute()!" << endreq; 00192 00193 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00194 if( !eventHeader ) { 00195 log << MSG::FATAL << "TofRec could not find Event Header!" << endreq; 00196 return StatusCode::FAILURE; 00197 } 00198 int run = eventHeader->runNumber(); 00199 int event = eventHeader->eventNumber(); 00200 if( ( event % 1000 == 0 ) && m_printOutInfo ) { 00201 std::cout << "run:" << run << " event: " << event << std::endl; 00202 } 00203 log << MSG::INFO << "run= " << run << " event= " << event << endreq; 00204 00205 TofRecTDS tds; 00206 tds.RegisterNullRecTofTrackCol(); 00207 00208 // Magnetic Field: Colliding data and Cosmic Ray 00209 if( m_acceleratorStatus == "Colliding" ) { 00210 // Retrieve Event Start Time 00211 SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00212 if( !estimeCol || ( estimeCol->size() == 0 ) ) { 00213 log << MSG::WARNING << "TofRec Could not find RecEsTimeCol! Run = " << run << " Event = " << event << endreq; 00214 return StatusCode::SUCCESS; 00215 } 00216 RecEsTimeCol::iterator iter_ESTime=estimeCol->begin(); 00217 double t0 = (*iter_ESTime)->getTest(); 00218 int t0Stat = (*iter_ESTime)->getStat(); 00219 log << MSG::INFO << "t0= " << t0 << " t0Stat= " << t0Stat << endreq; 00220 00221 // Kalman Filter Track 00222 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol"); 00223 if( !mdcKalTrackCol ) { 00224 log << MSG::WARNING << "No MdcKalTrackCol in TDS! Run = " << run << " Event = " << event << endreq; 00225 return StatusCode::SUCCESS; 00226 } 00227 SmartDataPtr<RecMdcTrackCol> mdcTrackCol(eventSvc(),"/Event/Recon/RecMdcTrackCol"); 00228 if( !mdcTrackCol ) { 00229 log << MSG::FATAL << "Could NOT find RecMdcTrackCol in TDS! Run = " << run << " Event = " << event << endreq; 00230 return StatusCode::SUCCESS; 00231 } 00232 00233 // Tof Get Extrapolated Track 00234 SmartDataPtr<RecExtTrackCol> extTrackCol(eventSvc(),"/Event/Recon/RecExtTrackCol"); 00235 if( !extTrackCol ) { 00236 log << MSG::WARNING << "No ExtTrackCol in TDS! Run = " << run << " Event = " << event << endreq; 00237 return StatusCode::SUCCESS; 00238 } 00239 else { 00240 if( m_printOutInfo ) { m_printOut->setExtTrackNum( extTrackCol->size() ); } 00241 if( m_checkDigi && m_checkDigiExt ) { m_checkdigi_tuple->FillCol( *eventHeader, mdcTrackCol, mdcKalTrackCol, extTrackCol ); } 00242 } 00243 00244 //sunss add 08/9/17 00245 if( m_forCalibration ) { // Bhabha Events Selection 00246 if( m_printOutInfo ) { m_printOut->addNumber(0); } 00247 // if( t0Stat != 111 && t0Stat != 121 ) return StatusCode::SUCCESS; 00248 if( t0Stat%10 != 1 ) return StatusCode::SUCCESS; 00249 if( m_printOutInfo ) { m_printOut->addNumber(1); } 00250 00251 if( extTrackCol->size() != 2 ) return StatusCode::SUCCESS; 00252 if( m_printOutInfo ) { m_printOut->addNumber(2); } 00253 00254 if( mdcTrackCol->size() != 2 ) return StatusCode::SUCCESS; 00255 if( m_printOutInfo ) { m_printOut->addNumber(3); } 00256 00257 SmartDataPtr<RecEmcShowerCol> emcShowerCol(eventSvc(),"/Event/Recon/RecEmcShowerCol"); 00258 if( !emcShowerCol ) { 00259 log << MSG::FATAL << "Could NOT find EmcRecShowerCol in TDS! Run = " << run << " Event = " << event << endreq; 00260 return StatusCode::SUCCESS; 00261 } 00262 if( m_printOutInfo ) { m_printOut->addNumber(4); } 00263 00264 if( emcShowerCol->size() < 2 ) return StatusCode::SUCCESS; 00265 if( m_printOutInfo ) { m_printOut->addNumber(5); } 00266 00267 RecMdcTrackCol::iterator iter_mdc1 = mdcTrackCol->begin(); 00268 RecMdcTrackCol::iterator iter_mdc2 = mdcTrackCol->begin() + 1; 00269 00270 RecMdcKalTrackCol::iterator iter_kal1 = mdcKalTrackCol->begin(); 00271 RecMdcKalTrackCol::iterator iter_kal2 = mdcKalTrackCol->begin() + 1; 00272 00273 RecExtTrackCol::iterator iter_ext1 = extTrackCol->begin(); 00274 RecExtTrackCol::iterator iter_ext2 = extTrackCol->begin() + 1; 00275 Hep3Vector extPos1 = (*iter_ext1)->emcPosition(); 00276 Hep3Vector extPos2 = (*iter_ext2)->emcPosition(); 00277 00278 RecEmcShowerCol::iterator iter_emc1 = emcShowerCol->begin(); 00279 RecEmcShowerCol::iterator iter_emc2 = emcShowerCol->begin() + 1; 00280 Hep3Vector emcPos1((*iter_emc1)->x(),(*iter_emc1)->y(),(*iter_emc1)->z()); 00281 Hep3Vector emcPos2((*iter_emc2)->x(),(*iter_emc2)->y(),(*iter_emc2)->z()); 00282 00283 Hep3Vector pep = (*iter_mdc1)->p3(); 00284 Hep3Vector pem = (*iter_mdc2)->p3(); 00285 double delta_angle = 180.0 - pep.angle( pem.unit() )*180.0/pi; 00286 double delta_phi = abs( (*iter_mdc1)->phi() - (*iter_mdc2)->phi() )*180.0/pi; 00287 00288 Hep3Vector distant1 = extPos1 - emcPos1; 00289 Hep3Vector distant2 = extPos2 - emcPos1; 00290 if( distant1.r() > distant2.r() ) { 00291 RecEmcShowerCol::iterator iter_tmp = iter_emc1; 00292 iter_emc1 = iter_emc2; 00293 iter_emc2 = iter_tmp; 00294 Hep3Vector emc_tmp = emcPos1; 00295 emcPos1 = emcPos2; 00296 emcPos2 = emc_tmp; 00297 } 00298 distant1 = extPos1 - emcPos1; 00299 distant2 = extPos2 - emcPos2; 00300 00301 double p1 = (*iter_mdc1)->p(); 00302 double p2 = (*iter_mdc2)->p(); 00303 double e1 = (*iter_emc1)->energy(); 00304 double e2 = (*iter_emc2)->energy(); 00305 double etot = 0.0; 00306 RecEmcShowerCol::iterator iter_emc = emcShowerCol->begin(); 00307 for( ; iter_emc != emcShowerCol->end(); iter_emc++ ) { 00308 etot += (*iter_emc)->energy(); 00309 } 00310 00311 if( m_checkDigi ) { m_checkdigi_tuple->FillCol( *eventHeader, extTrackCol, mdcTrackCol, emcShowerCol, mdcKalTrackCol ); } 00312 00313 if( ( (*iter_mdc1)->charge() + (*iter_mdc2)->charge() )!= 0 ) return StatusCode::SUCCESS; 00314 if( m_printOutInfo ) { m_printOut->addNumber(6); } 00315 00316 if( delta_angle > 10.0 ) return StatusCode::SUCCESS; 00317 if( m_printOutInfo ) { m_printOut->addNumber(7); } 00318 00319 if( (*iter_kal1)->getStat(1,0)!=0 || (*iter_kal2)->getStat(1,0)!=0 ) return StatusCode::SUCCESS; 00320 if( m_printOutInfo ) { m_printOut->addNumber(8); } 00321 00322 if( distant1.r()>6.0 || distant2.r()>6.0 ) return StatusCode::SUCCESS; 00323 if( m_printOutInfo ) { m_printOut->addNumber(9); } 00324 00325 // Jpsi data taken in 2009 00326 if( m_data == "jpsi09" ) { 00327 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; 00328 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00329 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; 00330 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00331 if( delta_phi<174.0 || delta_phi>186.0 ) return StatusCode::SUCCESS; 00332 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00333 if( m_calibData == "Bhabha" ) { 00334 if( e1 < 1.1 || e2 < 1.1 ) return StatusCode::SUCCESS; 00335 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00336 } 00337 } 00338 // Psi prime data taken in 2009 00339 else if( m_data == "psip09" ) { 00340 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; 00341 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00342 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; 00343 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00344 if( delta_phi<174.0 || delta_phi>183.0 ) return StatusCode::SUCCESS; 00345 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00346 if( m_calibData == "Bhabha" ) { 00347 if( e1 < 1.4 || e2 < 1.4 ) return StatusCode::SUCCESS; 00348 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00349 } 00350 } 00351 // Psi double prime data taken in first half of 2010 00352 else if( m_data == "psipp10" ) { 00353 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; 00354 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00355 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; 00356 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00357 if( delta_phi<174.0 || delta_phi>186.0 ) return StatusCode::SUCCESS; 00358 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00359 if( m_calibData == "Bhabha" ) { 00360 if( e1 < 1.4 || e2 < 1.4 ) return StatusCode::SUCCESS; 00361 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00362 } 00363 } 00364 // Psi double prime data taken in end of 2010 and 2011 00365 else if( m_data == "psipp11" ) { 00366 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; 00367 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00368 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; 00369 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00370 if( delta_phi<174.0 || delta_phi>184.0 ) return StatusCode::SUCCESS; 00371 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00372 if( m_calibData == "Bhabha" ) { 00373 if( e1 < 1.4 || e2 < 1.4 ) return StatusCode::SUCCESS; 00374 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00375 } 00376 } 00377 // Psi prime data taken in end of 2011 and 2012 00378 else if( m_data == "psip12" ) { 00379 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; 00380 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00381 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; 00382 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00383 if( delta_phi<172.0 || delta_phi>188.0 ) return StatusCode::SUCCESS; 00384 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00385 if( m_calibData == "Bhabha" ) { 00386 if( e1 < 1.4 || e2 < 1.4 ) return StatusCode::SUCCESS; 00387 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00388 } 00389 } 00390 // Jpsi data taken in 2012 00391 else if( m_data == "jpsi12" ) { 00392 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; 00393 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00394 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; 00395 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00396 if( delta_phi<172.0 || delta_phi>188.0 ) return StatusCode::SUCCESS; 00397 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00398 if( m_calibData == "Bhabha" ) { 00399 if( e1 < 1.1 || e2 < 1.1 ) return StatusCode::SUCCESS; 00400 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00401 } 00402 } 00403 // Y(4260) and Y(4360) taken in 2013 00404 else if( m_data == "psi13" ) { 00405 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; 00406 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00407 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; 00408 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00409 if( delta_phi<172.0 || delta_phi>188.0 ) return StatusCode::SUCCESS; 00410 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00411 if( m_calibData == "Bhabha" ) { 00412 if( e1 < 1.5 || e2 < 1.5 ) return StatusCode::SUCCESS; 00413 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00414 } 00415 } 00416 else if( m_data == "rxyz14" ) { 00417 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; 00418 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00419 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; 00420 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00421 if( delta_phi<175.0 || delta_phi>185.0 ) return StatusCode::SUCCESS; 00422 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00423 if( m_calibData == "Bhabha" ) { 00424 if( e1/p1 < 0.75 || e2/p2 < 0.75 ) return StatusCode::SUCCESS; 00425 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00426 } 00427 } 00428 else if( m_data == "r15" ) { 00429 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; 00430 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00431 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; 00432 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00433 if( delta_phi<175.0 || delta_phi>185.0 ) return StatusCode::SUCCESS; 00434 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00435 if( m_calibData == "Bhabha" ) { 00436 if( e1/p1 < 0.75 || e2/p2 < 0.75 ) return StatusCode::SUCCESS; 00437 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00438 } 00439 } 00440 else if( m_data == "data16" ) { 00441 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; 00442 if( m_printOutInfo ) { m_printOut->addNumber(10); } 00443 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; 00444 if( m_printOutInfo ) { m_printOut->addNumber(11); } 00445 if( delta_phi<170.0 || delta_phi>190.0 ) return StatusCode::SUCCESS; 00446 if( m_printOutInfo ) { m_printOut->addNumber(12); } 00447 if( m_calibData == "Bhabha" ) { 00448 if( e1/p1 < 0.75 || e2/p2 < 0.75 ) return StatusCode::SUCCESS; 00449 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00450 } 00451 } 00452 00453 if( m_calibData == "Bhabha" ) { 00454 if( ( etot - e1 - e2 ) > 0.3 ) return StatusCode::SUCCESS; 00455 if( m_printOutInfo ) { m_printOut->addNumber(14); } 00456 } 00457 else if( m_calibData == "Dimu" ) { 00458 if( e1 > 0.5 || e2 > 0.5 )return StatusCode::SUCCESS; 00459 if( m_printOutInfo ) { m_printOut->addNumber(13); } 00460 } 00461 } 00462 //sunss add 08/9/17 00463 00464 TofTrackVec* tofTrackVec = new TofTrackVec; 00465 RecExtTrackCol::iterator iter_track = extTrackCol->begin(); 00466 for( ; iter_track < extTrackCol->end(); iter_track++ ) { 00467 RecMdcTrackCol::iterator iter_mdc = mdcTrackCol->begin(); 00468 for( ; iter_mdc != mdcTrackCol->end(); iter_mdc++ ) { 00469 if( (*iter_mdc)->trackId() == (*iter_track)->trackId() ) break; 00470 } 00471 double costheta = cos( (*iter_mdc)->theta() ); 00472 RecMdcKalTrackCol::iterator iter_kal = mdcKalTrackCol->begin(); 00473 for( ; iter_kal != mdcKalTrackCol->end(); iter_kal++ ) { 00474 if( (*iter_kal)->trackId() == (*iter_track)->trackId() ) break; 00475 } 00476 double p[5] = {-1.0}; 00477 int kal[5] = {-1}; 00478 if( iter_kal != mdcKalTrackCol->end() ) { 00479 for( unsigned int i=0; i<5; i++ ) { 00480 if( i==0 ) { (*iter_kal)->setPidType(RecMdcKalTrack::electron); } 00481 else if( i==1 ) { (*iter_kal)->setPidType(RecMdcKalTrack::muon); } 00482 else if( i==2 ) { (*iter_kal)->setPidType(RecMdcKalTrack::pion); } 00483 else if( i==3 ) { (*iter_kal)->setPidType(RecMdcKalTrack::kaon); } 00484 else if( i==4 ) { (*iter_kal)->setPidType(RecMdcKalTrack::proton); } 00485 p[i] = (*iter_kal)->p3().mag(); 00486 kal[i] = (*iter_kal)->getStat(0,i); 00487 } 00488 } 00489 TofTrack* tof = new TofTrack( run, event ); 00490 tof->setExtTrack( (*iter_track), costheta, p, kal, t0, t0Stat ); 00491 00492 if( tofTrackVec->size()>0 ) { 00493 std::vector<TofTrack*>::iterator iterExt = tofTrackVec->begin(); 00494 for( ; iterExt < tofTrackVec->end(); iterExt++ ) { 00495 if( (*iterExt)->isNoHit() ) continue; 00496 tof->getMultiHit( *iterExt ); 00497 } 00498 } 00499 00500 tofTrackVec->push_back( tof ); 00501 } 00502 00503 if( m_printOutInfo ) { 00504 m_printOut->setTrack1Col( tofTrackVec ); 00505 } 00506 00507 // Retrieve Tof Digi Data 00508 TofDataMap tofDataMap = tofDigiSvc->tofDataMapTof( t0 ); 00509 if( tofDataMap.empty() ) { 00510 log << MSG::WARNING << "No Tof Data Map in RawDataProviderSvc! Run=" << run << " Event=" << event << endreq; 00511 } 00512 00513 if( m_checkDigi && m_checkDigiRaw ) { 00514 SmartDataPtr<TofDigiCol> tofDigiCol(eventSvc(),"/Event/Digi/TofDigiCol"); 00515 if( !tofDigiCol ) { 00516 log << MSG::ERROR << "TofRec could not find Tof digi! Event = " << event << endreq; 00517 } 00518 else { m_checkdigi_tuple->FillCol( *eventHeader, tofDigiCol, t0, t0Stat ); } 00519 00520 m_checkdigi_tuple->FillCol( *eventHeader, tofDataMap, t0, t0Stat ); 00521 } 00522 00523 std::vector<int> deadId; 00524 if( m_forCalibration ) { 00525 for( unsigned int i=0; i<5; i++ ) { 00526 int identmp = tofCaliSvc->BrEast(i); 00527 if( identmp != 0x2fffffff ) { 00528 deadId.push_back( identmp ); 00529 } 00530 identmp = tofCaliSvc->BrWest(i); 00531 if( identmp != 0x2fffffff ) { 00532 deadId.push_back( identmp ); 00533 } 00534 identmp = tofCaliSvc->Endcap(i); 00535 if( identmp != 0x2fffffff ) { 00536 deadId.push_back( identmp ); 00537 } 00538 } 00539 } 00540 00541 std::vector<TofTrack*>::iterator iter = tofTrackVec->begin(); 00542 for( ; iter < tofTrackVec->end(); iter++ ) { 00543 if( (*iter)->isNoHit() ) continue; 00544 (*iter)->setTofData( tofDataMap ); 00545 if( m_printOutInfo ) { m_printOut->setTrack2( (*iter) ); } 00546 if( (*iter)->isNoHit() ) continue; 00547 (*iter)->match( m_forCalibration, deadId, tofTrackVec ); 00548 if( m_printOutInfo ) { m_printOut->setTrack3( (*iter) ); } 00549 } 00550 00551 iter = tofTrackVec->begin(); 00552 for( ; iter < tofTrackVec->end(); iter++ ) { 00553 00554 (*iter)->setCalibration(); 00555 00556 if( m_checkDigi ) { 00557 if( m_checkTrigger ) { 00558 // retrieve trigger data for physics analysis 00559 SmartDataPtr<TrigData> trigData(eventSvc(), "/Event/Trig/TrigData"); 00560 if (!trigData) { 00561 log << MSG::FATAL << "Could not find Trigger Data for physics analysis" << endreq; 00562 m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat ); 00563 } 00564 else { 00565 m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, trigData ); 00566 } 00567 } 00568 else { 00569 if( ( run < 0 ) && m_checkMcTruth ) { 00570 SmartDataPtr<TofMcHitCol> tofMcCol(eventSvc(),"/Event/MC/TofMcHitCol"); 00571 SmartDataPtr<McParticleCol> mcParticleCol(eventSvc(),"/Event/MC/McParticleCol"); 00572 if ( !tofMcCol || !mcParticleCol ) { 00573 m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, mdcKalTrackCol ); 00574 } 00575 else { 00576 m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, mdcKalTrackCol, tofMcCol, mcParticleCol, m_calibData ); 00577 } 00578 } 00579 else { 00580 m_checkdigi_tuple->Fill_TofTrack( *eventHeader, *iter, t0, t0Stat, mdcKalTrackCol ); 00581 } 00582 } 00583 } 00584 } 00585 00586 tds.RegisterTDS( eventHeader->runNumber(), eventHeader->eventNumber(), tofTrackVec, m_forCalibration, m_calibData ); 00587 00588 clearTofTrackVec( tofTrackVec ); 00589 00590 // Check RecTofTrackCol Registered 00591 SmartDataPtr<RecTofTrackCol> tofTrackCol(eventSvc(),"/Event/Recon/RecTofTrackCol"); 00592 if (!tofTrackCol) { 00593 log << MSG::FATAL << "TofRec could not find RecTofTrackCol!" << endreq; 00594 return StatusCode::FAILURE; 00595 } 00596 else{ 00597 if( m_saveRootFile ) { 00598 m_checkdata_tuple->FillCol( *eventHeader, tofTrackCol, mdcKalTrackCol ); 00599 } 00600 } 00601 00602 if( m_forCalibration ) { 00603 SmartDataPtr<RecBTofCalHitCol> bhitCol(eventSvc(),"/Event/Recon/RecBTofCalHitCol"); 00604 if (!bhitCol) { 00605 log << MSG::WARNING << "TofRec could not find RecBTofCalHitCol!" << endreq; 00606 } 00607 else { 00608 if( m_saveRootFile ) { 00609 m_checkdata_tuple->FillCol( *eventHeader, bhitCol ); 00610 } 00611 } 00612 00613 SmartDataPtr<RecETofCalHitCol> ehitCol(eventSvc(),"/Event/Recon/RecETofCalHitCol"); 00614 if (!ehitCol) { 00615 log << MSG::WARNING << "TofRec could not find RecETofCalHitCol!" << endreq; 00616 } 00617 else { 00618 if( m_saveRootFile ) { 00619 m_checkdata_tuple->FillCol( *eventHeader, ehitCol ); 00620 } 00621 } 00622 } 00623 00624 } 00625 else { 00626 log << MSG::FATAL << "In TofRec: AcceleratorStatus is NOT correct! m_acceleratorStatus = " << m_acceleratorStatus << endreq; 00627 return StatusCode::FAILURE; 00628 } 00629 00630 return StatusCode::SUCCESS; 00631 00632 }
StatusCode TofRec::finalize | ( | ) |
Definition at line 636 of file TofRec.cxx.
References TofCount::final(), TofCount::finalBhabha(), m_calibData, m_checkdata_tuple, m_checkDigi, m_checkdigi_tuple, m_forCalibration, m_printOut, m_printOutInfo, and m_saveRootFile.
00636 { 00637 if( m_printOutInfo ) { 00638 if( m_forCalibration ) { 00639 m_printOut->finalBhabha( m_calibData ); 00640 } 00641 m_printOut->final(); 00642 delete m_printOut; 00643 } 00644 if( m_checkDigi ) delete m_checkdigi_tuple; 00645 if( m_saveRootFile ) delete m_checkdata_tuple; 00646 return StatusCode::SUCCESS; 00647 }
StatusCode TofRec::initialize | ( | ) |
Definition at line 70 of file TofRec.cxx.
References calibUtil::ERROR, Bes_Common::INFO, m_checkdata_tuple, m_checkDigi, m_checkdigi_tuple, m_printOut, m_printOutInfo, m_saveRootFile, m_tuple_barrel, m_tuple_bb, m_tuple_cbtrk, m_tuple_cetftrk, m_tuple_cetrk, m_tuple_digi, m_tuple_endcap, m_tuple_ext, m_tuple_mrpc, m_tuple_tof, m_tuple_trk, msgSvc(), ntupleSvc(), tofCaliSvc, tofDigiSvc, and tofGeomSvc.
00070 { 00071 00072 MsgStream log(msgSvc(), name()); 00073 log << MSG::INFO << "TofRec in initialize()" << endreq; 00074 00075 //Get TOF Geomertry Service 00076 StatusCode scg = service("TofGeomSvc", tofGeomSvc); 00077 if (scg== StatusCode::SUCCESS) { 00078 log << MSG::INFO << "TofRec Get Geometry Service Sucessfully!" << endreq; 00079 }else { 00080 log << MSG::ERROR << "TofRec Get Geometry Service Failed !" << endreq; 00081 return StatusCode::FAILURE; 00082 } 00083 00084 //Get TOF Calibtration Service 00085 StatusCode scc = service("TofCaliSvc", tofCaliSvc); 00086 if (scc == StatusCode::SUCCESS) { 00087 log << MSG::INFO << "TofRec Get Calibration Service Sucessfully!" << endreq; 00088 } else { 00089 log << MSG::ERROR << "TofRec Get Calibration Service Failed !" << endreq; 00090 return StatusCode::FAILURE; 00091 } 00092 00093 //Get TOF Raw Data Provider Service 00094 StatusCode scd = service("RawDataProviderSvc", tofDigiSvc); 00095 if (scd == StatusCode::SUCCESS) { 00096 log << MSG::INFO << "TofRec Get Tof Raw Data Service Sucessfully!" << endreq; 00097 } else { 00098 log << MSG::ERROR << "TofRec Get Tof Raw Data Service Failed !" << endreq; 00099 return StatusCode::FAILURE; 00100 } 00101 00102 if( m_checkDigi ) { 00103 NTuplePtr nt11(ntupleSvc(),"FILE203/digi"); 00104 NTuplePtr nt12(ntupleSvc(),"FILE203/barrel"); 00105 NTuplePtr nt13(ntupleSvc(),"FILE203/endcap"); 00106 NTuplePtr nt14(ntupleSvc(),"FILE203/mrpc"); 00107 NTuplePtr nt15(ntupleSvc(),"FILE203/ext"); 00108 NTuplePtr nt16(ntupleSvc(),"FILE203/tof"); 00109 NTuplePtr nt17(ntupleSvc(),"FILE203/bb"); 00110 00111 if( nt11 || nt12 || nt13 || nt14 || nt15 || nt16 || nt17) { 00112 m_tuple_digi = nt11; 00113 m_tuple_barrel = nt12; 00114 m_tuple_endcap = nt13; 00115 m_tuple_endcap = nt14; 00116 m_tuple_ext = nt15; 00117 m_tuple_tof = nt16; 00118 m_tuple_bb = nt17; 00119 } 00120 else { 00121 m_tuple_digi = ntupleSvc()->book("FILE203/digi",CLID_ColumnWiseTuple,"TofRec"); 00122 m_tuple_barrel = ntupleSvc()->book("FILE203/barrel",CLID_ColumnWiseTuple,"TofRec"); 00123 m_tuple_endcap = ntupleSvc()->book("FILE203/endcap",CLID_ColumnWiseTuple,"TofRec"); 00124 m_tuple_mrpc = ntupleSvc()->book("FILE203/mrpc",CLID_ColumnWiseTuple,"TofRec"); 00125 m_tuple_ext = ntupleSvc()->book("FILE203/ext",CLID_ColumnWiseTuple,"TofRec"); 00126 m_tuple_tof = ntupleSvc()->book("FILE203/tof",CLID_ColumnWiseTuple,"TofRec"); 00127 m_tuple_bb = ntupleSvc()->book("FILE203/bb",CLID_ColumnWiseTuple,"TofRec"); 00128 00129 if( m_tuple_digi || m_tuple_barrel || m_tuple_endcap || m_tuple_mrpc || m_tuple_ext || m_tuple_tof || m_tuple_bb ) { 00130 m_checkdigi_tuple = new TofCheckDigi( m_tuple_digi, m_tuple_barrel, m_tuple_endcap, m_tuple_mrpc, m_tuple_ext, m_tuple_tof, m_tuple_bb ); 00131 } 00132 else { 00133 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_digi) <<endmsg; 00134 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_barrel) <<endmsg; 00135 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_endcap) <<endmsg; 00136 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_mrpc) <<endmsg; 00137 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_ext) <<endmsg; 00138 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_tof) <<endmsg; 00139 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_bb) <<endmsg; 00140 return StatusCode::FAILURE; 00141 } 00142 } 00143 } 00144 00145 if( m_saveRootFile ) { 00146 NTuplePtr nt21(ntupleSvc(),"FILE201/trk"); 00147 NTuplePtr nt22(ntupleSvc(),"FILE201/cbtrk"); 00148 NTuplePtr nt23(ntupleSvc(),"FILE201/cetrk"); 00149 NTuplePtr nt24(ntupleSvc(),"FILE201/cetftrk"); 00150 00151 if( nt21 || nt22 || nt23 || nt24 ) { 00152 m_tuple_trk = nt21; 00153 m_tuple_cbtrk = nt22; 00154 m_tuple_cetrk = nt23; 00155 m_tuple_cetftrk = nt24; 00156 } 00157 else { 00158 m_tuple_trk = ntupleSvc()->book("FILE201/trk",CLID_ColumnWiseTuple,"TofRec"); 00159 m_tuple_cbtrk = ntupleSvc()->book("FILE201/cbtrk",CLID_ColumnWiseTuple,"TofRec"); 00160 m_tuple_cetrk = ntupleSvc()->book("FILE201/cetrk",CLID_ColumnWiseTuple,"TofRec"); 00161 m_tuple_cetftrk = ntupleSvc()->book("FILE201/cetftrk",CLID_ColumnWiseTuple,"TofRec"); 00162 if( m_tuple_trk || m_tuple_cbtrk || m_tuple_cetrk || m_tuple_cetftrk) { 00163 m_checkdata_tuple = new TofCheckData( m_tuple_trk, m_tuple_cbtrk, m_tuple_cetrk, m_tuple_cetftrk ); 00164 } 00165 else { 00166 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_trk) <<endmsg; 00167 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_cbtrk) <<endmsg; 00168 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_cetrk) <<endmsg; 00169 log << MSG::ERROR <<"Cannot book N-tuple:" << long(m_tuple_cetftrk) <<endmsg; 00170 return StatusCode::FAILURE; 00171 } 00172 } 00173 } 00174 00175 if( m_printOutInfo ) { m_printOut = new TofCount; } 00176 00177 return StatusCode::SUCCESS; 00178 }
std::string TofRec::m_acceleratorStatus [private] |
std::string TofRec::m_calibData [private] |
TofCheckData* TofRec::m_checkdata_tuple [private] |
bool TofRec::m_checkDigi [private] |
Definition at line 40 of file TofRec.h.
Referenced by execute(), finalize(), initialize(), and TofRec().
TofCheckDigi* TofRec::m_checkdigi_tuple [private] |
bool TofRec::m_checkDigiExt [private] |
bool TofRec::m_checkDigiRaw [private] |
bool TofRec::m_checkMcTruth [private] |
bool TofRec::m_checkTrigger [private] |
std::string TofRec::m_data [private] |
bool TofRec::m_firstIteration [private] |
bool TofRec::m_forCalibration [private] |
bool TofRec::m_magneticField [private] |
TofCount* TofRec::m_printOut [private] |
bool TofRec::m_printOutInfo [private] |
Definition at line 39 of file TofRec.h.
Referenced by execute(), finalize(), initialize(), and TofRec().
bool TofRec::m_saveRootFile [private] |
Definition at line 38 of file TofRec.h.
Referenced by execute(), finalize(), initialize(), and TofRec().
NTuple::Tuple* TofRec::m_tuple_barrel [private] |
NTuple::Tuple* TofRec::m_tuple_bb [private] |
NTuple::Tuple* TofRec::m_tuple_cbtrk [private] |
NTuple::Tuple* TofRec::m_tuple_cetftrk [private] |
NTuple::Tuple* TofRec::m_tuple_cetrk [private] |
NTuple::Tuple* TofRec::m_tuple_digi [private] |
NTuple::Tuple* TofRec::m_tuple_endcap [private] |
NTuple::Tuple* TofRec::m_tuple_ext [private] |
NTuple::Tuple* TofRec::m_tuple_mrpc [private] |
NTuple::Tuple* TofRec::m_tuple_raw [private] |
NTuple::Tuple* TofRec::m_tuple_tdiff [private] |
NTuple::Tuple* TofRec::m_tuple_tof [private] |
NTuple::Tuple* TofRec::m_tuple_trk [private] |