ATLAS Offline Software
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Trk::GeometryBuilderCond Class Reference

#include <GeometryBuilderCond.h>

Inheritance diagram for Trk::GeometryBuilderCond:
Collaboration diagram for Trk::GeometryBuilderCond:

Public Member Functions

 GeometryBuilderCond (const std::string &, const std::string &, const IInterface *)
 Constructor. More...
 
virtual ~GeometryBuilderCond ()
 Destructor. More...
 
virtual StatusCode initialize () override
 AlgTool initialize method. More...
 
virtual std::unique_ptr< Trk::TrackingGeometrytrackingGeometry (const EventContext &ctx, Trk::TrackingVolume *tVol, SG::WriteCondHandle< TrackingGeometry > &whandle) const override
 TrackingGeometry Interface method - optionally a pointer to Bounds Interface marked as not thread safe. More...
 
virtual GeometrySignature geometrySignature () const override
 The unique signature. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 
 DeclareInterfaceID (IGeometryBuilderCond, 1, 0)
 Creates the InterfaceID and interfaceID() method. More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 
void glueVolumes (TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace) const
 protected method to glue two Volumes together input: More...
 

Static Protected Member Functions

static void setBoundarySurface (TrackingVolume &tvol, SharedObject< BoundarySurface< TrackingVolume >> bsurf, BoundarySurfaceFace face)
 protected method to set the boundary surface of a tracking volume More...
 
static void setInsideVolume (TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *insidevol)
 protected method to set inside Volume of a BoundarySurface: input: More...
 
static void setInsideVolumeArray (TrackingVolume &tvol, BoundarySurfaceFace face, BinnedArray< TrackingVolume > *insidevolarray)
 protected method to set inside VolumeArray of a BoundarySurface: input: More...
 
static void setInsideVolumeArray (TrackingVolume &tvol, BoundarySurfaceFace face, const SharedObject< BinnedArray< TrackingVolume >> &insidevolarray)
 protected method to set inside VolumeArray of a BoundarySurface: input: More...
 
static void setOutsideVolume (TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *outsidevol)
 protected method to set outside Volume of a BoundarySurface: input: More...
 
static void setOutsideVolumeArray (TrackingVolume &tvol, BoundarySurfaceFace face, BinnedArray< TrackingVolume > *outsidevolarray)
 protected method to set outside VolumeArray of a BoundarySurface: input: More...
 
static void setOutsideVolumeArray (TrackingVolume &tvol, BoundarySurfaceFace face, const SharedObject< BinnedArray< TrackingVolume >> &outsidevolarray)
 protected method to set outside VolumeArray of a BoundarySurface: input: More...
 
static void confineVolume (TrackingVolume &tvol, TrackingVolume *outsidevol)
 protected method to confine (dense) volumes: input: More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

std::unique_ptr< Trk::TrackingGeometryatlasTrackingGeometry (const EventContext &ctx, SG::WriteCondHandle< TrackingGeometry > &whandle) const
 TrackingGeometry for ATLAS setup. More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

bool m_createWorld
 Boolean Switch to create World manually. More...
 
int m_navigationLevel
 NavigationLevel. More...
 
std::vector< double > m_worldDimension
 The dimensions of the manually created world. More...
 
std::vector< double > m_worldMaterialProperties
 The material properties of the created world. More...
 
Material m_worldMaterial
 the world material More...
 
ToolHandle< ITrackingVolumeArrayCreatorm_trackingVolumeArrayCreator
 Helper Tool to create TrackingVolume Arrays. More...
 
ToolHandle< ITrackingVolumeHelperm_trackingVolumeHelper
 Helper Tool to create TrackingVolumes. More...
 
ToolHandle< IGeometryBuilderCondm_inDetGeometryBuilderCond
 GeometryBuilderCond for the InnerDetector. More...
 
bool m_caloGeometry
 switch on TrackingGeometry for the Calorimeters More...
 
ToolHandle< IGeometryBuilderCondm_caloGeometryBuilderCond
 GeometryBuilderCond for the Calorimeters. More...
 
bool m_hgtdGeometry
 
ToolHandle< IGeometryBuilderCondm_hgtdGeometryBuilderCond
 switch on TrackingGeometry for HGTD More...
 
bool m_muonGeometry
 GeometryBuilderCond for the Muon System. More...
 
ToolHandle< IGeometryBuilderCondm_muonGeometryBuilderCond
 GeometryBuilderCond for the Muon System. More...
 
bool m_compactify
 optimize event memory usage: register all surfaces with TG More...
 
bool m_synchronizeLayers
 synchronize contained layer dimensions to volumes More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

The Trk::TrackingGeometry Builder for ATLAS Geometry

It retrieves Trk::TrackingGeometry builders for the subdetectors and joins them together to a single Trk::TrackingGeometry.

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Christos Anastopoulos MT fixes

Definition at line 46 of file GeometryBuilderCond.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ GeometryBuilderCond()

Trk::GeometryBuilderCond::GeometryBuilderCond ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor.

Definition at line 36 of file GeometryBuilderCond.cxx.

