15 #include "GaudiKernel/ITHistSvc.h"
31 m_ValidationNtupleTools(),
32 m_extrapolatorHandle(
"Trk::Extrapolator/InDetExtrapolator"),
36 declareInterface<IDirectTrackNtupleWriter>(
this);
61 sc = service(
"THistSvc", tHistSvc);
68 m_nt =
new TTree(TString(m_ntupleTreeName),
"Track Validation");
70 std::string fullNtupleName =
"/"+m_ntupleFileName+
"/"+m_ntupleDirName+
"/"+m_ntupleTreeName;
71 sc = tHistSvc->regTree(fullNtupleName, m_nt);
73 ATH_MSG_ERROR (
"Unable to register TTree : " << fullNtupleName);
78 sc = m_ValidationNtupleTools.retrieve();
80 ATH_MSG_FATAL (
"Could not retrieve "<< m_ValidationNtupleTools <<
" (to write validation ntuple) ");
86 itTools = m_ValidationNtupleTools.begin();
87 for ( ; itTools != m_ValidationNtupleTools.end(); ++itTools ) {
88 if (((*itTools)->addNtupleItems(m_nt)).isFailure()) {
89 ATH_MSG_ERROR (
"ValidationNtupleTool could not add its branches for tree " << fullNtupleName);
90 return StatusCode::FAILURE;
96 return StatusCode::SUCCESS;
105 return StatusCode::SUCCESS;
113 const int iterationIndex,
114 const unsigned int fitStatCode ) {
120 itTools = m_ValidationNtupleTools.begin();
121 for ( ; itTools != m_ValidationNtupleTools.end(); ++itTools ) {
122 if (((*itTools)->fillTrackData(
track, iterationIndex, fitStatCode )).isFailure()) {
123 ATH_MSG_ERROR (
"Validation Ntuple Tool could not fill track data.");
124 return StatusCode::FAILURE;
130 return writeRecord(m_nt);
142 itTools = m_ValidationNtupleTools.begin();
143 for ( ; itTools != m_ValidationNtupleTools.end(); ++itTools ) {
144 if (((*itTools)->fillTrackParticleData( particlebase )).isFailure()) {
145 ATH_MSG_ERROR (
"Validation Ntuple Tool could not fill particlebase data.");
146 return StatusCode::FAILURE;
152 return writeRecord(m_nt);
159 if (!
tree)
return StatusCode::FAILURE;
163 itTools = m_ValidationNtupleTools.begin();
164 for ( ; itTools != m_ValidationNtupleTools.end(); ++itTools ) (*itTools)->resetVariables();
165 return StatusCode::SUCCESS;