TofRecTDS Class Reference

#include <TofRecTDS.h>

List of all members.

Public Member Functions

StatusCode InitializeTDS ()
StatusCode RegisterNullRecTofTrackCol ()
StatusCode RegisterTDS (int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, bool m_forCalibration, std::string m_calibData)
StatusCode RegisterReconEvent ()
StatusCode RegisterRecTofTrackCol (std::vector< TofTrack * > *&tofTrackVec)
StatusCode RegisterRecBTofCalHitCol (int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, std::string calibData)
StatusCode RegisterRecETofCalHitCol (int runNumber, int eventNumber, std::vector< TofTrack * > *&tofTrackVec, std::string calibData)


Detailed Description

Definition at line 7 of file TofRecTDS.h.


Member Function Documentation

StatusCode TofRecTDS::InitializeTDS (  ) 

Definition at line 15 of file TofRecTDS.cxx.

References RegisterNullRecTofTrackCol(), and RegisterReconEvent().

00015                                     {
00016   if( RegisterReconEvent() == StatusCode::FAILURE ) return StatusCode::FAILURE;
00017   if( RegisterNullRecTofTrackCol() == StatusCode::FAILURE ) return StatusCode::FAILURE;
00018   return StatusCode::SUCCESS;
00019 }

StatusCode TofRecTDS::RegisterNullRecTofTrackCol (  ) 

Definition at line 22 of file TofRecTDS.cxx.

References Bes_Common::FATAL, Bes_Common::INFO, msgSvc(), and EventModel::Recon::RecTofTrackCol.

Referenced by TofRec::execute(), and InitializeTDS().

00022                                                  {
00023   IMessageSvc* msgSvc;
00024   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00025   MsgStream log(msgSvc, "TofRecTDS");
00026   log << MSG::INFO << "Initialize: TofRecTDS::RegisterNullRecTofTrack()" << endreq;
00027 
00028   IDataProviderSvc* eventSvc;
00029   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00030 
00031   RecTofTrackCol* recTofTrackCol = new RecTofTrackCol;
00032 
00033 // Check whether the RecTofTrackCol has been registered.
00034   StatusCode sc;
00035   DataObject *aRecTofTrackCol;
00036   eventSvc->findObject( "/Event/Recon/RecTofTrackCol", aRecTofTrackCol );
00037   if( aRecTofTrackCol != NULL ) {
00038     sc = eventSvc->unregisterObject( "/Event/Recon/RecTofTrackCol" );
00039     if( sc != StatusCode::SUCCESS ) {
00040       log << MSG::FATAL << "Initialize: Could not unregister RecTofTrack collection!" << endreq;
00041       delete recTofTrackCol;
00042       return StatusCode::FAILURE;
00043     }
00044   }
00045   delete aRecTofTrackCol;
00046 
00047   sc = eventSvc->registerObject("/Event/Recon/RecTofTrackCol", recTofTrackCol);
00048   if( sc != StatusCode::SUCCESS ) {
00049     log << MSG::FATAL << "Initialize: TofRec could not register Null Rec TOF track collection!" << endreq;
00050     delete recTofTrackCol;
00051     return StatusCode::FAILURE;
00052   }
00053 
00054   return StatusCode::SUCCESS;
00055 }

StatusCode TofRecTDS::RegisterRecBTofCalHitCol ( int  runNumber,
int  eventNumber,
std::vector< TofTrack * > *&  tofTrackVec,
std::string  calibData 
)

Definition at line 156 of file TofRecTDS.cxx.

References DoubleLayer, EastEndcapMRPC, Bes_Common::FATAL, Bes_Common::INFO, InnerLayer, iter(), msgSvc(), EventModel::Recon::RecBTofCalHitCol, and WestEndcapMRPC.

Referenced by RegisterTDS().

