EmcRecTDS Class Reference

#include <EmcRecTDS.h>

List of all members.

Public Member Functions

StatusCode RegisterReconEvent ()
StatusCode RegisterHit (RecEmcHitMap &aHitMap)
StatusCode RegisterCluster (RecEmcClusterMap &aClusterMap)
StatusCode RegisterShower (RecEmcShowerMap &aShowerMap)
StatusCode RegisterToTDS (RecEmcHitMap &aHitMap, RecEmcClusterMap &aClusterMap, RecEmcShowerMap &aShowerMap)
StatusCode CheckRegister ()


Detailed Description

Definition at line 5 of file EmcRecTDS.h.


Member Function Documentation

StatusCode EmcRecTDS::CheckRegister (  ) 

Definition at line 208 of file EmcRecTDS.cxx.

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

00209 {
00210   IMessageSvc* msgSvc;
00211   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00212   MsgStream log(msgSvc, "EmcRecTDS");
00213   log << MSG::INFO << "EmcRecTDS::CheckRegister()" << endreq;
00214 
00215   IDataProviderSvc* eventSvc;
00216   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00217 
00218   // check RecEmcHitCol registered
00219   SmartDataPtr<RecEmcHitCol> aHitCol(eventSvc,"/Event/Recon/RecEmcHitCol");
00220   if (!aHitCol) { 
00221     log << MSG::FATAL << "Could not find emcRecHitCol" << endreq;
00222     return( StatusCode::FAILURE);
00223   }
00224 
00225   RecEmcHitCol::iterator iHitCol;
00226   for(iHitCol=aHitCol->begin();
00227       iHitCol!=aHitCol->end();
00228       iHitCol++){
00229     //cout<<*(*iHitCol);
00230   }
00231 
00232   // check RecEmcClusterCol registered
00233   SmartDataPtr<RecEmcClusterCol> aClusterCol(eventSvc,"/Event/Recon/RecEmcClusterCol");
00234   if (!aClusterCol) { 
00235     log << MSG::FATAL << "Could not find emcRecClusterCol" << endreq;
00236     return( StatusCode::FAILURE);
00237   }
00238 
00239   RecEmcClusterCol::iterator iClusterCol;
00240   for(iClusterCol=aClusterCol->begin();
00241       iClusterCol!=aClusterCol->end();
00242       iClusterCol++){
00243     //cout<<*(*iClusterCol);
00244   }
00245 
00246   // check RecEmcShowerCol registered
00247   SmartDataPtr<RecEmcShowerCol> aShowerCol(eventSvc,"/Event/Recon/RecEmcShowerCol");
00248   if (!aShowerCol) { 
00249     log << MSG::FATAL << "Could not find emcRecShowerCol" << endreq;
00250     return( StatusCode::FAILURE);
00251   }
00252 
00253   RecEmcShowerCol::iterator iShowerCol;
00254   for(iShowerCol=aShowerCol->begin();
00255       iShowerCol!=aShowerCol->end();
00256       iShowerCol++){
00257     //cout<<*(*iShowerCol);
00258   }
00259 
00260   return StatusCode::SUCCESS;
00261 }

StatusCode EmcRecTDS::RegisterCluster ( RecEmcClusterMap aClusterMap  ) 

Definition at line 93 of file EmcRecTDS.cxx.

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

Referenced by RegisterToTDS().

