84 MsgStream log(
msgSvc(), name() );
87 SmartDataPtr<EventNavigator> navigator( eventSvc(),
"/Event/Navigator" );
90 log << MSG::ERROR <<
" Unable to retrieve EventNavigator" << endmsg;
91 return StatusCode::FAILURE;
94 log << MSG::INFO <<
"EventNavigator object" << endmsg;
99 <<
"=======================================================================" << endmsg;
101 <<
"MC Particles ==============================================================="
105 SmartDataPtr<McParticleCol> mcParticles( eventSvc(),
"/Event/MC/McParticleCol" );
108 log << MSG::ERROR <<
" Unable to retrieve McParticleCol" << endmsg;
109 return StatusCode::FAILURE;
113 for ( McParticleCol::iterator it = mcParticles->begin(); it != mcParticles->end(); it++ )
116 int pdg_code = ( *it )->particleProperty();
119 double true_mom = ( *it )->initialFourMomentum().vect().mag();
122 m_histo[5]->Fill( true_mom );
124 log << MSG::INFO <<
"Retrieved McParticle # " << ( *it )->trackIndex() <<
" PDG "
125 << pdg_code <<
" of true momentum " << true_mom <<
" GeV/c " << endmsg;
133 m_histo[2]->Fill( tracks.size() );
135 log << MSG::INFO <<
" Found " << tracks.size() <<
" tracks and " << ktracks.size()
136 <<
" Kalman tracks" << endmsg;
139 for (
unsigned int i = 0; i < ktracks.size(); i++ )
144 log << MSG::INFO <<
"\t Track # " << i <<
" id = " << ktracks[i]->trackId() <<
" Pid "
145 << ktracks[i]->getPidType() <<
" Ptot " <<
momentum <<
" GeV/c" << endmsg;
148 m_histo[0]->Fill( true_mom -
momentum );
151 m_histo2[0]->Fill( true_mom, fabs( true_mom -
momentum ) / true_mom );
158 m_histo[8]->Fill( showers.size() );
160 log << MSG::INFO <<
" Found " << showers.size() <<
" showers" << endmsg;
162 for (
unsigned int i = 0; i < showers.size(); i++ )
164 double true_energy = ( *it )->initialFourMomentum().e();
165 double rec_energy = showers[i]->energy() * 1000;
167 log << MSG::INFO <<
"\t Shower # " << i
168 <<
" Id = " << showers[i]->getShowerId().get_value()
169 <<
" E = " << showers[i]->energy() * 1000 <<
" MeV " << endmsg;
171 m_histo[12]->Fill( true_energy );
172 m_histo[13]->Fill( rec_energy );
177 <<
"MDC Tracks ==============================================================" << endmsg;
180 SmartDataPtr<RecMdcKalTrackCol> mdcKalTracks( eventSvc(),
"/Event/Recon/RecMdcKalTrackCol" );
183 log << MSG::ERROR <<
" Unable to retrieve MdcKalTrackCol" << endmsg;
184 return StatusCode::SUCCESS;
187 for ( RecMdcKalTrackCol::iterator it = mdcKalTracks->begin(); it != mdcKalTracks->end();
192 log << MSG::INFO <<
"Retrieved " << particles.size()
193 <<
" McParticles for for MdcKalTrack # " << ( *it )->trackId()
194 <<
" of reconstructed momentum " << ( *it )->p()
195 <<
" GeV/c (PID=" << ( *it )->getPidType() <<
")" << endmsg;
198 m_histo[6]->Fill( ( *it )->p() );
201 m_histo[1]->Fill( particles.size() );
204 for (
unsigned int i = 0; i < particles.size(); i++ )
206 int pdg_code = particles[i]->particleProperty();
209 double true_mom = particles[i]->initialFourMomentum().vect().mag();
212 int relevance = navigator->getMcParticleRelevance( *it, particles[i] );
215 log << MSG::INFO <<
"\t" << pdg_code <<
" momentum " << true_mom <<
" relevance "
216 << relevance << endmsg;
222 <<
"EMC Showers =============================================================="
224 SmartDataPtr<RecEmcShowerCol> emcShowers( eventSvc(),
"/Event/Recon/RecEmcShowerCol" );
227 log << MSG::ERROR <<
" Unable to retrieve EmcRecShowerCol" << endmsg;
228 return StatusCode::SUCCESS;
232 for ( RecEmcShowerCol::iterator it = emcShowers->begin(); it != emcShowers->end(); it++ )
235 log << MSG::INFO <<
"Retrieved McParticles for EmcShower # " << ij++ <<
" Id "
236 << ( *it )->getShowerId().get_value() <<
" Energy = " << ( *it )->energy() << endmsg;
238 for (
unsigned int i = 0; i < particles.size(); i++ )
240 int pdg_code = particles[i]->particleProperty();
243 double true_e = particles[i]->initialFourMomentum().e();
246 int relevance = navigator->getMcParticleRelevance( *it, particles[i] );
248 log <<
"\t Particle " << i <<
" PDG " << pdg_code <<
" E=" << true_e <<
" Relevance "
249 << relevance << endmsg;
253 m_histo[7]->Fill( particles.size() );
257 <<
"=======================================================================" << endmsg;
259 return StatusCode::SUCCESS;