37 : AthAlgTool(t,n,p),
39 #ifdef TRKDETDESCR_MEMUSAGE
40  m_memoryLogger(),
41 #endif
42  m_createWorld(true),
46  m_trackingVolumeArrayCreator("Trk::TrackingVolumeArrayCreator/TrackingVolumeArrayCreator"),
47  m_trackingVolumeHelper("Trk::TrackingVolumeHelper/TrackingVolumeHelper"),
50  m_caloGeometryBuilderCond("", this),
52  m_hgtdGeometryBuilderCond("", this),
54  m_muonGeometryBuilderCond("", this),
55  m_compactify(true),
57 {
58  declareInterface<IGeometryBuilderCond>(this);
59  // by hand declarations
60  declareProperty("CreateWorldManually", m_createWorld);
61  declareProperty("NavigationLevel", m_navigationLevel);
62  // (1) dimension & material
63  declareProperty("WorldDimension", m_worldDimension);
64  declareProperty("WorldMaterialProperties", m_worldMaterialProperties);
65  // tool declarations ----------------------------------------------------------------
66  declareProperty("TrackingVolumeArrayCreator", m_trackingVolumeArrayCreator);
67  declareProperty("TrackingVolumeHelper", m_trackingVolumeHelper);
68  declareProperty("InDetTrackingGeometryBuilder", m_inDetGeometryBuilderCond);
69  declareProperty("HGTD_TrackingGeometryBuilder", m_hgtdGeometryBuilderCond);
70  declareProperty("CaloTrackingGeometryBuilder", m_caloGeometryBuilderCond);
71  declareProperty("MuonTrackingGeometryBuilder", m_muonGeometryBuilderCond);
72  // optimize layer dimension & memory usage -------------------------------
73  declareProperty("Compactify", m_compactify );
74  declareProperty("SynchronizeLayers", m_synchronizeLayers );
75 }

◆ ~GeometryBuilderCond()

Trk::GeometryBuilderCond::~GeometryBuilderCond ( )
virtualdefault

Destructor.

Member Function Documentation

◆ atlasTrackingGeometry()

std::unique_ptr< Trk::TrackingGeometry > Trk::GeometryBuilderCond::atlasTrackingGeometry ( const EventContext &  ctx,
SG::WriteCondHandle< TrackingGeometry > &  whandle 
) const
private

TrackingGeometry for ATLAS setup.

Definition at line 166 of file GeometryBuilderCond.cxx.

