![]() |
|
|||
File indexing completed on 2025-02-22 10:32:43
0001 //========================================================================== 0002 // AIDA Detector description implementation 0003 //-------------------------------------------------------------------------- 0004 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) 0005 // All rights reserved. 0006 // 0007 // For the licensing terms see $DD4hepINSTALL/LICENSE. 0008 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS. 0009 // 0010 // Author : M.Frank 0011 // 0012 //========================================================================== 0013 // 0014 // NOTE: 0015 // 0016 // This is an internal include file. It should only be included to 0017 // instantiate code. Otherwise the VolumeManager include file should be 0018 // sufficient for all practical purposes. 0019 // 0020 //========================================================================== 0021 #ifndef DD4HEP_DETAIL_VOLUMEMANAGERINTERNA_H 0022 #define DD4HEP_DETAIL_VOLUMEMANAGERINTERNA_H 0023 0024 // Framework include files 0025 #include <DD4hep/Volumes.h> 0026 #include <DD4hep/DetElement.h> 0027 #include <DD4hep/IDDescriptor.h> 0028 #include <DD4hep/VolumeManager.h> 0029 0030 // ROOT include files 0031 #include <TGeoMatrix.h> 0032 0033 /// Namespace for the AIDA detector description toolkit 0034 namespace dd4hep { 0035 0036 /// Namespace for implementation details of the AIDA detector description toolkit 0037 namespace detail { 0038 0039 /// Extended context. Needs to be public for persistency reasons 0040 /** 0041 * 0042 * \author M.Frank 0043 * \version 1.0 0044 * \ingroup DD4HEP_CORE 0045 */ 0046 class VolumeManagerContextExtension : public VolumeManagerContext { 0047 public: 0048 /// The placement of the (sensitive) volume 0049 PlacedVolume placement{0}; 0050 /// The transformation of space-points to the coordinate system of the closests detector element 0051 TGeoHMatrix toElement; 0052 /// Default constructor 0053 VolumeManagerContextExtension() = default; 0054 /// Default destructor 0055 ~VolumeManagerContextExtension() = default; 0056 }; 0057 0058 /// This structure describes the internal data of the volume manager object 0059 /** 0060 * 0061 * \author M.Frank 0062 * \version 1.0 0063 * \ingroup DD4HEP_CORE 0064 */ 0065 class VolumeManagerObject: public NamedObject { 0066 public: 0067 /// The container of subdetector elements 0068 std::map<DetElement, VolumeManager> subdetectors; 0069 /// The volume managers for the individual subdetector elements 0070 std::map<VolumeID, VolumeManager> managers; 0071 /// The container of placements managed by this instance 0072 std::map<VolumeID, VolumeManagerContext*> volumes; 0073 /// The Detector element handle managed by this instance 0074 DetElement detector; 0075 /// The ID descriptor object 0076 IDDescriptor id; 0077 /// The reference to the TOP level VolumeManager 0078 VolumeManagerObject* top = 0; 0079 /// The system field descriptor 0080 const BitFieldElement* system = 0; 0081 /// System identifier 0082 VolumeID sysID = 0; 0083 /// Sub-detector mask 0084 VolumeID detMask = ~0x0ULL; 0085 /// Population flags 0086 int flags = VolumeManager::NONE; 0087 public: 0088 /// Default constructor 0089 VolumeManagerObject() = default; 0090 /// No move constructor 0091 VolumeManagerObject(VolumeManagerObject&& copy) = delete; 0092 /// No copy constructor 0093 VolumeManagerObject(const VolumeManagerObject& copy) = delete; 0094 /// Default destructor 0095 virtual ~VolumeManagerObject(); 0096 /// No move assignment 0097 VolumeManagerObject& operator=(VolumeManagerObject&& copy) = delete; 0098 /// No copy assignment 0099 VolumeManagerObject& operator=(const VolumeManagerObject& copy) = delete; 0100 /// Search the locally cached volumes for a matching ID 0101 VolumeManagerContext* search(const VolumeID& id) const; 0102 /// Update callback when alignment has changed (called only for subdetectors....) 0103 void update(unsigned long tags, DetElement& det, void* param); 0104 }; 0105 0106 } /* End namespace detail */ 0107 } /* End namespace dd4hep */ 0108 #endif // DD4HEP_DETAIL_VOLUMEMANAGERINTERNA_H
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |