153 ISvcLocator* svcLocator = Gaudi::svcLocator();
154 StatusCode sc = svcLocator->service(
"EventDataSvc", m_evtSvc );
155 if ( sc.isFailure() ) std::cout <<
"Could not accesss EventDataSvc!" << std::endl;
157 SmartDataPtr<Event::EventHeader> eventHeader( m_evtSvc,
"/Event/EventHeader" );
158 if ( !eventHeader ) std::cout <<
"Could not retrieve EventHeader" << std::endl;
160 int event = eventHeader->eventNumber();
161 std::cout <<
"event: " <<
event << std::endl;
169 return StatusCode::SUCCESS;
173 SmartDataPtr<Event::McParticleCol> mcParticleCol( m_evtSvc,
"/Event/MC/McParticleCol" );
174 if ( !mcParticleCol ) std::cout <<
"Could not retrieve McParticelCol" << std::endl;
178 double px, py, pz, E,
mass;
180 Event::McParticleCol::iterator iter_mc = mcParticleCol->begin();
181 for ( ; iter_mc != mcParticleCol->end(); iter_mc++ )
184 pdgcode = ( *iter_mc )->particleProperty();
185 if ( ( *iter_mc )->trackIndex() < 0 ) std::cout <<
"ERROR! trackIndex<0" << std::endl;
186 px = ( *iter_mc )->initialFourMomentum().x();
187 py = ( *iter_mc )->initialFourMomentum().y();
188 pz = ( *iter_mc )->initialFourMomentum().z();
189 E = ( *iter_mc )->initialFourMomentum().t();
190 if ( E * E - px * px - py * py - pz * pz >= 0 )
191 mass = sqrt( E * E - px * px - py * py - pz * pz );
194 if ( m_particleRootFlag )
196 if (
abs( pdgcode ) == 11 ) me =
mass;
197 tupleParticle->write();
199 if (
abs( pdgcode ) == 2212 ||
abs( pdgcode ) == 211 ) nflag++;
201 if ( nflag != 4 ) std::cout <<
"nflag!=4" << std::endl;
223 if ( m_mdcRootFlag )
MdcInit();
226 SmartDataPtr<Event::MdcMcHitCol> aMcHitCol( m_evtSvc,
"/Event/MC/MdcMcHitCol" );
227 if ( !aMcHitCol ) std::cout <<
"Could not retrieve MDC McTruth collection" << std::endl;
230 Event::MdcMcHitCol::iterator iMcHitCol;
231 for ( iMcHitCol = aMcHitCol->begin(); iMcHitCol != aMcHitCol->end(); iMcHitCol++ )
233 const Identifier ident = ( *iMcHitCol )->identify();
246 truthMdcIndex = ( *iMcHitCol )->getTrackIndex();
249 truthMdcEdep = ( *iMcHitCol )->getDepositEnergy();
250 truthMdcDriftD = ( *iMcHitCol )->getDriftDistance();
251 truthMdcX = ( *iMcHitCol )->getPositionX();
252 truthMdcY = ( *iMcHitCol )->getPositionY();
253 truthMdcZ = ( *iMcHitCol )->getPositionZ();
262 SmartDataPtr<MdcDigiCol> aDigiCol( m_evtSvc,
"/Event/Digi/MdcDigiCol" );
263 if ( !aDigiCol ) std::cout <<
"Could not retrieve MDC digi collection" << std::endl;
267 MdcDigiCol::iterator iDigiCol;
268 for ( iDigiCol = aDigiCol->begin(); iDigiCol != aDigiCol->end(); iDigiCol++ )
270 const Identifier ident = ( *iDigiCol )->identify();
273 std::cout <<
" charge: " << ( *iDigiCol )->getChargeChannel();
274 std::cout <<
" time: " << ( *iDigiCol )->getTimeChannel() << std::endl;
280 m_charge = ( *iDigiCol )->getChargeChannel() / 1.0e6;
281 m_time = ( *iDigiCol )->getTimeChannel() / 1.0e5;
305 int partId, layer, scinNb, end;
307 partId = layer = scinNb = end = -9;
309 if ( m_tofRootFlag )
TofInit();
312 SmartDataPtr<Event::TofMcHitCol> aMcHitCol( m_evtSvc,
"/Event/MC/TofMcHitCol" );
313 if ( !aMcHitCol ) std::cout <<
"Could not retrieve TOF McTruth collection" << std::endl;
316 Event::TofMcHitCol::iterator iMcHitCol;
317 for ( iMcHitCol = aMcHitCol->begin(); iMcHitCol != aMcHitCol->end(); iMcHitCol++ )
319 const Identifier ident = ( *iMcHitCol )->identify();
335 truthIndex = ( *iMcHitCol )->getTrackIndex();
339 truthX = ( *iMcHitCol )->getPositionX();
340 truthY = ( *iMcHitCol )->getPositionY();
341 truthZ = ( *iMcHitCol )->getPositionZ();
348 SmartDataPtr<TofDigiCol> aDigiCol( m_evtSvc,
"/Event/Digi/TofDigiCol" );
349 if ( !aDigiCol ) std::cout <<
"Could not retrieve TOF digi collection" << std::endl;
352 TofDigiCol::iterator iDigiCol;
353 for ( iDigiCol = aDigiCol->begin(); iDigiCol != aDigiCol->end(); iDigiCol++ )
355 const Identifier ident = ( *iDigiCol )->identify();
369 charge = ( *iDigiCol )->getChargeChannel() / 1.0e6;
370 time = ( *iDigiCol )->getTimeChannel() / 1.0e6;
373 if ( truthPartId == partId && truthLayer == layer && truthScinNb == scinNb )
387 else std::cout <<
"digi doesn't match" << std::endl;
392 if ( tleft > 0 && tright > 0 && qleft > 0 && qright > 0 ) tupleTof->write();
393 else std::cout <<
"no digi match MCtruth" << std::endl;
402 SmartDataPtr<Event::EmcMcHitCol> aMcHitCol( m_evtSvc,
"/Event/MC/EmcMcHitCol" );
403 if ( !aMcHitCol ) std::cout <<
"Could not retrieve EMC McTruth collection" << std::endl;
406 Event::EmcMcHitCol::iterator iMcHitCol;
407 for ( iMcHitCol = aMcHitCol->begin(); iMcHitCol != aMcHitCol->end(); iMcHitCol++ )
409 const Identifier ident = ( *iMcHitCol )->identify();
427 SmartDataPtr<EmcDigiCol> aDigiCol( m_evtSvc,
"/Event/Digi/EmcDigiCol" );
428 if ( !aDigiCol ) std::cout <<
"Could not retrieve EMC digi collection" << std::endl;
432 EmcDigiCol::iterator iDigiCol;
433 for ( iDigiCol = aDigiCol->begin(); iDigiCol != aDigiCol->end(); iDigiCol++ )
435 const Identifier ident = ( *iDigiCol )->identify();
448 SmartDataPtr<Event::MucMcHitCol> aMcHitCol( m_evtSvc,
"/Event/MC/MucMcHitCol" );
449 if ( !aMcHitCol ) std::cout <<
"Could not retrieve MUC McTruth collection" << std::endl;
452 Event::MucMcHitCol::iterator iMcHitCol;
453 for ( iMcHitCol = aMcHitCol->begin(); iMcHitCol != aMcHitCol->end(); iMcHitCol++ )
455 const Identifier ident = ( *iMcHitCol )->identify();
473 SmartDataPtr<MucDigiCol> aDigiCol( m_evtSvc,
"/Event/Digi/MucDigiCol" );
474 if ( !aDigiCol ) std::cout <<
"Could not retrieve MUC digi collection" << std::endl;
478 MucDigiCol::iterator iDigiCol;
479 for ( iDigiCol = aDigiCol->begin(); iDigiCol != aDigiCol->end(); iDigiCol++ )
481 const Identifier ident = ( *iDigiCol )->identify();