00094 {
00095   RegisterReconEvent();
00096 
00097   IMessageSvc* msgSvc;
00098   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00099   MsgStream log(msgSvc, "EmcRecTDS");
00100   log << MSG::INFO << "EmcRecTDS::RegisterCluster()" << endreq;
00101 
00102   IDataProviderSvc* eventSvc;
00103   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00104 
00105   RecEmcClusterCol *aRecEmcClusterCol = new RecEmcClusterCol;
00106   RecEmcClusterMap::iterator iClusterMap;
00107   for(iClusterMap=aClusterMap.begin();
00108       iClusterMap!=aClusterMap.end();
00109       iClusterMap++){
00110     aRecEmcClusterCol->add(new RecEmcCluster(iClusterMap->second));
00111   }
00112 
00113   //check whether the RecEmcClusterCol has been already registered
00114   StatusCode sc;
00115   DataObject *aRecEmcClusterEvent;
00116   eventSvc->findObject("/Event/Recon/RecEmcClusterCol", aRecEmcClusterEvent);
00117   if(aRecEmcClusterEvent!=NULL) {
00118     //then unregister RecEmcClusterCol
00119     sc = eventSvc->unregisterObject("/Event/Recon/RecEmcClusterCol");
00120     delete aRecEmcClusterEvent;   //it must be delete to avoid memory leakage
00121     if(sc!=StatusCode::SUCCESS) {
00122       log << MSG::FATAL << "Could not unregister EMC cluster collection" << endreq;
00123       return( StatusCode::FAILURE);
00124     }
00125   }
00126 
00127   sc = eventSvc->registerObject("/Event/Recon/RecEmcClusterCol", aRecEmcClusterCol);
00128   if(sc!=StatusCode::SUCCESS) {
00129     log << MSG::FATAL << "Could not register EMC cluster collection" << endreq;
00130     return( StatusCode::FAILURE);
00131   }
00132 
00133   return StatusCode::SUCCESS;
00134 }

StatusCode EmcRecTDS::RegisterHit ( RecEmcHitMap aHitMap  ) 

Definition at line 50 of file EmcRecTDS.cxx.

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

Referenced by RegisterToTDS().

00051 {
00052   RegisterReconEvent();
00053     
00054   IMessageSvc* msgSvc;
00055   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00056   MsgStream log(msgSvc, "EmcRecTDS");
00057   log << MSG::INFO << "EmcRecTDS::RegisterHit()" << endreq;
00058 
00059   IDataProviderSvc* eventSvc;
00060   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00061   
00062   RecEmcHitCol *aRecEmcHitCol = new RecEmcHitCol;
00063   RecEmcHitMap::iterator iHitMap;
00064   for(iHitMap=aHitMap.begin();
00065       iHitMap!=aHitMap.end();
00066       iHitMap++){
00067     aRecEmcHitCol->add(new RecEmcHit(iHitMap->second));
00068   }
00069 
00070   //check whether the RecEmcHitCol has been already registered
00071   StatusCode sc;
00072   DataObject *aRecEmcHitEvent;
00073   eventSvc->findObject("/Event/Recon/RecEmcHitCol", aRecEmcHitEvent);
00074   if(aRecEmcHitEvent!=NULL) {
00075     //then unregister RecEmcHitCol
00076     sc = eventSvc->unregisterObject("/Event/Recon/RecEmcHitCol");
00077     delete aRecEmcHitEvent;   //it must be delete to avoid memory leakage
00078     if(sc!=StatusCode::SUCCESS) {
00079       log << MSG::FATAL << "Could not unregister EMC shower collection" << endreq;
00080       return( StatusCode::FAILURE);
00081     }
00082   }
00083 
00084   sc = eventSvc->registerObject("/Event/Recon/RecEmcHitCol", aRecEmcHitCol);
00085   if(sc!=StatusCode::SUCCESS) {
00086     log << MSG::FATAL << "Could not register EMC hit collection" << endreq;
00087     return( StatusCode::FAILURE);
00088   }
00089 
00090   return StatusCode::SUCCESS;
00091 }

StatusCode EmcRecTDS::RegisterReconEvent (  ) 

Definition at line 24 of file EmcRecTDS.cxx.

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

Referenced by RegisterCluster(), RegisterHit(), and RegisterShower().

00025 {
00026   IMessageSvc* msgSvc;
00027   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00028   MsgStream log(msgSvc, "EmcRecTDS");
00029 
00030   IDataProviderSvc* eventSvc;
00031   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00032        
00033   //check whether the Recon has been already registered
00034   DataObject *aReconEvent;
00035   eventSvc->findObject("/Event/Recon",aReconEvent);
00036   if(aReconEvent==NULL) {
00037     log << MSG::INFO << "EmcRecTDS::RegisterReconEvent()" << endreq;
00038     //then register Recon
00039     aReconEvent = new ReconEvent();
00040     StatusCode sc = eventSvc->registerObject("/Event/Recon",aReconEvent);
00041     if(sc!=StatusCode::SUCCESS) {
00042       log << MSG::FATAL << "Could not register ReconEvent" <<endreq;
00043       return StatusCode::FAILURE;
00044     }
00045   }
00046 
00047   return StatusCode::SUCCESS;
00048 }

