DD4hep  1.30.0
Detector Description Toolkit for High Energy Physics
VolumeManagerInterna.h
Go to the documentation of this file.
1 //==========================================================================
2 // AIDA Detector description implementation
3 //--------------------------------------------------------------------------
4 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
5 // All rights reserved.
6 //
7 // For the licensing terms see $DD4hepINSTALL/LICENSE.
8 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
9 //
10 // Author : M.Frank
11 //
12 //==========================================================================
13 //
14 // NOTE:
15 //
16 // This is an internal include file. It should only be included to
17 // instantiate code. Otherwise the VolumeManager include file should be
18 // sufficient for all practical purposes.
19 //
20 //==========================================================================
21 #ifndef DD4HEP_DETAIL_VOLUMEMANAGERINTERNA_H
22 #define DD4HEP_DETAIL_VOLUMEMANAGERINTERNA_H
23 
24 // Framework include files
25 #include <DD4hep/Volumes.h>
26 #include <DD4hep/DetElement.h>
27 #include <DD4hep/IDDescriptor.h>
28 #include <DD4hep/VolumeManager.h>
29 
30 // ROOT include files
31 #include <TGeoMatrix.h>
32 
34 namespace dd4hep {
35 
37  namespace detail {
38 
40 
47  public:
51  TGeoHMatrix toElement;
56  };
57 
59 
66  public:
68  std::map<DetElement, VolumeManager> subdetectors;
70  std::map<VolumeID, VolumeManager> managers;
72  std::map<VolumeID, VolumeManagerContext*> volumes;
80  const BitFieldElement* system = 0;
84  VolumeID detMask = ~0x0ULL;
87  public:
89  VolumeManagerObject() = default;
95  virtual ~VolumeManagerObject();
101  VolumeManagerContext* search(const VolumeID& id) const;
103  void update(unsigned long tags, DetElement& det, void* param);
104  };
105 
106  } /* End namespace detail */
107 } /* End namespace dd4hep */
108 #endif // DD4HEP_DETAIL_VOLUMEMANAGERINTERNA_H
dd4hep::detail::VolumeManagerContextExtension::placement
PlacedVolume placement
The placement of the (sensitive) volume.
Definition: VolumeManagerInterna.h:49
dd4hep::detail::VolumeManagerObject::flags
int flags
Population flags.
Definition: VolumeManagerInterna.h:86
dd4hep::DDSegmentation::BitFieldElement
Helper class for BitFieldCoder that corresponds to one field value.
Definition: BitFieldCoder.h:32
Volumes.h
dd4hep::detail::VolumeManagerObject::managers
std::map< VolumeID, VolumeManager > managers
The volume managers for the individual subdetector elements.
Definition: VolumeManagerInterna.h:70
dd4hep::detail::VolumeManagerObject::system
const BitFieldElement * system
The system field descriptor.
Definition: VolumeManagerInterna.h:80
dd4hep::PlacedVolume
Handle class holding a placed volume (also called physical volume)
Definition: Volumes.h:173
dd4hep::IDDescriptor
Class implementing the ID encoding of the detector response.
Definition: IDDescriptor.h:37
dd4hep::VolumeManager::NONE
@ NONE
Definition: VolumeManager.h:139
dd4hep::detail::VolumeManagerObject::detector
DetElement detector
The Detector element handle managed by this instance.
Definition: VolumeManagerInterna.h:74
dd4hep::detail::VolumeManagerObject::search
VolumeManagerContext * search(const VolumeID &id) const
Search the locally cached volumes for a matching ID.
Definition: VolumeManager.cpp:738
dd4hep::detail::VolumeManagerObject
This structure describes the internal data of the volume manager object.
Definition: VolumeManagerInterna.h:65
dd4hep::detail::VolumeManagerContextExtension
Extended context. Needs to be public for persistency reasons.
Definition: VolumeManagerInterna.h:46
dd4hep::detail::VolumeManagerObject::VolumeManagerObject
VolumeManagerObject()=default
Default constructor.
VolumeManager.h
dd4hep::detail::VolumeManagerObject::VolumeManagerObject
VolumeManagerObject(const VolumeManagerObject &copy)=delete
No copy constructor.
dd4hep::DetElement
Handle class describing a detector element.
Definition: DetElement.h:188
dd4hep::detail::VolumeManagerObject::subdetectors
std::map< DetElement, VolumeManager > subdetectors
The container of subdetector elements.
Definition: VolumeManagerInterna.h:68
dd4hep::detail::VolumeManagerContextExtension::toElement
TGeoHMatrix toElement
The transformation of space-points to the coordinate system of the closests detector element.
Definition: VolumeManagerInterna.h:51
dd4hep::detail::VolumeManagerObject::id
IDDescriptor id
The ID descriptor object.
Definition: VolumeManagerInterna.h:76
dd4hep::detail::VolumeManagerObject::VolumeManagerObject
VolumeManagerObject(VolumeManagerObject &&copy)=delete
No move constructor.
dd4hep::detail::VolumeManagerObject::~VolumeManagerObject
virtual ~VolumeManagerObject()
Default destructor.
Definition: VolumeManager.cpp:717
dd4hep::detail::VolumeManagerContextExtension::~VolumeManagerContextExtension
~VolumeManagerContextExtension()=default
Default destructor.
VolumeID
dd4hep::DDSegmentation::VolumeID VolumeID
Definition: SegmentationDictionary.h:49
dd4hep::detail::VolumeManagerContextExtension::VolumeManagerContextExtension
VolumeManagerContextExtension()=default
Default constructor.
dd4hep::detail::VolumeManagerObject::top
VolumeManagerObject * top
The reference to the TOP level VolumeManager.
Definition: VolumeManagerInterna.h:78
IDDescriptor.h
dd4hep::detail::VolumeManagerObject::operator=
VolumeManagerObject & operator=(const VolumeManagerObject &copy)=delete
No copy assignment.
DetElement.h
dd4hep::detail::VolumeManagerObject::operator=
VolumeManagerObject & operator=(VolumeManagerObject &&copy)=delete
No move assignment.
dd4hep
Namespace for the AIDA detector description toolkit.
Definition: AlignmentsCalib.h:28
dd4hep::NamedObject
Implementation of a named object.
Definition: NamedObject.h:30
dd4hep::detail::VolumeManagerObject::detMask
VolumeID detMask
Sub-detector mask.
Definition: VolumeManagerInterna.h:84
dd4hep::detail::VolumeManagerObject::sysID
VolumeID sysID
System identifier.
Definition: VolumeManagerInterna.h:82
det
DetElement::Object * det
Definition: AlignmentsCalculator.cpp:66
dd4hep::detail::VolumeManagerObject::volumes
std::map< VolumeID, VolumeManagerContext * > volumes
The container of placements managed by this instance.
Definition: VolumeManagerInterna.h:72
dd4hep::VolumeManagerContext
This structure describes the cached data for one placement held by the volume manager.
Definition: VolumeManager.h:50
dd4hep::detail::tools::copy
void copy(Alignment from, Alignment to)
Copy alignment object from source object.
Definition: AlignmentTools.cpp:43
dd4hep::detail::VolumeManagerObject::update
void update(unsigned long tags, DetElement &det, void *param)
Update callback when alignment has changed (called only for subdetectors....)
Definition: VolumeManager.cpp:727