Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MdcMakeHits Class Reference

#include <MdcMakeHits.h>

List of all members.

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 MdcCalibFunSvcm_mdcCalibFunSvc
const MdcCalibFunSvcm_mdcCalibFunSvc
int m_minMdcDigi
RawDataProviderSvcm_rawDataProviderSvc
RawDataProviderSvcm_rawDataProviderSvc


Constructor & Destructor Documentation

MdcMakeHits::MdcMakeHits const std::string &  name,
ISvcLocator *  pSvcLocator
 

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 }

MdcMakeHits::MdcMakeHits const std::string &  name,
ISvcLocator *  pSvcLocator
 


Member Function Documentation

StatusCode MdcMakeHits::beginRun  ) 
 

StatusCode MdcMakeHits::beginRun  ) 
 

00058                                 {
00059   _gm = MdcDetector::instance(m_doSag);
00060   if(NULL == _gm) return StatusCode::FAILURE;
00061   return StatusCode::SUCCESS;
00062 }

StatusCode MdcMakeHits::execute  ) 
 

StatusCode MdcMakeHits::execute  ) 
 

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 }

StatusCode MdcMakeHits::finalize  ) 
 

StatusCode MdcMakeHits::finalize  ) 
 

00164                                  {
00165 
00166   MsgStream log(msgSvc(), name());
00167   log << MSG::INFO << "in finalize()" << endreq;
00168 
00169   return StatusCode::SUCCESS;
00170 }

StatusCode MdcMakeHits::initialize  ) 
 

StatusCode MdcMakeHits::initialize  ) 
 

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 }


Member Data Documentation

const MdcDetector* MdcMakeHits::_gm [private]
 

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]
 

const MdcCalibFunSvc* MdcMakeHits::m_mdcCalibFunSvc [private]
 

int MdcMakeHits::m_minMdcDigi [private]
 

RawDataProviderSvc* MdcMakeHits::m_rawDataProviderSvc [private]
 

RawDataProviderSvc* MdcMakeHits::m_rawDataProviderSvc [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:26:34 2011 for BOSS6.5.5 by  doxygen 1.3.9.1