00156                                                                                                                                           {
00157   IMessageSvc* msgSvc;
00158   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00159   MsgStream log(msgSvc, "TofRecTDS");
00160   log << MSG::INFO << "TofRecTDS::RegisterRecBTofCalHitCol()" << endreq;
00161 
00162   IDataProviderSvc* eventSvc;
00163   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00164 
00165   RecBTofCalHitCol* recBTofCalHitCol = new RecBTofCalHitCol;
00166 
00167   std::vector<TofTrack*>::iterator iter = tofTrackVec->begin();
00168   for( ; iter < tofTrackVec->end(); iter++ ) {
00169     ExtTrackCase hitcase = (*iter)->hitCase();
00170     //    if( ( hitcase == InnerLayer ) || ( hitcase == OuterLayer ) || ( hitcase == DoubleLayer ) ) {
00171     if( ( hitcase == InnerLayer ) || ( hitcase == DoubleLayer ) ) {
00172       (*iter)->convert2RecBTofCalHitColBarrel( runNumber, eventNumber, recBTofCalHitCol, m_calibData );
00173     }
00174     if( ( hitcase == EastEndcapMRPC ) || ( hitcase == WestEndcapMRPC ) ) {
00175       (*iter)->convert2RecBTofCalHitColETF( runNumber, eventNumber, recBTofCalHitCol, m_calibData );
00176     }
00177   }
00178 
00179 // Check whether the RecBTofCalHitCol has been registered.
00180   StatusCode scb;
00181   DataObject *aRecBTofCalHitCol;
00182   eventSvc->findObject( "/Event/Recon/RecBTofCalhitCol", aRecBTofCalHitCol );
00183   if( aRecBTofCalHitCol != NULL ) {
00184     scb = eventSvc->unregisterObject( "/Event/Recon/RecBTofCalHitCol" );
00185     if( scb != StatusCode::SUCCESS ) {
00186       log << MSG::FATAL << "Could not unregister RecBTofCalHit collection!" << endreq;
00187 
00188       RecBTofCalHitCol::iterator iter_btof = recBTofCalHitCol->begin();
00189       for( ; iter_btof!=recBTofCalHitCol->end(); iter_btof++ ) {
00190         delete (*iter_btof);
00191       }
00192       recBTofCalHitCol->clear();
00193       delete recBTofCalHitCol;
00194 
00195       std::vector<TofTrack*>::iterator iter_data = tofTrackVec->begin();
00196       for( ; iter_data!=tofTrackVec->end(); iter_data++ ) {
00197         delete (*iter_data);
00198       }
00199       tofTrackVec->clear();
00200       delete tofTrackVec;
00201 
00202       return StatusCode::FAILURE;
00203     }
00204   }
00205 
00206   StatusCode sh1 = eventSvc->registerObject("/Event/Recon/RecBTofCalHitCol", recBTofCalHitCol);
00207   if(sh1!=StatusCode::SUCCESS) {
00208     log << MSG::FATAL << "TofRec could not register BTOF CalHit collection!!" << endreq;
00209     RecBTofCalHitCol::iterator iter_btof = recBTofCalHitCol->begin();
00210     for( ; iter_btof!=recBTofCalHitCol->end(); iter_btof++ ) {
00211       delete (*iter_btof);
00212     }
00213     recBTofCalHitCol->clear();
00214     delete recBTofCalHitCol;
00215     return StatusCode::FAILURE;
00216   }
00217 
00218   return StatusCode::SUCCESS;
00219 }

StatusCode TofRecTDS::RegisterRecETofCalHitCol ( int  runNumber,
int  eventNumber,
std::vector< TofTrack * > *&  tofTrackVec,
std::string  calibData 
)

Definition at line 222 of file TofRecTDS.cxx.

References abs, EastEndcap, Bes_Common::FATAL, Bes_Common::INFO, iter(), msgSvc(), EventModel::Recon::RecETofCalHitCol, and WestEndcap.

Referenced by RegisterTDS().

