TofRec Class Reference

#include <TofRec.h>

List of all members.

Public Member Functions

 TofRec (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode beginRun ()
StatusCode execute ()
StatusCode finalize ()
void clearTofTrackVec (std::vector< TofTrack * > *&tofTrackVec)

Private Attributes

std::string m_acceleratorStatus
bool m_magneticField
bool m_forCalibration
std::string m_data
std::string m_calibData
bool m_firstIteration
bool m_checkTrigger
bool m_saveRootFile
bool m_printOutInfo
bool m_checkDigi
bool m_checkDigiRaw
bool m_checkDigiExt
bool m_checkMcTruth
TofCheckDigim_checkdigi_tuple
NTuple::Tuple * m_tuple_digi
NTuple::Tuple * m_tuple_raw
NTuple::Tuple * m_tuple_barrel
NTuple::Tuple * m_tuple_endcap
NTuple::Tuple * m_tuple_mrpc
NTuple::Tuple * m_tuple_ext
NTuple::Tuple * m_tuple_tof
NTuple::Tuple * m_tuple_tdiff
NTuple::Tuple * m_tuple_bb
TofCheckDatam_checkdata_tuple
NTuple::Tuple * m_tuple_trk
NTuple::Tuple * m_tuple_cbtrk
NTuple::Tuple * m_tuple_cetrk
NTuple::Tuple * m_tuple_cetftrk
TofCountm_printOut


Detailed Description

Definition at line 17 of file TofRec.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

std::string TofRec::m_acceleratorStatus [private]

Definition at line 30 of file TofRec.h.

Referenced by execute(), and TofRec().

std::string TofRec::m_calibData [private]

Definition at line 34 of file TofRec.h.

Referenced by execute(), finalize(), and TofRec().

TofCheckData* TofRec::m_checkdata_tuple [private]

Definition at line 56 of file TofRec.h.

Referenced by execute(), finalize(), and initialize().

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]

Definition at line 45 of file TofRec.h.

Referenced by execute(), finalize(), and initialize().

bool TofRec::m_checkDigiExt [private]

Definition at line 42 of file TofRec.h.

Referenced by execute(), and TofRec().

bool TofRec::m_checkDigiRaw [private]

Definition at line 41 of file TofRec.h.

Referenced by execute(), and TofRec().

bool TofRec::m_checkMcTruth [private]

Definition at line 43 of file TofRec.h.

Referenced by execute(), and TofRec().

bool TofRec::m_checkTrigger [private]

Definition at line 37 of file TofRec.h.

Referenced by execute(), and TofRec().

std::string TofRec::m_data [private]

Definition at line 33 of file TofRec.h.

Referenced by execute(), and TofRec().

bool TofRec::m_firstIteration [private]

Definition at line 36 of file TofRec.h.

Referenced by TofRec().

bool TofRec::m_forCalibration [private]

Definition at line 32 of file TofRec.h.

Referenced by execute(), finalize(), and TofRec().

bool TofRec::m_magneticField [private]

Definition at line 31 of file TofRec.h.

Referenced by TofRec().

TofCount* TofRec::m_printOut [private]

Definition at line 62 of file TofRec.h.

Referenced by execute(), finalize(), and initialize().

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]

Definition at line 48 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_bb [private]

Definition at line 54 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_cbtrk [private]

Definition at line 58 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_cetftrk [private]

Definition at line 60 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_cetrk [private]

Definition at line 59 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_digi [private]

Definition at line 46 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_endcap [private]

Definition at line 49 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_ext [private]

Definition at line 51 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_mrpc [private]

Definition at line 50 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_raw [private]

Definition at line 47 of file TofRec.h.

NTuple::Tuple* TofRec::m_tuple_tdiff [private]

Definition at line 53 of file TofRec.h.

NTuple::Tuple* TofRec::m_tuple_tof [private]

Definition at line 52 of file TofRec.h.

Referenced by initialize().

NTuple::Tuple* TofRec::m_tuple_trk [private]

Definition at line 57 of file TofRec.h.

Referenced by initialize().


Generated on Tue Nov 29 23:36:07 2016 for BOSS_7.0.2 by  doxygen 1.4.7