168 {
169  // the return geometry
170  std::unique_ptr<Trk::TrackingGeometry> atlasTrackingGeometry;
171 
172  // A ------------- INNER DETECTOR SECTION --------------------------------------------------------------------------------
173  // get the Inner Detector and/or HGTD and/or Calorimeter trackingGeometry
174 
175  // the volumes to be given to higher level tracking geometry builders
176  Trk::TrackingVolume* inDetVolume = nullptr;
177  Trk::TrackingVolume* hgtdVolume = nullptr;
178  Trk::TrackingVolume* caloVolume = nullptr;
179 
180  // mark the highest volume
181  Trk::TrackingVolume* highestVolume = nullptr;
182 
183 #ifdef TRKDETDESCR_MEMUSAGE
184  m_memoryLogger.refresh(getpid());
185  ATH_MSG_INFO( "[ memory usage ] Start of TrackingGeometry building: " );
186  ATH_MSG_INFO( m_memoryLogger );
187 #endif
188 
189  // ========================== INNER DETECTOR PART =================================================
190  if (!m_inDetGeometryBuilderCond.empty()) {
191  // debug output
192  ATH_MSG_VERBOSE( "ID Tracking Geometry is going to be built." );
193  // build the geometry
194  std::unique_ptr<Trk::TrackingGeometry> inDetTrackingGeometry =
195  m_inDetGeometryBuilderCond->trackingGeometry(ctx, nullptr, whandle);
196  // check
197  if (inDetTrackingGeometry) {
198  // sign it
199  inDetTrackingGeometry->sign(m_inDetGeometryBuilderCond->geometrySignature());
200  // check whether the world has to be created or not
202  // checkout the highest InDet volume
203  inDetVolume = inDetTrackingGeometry->checkoutHighestTrackingVolume();
204  // assign it as the highest volume
205  highestVolume = inDetVolume;
206  } else // -> Take the exit and return ID stand alone
207  atlasTrackingGeometry = std::move(inDetTrackingGeometry);
208  }
209 
210 #ifdef TRKDETDESCR_MEMUSAGE
211  m_memoryLogger.refresh(getpid());
212  ATH_MSG_INFO( "[ memory usage ] After InDet TrackingGeometry building: " );
213  ATH_MSG_INFO( m_memoryLogger );
214 #endif
215 
216  }
217 
218  // ========================== HGTD PART =================================================
219  // if a HGTD Geometry Builder is present -> wrap it around the ID
220  if (!m_hgtdGeometryBuilderCond.empty()) {
221  if (inDetVolume)
222  ATH_MSG_VERBOSE( "HGTD Tracking Geometry is going to be built with enclosed ID." );
223  else
224  ATH_MSG_VERBOSE( "HGTD Tracking Geometry is going to be built stand-alone." );
225  // get the InnerDetector TrackingGeometry
226  std::unique_ptr<Trk::TrackingGeometry> hgtdTrackingGeometry =
227  m_hgtdGeometryBuilderCond->trackingGeometry(ctx, inDetVolume, whandle);
228  // if you have to create world or there is a Calo/Muon geometry builder ...
229  if (hgtdTrackingGeometry) {
230  // sign it
231  hgtdTrackingGeometry->sign(m_hgtdGeometryBuilderCond->geometrySignature());
233  // check out the highest Calo volume
234  hgtdVolume = hgtdTrackingGeometry->checkoutHighestTrackingVolume();
235  // assign it as the highest volume (overwrite ID)
236  highestVolume = hgtdVolume;
237  } else // -> Take the exit and return HGTD back
238  atlasTrackingGeometry = std::move(hgtdTrackingGeometry);
239  }
240 
241 #ifdef TRKDETDESCR_MEMUSAGE
242  m_memoryLogger.refresh(getpid());
243  ATH_MSG_INFO( "[ memory usage ] After Calo TrackingGeometry building: " );
244  ATH_MSG_INFO( m_memoryLogger );
245 #endif
246 
247  }
248 
249  // ========================== CALORIMETER PART =================================================
250  // if a Calo Geometry Builder is present -> wrap it around the ID or HGTD
251  if (!m_caloGeometryBuilderCond.empty()) {
252  std::string enclosed = "stand-alone.";
253  if (inDetVolume and hgtdVolume)
254  enclosed = "with encloded ID/HGTD.";
255  else if (inDetVolume or hgtdVolume)
256  enclosed = (inDetVolume) ? "with encloded ID." : "with encloded HGTD.";
257  ATH_MSG_VERBOSE( "Calorimeter Tracking Geometry is going to be built "<< enclosed );
258 
259  // get the InnerDetector TrackingGeometry or the HGTD tracking geometry
260  std::unique_ptr<Trk::TrackingGeometry> caloTrackingGeometry;
261  if (inDetVolume and not hgtdVolume)
262  caloTrackingGeometry = m_caloGeometryBuilderCond->trackingGeometry(ctx, inDetVolume, whandle);
263  else
264  caloTrackingGeometry = m_caloGeometryBuilderCond->trackingGeometry(ctx, hgtdVolume, whandle);
265  // if you have to create world or there is a Muon geometry builder ...
266  if (caloTrackingGeometry) {
267  // sign it
268  caloTrackingGeometry->sign(m_caloGeometryBuilderCond->geometrySignature());
270  // check out the highest Calo volume
271  caloVolume = caloTrackingGeometry->checkoutHighestTrackingVolume();
272  // assign it as the highest volume (overwrite ID)
273  highestVolume = caloVolume;
274  } else // -> Take the exit and return Calo back
275  atlasTrackingGeometry = std::move(caloTrackingGeometry);
276  }
277 
278 #ifdef TRKDETDESCR_MEMUSAGE
279  m_memoryLogger.refresh(getpid());
280  ATH_MSG_INFO( "[ memory usage ] After Calo TrackingGeometry building: " );
281  ATH_MSG_INFO( m_memoryLogger );
282 #endif
283 
284  }
285 
286  // ========================== MUON SYSTEM PART =================================================
287  // if Muon Geometry Builder is present -> wrap either ID or Calo
288  if (!m_muonGeometryBuilderCond.empty()) {
289  std::string enclosed = "stand-alone.";
290  if (inDetVolume and hgtdVolume and caloVolume )
291  enclosed = "with encloded ID/HGTD/Calo.";
292  else if (inDetVolume or hgtdVolume or caloVolume) {
293  if (inDetVolume) {
294  if (hgtdVolume)
295  enclosed = "with encloded ID/HGTD";
296  else if (caloVolume)
297  enclosed = "with encloded ID/Calo";
298  else
299  enclosed = "with encloded ID";
300  } else if (hgtdVolume) {
301  if (caloVolume)
302  enclosed = "with encloded HGTD/Calo";
303  else
304  enclosed = "with encloded HGTD";
305  } else {
306  enclosed = "with encloded Calo";
307  }
308  }
309  ATH_MSG_VERBOSE( "Muon System Tracking Geometry is going to be built "<< enclosed );
310 
311  // there's nothing outside the muons -- wrap the calo or the HGTD if one or both of them exist
312  if (inDetVolume and not hgtdVolume and not caloVolume)
313  atlasTrackingGeometry = m_muonGeometryBuilderCond->trackingGeometry(ctx, inDetVolume, whandle);
314  else if (hgtdVolume and not caloVolume)
315  atlasTrackingGeometry = m_muonGeometryBuilderCond->trackingGeometry(ctx, hgtdVolume, whandle);
316  else
317  atlasTrackingGeometry = m_muonGeometryBuilderCond->trackingGeometry(ctx, caloVolume, whandle);
318 
319  // sign it
321  atlasTrackingGeometry->sign(m_muonGeometryBuilderCond->geometrySignature());
322 
323 #ifdef TRKDETDESCR_MEMUSAGE
324  m_memoryLogger.refresh(getpid());
325  ATH_MSG_INFO( "[ memory usage ] After Muon TrackingGeometry building: " );
326  ATH_MSG_INFO( m_memoryLogger );
327 #endif
328 
329  // ========================== WRAPPING SECTION FOR ID/CALO ====================================
330  } else if (m_createWorld && highestVolume) {
331  // wrapping and world creation has been switched on
332  ATH_MSG_VERBOSE( "Enclosing world is going to be built for: " << highestVolume->volumeName() );
333  // get the glue volumes
334  Trk::GlueVolumesDescriptor& innerGlueVolumes = highestVolume->glueVolumesDescriptor();
335  // some screen output
336  ATH_MSG_VERBOSE( "Retrieved with following glue volumes: " << innerGlueVolumes );
337  // at negative face
338  const std::vector<Trk::TrackingVolume*>& innerNegativeFaceVolumes = innerGlueVolumes.glueVolumes(Trk::negativeFaceXY);
339  // at cylinder cover
340  const std::vector<Trk::TrackingVolume*>& innerCentralFaceVolumes = innerGlueVolumes.glueVolumes(Trk::cylinderCover);
341  // at positive face
342  const std::vector<Trk::TrackingVolume*>& innerPositiveFaceVolumes = innerGlueVolumes.glueVolumes(Trk::positiveFaceXY);
343 
344  // get the dimensions
345  // cast them to CylinderVolumeBounds
346  const Trk::CylinderVolumeBounds* innerVolumeBounds = dynamic_cast<const Trk::CylinderVolumeBounds*>(&(highestVolume->volumeBounds()));
347  if (!innerVolumeBounds) ATH_MSG_WARNING( "atlasTrackingGeometry() ... dynamic cast to innerVolumeBounds failed!" );
348  double innerVolumeOuterR = innerVolumeBounds ? innerVolumeBounds->outerRadius() : 0;
349  double innerVolumeHalflengthZ = innerVolumeBounds ? innerVolumeBounds->halflengthZ() : 0;
350  // Hierarchy after enclosing
351  //
352  // AtlasWorldVolume:
353  // AtlasInnerCylinder
354  // AtlasInnerNegativeSector
355  // InnerEnclosedVolume (can be ID/Calo)
356  // AtlasOuterNegativeSector
357  // AtlasOuterTube
358  // B -------------- BUILD WORLD AROUND for ID stand alone applications
359 
360  double innerCylinderSectorHalflengthZ = 0.5*(m_worldDimension[2] - innerVolumeHalflengthZ);
361  Trk::CylinderVolumeBounds* innerCylinderSectorBounds =
362  new Trk::CylinderVolumeBounds(0., innerVolumeOuterR, innerCylinderSectorHalflengthZ);
363 
364  double innerCylinderSectorPositionZ = fabs(m_worldDimension[2]-innerCylinderSectorHalflengthZ);
365 
366  // the AtlasInnerNegativeSector
367  Amg::Transform3D* atlasInnerNegativeSectorTransf = new Amg::Transform3D;
368  (*atlasInnerNegativeSectorTransf) = Amg::Translation3D(0.,0.,-innerCylinderSectorPositionZ);
369  Trk::TrackingVolume* atlasInnerNegativeSector = new Trk::TrackingVolume(
370  atlasInnerNegativeSectorTransf,
371  innerCylinderSectorBounds,
373  nullptr,
374  nullptr,
375  "AtlasInnerNegativeSector");
376 
377  // the AtlasInnerPositiveSector
378  Amg::Transform3D* atlasInnerPositiveSectorTransf = new Amg::Transform3D;
379  (*atlasInnerPositiveSectorTransf) = Amg::Translation3D(0.,0.,innerCylinderSectorPositionZ);
380  Trk::TrackingVolume* atlasInnerPositiveSector = new Trk::TrackingVolume(
381  atlasInnerPositiveSectorTransf,
382  innerCylinderSectorBounds->clone(),
384  nullptr,
385  nullptr,
386  "AtlasInnerPositiveSector");
387 
388  ATH_MSG_VERBOSE( "Inner Negative/Positive Sectors built successfully." );
389 
390  // create the subvolume Array
391  auto atlasInnerSectorVolumes = std::vector<Trk::TrackingVolume*>{atlasInnerNegativeSector,highestVolume,atlasInnerPositiveSector};
392 
393  ATH_MSG_VERBOSE( "Create the Atlas Inner Sector volumes. " );
395  m_trackingVolumeArrayCreator->cylinderVolumesArrayInZ(atlasInnerSectorVolumes) : nullptr;
396 
397 
398  // Atlas inner Sector bounds
399  Trk::CylinderVolumeBounds* innerSectorBounds =
400  new Trk::CylinderVolumeBounds(0., innerVolumeOuterR, m_worldDimension[2]);
401  // build the Tracking volumes
402  Trk::TrackingVolume* atlasInnerSector = new Trk::TrackingVolume(nullptr,
403  innerSectorBounds,
405  nullptr,
406  atlasInnerSectorVolumeArray,
407  "AtlasInnerSector");
408 
409  // Atlas outer Sector
410  Trk::CylinderVolumeBounds* outerSectorBounds =
411  new Trk::CylinderVolumeBounds(innerVolumeOuterR, m_worldDimension[1], m_worldDimension[2]);
412  Trk::TrackingVolume* atlasOuterSector = new Trk::TrackingVolume(nullptr,
413  outerSectorBounds,
415  nullptr,
416  nullptr,
417  "AtlasOuterSector");
418 
419  ATH_MSG_VERBOSE( "Atlas Inner/Outer Sectors built successfully." );
420 
421  // create the array of Inner and Outer sector
422  auto atlasVolumes = std::vector<Trk::TrackingVolume*>{atlasInnerSector, atlasOuterSector};
423 
425  m_trackingVolumeArrayCreator->cylinderVolumesArrayInR(atlasVolumes) : nullptr;
426 
427  // create the Atlas volume bounds
429 
430  // create the Atlas TrackingVolume
431  Trk::TrackingVolume* atlasVolume = new Trk::TrackingVolume(nullptr,
432  atlasBounds,
434  nullptr,
435  atlasVolumeArray,
436  "Atlas");
437 
438  ATH_MSG_VERBOSE( "Atlas Tracking World volume built successfully." );
439 
440 
441  // glue the inner sector to be complete
442  m_trackingVolumeHelper->glueTrackingVolumes( *atlasInnerNegativeSector, Trk::positiveFaceXY,
443  innerNegativeFaceVolumes, Trk::negativeFaceXY );
444 
445  m_trackingVolumeHelper->glueTrackingVolumes( *atlasInnerPositiveSector, Trk::negativeFaceXY,
446  innerPositiveFaceVolumes, Trk::positiveFaceXY );
447 
448  ATH_MSG_VERBOSE( "Atlas Inner Sector glued successfully together." );
449 
450  // iterators to the face volumes
451  auto volIter = innerCentralFaceVolumes.begin();
452  auto volIterEnd = innerCentralFaceVolumes.end();
453 
454  // glue outer and inner sector together
455  std::vector<Trk::TrackingVolume*> atlasInnerOuterVolumes;
456  atlasInnerOuterVolumes.push_back(atlasInnerNegativeSector);
457  for ( ; volIter != volIterEnd; ++volIter)
458  if (*volIter) atlasInnerOuterVolumes.push_back(*volIter);
459  atlasInnerOuterVolumes.push_back(atlasInnerPositiveSector);
460 
461  m_trackingVolumeHelper->glueTrackingVolumes(*atlasOuterSector, Trk::tubeInnerCover,
462  atlasInnerOuterVolumes, Trk::tubeOuterCover);
463 
464  ATH_MSG_VERBOSE( "Atlas Inner/Outer Sector glued successfully together." );
465 
466  // job done -> create the TrackingGeometry
467  atlasTrackingGeometry = std::make_unique<Trk::TrackingGeometry>(atlasVolume);
468 
469  // detailed information about this tracking geometry
470  ATH_MSG_VERBOSE( "Atlas TrackingGeometry built with following parameters : ");
471  //ATH_MSG_VERBOSE( " - TrackingVolume containers : " << atlasTrackingGeometry->numberOfContainerVolumes() );
472  //ATH_MSG_VERBOSE( " - TrackingVolume at navigation level : " << atlasTrackingGeometry->numberOfContainerVolumes() );
473  //ATH_MSG_VERBOSE( " - Contained static layers : " << atlasTrackingGeometry->boundaryLayers().size());
474  ATH_MSG_VERBOSE( " - Unique material layers on boundaries : " << atlasTrackingGeometry->boundaryLayers().size());
475 
476 #ifdef TRKDETDESCR_MEMUSAGE
477  m_memoryLogger.refresh(getpid());
478  ATH_MSG_INFO( "[ memory usage ] After Outer Sector TrackingGeometry building: " );
479  ATH_MSG_INFO( m_memoryLogger );
480 #endif
481 
482  }
483 
484  if (atlasTrackingGeometry) {
485  if (m_navigationLevel < 3)
487  }
488  else ATH_MSG_WARNING( "atlasTrackingGeometry() ... atlasTrackingGeometry = 0, could not call registerNavigationLevel and propagateMagneticFieldProperties" );
489 
490 #ifdef TRKDETDESCR_MEMUSAGE
491  m_memoryLogger.refresh(getpid());
492  ATH_MSG_INFO( "[ memory usage ] End of TrackingGeometry building: " );
493  ATH_MSG_INFO( m_memoryLogger );
494 #endif
495 
496  // synchronize the layers
497  if (atlasTrackingGeometry) {
498  if (m_synchronizeLayers) atlasTrackingGeometry->synchronizeLayers(msg());
499 
500  // compactify if configured to do so
501  if (m_compactify) atlasTrackingGeometry->compactify(msg());
502  }
503  return atlasTrackingGeometry;
504 }

