19 #include "GaudiKernel/ISvcLocator.h"
20 #include "GaudiKernel/MsgStream.h"
24 #ifdef TRKDETDESCR_MEMUSAGE
31 , m_geometryProcessors(this)
46 "!!! Initialization of TrackingGeometrySvc !!! The Service it to be "
47 "deprecated in favour of the relevant Condition Algorithm. !!!");
48 m_autoRetrieveTools =
false;
49 m_checkToolDeps =
false;
52 ATH_CHECK(service(
"DetectorStore", m_pDetStore));
54 if (m_geometryProcessors.retrieve().isFailure()) {
56 return StatusCode::FAILURE;
59 if (m_buildGeometryFromTagInfo) {
64 tagInfoMgr->addListener(
this);
66 ATH_MSG_INFO(
"Building Geometry at initialisation time.");
68 if (trackingGeometryInit(
false).isFailure()) {
70 return StatusCode::FAILURE;
74 return StatusCode::SUCCESS;
81 trackingGeometryInit().ignore();
87 ATH_MSG_INFO(
"Trk::TrackingGeometrySvc::trackingGeometryInit");
90 if (!m_trackingGeometryBuilder.empty() && m_trackingGeometryBuilder.retrieve().isFailure()) {
91 ATH_MSG_FATAL(
"Failed to retrieve tool '" << m_trackingGeometryBuilder <<
"'. Aborting.");
92 return StatusCode::FAILURE;
93 }
else if (m_trackingGeometryBuilder.empty()) {
95 <<
" not properly configured. No GeometryBuilder defined. Aborting.");
96 return StatusCode::FAILURE;
98 ATH_MSG_DEBUG(
"Retrieved tool " << m_trackingGeometryBuilder);
103 return StatusCode::SUCCESS;
109 ATH_MSG_INFO(
"trackingGeometryInit - initialize on TagInfoMgr callback");
112 m_trackingGeometry =
nullptr;
114 #ifdef TRKDETDESCR_MEMUSAGE
116 ATH_MSG_INFO(
"[ memory usage ] Start to monitor memory usage of PID: " << getpid());
118 m_memoryLogger.refresh(getpid());
121 m_changeVsize = (-1.) * m_memoryLogger.vmSize();
122 m_changeRss = (-1.) * m_memoryLogger.vmRss();
126 m_trackingGeometry = m_trackingGeometryBuilder->trackingGeometry().release();
128 #ifdef TRKDETDESCR_MEMUSAGE
129 ATH_MSG_INFO(
"[ memory usage ] TrackingGeometry retrieved: ");
130 m_memoryLogger.refresh(getpid());
142 if (m_pDetStore->retrieve(oldTrackingGeometry, m_trackingGeometryName).isFailure())
143 ATH_MSG_WARNING(
"Callback evoked remove of '" << m_trackingGeometryName <<
"'. But retrieve did not succeed! ");
144 if (oldTrackingGeometry && m_pDetStore->remove<
Trk::TrackingGeometry>(oldTrackingGeometry).isFailure())
145 ATH_MSG_WARNING(
"Callback evoked remove of '" << m_trackingGeometryName <<
"'. But it did not succeed!");
147 delete oldTrackingGeometry;
153 for (; gpIter != gpIterE; ++gpIter) {
154 if ((*gpIter)->process(*atlasTrackingGeometry).isFailure()) {
155 ATH_MSG_FATAL(
"Processing of TrackingGeometry did not succeed. Abort.");
156 return StatusCode::FAILURE;
158 ATH_MSG_VERBOSE(
"Successfully processed the TrackingGeometry with " << (*gpIter));
159 #ifdef TRKDETDESCR_MEMUSAGE
160 ATH_MSG_INFO(
"[ memory usage ] After processing with " << (*gpIter));
161 m_memoryLogger.refresh(getpid());
167 if (m_pDetStore->record(atlasTrackingGeometry, m_trackingGeometryName,
false).isFailure()) {
170 ATH_MSG_DEBUG(
"initialize() successful: TrackingGeometry '" << m_trackingGeometryName
171 <<
"' built and written to DetectorStore.");
174 return StatusCode::SUCCESS;
180 ATH_MSG_WARNING(
"TrackingGeometry not set ptr=" <<
static_cast<const void*
>(m_trackingGeometry));
187 #ifdef TRKDETDESCR_MEMUSAGE
188 ATH_MSG_INFO(
"[ memory usage ] Change in memory usage -------------------------------- ");
189 ATH_MSG_INFO(
"[ memory usage ] Virtual memory change (vsize) : " << m_changeVsize);
190 ATH_MSG_INFO(
"[ memory usage ] Real memory change (rss) : " << m_changeRss);
191 ATH_MSG_INFO(
"[ memory usage ] ---------------------------------------------------------");
194 return StatusCode::SUCCESS;