80 {
81 if ( !m_beginRun )
82 {
84 if ( sc.isFailure() )
85 {
86 error() <<
"beginRun failed" << endmsg;
87 return StatusCode::FAILURE;
88 }
89 m_beginRun = true;
90 }
91
92 MsgStream log(
msgSvc(), name() );
93 log << MSG::INFO << "in execute()" << endmsg;
94 StatusCode sc;
95
96 DataObject* pnode = 0;
97 sc = eventSvc()->retrieveObject( "/Event/Hit", pnode );
98 if ( !sc.isSuccess() )
99 {
100 pnode = new DataObject;
101 sc = eventSvc()->registerObject( "/Event/Hit", pnode );
102 if ( !sc.isSuccess() )
103 {
104 log << MSG::FATAL << " Could not register hit branch" << endmsg;
105 return StatusCode::FAILURE;
106 }
107 }
108
109 SmartIF<IDataManagerSvc> dataManSvc( eventSvc() );
110 DataObject* hitCol;
111 eventSvc()->findObject( "/Event/Hit/MdcHitCol", hitCol );
112 if ( hitCol != NULL )
113 {
114 dataManSvc->clearSubTree( "/Event/Hit/MdcHitCol" );
115 eventSvc()->unregisterObject( "/Event/Hit/MdcHitCol" );
116 }
118 sc = eventSvc()->registerObject( "/Event/Hit/MdcHitCol", mdcHitCol );
119 if ( !sc.isSuccess() )
120 {
121 log << MSG::FATAL << " Could not register hit collection" << endmsg;
122 return StatusCode::FAILURE;
123 }
124
125 DataObject* hitMap;
126 eventSvc()->findObject( "/Event/Hit/MdcHitMap", hitMap );
127 if ( hitMap != NULL )
128 {
129 dataManSvc->clearSubTree( "/Event/Hit/MdcHitMap" );
130 eventSvc()->unregisterObject( "/Event/Hit/MdcHitMap" );
131 }
132 MdcHitMap* mdcHitMap = new MdcHitMap( *_gm );
133 sc = eventSvc()->registerObject( "/Event/Hit/MdcHitMap", mdcHitMap );
134 if ( !sc.isSuccess() )
135 {
136 log << MSG::FATAL << " Could not register hit map" << endmsg;
137 return StatusCode::FAILURE;
138 }
139
140
141 uint32_t getDigiFlag = 0;
142 getDigiFlag += m_maxMdcDigi;
146 MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec( getDigiFlag );
147
148
149 if ( (int)mdcDigiVec.size() < m_minMdcDigi )
150 {
151 log << MSG::WARNING << " Skip this event for MdcDigiVec.size() < " << m_minMdcDigi
152 << endmsg;
153 return StatusCode::SUCCESS;
154 }
155
156 MdcDigiVec::iterator
iter = mdcDigiVec.begin();
157 for ( ;
iter != mdcDigiVec.end();
iter++ )
158 {
159 const MdcDigi* aDigi = *
iter;
160 MdcHit* hit = new MdcHit( aDigi, _gm );
164#ifdef MDCPATREC_RESLAYER
165 hit->setResLayer( m_resLayer );
166#endif
167 mdcHitCol->push_back( hit );
168 mdcHitMap->
addHit( *hit );
169 }
170 return StatusCode::SUCCESS;
171}
std::vector< MdcDigi * > MdcDigiVec
ObjectVector< MdcHit > MdcHitCol
void addHit(MdcHit &theHit)
void setCosmicFit(const bool cosmicfit)
void setCountPropTime(const bool count)
void setCalibSvc(const IMdcCalibFunSvc *calibSvc)