◆ confineVolume()

void Trk::TrackingVolumeManipulator::confineVolume ( TrackingVolume tvol,
TrackingVolume outsidevol 
)
staticprotectedinherited

protected method to confine (dense) volumes: input:

  • the volume that holdes the BoundarySurfaces (embedded)
  • the volume to be set as outside volume

Definition at line 112 of file TrackingVolumeManipulator.cxx.

114 {
115 
116  const auto& bounds = tvol.boundarySurfaces();
117  for (const auto & bound : bounds) {
118  if (bound->outsideVolume() == nullptr) {
119  bound->setOutsideVolume(outsideVol);
120  }
121  if (bound->insideVolume() == nullptr) {
122  bound->setInsideVolume(outsideVol);
123  }
124  }
125 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ DeclareInterfaceID()

Trk::IGeometryBuilderCond::DeclareInterfaceID ( IGeometryBuilderCond  ,
,
 
)
inherited

Creates the InterfaceID and interfaceID() method.

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ geometrySignature()

virtual GeometrySignature Trk::GeometryBuilderCond::geometrySignature ( ) const
inlineoverridevirtual

The unique signature.

Implements Trk::IGeometryBuilderCond.

Definition at line 72 of file GeometryBuilderCond.h.

72 { return Trk::Global; }

◆ glueVolumes()

void Trk::TrackingVolumeManipulator::glueVolumes ( Trk::TrackingVolume firstVol,
Trk::BoundarySurfaceFace  firstFace,
Trk::TrackingVolume secondVol,
Trk::BoundarySurfaceFace  secondFace 
) const
protectedinherited

protected method to glue two Volumes together input:

Definition at line 17 of file TrackingVolumeManipulator.cxx.

22 {
23  // check if it is a cylinder volume
24  const Trk::CylinderVolumeBounds* cylBounds =
25  dynamic_cast<const Trk::CylinderVolumeBounds*>(&(firstVol.volumeBounds()));
26 
27  if (firstFace == Trk::tubeOuterCover && secondFace == Trk::tubeInnerCover)
28  return glueVolumes(secondVol, secondFace, firstVol, firstFace);
29 
30  // the second volume gets the face of the first volume assigned
31  (secondVol.m_boundarySurfaces)[secondFace] =
32  (firstVol.m_boundarySurfaces)[firstFace];
33  // the face of the first volume has been an inner tube
34  if (cylBounds && firstFace == Trk::tubeInnerCover &&
35  secondFace == Trk::tubeOuterCover) {
36  (secondVol.m_boundarySurfaces)[secondFace]->setInsideVolume(&secondVol);
37  } else {
38  (secondVol.m_boundarySurfaces)[secondFace]->setOutsideVolume(&secondVol);
39  }
40 }

◆ initialize()

StatusCode Trk::GeometryBuilderCond::initialize ( )
overridevirtual

AlgTool initialize method.

Definition at line 84 of file GeometryBuilderCond.cxx.

85 {
86 
87  // Retrieve the volume array creator ----------------------------------------------------
89 
90  // Retrieve the tracking volume helper --------------------------------------------------
91  ATH_CHECK (m_trackingVolumeHelper.retrieve());
92  // Geometries =============================================================================
93  // (I) Inner Detector ---------------------------------------------------------------------
94  if (!m_inDetGeometryBuilderCond.empty()) {
96  }
97  // (H) High Granularity Timing Detector ----------------------------------------------------
98  if(!m_hgtdGeometryBuilderCond.empty()) {
99  if (m_hgtdGeometryBuilderCond.retrieve().isFailure()) {
100  ATH_MSG_FATAL("Failed to retrieve tool " << m_hgtdGeometryBuilderCond );
101  return StatusCode::FAILURE;
102  } else
103  ATH_MSG_INFO( "Retrieved tool " << m_hgtdGeometryBuilderCond );
104  }
105  // (C) Calorimeter --------------------------------------------------------------------------
106  if (!m_caloGeometryBuilderCond.empty()) {
108  }
109  // (M) Muon System -------------------------------------------------------------------------
110  if (!m_muonGeometryBuilderCond.empty()) {
112  }
113 
114  // if no world dimensions are declared, take default ones
115  if (m_worldDimension.empty())
117 
118  // if no world materials are declared, take default ones - set vacuum
119  if (m_worldMaterialProperties.size() < 5)
120  m_worldMaterialProperties = std::vector<double>{10.e10,10.e10,1e-10, 0., 0.};
121 
127 
128  ATH_MSG_DEBUG( " initialize() successful" );
129 
130  return StatusCode::SUCCESS;
131 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setBoundarySurface()

void Trk::TrackingVolumeManipulator::setBoundarySurface ( TrackingVolume tvol,
SharedObject< BoundarySurface< TrackingVolume >>  bsurf,
BoundarySurfaceFace  face 
)
staticprotectedinherited

protected method to set the boundary surface of a tracking volume

Definition at line 43 of file TrackingVolumeManipulator.cxx.

47 {
48  (tvol.m_boundarySurfaces)[face] = std::move(bsurf);
49 }

◆ setInsideVolume()

void Trk::TrackingVolumeManipulator::setInsideVolume ( Trk::TrackingVolume tvol,
Trk::BoundarySurfaceFace  face,
Trk::TrackingVolume insidevol 
)
staticprotectedinherited

protected method to set inside Volume of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume to be set as inside volume

Definition at line 52 of file TrackingVolumeManipulator.cxx.

55 {
56 
57  (tvol.m_boundarySurfaces)[face]->setInsideVolume(insidevol);
58 }

◆ setInsideVolumeArray() [1/2]

void Trk::TrackingVolumeManipulator::setInsideVolumeArray ( Trk::TrackingVolume tvol,
Trk::BoundarySurfaceFace  face,
BinnedArray< TrackingVolume > *  insidevolarray 
)
staticprotectedinherited

protected method to set inside VolumeArray of a BoundarySurface: input:

  • ithe volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume array to be set as inside volume array

Definition at line 61 of file TrackingVolumeManipulator.cxx.

65 {
66 
69 }

◆ setInsideVolumeArray() [2/2]

static void Trk::TrackingVolumeManipulator::setInsideVolumeArray ( TrackingVolume tvol,
BoundarySurfaceFace  face,
const SharedObject< BinnedArray< TrackingVolume >> &  insidevolarray 
)
staticprotectedinherited

protected method to set inside VolumeArray of a BoundarySurface: input:

  • ithe volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume array to be set as inside volume array

◆ setOutsideVolume()

void Trk::TrackingVolumeManipulator::setOutsideVolume ( Trk::TrackingVolume tvol,
Trk::BoundarySurfaceFace  face,
Trk::TrackingVolume outsidevol 
)
staticprotectedinherited

protected method to set outside Volume of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume to be set as outside volume

Definition at line 82 of file TrackingVolumeManipulator.cxx.

86 {
87  (tvol.m_boundarySurfaces)[face]->setOutsideVolume(outsidevol);
88 }

◆ setOutsideVolumeArray() [1/2]

void Trk::TrackingVolumeManipulator::setOutsideVolumeArray ( Trk::TrackingVolume tvol,
Trk::BoundarySurfaceFace  face,
BinnedArray< TrackingVolume > *  outsidevolarray 
)
staticprotectedinherited

protected method to set outside VolumeArray of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume array to be set as outside volume array

Definition at line 91 of file TrackingVolumeManipulator.cxx.

95 {
96 
99 }

◆ setOutsideVolumeArray() [2/2]

static void Trk::TrackingVolumeManipulator::setOutsideVolumeArray ( TrackingVolume tvol,
BoundarySurfaceFace  face,
const SharedObject< BinnedArray< TrackingVolume >> &  outsidevolarray 
)
staticprotectedinherited

protected method to set outside VolumeArray of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume array to be set as outside volume array

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ trackingGeometry()

std::unique_ptr< Trk::TrackingGeometry > Trk::GeometryBuilderCond::trackingGeometry ( const EventContext &  ctx,
Trk::TrackingVolume tVol,
SG::WriteCondHandle< TrackingGeometry > &  whandle 
) const
overridevirtual

TrackingGeometry Interface method - optionally a pointer to Bounds Interface marked as not thread safe.

Implements Trk::IGeometryBuilderCond.

Definition at line 134 of file GeometryBuilderCond.cxx.

137 {
138 
139  // the geometry to be constructed
140  std::unique_ptr<Trk::TrackingGeometry> tGeometry;
142 
143  ATH_MSG_VERBOSE( "Configured to only create world TrackingVolume." );
144 
146  m_worldDimension[1],
147  m_worldDimension[2]);
148 
149  Trk::TrackingVolume* worldVolume = new Trk::TrackingVolume(nullptr,
150  worldBounds,
152  nullptr,
153  nullptr,
154  "EmptyWorldVolume");
155  // create a new geometry
156  tGeometry = std::make_unique<Trk::TrackingGeometry>(worldVolume);
157  } else
158  tGeometry = atlasTrackingGeometry(ctx, whandle);
159  // sign it before you return anything
160  tGeometry->sign(geometrySignature());
161  return tGeometry;
162 }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_caloGeometry

