#include <MdcMakeHits.h>
Public Member Functions | |
MdcMakeHits (const std::string &name, ISvcLocator *pSvcLocator) | |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | beginRun () |
Private Attributes | |
bool | m_cosmicFit |
bool | m_doSag |
uint32_t | m_getDigiFlag |
int | m_maxMdcDigi |
bool | m_keepBadTdc |
bool | m_dropHot |
bool | m_keepUnmatch |
int | m_minMdcDigi |
bool | m_combineTracking |
bool | m_countPropTime |
const MdcDetector * | _gm |
const MdcCalibFunSvc * | m_mdcCalibFunSvc |
RawDataProviderSvc * | m_rawDataProviderSvc |
Definition at line 11 of file MdcMakeHits.h.
MdcMakeHits::MdcMakeHits | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 36 of file MdcMakeHits.cxx.
References m_combineTracking, m_cosmicFit, m_countPropTime, m_doSag, m_dropHot, m_getDigiFlag, m_keepBadTdc, m_keepUnmatch, m_maxMdcDigi, and m_minMdcDigi.
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 }
StatusCode MdcMakeHits::beginRun | ( | ) |
Definition at line 58 of file MdcMakeHits.cxx.
References _gm, MdcDetector::instance(), and m_doSag.
00058 { 00059 _gm = MdcDetector::instance(m_doSag); 00060 if(NULL == _gm) return StatusCode::FAILURE; 00061 return StatusCode::SUCCESS; 00062 }
StatusCode MdcMakeHits::execute | ( | ) |
Definition at line 90 of file MdcMakeHits.cxx.
References _gm, MdcHitMap::addHit(), MdcRawDataProvider::b_dropHot, MdcRawDataProvider::b_keepBadTdc, MdcRawDataProvider::b_keepUnmatch, Bes_Common::FATAL, RawDataProviderSvc::getMdcDigiVec(), Bes_Common::INFO, iter(), m_combineTracking, m_cosmicFit, m_countPropTime, m_dropHot, m_keepBadTdc, m_keepUnmatch, m_maxMdcDigi, m_mdcCalibFunSvc, m_minMdcDigi, m_rawDataProviderSvc, msgSvc(), MdcHit::setCalibSvc(), MdcHit::setCosmicFit(), MdcHit::setCountPropTime(), and Bes_Common::WARNING.
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 SmartIF<IDataManagerSvc> dataManSvc(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 }
StatusCode MdcMakeHits::finalize | ( | ) |
Definition at line 164 of file MdcMakeHits.cxx.
References Bes_Common::INFO, and msgSvc().
00164 { 00165 00166 MsgStream log(msgSvc(), name()); 00167 log << MSG::INFO << "in finalize()" << endreq; 00168 00169 return StatusCode::SUCCESS; 00170 }
StatusCode MdcMakeHits::initialize | ( | ) |
Definition at line 64 of file MdcMakeHits.cxx.
References Bes_Common::FATAL, Bes_Common::INFO, m_mdcCalibFunSvc, m_rawDataProviderSvc, and msgSvc().
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 }
const MdcDetector* MdcMakeHits::_gm [private] |
bool MdcMakeHits::m_combineTracking [private] |
bool MdcMakeHits::m_cosmicFit [private] |
bool MdcMakeHits::m_countPropTime [private] |
bool MdcMakeHits::m_doSag [private] |
bool MdcMakeHits::m_dropHot [private] |
uint32_t MdcMakeHits::m_getDigiFlag [private] |
bool MdcMakeHits::m_keepBadTdc [private] |
bool MdcMakeHits::m_keepUnmatch [private] |
int MdcMakeHits::m_maxMdcDigi [private] |
const MdcCalibFunSvc* MdcMakeHits::m_mdcCalibFunSvc [private] |
int MdcMakeHits::m_minMdcDigi [private] |