00222                                                                                                                                           {
00223   IMessageSvc* msgSvc;
00224   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00225   MsgStream log(msgSvc, "TofRecTDS");
00226   log << MSG::INFO << "TofRecTDS::RegisterRecETofCalHitCol()" << endreq;
00227 
00228   IDataProviderSvc* eventSvc;
00229   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00230 
00231   //sunss add 08/10/16
00232 
00233   if( tofTrackVec->size() != 2 ) return StatusCode::SUCCESS;
00234   std::vector<TofTrack*>::iterator iter1 = tofTrackVec->begin();
00235   std::vector<TofTrack*>::iterator iter2 = iter1+1;
00236   if( (*iter1)->tdc1() < 0.0 || (*iter2)->tdc1() < 0.0 ) return StatusCode::SUCCESS;
00237   if( abs( (*iter1)->tdc1() - (*iter2)->tdc1() ) > 2.0 ) return StatusCode::SUCCESS;
00238 
00239   //sunss add 08/10/16
00240 
00241   RecETofCalHitCol* recETofCalHitCol = new RecETofCalHitCol;
00242 
00243   std::vector<TofTrack*>::iterator iter = tofTrackVec->begin();
00244   for( ; iter < tofTrackVec->end(); iter++ ) {
00245     ExtTrackCase hitcase = (*iter)->hitCase();
00246     if( ( hitcase == EastEndcap ) || ( hitcase == WestEndcap ) ) {
00247       (*iter)->convert2RecETofCalHitCol( runNumber, eventNumber, recETofCalHitCol, m_calibData );
00248     }
00249   }
00250 
00251 // Check whether the RecETofCalHitCol has been registered.
00252   StatusCode sce;
00253 
00254   DataObject *aRecETofCalHitCol;
00255   eventSvc->findObject( "/Event/Recon/RecETofCalhitCol", aRecETofCalHitCol );
00256   if( aRecETofCalHitCol != NULL ) {
00257     sce = eventSvc->unregisterObject( "/Event/Recon/RecETofCalHitCol" );
00258     if( sce != StatusCode::SUCCESS ) {
00259       log << MSG::FATAL << "Could not unregister RecETofCalHit collection!" << endreq;
00260 
00261       RecETofCalHitCol::iterator iter_etof = recETofCalHitCol->begin();
00262       for( ; iter_etof!=recETofCalHitCol->end(); iter_etof++ ) {
00263         delete (*iter_etof);
00264       }
00265       recETofCalHitCol->clear();
00266       delete recETofCalHitCol;
00267 
00268       std::vector<TofTrack*>::iterator iter_data = tofTrackVec->begin();
00269       for( ; iter_data!=tofTrackVec->end(); iter_data++ ) {
00270         delete (*iter_data);
00271       }
00272       tofTrackVec->clear();
00273       delete tofTrackVec;
00274 
00275       return StatusCode::FAILURE;
00276     }
00277   }
00278 
00279   StatusCode sh2 = eventSvc->registerObject("/Event/Recon/RecETofCalHitCol",recETofCalHitCol);
00280   if(sh2!=StatusCode::SUCCESS) {
00281     log << MSG::FATAL << "TofRec could not register ETOF CalHit collection!!" << endreq;
00282     RecETofCalHitCol::iterator iter_etof = recETofCalHitCol->begin();
00283     for( ; iter_etof!=recETofCalHitCol->end(); iter_etof++ ) {
00284       delete (*iter_etof);
00285     }
00286     recETofCalHitCol->clear();
00287     delete recETofCalHitCol;
00288     return StatusCode::FAILURE;
00289   }
00290 
00291   return StatusCode::SUCCESS;
00292 }

StatusCode TofRecTDS::RegisterReconEvent (  ) 

Definition at line 69 of file TofRecTDS.cxx.

References Bes_Common::FATAL, Bes_Common::INFO, and msgSvc().

Referenced by InitializeTDS().

00069                                          {
00070   IMessageSvc* msgSvc;
00071   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00072   MsgStream log(msgSvc, "TofRecTDS");
00073 
00074   IDataProviderSvc* eventSvc;
00075   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00076 
00077 // Register Reconstructed Track To TDS
00078   DataObject *aReconEvent ;
00079   eventSvc->findObject("/Event/Recon",aReconEvent);
00080   if(aReconEvent==NULL) {
00081     log << MSG::INFO << "TofRecTDS::RegisterReconEvent()" << endreq;
00082     aReconEvent = new ReconEvent();
00083     StatusCode sc = eventSvc->registerObject("/Event/Recon",aReconEvent);
00084     if(sc!=StatusCode::SUCCESS) {
00085       log << MSG::FATAL << "TofRec could not register ReconEvent!" <<endreq;
00086       return StatusCode::FAILURE;
00087     }
00088   } 
00089   return StatusCode::SUCCESS;
00090 }

StatusCode TofRecTDS::RegisterRecTofTrackCol ( std::vector< TofTrack * > *&  tofTrackVec  ) 