bool Trk::GeometryBuilderCond::m_caloGeometry
private

switch on TrackingGeometry for the Calorimeters

Definition at line 98 of file GeometryBuilderCond.h.

◆ m_caloGeometryBuilderCond

ToolHandle<IGeometryBuilderCond> Trk::GeometryBuilderCond::m_caloGeometryBuilderCond
private

GeometryBuilderCond for the Calorimeters.

Definition at line 99 of file GeometryBuilderCond.h.

◆ m_compactify

bool Trk::GeometryBuilderCond::m_compactify
private

optimize event memory usage: register all surfaces with TG

Definition at line 107 of file GeometryBuilderCond.h.

◆ m_createWorld

bool Trk::GeometryBuilderCond::m_createWorld
private

Boolean Switch to create World manually.

Definition at line 83 of file GeometryBuilderCond.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_hgtdGeometry

bool Trk::GeometryBuilderCond::m_hgtdGeometry
private

Definition at line 101 of file GeometryBuilderCond.h.

◆ m_hgtdGeometryBuilderCond

ToolHandle<IGeometryBuilderCond> Trk::GeometryBuilderCond::m_hgtdGeometryBuilderCond
private

switch on TrackingGeometry for HGTD

GeometryBuilder for the HGTD

Definition at line 102 of file GeometryBuilderCond.h.

