#include <MdcMakeHits.h>
Public Member Functions | |
StatusCode | beginRun () |
StatusCode | beginRun () |
StatusCode | execute () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | finalize () |
StatusCode | initialize () |
StatusCode | initialize () |
MdcMakeHits (const std::string &name, ISvcLocator *pSvcLocator) | |
MdcMakeHits (const std::string &name, ISvcLocator *pSvcLocator) | |
Private Attributes | |
const MdcDetector * | _gm |
const MdcDetector * | _gm |
bool | m_combineTracking |
bool | m_cosmicFit |
bool | m_countPropTime |
bool | m_doSag |
bool | m_dropHot |
uint32_t | m_getDigiFlag |
bool | m_keepBadTdc |
bool | m_keepUnmatch |
int | m_maxMdcDigi |
const MdcCalibFunSvc * | m_mdcCalibFunSvc |
const MdcCalibFunSvc * | m_mdcCalibFunSvc |
int | m_minMdcDigi |
RawDataProviderSvc * | m_rawDataProviderSvc |
RawDataProviderSvc * | m_rawDataProviderSvc |
|
00036 : 00037 Algorithm(name, pSvcLocator) 00038 { 00039 // Declare the properties 00040 declareProperty("cosmicFit", m_cosmicFit= false); 00041 declareProperty("doSag", m_doSag= false); 00042 declareProperty("countPropTime",m_countPropTime = true); 00043 00044 declareProperty("getDigiFlag", m_getDigiFlag = 0); 00045 declareProperty("maxMdcDigi", m_maxMdcDigi= 0); 00046 declareProperty("keepBadTdc", m_keepBadTdc= 0); 00047 declareProperty("dropHot", m_dropHot= 0); 00048 declareProperty("keepUnmatch", m_keepUnmatch= 0); 00049 declareProperty("minMdcDigi", m_minMdcDigi = 0); 00050 declareProperty("combineTracking",m_combineTracking = false);//yzhang 2010-05-28 00051 00052 #ifdef MDCPATREC_RESLAYER 00053 declareProperty("resLayer", m_resLayer= -1); 00054 #endif 00055 }
|
|
|
|
|
|
00058 { 00059 _gm = MdcDetector::instance(m_doSag); 00060 if(NULL == _gm) return StatusCode::FAILURE; 00061 return StatusCode::SUCCESS; 00062 }
|
|
|
|
00090 { 00091 MsgStream log(msgSvc(), name()); 00092 log << MSG::INFO << "in execute()" << endreq; 00093 StatusCode sc; 00094 00095 DataObject *pnode = 0; 00096 sc = eventSvc()->retrieveObject("/Event/Hit",pnode); 00097 if(!sc.isSuccess()) { 00098 pnode = new DataObject; 00099 sc = eventSvc()->registerObject("/Event/Hit",pnode); 00100 if(!sc.isSuccess()) { 00101 log << MSG::FATAL << " Could not register hit branch" <<endreq; 00102 return StatusCode::FAILURE; 00103 } 00104 } 00105 00106 IDataManagerSvc *dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc()); 00107 DataObject *hitCol; 00108 eventSvc()->findObject("/Event/Hit/MdcHitCol",hitCol); 00109 if(hitCol!= NULL) { 00110 dataManSvc->clearSubTree("/Event/Hit/MdcHitCol"); 00111 eventSvc()->unregisterObject("/Event/Hit/MdcHitCol"); 00112 } 00113 MdcHitCol *mdcHitCol = new MdcHitCol; 00114 sc = eventSvc()->registerObject("/Event/Hit/MdcHitCol",mdcHitCol); 00115 if(!sc.isSuccess()) { 00116 log << MSG::FATAL << " Could not register hit collection" <<endreq; 00117 return StatusCode::FAILURE; 00118 } 00119 00120 DataObject *hitMap; 00121 eventSvc()->findObject("/Event/Hit/MdcHitMap",hitMap); 00122 if(hitMap!= NULL) { 00123 dataManSvc->clearSubTree("/Event/Hit/MdcHitMap"); 00124 eventSvc()->unregisterObject("/Event/Hit/MdcHitMap"); 00125 } 00126 MdcHitMap *mdcHitMap = new MdcHitMap(*_gm); 00127 sc = eventSvc()->registerObject("/Event/Hit/MdcHitMap",mdcHitMap); 00128 if(!sc.isSuccess()) { 00129 log << MSG::FATAL << " Could not register hit map" <<endreq; 00130 return StatusCode::FAILURE; 00131 } 00132 00133 // retrieve Mdc digi vector form RawDataProviderSvc 00134 uint32_t getDigiFlag = 0; 00135 getDigiFlag += m_maxMdcDigi; 00136 if(m_dropHot || m_combineTracking)getDigiFlag |= MdcRawDataProvider::b_dropHot; 00137 if(m_keepBadTdc) getDigiFlag |= MdcRawDataProvider::b_keepBadTdc; 00138 if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch; 00139 MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag); 00140 00141 //std::cout<<__FILE__<<" nDigi = "<<mdcDigiVec.size()<< std::endl; 00142 if ((int)mdcDigiVec.size()<m_minMdcDigi){ 00143 log << MSG::WARNING << " Skip this event for MdcDigiVec.size() < "<<m_minMdcDigi << endreq; 00144 return StatusCode::SUCCESS; 00145 } 00146 00147 MdcDigiVec::iterator iter = mdcDigiVec.begin(); 00148 for (;iter != mdcDigiVec.end(); iter++ ) { 00149 const MdcDigi* aDigi = *iter; 00150 MdcHit *hit = new MdcHit(aDigi, _gm); 00151 hit->setCalibSvc(m_mdcCalibFunSvc); 00152 hit->setCosmicFit(m_cosmicFit); 00153 hit->setCountPropTime(m_countPropTime); 00154 #ifdef MDCPATREC_RESLAYER 00155 hit->setResLayer(m_resLayer); 00156 #endif 00157 mdcHitCol->push_back(hit); 00158 mdcHitMap->addHit(*hit); 00159 } 00160 return StatusCode::SUCCESS; 00161 }
|
|
|
|
00164 { 00165 00166 MsgStream log(msgSvc(), name()); 00167 log << MSG::INFO << "in finalize()" << endreq; 00168 00169 return StatusCode::SUCCESS; 00170 }
|
|
|
|
00064 { 00065 00066 MsgStream log(msgSvc(), name()); 00067 log << MSG::INFO << "in initialize()" << endreq; 00068 00069 StatusCode sc; 00070 00071 IMdcCalibFunSvc* imdcCalibSvc; 00072 sc = service ("MdcCalibFunSvc",imdcCalibSvc); 00073 m_mdcCalibFunSvc = dynamic_cast<MdcCalibFunSvc*> (imdcCalibSvc); 00074 if ( sc.isFailure() ){ 00075 log << MSG::FATAL << "Could not load MdcCalibFunSvc!" << endreq; 00076 } 00077 00078 IRawDataProviderSvc* irawDataProviderSvc; 00079 sc = service ("RawDataProviderSvc", irawDataProviderSvc); 00080 m_rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*> (irawDataProviderSvc); 00081 if ( sc.isFailure() ){ 00082 log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq; 00083 return StatusCode::FAILURE; 00084 } 00085 00086 return StatusCode::SUCCESS; 00087 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|