Definition at line 93 of file TofRecTDS.cxx.

References Bes_Common::FATAL, Bes_Common::INFO, iter(), msgSvc(), and EventModel::Recon::RecTofTrackCol.

Referenced by RegisterTDS().

00093                                                                                  {
00094   IMessageSvc* msgSvc;
00095   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00096   MsgStream log(msgSvc, "TofRecTDS");
00097   log << MSG::INFO << "TofRecTDS::RegisterRecTofTrack()" << endreq;
00098 
00099   IDataProviderSvc* eventSvc;
00100   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00101 
00102   RecTofTrackCol* recTofTrackCol = new RecTofTrackCol;
00103 
00104   std::vector<TofTrack*>::iterator iter = tofTrackVec->begin();
00105   for( ; iter < tofTrackVec->end(); iter++ ) {
00106     (*iter)->convert2RecTofTrackCol( recTofTrackCol );
00107   }
00108 
00109 // Check whether the RecTofTrackCol has been registered.
00110   StatusCode sc;
00111   DataObject *aRecTofTrackCol;
00112   eventSvc->findObject( "/Event/Recon/RecTofTrackCol", aRecTofTrackCol );
00113   if( aRecTofTrackCol != NULL ) {
00114 
00115     sc = eventSvc->unregisterObject( "/Event/Recon/RecTofTrackCol" );
00116 
00117     delete aRecTofTrackCol;
00118 
00119     if( sc != StatusCode::SUCCESS ) {
00120       log << MSG::FATAL << "Could not unregister RecTofTrack collection!" << endreq;
00121 
00122       RecTofTrackCol::iterator iter_tof = recTofTrackCol->begin();
00123       for( ; iter_tof!=recTofTrackCol->end(); iter_tof++ ) {
00124         delete (*iter_tof);
00125       }
00126       recTofTrackCol->clear();
00127       delete recTofTrackCol;
00128 
00129       std::vector<TofTrack*>::iterator iter_data = tofTrackVec->begin();
00130       for( ; iter_data!=tofTrackVec->end(); iter_data++ ) {
00131         delete (*iter_data);
00132       }
00133       tofTrackVec->clear();
00134       delete tofTrackVec;
00135 
00136       return StatusCode::FAILURE;
00137     }
00138   }
00139 
00140   sc = eventSvc->registerObject("/Event/Recon/RecTofTrackCol", recTofTrackCol);
00141   if( sc != StatusCode::SUCCESS ) {
00142     log << MSG::FATAL << "TofRec could not register Rec TOF track collection!" << endreq;
00143     RecTofTrackCol::iterator iter_tof = recTofTrackCol->begin();
00144     for( ; iter_tof!=recTofTrackCol->end(); iter_tof++ ) {
00145       delete (*iter_tof);
00146     }
00147     recTofTrackCol->clear();
00148     delete recTofTrackCol;
00149     return StatusCode::FAILURE;
00150   }
00151 
00152   return StatusCode::SUCCESS;
00153 }

StatusCode TofRecTDS::RegisterTDS ( int  runNumber,
int  eventNumber,
std::vector< TofTrack * > *&  tofTrackVec,
bool  m_forCalibration,
std::string  m_calibData 
)

Definition at line 58 of file TofRecTDS.cxx.

References RegisterRecBTofCalHitCol(), RegisterRecETofCalHitCol(), and RegisterRecTofTrackCol().

Referenced by TofRec::execute().

00058                                                                                                                                                 {
00059   //  if( RegisterReconEvent() == StatusCode::FAILURE ) return StatusCode::FAILURE;
00060   if( RegisterRecTofTrackCol( tofTrackVec ) == StatusCode::FAILURE ) return StatusCode::FAILURE;
00061   if( forCalibration ) {
00062     if( RegisterRecBTofCalHitCol( runNumber, eventNumber, tofTrackVec, calibData ) == StatusCode::FAILURE ) return StatusCode::FAILURE;
00063     if( RegisterRecETofCalHitCol( runNumber, eventNumber, tofTrackVec, calibData ) == StatusCode::FAILURE ) return StatusCode::FAILURE;
00064   }
00065   return StatusCode::SUCCESS;
00066 }


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