◆ m_inDetGeometryBuilderCond

ToolHandle<IGeometryBuilderCond> Trk::GeometryBuilderCond::m_inDetGeometryBuilderCond
private

GeometryBuilderCond for the InnerDetector.

Definition at line 96 of file GeometryBuilderCond.h.

◆ m_muonGeometry

bool Trk::GeometryBuilderCond::m_muonGeometry
private

GeometryBuilderCond for the Muon System.

Definition at line 104 of file GeometryBuilderCond.h.

◆ m_muonGeometryBuilderCond

ToolHandle<IGeometryBuilderCond> Trk::GeometryBuilderCond::m_muonGeometryBuilderCond
private

GeometryBuilderCond for the Muon System.

Definition at line 105 of file GeometryBuilderCond.h.

◆ m_navigationLevel

int Trk::GeometryBuilderCond::m_navigationLevel
private

NavigationLevel.

Definition at line 84 of file GeometryBuilderCond.h.

◆ m_synchronizeLayers

bool Trk::GeometryBuilderCond::m_synchronizeLayers
private

synchronize contained layer dimensions to volumes

Definition at line 108 of file GeometryBuilderCond.h.

◆ m_trackingVolumeArrayCreator

ToolHandle<ITrackingVolumeArrayCreator> Trk::GeometryBuilderCond::m_trackingVolumeArrayCreator
private

