DD4hep  1.28.0
Detector Description Toolkit for High Energy Physics
GeoHandler.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 #ifndef DD4HEP_GEOHANDLER_H
14 #define DD4HEP_GEOHANDLER_H
15 
16 #include "DD4hep/Detector.h"
17 #include <set>
18 #include <map>
19 #include <vector>
20 
21 // Forward declarations
22 class TGeoMatrix;
23 class TGeoVolume;
24 class TGeoMedium;
25 class TGeoShape;
26 class TGeoNode;
27 
29 namespace dd4hep {
30 
31  // Forward declarations
32  class Detector;
33  class NamedObject;
34  class DetElement;
35  class SensitiveDetector;
36  class VisAttrObject;
37  class Volume;
38  class PlacedVolume;
39 
41  namespace detail {
42 
44 
50  public:
51 #if 0
52  typedef std::set<const TGeoVolume*> ConstVolumeSet;
53  typedef std::map<SensitiveDetector, ConstVolumeSet> SensitiveVolumes;
54  typedef std::map<Region, ConstVolumeSet> RegionVolumes;
55  typedef std::map<LimitSet, ConstVolumeSet> LimitVolumes;
56  typedef std::map<int, std::set<const TGeoNode*> > Data;
57  typedef std::set<SensitiveDetector> SensitiveDetectorSet;
58  typedef std::set<Region> RegionSet;
59  typedef std::set<LimitSet> LimitSetSet;
60  typedef std::set<TNamed*> ObjectSet;
61 #endif
62 
68  class GeometryInfo {
69  public:
70  std::set<TGeoShape*> solids;
71  std::set<Volume> volumeSet;
72  std::vector<Volume> volumes;
73  std::set<VisAttr> vis;
74  std::set<Ref_t> fields;
75  std::set<Material> materials;
76  std::set<TGeoMedium*> media;
77  std::set<TGeoElement*> elements;
78  std::vector<std::pair<std::string, TGeoMatrix*> > trafos;
79  };
80  };
81 
83 
94  class GeoHandler: public GeoHandlerTypes {
95 
96  protected:
98  std::map<int, std::set<const TGeoNode*> >* m_data;
99 
101  GeoHandler& i_collect(const TGeoNode* parent,
102  const TGeoNode* node,
103  int level, Region rg, LimitSet ls);
104 
105  private:
108  }
111  return *this;
112  }
113 
114  public:
116  GeoHandler();
118  GeoHandler(std::map<int, std::set<const TGeoNode*> >* ptr);
120  virtual ~GeoHandler();
122  bool setPropagateRegions(bool value);
126  GeoHandler& collect(DetElement top, GeometryInfo& info);
128  std::map<int, std::set<const TGeoNode*> >* release();
129  };
130 
132 
137  class GeoScan {
138  protected:
140  std::map<int, std::set<const TGeoNode*> >* m_data;
141  public:
143  GeoScan(DetElement e);
145  GeoScan(DetElement e, bool propagateRegions);
147  virtual ~GeoScan();
149  virtual GeoScan& operator()();
150  };
151  } // End namespace detail
152 } // End namespace dd4hep
153 
154 #endif // DD4HEP_GEOHANDLER_H
dd4hep::detail::GeoHandler::m_data
std::map< int, std::set< const TGeoNode * > > * m_data
Definition: GeoHandler.h:98
dd4hep::detail::GeoHandlerTypes::GeometryInfo::trafos
std::vector< std::pair< std::string, TGeoMatrix * > > trafos
Definition: GeoHandler.h:78
Detector.h
dd4hep::info
std::size_t info(const std::string &src, const std::string &msg)
Definition: RootDictionary.h:65
dd4hep::detail::GeoHandler::i_collect
GeoHandler & i_collect(const TGeoNode *parent, const TGeoNode *node, int level, Region rg, LimitSet ls)
Internal helper to collect geometry information from traversal.
Definition: GeoHandler.cpp:127
dd4hep::detail::GeoHandlerTypes::GeometryInfo::volumeSet
std::set< Volume > volumeSet
Definition: GeoHandler.h:71
dd4hep::detail::GeoHandlerTypes::GeometryInfo
Data container to store information obtained during the geometry scan.
Definition: GeoHandler.h:68
dd4hep::detail::GeoHandlerTypes::GeometryInfo::vis
std::set< VisAttr > vis
Definition: GeoHandler.h:73
dd4hep::detail::GeoHandler::operator=
GeoHandler & operator=(const GeoHandler &)
Never call assignment operator.
Definition: GeoHandler.h:110
dd4hep::detail::GeoScan
Geometry scanner (handle object)
Definition: GeoHandler.h:137
dd4hep::detail::GeoHandler::m_propagateRegions
bool m_propagateRegions
Definition: GeoHandler.h:97
dd4hep::DetElement
Handle class describing a detector element.
Definition: DetElement.h:188
dd4hep::detail::GeoHandler::GeoHandler
GeoHandler(const GeoHandler &)
Never call Copy constructor.
Definition: GeoHandler.h:107
dd4hep::detail::GeoHandler
The base class for all dd4hep geometry crawlers.
Definition: GeoHandler.h:94
dd4hep::detail::GeoScan::GeoScan
GeoScan(DetElement e)
Initializing constructor.
Definition: GeoHandler.cpp:159
dd4hep::detail::GeoHandler::~GeoHandler
virtual ~GeoHandler()
Default destructor.
Definition: GeoHandler.cpp:63
dd4hep::LimitSet
Handle class describing a set of limits as they are used for simulation.
Definition: Objects.h:425
dd4hep::detail::GeoHandlerTypes::GeometryInfo::elements
std::set< TGeoElement * > elements
Definition: GeoHandler.h:77
dd4hep::Region
Handle class describing a region as used in simulation.
Definition: Objects.h:462
dd4hep::detail::GeoHandler::GeoHandler
GeoHandler()
Default constructor.
Definition: GeoHandler.cpp:53
dd4hep::detail::GeoHandlerTypes::GeometryInfo::fields
std::set< Ref_t > fields
Definition: GeoHandler.h:74
dd4hep::detail::GeoHandler::release
std::map< int, std::set< const TGeoNode * > > * release()
Access to collected node list.
Definition: GeoHandler.cpp:69
dd4hep::detail::GeoHandlerTypes::GeometryInfo::solids
std::set< TGeoShape * > solids
Definition: GeoHandler.h:70
dd4hep::detail::GeoScan::operator()
virtual GeoScan & operator()()
Work callback.
Definition: GeoHandler.cpp:178
dd4hep::detail::GeoHandler::setPropagateRegions
bool setPropagateRegions(bool value)
Propagate regions. Returns the previous value.
Definition: GeoHandler.cpp:76
dd4hep
Namespace for the AIDA detector description toolkit.
Definition: AlignmentsCalib.h:28
dd4hep::detail::GeoScan::m_data
std::map< int, std::set< const TGeoNode * > > * m_data
Data holder.
Definition: GeoHandler.h:140
dd4hep::detail::GeoScan::~GeoScan
virtual ~GeoScan()
Default destructor.
Definition: GeoHandler.cpp:171
dd4hep::detail::GeoHandlerTypes::GeometryInfo::media
std::set< TGeoMedium * > media
Definition: GeoHandler.h:76
dd4hep::detail::GeoHandlerTypes::GeometryInfo::volumes
std::vector< Volume > volumes
Definition: GeoHandler.h:72
dd4hep::detail::GeoHandlerTypes::GeometryInfo::materials
std::set< Material > materials
Definition: GeoHandler.h:75
dd4hep::detail::GeoHandlerTypes
Defintion of the object types used by generic geometry handlers.
Definition: GeoHandler.h:49
dd4hep::detail::GeoHandler::collect
GeoHandler & collect(DetElement top)
Collect geometry information from traversal.
Definition: GeoHandler.cpp:82