ATLAS Offline Software
InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef InDetGeoModelUtils_VolumeBuilder_H
6 #define InDetGeoModelUtils_VolumeBuilder_H
7 
11 
12 #include "GeoModelKernel/GeoPhysVol.h"
13 #include "GeoModelKernel/GeoFullPhysVol.h"
14 
15 #include <string>
16 #include <vector>
17 
19 class GeoTransform;
20 class GeoShape;
21 
22 namespace InDetDD {
23  class ServiceVolume;
24 
25  class VolumeBuilder : public AthMessaging
26  {
27  public:
28  VolumeBuilder( const Zone & zone, const std::vector<const ServiceVolume * > & services);
29  VolumeBuilder(const std::vector<const ServiceVolume * > & services);
30  VolumeBuilder( const Zone & zone, const std::vector<const ServiceVolume * > & services,
31  const std::vector<const ServiceVolume * > & servEnv, const std::vector<const ServiceVolume * > & servChild );
32 
33  void setRegion(const std::string & region, double zcenter);
34  void setMaterialManager(InDetMaterialManager * matManager) {m_matManager = matManager; }
35  const std::vector<const ServiceVolume *> & services();
36  const std::vector<const ServiceVolume * > & servicesEnv() ;
37  const std::vector<const ServiceVolume * > & servicesChild() ;
38 
39  void buildAndPlace(const std::string & region, GeoPhysVol * parent, double zcenter = 0);
40  void buildAndPlace(const std::string & region, GeoFullPhysVol * parent, double zcenter = 0);
41  void buildAndPlaceEnvelope(const std::string & region, GeoFullPhysVol * parent, int iParent, int iElement, double zcenter = 0);
42  void buildAndPlaceEnvelope(const std::string & region, GeoPhysVol * parent, int iParent, int iElement, double zcenter = 0);
43  void addServices(const Zone & zone, const std::vector<const ServiceVolume * > & services);
44  using PhysVolPtr = GeoIntrusivePtr<GeoPhysVol>;
45  PhysVolPtr build(int iElement);
46  int numCopies(int iElement);
47  GeoTransform * getPlacement(int iElement, int iCopy);
48  GeoTransform * getPlacementEnvelope(int iElement, int iCopy, int iMothElement);
49 
50  bool isEnvelopeOrChild(int iElement);
51  int getEnvelopeNum(int iElement);
52  int getParentNum(int iElement);
53  bool isChildService(int iElt,int iChld);
54  double getZcenter(int iElt);
55 
56  private:
57  std::string m_region;
58  double m_zcenter;
59  const std::vector<const ServiceVolume *>* m_services;
60  const std::vector<const ServiceVolume *>* m_servEnvelope;
61  const std::vector<const ServiceVolume *>* m_servChild;
64 
65  };
66 
67 }
68 #endif // InDetGeoModelUtils_VolumeBuidler_H
ServiceVolume
Definition: InDetServMatGeoModel/src/ServiceVolume.h:14
InDetDD::VolumeBuilder::getParentNum
int getParentNum(int iElement)
Definition: VolumeBuilder.cxx:244
InDetDD::VolumeBuilder::m_splitter
VolumeSplitter m_splitter
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:62
InDetDD::VolumeBuilder::isEnvelopeOrChild
bool isEnvelopeOrChild(int iElement)
Definition: VolumeBuilder.cxx:232
InDetDD::VolumeBuilder::PhysVolPtr
GeoIntrusivePtr< GeoPhysVol > PhysVolPtr
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:44
InDetDD::Zone
Definition: VolumeSplitterUtils.h:71
InDetDD::VolumeBuilder::setMaterialManager
void setMaterialManager(InDetMaterialManager *matManager)
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:34
InDetDD::VolumeBuilder::m_matManager
InDetMaterialManager * m_matManager
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:63
InDetDD::VolumeBuilder::servicesEnv
const std::vector< const ServiceVolume * > & servicesEnv()
Definition: VolumeBuilder.cxx:73
InDetDD::VolumeBuilder
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:26
InDetDD::VolumeSplitter
Definition: VolumeSplitter.h:17
InDetDD::VolumeBuilder::servicesChild
const std::vector< const ServiceVolume * > & servicesChild()
Definition: VolumeBuilder.cxx:78
InDetDD::VolumeBuilder::m_servChild
const std::vector< const ServiceVolume * > * m_servChild
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:61
InDetDD::VolumeBuilder::getPlacementEnvelope
GeoTransform * getPlacementEnvelope(int iElement, int iCopy, int iMothElement)
Definition: VolumeBuilder.cxx:325
InDetDD::VolumeBuilder::buildAndPlace
void buildAndPlace(const std::string &region, GeoPhysVol *parent, double zcenter=0)
Definition: VolumeBuilder.cxx:83
InDetDD::VolumeBuilder::build
PhysVolPtr build(int iElement)
Definition: VolumeBuilder.cxx:187
InDetDD::VolumeBuilder::VolumeBuilder
VolumeBuilder(const Zone &zone, const std::vector< const ServiceVolume * > &services)
Definition: VolumeBuilder.cxx:20
InDetDD::VolumeBuilder::addServices
void addServices(const Zone &zone, const std::vector< const ServiceVolume * > &services)
Definition: VolumeBuilder.cxx:55
InDetDD::VolumeBuilder::services
const std::vector< const ServiceVolume * > & services()
Definition: VolumeBuilder.cxx:66
InDetDD::VolumeBuilder::buildAndPlaceEnvelope
void buildAndPlaceEnvelope(const std::string &region, GeoFullPhysVol *parent, int iParent, int iElement, double zcenter=0)
Definition: VolumeBuilder.cxx:124
InDetDD::VolumeBuilder::getZcenter
double getZcenter(int iElt)
Definition: VolumeBuilder.cxx:250
InDetDD::VolumeBuilder::m_region
std::string m_region
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:57
test_pyathena.parent
parent
Definition: test_pyathena.py:15
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
InDetDD::VolumeBuilder::numCopies
int numCopies(int iElement)
Definition: VolumeBuilder.cxx:269
InDetDD::VolumeBuilder::setRegion
void setRegion(const std::string &region, double zcenter)
Definition: VolumeBuilder.cxx:60
InDetDD::VolumeBuilder::m_services
const std::vector< const ServiceVolume * > * m_services
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:59
InDetDD::VolumeBuilder::m_zcenter
double m_zcenter
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:58
InDetMaterialManager
InDetMaterialManager.
Definition: InDetMaterialManager.h:34
InDetDD::VolumeBuilder::isChildService
bool isChildService(int iElt, int iChld)
Definition: VolumeBuilder.cxx:256
python.draw_obj.zone
def zone(nx, ny)
Definition: draw_obj.py:288
VolumeSplitterUtils.h
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
AthMessaging.h
VolumeSplitter.h
InDetDD::VolumeBuilder::getPlacement
GeoTransform * getPlacement(int iElement, int iCopy)
Definition: VolumeBuilder.cxx:274
InDetDD::VolumeBuilder::m_servEnvelope
const std::vector< const ServiceVolume * > * m_servEnvelope
Definition: InnerDetector/InDetDetDescr/InDetGeoModelUtils/InDetGeoModelUtils/VolumeBuilder.h:60
InDetDD::VolumeBuilder::getEnvelopeNum
int getEnvelopeNum(int iElement)
Definition: VolumeBuilder.cxx:238