Helper Tool to create TrackingVolume Arrays.

Definition at line 92 of file GeometryBuilderCond.h.

◆ m_trackingVolumeHelper

ToolHandle<ITrackingVolumeHelper> Trk::GeometryBuilderCond::m_trackingVolumeHelper
private

Helper Tool to create TrackingVolumes.

Definition at line 94 of file GeometryBuilderCond.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_worldDimension

std::vector<double> Trk::GeometryBuilderCond::m_worldDimension
private

The dimensions of the manually created world.

Definition at line 86 of file GeometryBuilderCond.h.

◆ m_worldMaterial

Material Trk::GeometryBuilderCond::m_worldMaterial
private

the world material

Definition at line 88 of file GeometryBuilderCond.h.

◆ m_worldMaterialProperties

std::vector<double> Trk::GeometryBuilderCond::m_worldMaterialProperties
private

The material properties of the created world.

Definition at line 87 of file GeometryBuilderCond.h.


The documentation for this class was generated from the following files:
Trk::TrackingVolume::glueVolumesDescriptor
GlueVolumesDescriptor & glueVolumesDescriptor()
Definition: TrackingVolume.cxx:1205
Trk::GeometryBuilderCond::m_worldMaterialProperties
std::vector< double > m_worldMaterialProperties
The material properties of the created world.
Definition: GeometryBuilderCond.h:87
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Trk::GeometryBuilderCond::m_createWorld
bool m_createWorld
Boolean Switch to create World manually.
Definition: GeometryBuilderCond.h:83
Trk::GeometryBuilderCond::m_compactify
bool m_compactify
optimize event memory usage: register all surfaces with TG
Definition: GeometryBuilderCond.h:107
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::GeometryBuilderCond::m_navigationLevel
int m_navigationLevel
NavigationLevel.
Definition: GeometryBuilderCond.h:84
Trk::GeometryBuilderCond::m_caloGeometry
bool m_caloGeometry
switch on TrackingGeometry for the Calorimeters
Definition: GeometryBuilderCond.h:98
Trk::GeometryBuilderCond::m_worldDimension
std::vector< double > m_worldDimension
The dimensions of the manually created world.
Definition: GeometryBuilderCond.h:86
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
bound
@ bound
Definition: L1CaloPprPlotManager.h:74
Trk::positiveFaceXY
@ positiveFaceXY
Definition: BoundarySurfaceFace.h:33
Trk::TrackingVolumeManipulator::setOutsideVolume
static void setOutsideVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *outsidevol)
protected method to set outside Volume of a BoundarySurface: input:
Definition: TrackingVolumeManipulator.cxx:82
Trk::GeometryBuilderCond::m_hgtdGeometry
bool m_hgtdGeometry
Definition: GeometryBuilderCond.h:101
Trk::GeometryBuilderCond::atlasTrackingGeometry
std::unique_ptr< Trk::TrackingGeometry > atlasTrackingGeometry(const EventContext &ctx, SG::WriteCondHandle< TrackingGeometry > &whandle) const
TrackingGeometry for ATLAS setup.
Definition: GeometryBuilderCond.cxx:166
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::GeometryBuilderCond::m_muonGeometry
bool m_muonGeometry
GeometryBuilderCond for the Muon System.
Definition: GeometryBuilderCond.h:104
Trk::TrackingVolumeManipulator::setInsideVolumeArray
static void setInsideVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, BinnedArray< TrackingVolume > *insidevolarray)
protected method to set inside VolumeArray of a BoundarySurface: input:
Definition: TrackingVolumeManipulator.cxx:61
Trk::TrackingVolumeManipulator::setOutsideVolumeArray
static void setOutsideVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, BinnedArray< TrackingVolume > *outsidevolarray)
protected method to set outside VolumeArray of a BoundarySurface: input:
Definition: TrackingVolumeManipulator.cxx:91
Trk::GeometryBuilderCond::m_trackingVolumeArrayCreator
ToolHandle< ITrackingVolumeArrayCreator > m_trackingVolumeArrayCreator
Helper Tool to create TrackingVolume Arrays.
Definition: GeometryBuilderCond.h:92
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Trk::GeometryBuilderCond::m_inDetGeometryBuilderCond
ToolHandle< IGeometryBuilderCond > m_inDetGeometryBuilderCond
GeometryBuilderCond for the InnerDetector.
Definition: GeometryBuilderCond.h:96
Trk::NavigationLevel
NavigationLevel
Definition: TrackingGeometry.h:43
AthCommonDataStore
Definition: AthCommonDataStore.h:52
python.SystemOfUnits.meter
int meter
Definition: SystemOfUnits.py:61
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::CylinderVolumeBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
Definition: CylinderVolumeBounds.h:207
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::GeometryBuilderCond::m_trackingVolumeHelper
ToolHandle< ITrackingVolumeHelper > m_trackingVolumeHelper
Helper Tool to create TrackingVolumes.
Definition: GeometryBuilderCond.h:94
Trk::negativeFaceXY
@ negativeFaceXY
Definition: BoundarySurfaceFace.h:32
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::GeometryBuilderCond::m_caloGeometryBuilderCond
ToolHandle< IGeometryBuilderCond > m_caloGeometryBuilderCond
GeometryBuilderCond for the Calorimeters.
Definition: GeometryBuilderCond.h:99
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Trk::TrackingGeometry::sign
void sign(GeometrySignature geosit, GeometryType geotype=Static)
Geometry Builder busineess: the geometry builder has to sign.
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::Global
@ Global
Definition: GeometrySignature.h:25
Trk::CylinderVolumeBounds
Definition: CylinderVolumeBounds.h:70
Trk::TrackingVolume::volumeName
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
Trk::GlueVolumesDescriptor::glueVolumes
const std::vector< TrackingVolume * > & glueVolumes(BoundarySurfaceFace)
retrieve them again
Definition: GlueVolumesDescriptor.cxx:40
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::GeometryBuilderCond::m_hgtdGeometryBuilderCond
ToolHandle< IGeometryBuilderCond > m_hgtdGeometryBuilderCond
switch on TrackingGeometry for HGTD
Definition: GeometryBuilderCond.h:102
Trk::CylinderVolumeBounds::outerRadius
double outerRadius() const
This method returns the outer radius.
Definition: CylinderVolumeBounds.h:191
Trk::GeometryBuilderCond::m_synchronizeLayers
bool m_synchronizeLayers
synchronize contained layer dimensions to volumes
Definition: GeometryBuilderCond.h:108
Trk::GlueVolumesDescriptor
Definition: GlueVolumesDescriptor.h:40
Trk::TrackingVolumeManipulator::setInsideVolume
static void setInsideVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *insidevol)
protected method to set inside Volume of a BoundarySurface: input:
Definition: TrackingVolumeManipulator.cxx:52
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
Trk::SharedObject
std::shared_ptr< T > SharedObject
Definition: SharedObject.h:24
Trk::GeometryBuilderCond::m_worldMaterial
Material m_worldMaterial
the world material
Definition: GeometryBuilderCond.h:88
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::TrackingVolumeManipulator::glueVolumes
void glueVolumes(TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace) const
protected method to glue two Volumes together input:
Definition: TrackingVolumeManipulator.cxx:17
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::TrackingGeometry::checkoutHighestTrackingVolume
TrackingVolume * checkoutHighestTrackingVolume()
private method to be called from GeometryBuilder: return the world with ownership
Definition: TrackingGeometry.cxx:169
Trk::Volume::volumeBounds
const VolumeBounds & volumeBounds() const
returns the volumeBounds()
Definition: Volume.h:97
Trk::cylinderCover
@ cylinderCover
Definition: BoundarySurfaceFace.h:38
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
Trk::GeometryBuilderCond::m_muonGeometryBuilderCond
ToolHandle< IGeometryBuilderCond > m_muonGeometryBuilderCond
GeometryBuilderCond for the Muon System.
Definition: GeometryBuilderCond.h:105
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Trk::tubeOuterCover
@ tubeOuterCover
Definition: BoundarySurfaceFace.h:40
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
Trk::tubeInnerCover
@ tubeInnerCover
Definition: BoundarySurfaceFace.h:39
Trk::BinnedArray
Definition: BinnedArray.h:38
Trk::TrackingVolume::m_boundarySurfaces
std::vector< SharedObject< BoundarySurface< TrackingVolume > > > m_boundarySurfaces
Definition: TrackingVolume.h:454
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Trk::CylinderVolumeBounds::clone
CylinderVolumeBounds * clone() const override
Virtual constructor.
Definition: CylinderVolumeBounds.h:171
Material
@ Material
Definition: MaterialTypes.h:8
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Trk::GeometryBuilderCond::geometrySignature
virtual GeometrySignature geometrySignature() const override
The unique signature.
Definition: GeometryBuilderCond.h:72
Trk::TrackingVolumeManipulator::TrackingVolumeManipulator
TrackingVolumeManipulator()
constructor
Definition: TrackingVolumeManipulator.h:35
fitman.k
k
Definition: fitman.py:528