StatusCode EmcRecTDS::RegisterShower ( RecEmcShowerMap aShowerMap  ) 

Definition at line 136 of file EmcRecTDS.cxx.

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

Referenced by RegisterToTDS().

00137 {
00138   RegisterReconEvent();
00139 
00140   IMessageSvc* msgSvc;
00141   Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00142   MsgStream log(msgSvc, "EmcRecTDS");
00143   log << MSG::INFO << "EmcRecTDS::RegisterShower()" << endreq;
00144 
00145   IDataProviderSvc* eventSvc;
00146   Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
00147 
00148   SmartDataPtr<RecEmcClusterCol> aClusterCol(eventSvc,"/Event/Recon/RecEmcClusterCol");
00149   if (!aClusterCol) { 
00150     log << MSG::INFO << "Could not find emcRecClusterCol" << endreq;
00151   }
00152 
00153   // ShowerMap --> Shower Container
00154   RecEmcShowerCol *aRecEmcShowerCol = new RecEmcShowerCol;
00155   RecEmcShowerVec aShowerVec;
00156 
00157   RecEmcShowerMap::iterator iShowerMap;
00158   for(iShowerMap=aShowerMap.begin();
00159       iShowerMap!=aShowerMap.end();
00160       iShowerMap++) {
00161     //Find cluster in TDS
00162     if(aClusterCol) {
00163       RecEmcID clusterId(iShowerMap->second.getClusterId());
00164       RecEmcClusterCol::iterator iClusterCol;
00165       for(iClusterCol=aClusterCol->begin();
00166           iClusterCol!=aClusterCol->end();
00167           iClusterCol++){
00168         if(clusterId==(*iClusterCol)->getClusterId()) {
00169           iShowerMap->second.Cluster(*iClusterCol);
00170           break;
00171           //emcRecClusterCol->InsertShower(*iCluster);
00172         }
00173       }
00174     }
00175     aShowerVec.push_back(iShowerMap->second);
00176   }
00177   sort(aShowerVec.begin(), aShowerVec.end(), greater<RecEmcShower>());
00178   RecEmcShowerVec::iterator iShowerVec;
00179   for(iShowerVec=aShowerVec.begin();
00180       iShowerVec!=aShowerVec.end();
00181       iShowerVec++) {
00182     aRecEmcShowerCol->add(new RecEmcShower(*iShowerVec));
00183   }  
00184 
00185   //check whether the RecEmcShowerCol has been already registered
00186   StatusCode sc;
00187   DataObject *aRecEmcShowerEvent;
00188   eventSvc->findObject("/Event/Recon/RecEmcShowerCol", aRecEmcShowerEvent);
00189   if(aRecEmcShowerEvent!=NULL) {
00190     //then unregister RecEmcShowerCol
00191     StatusCode sc = eventSvc->unregisterObject("/Event/Recon/RecEmcShowerCol");
00192     delete aRecEmcShowerEvent;   //it must be delete to avoid memory leakage
00193     if(sc!=StatusCode::SUCCESS) {
00194       log << MSG::FATAL << "Could not unregister EMC shower collection" << endreq;
00195       return( StatusCode::FAILURE);
00196     }
00197   }
00198 
00199   sc = eventSvc->registerObject("/Event/Recon/RecEmcShowerCol", aRecEmcShowerCol);
00200   if(sc!=StatusCode::SUCCESS) {
00201     log << MSG::FATAL << "Could not register EMC shower collection" << endreq;
00202     return( StatusCode::FAILURE);
00203   }
00204 
00205   return StatusCode::SUCCESS;
00206 }

StatusCode EmcRecTDS::RegisterToTDS ( RecEmcHitMap aHitMap,
RecEmcClusterMap aClusterMap,
RecEmcShowerMap aShowerMap 
)

Definition at line 15 of file EmcRecTDS.cxx.

References RegisterCluster(), RegisterHit(), and RegisterShower().

00017 {
00018   RegisterCluster(aClusterMap);
00019   RegisterShower(aShowerMap);
00020   RegisterHit(aHitMap);
00021   return StatusCode::SUCCESS;
00022 }


Generated on Tue Nov 29 23:18:46 2016 for BOSS_7.0.2 by  doxygen 1.4.7