ATLAS Offline Software
Loading...
Searching...
No Matches
AGDD2GeoModelBuilder.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef AGDD2GeoModelBuilder_H
6#define AGDD2GeoModelBuilder_H
7
10#include "GeoModelKernel/GeoPhysVol.h"
12
13class GeoMaterial;
14class GeoElement;
15class AGDDComposition;
16class AGDDBox;
17class AGDDTubs;
18class AGDDElcyl;
19class AGDDTrd;
20class AGDDCons;
21class AGDDPcon;
22class AGDDPgon;
23class AGDDGvxy;
24class AGDDSnake;
25class AGDDUnion;
27class AGDDSubtraction;
28class AGDDVolume;
29class AGDDBolt;
30class AGDDIbeam;
31class AGDDUbeam;
32
34class AGDDVolumeStore;
36class AliasStore;
38
39
40#include <string>
41
43public:
44 // constructor
48 AliasStore& as,
51 // elements & materials
52 GeoElement* CreateElement(const std::string&);
53 const GeoMaterial* CreateMaterial(const std::string&);
54 virtual void CreateElements() override;
55 virtual void CreateMaterial() override;
56
57 virtual void CreateBox(AGDDBox*) const override;
58 virtual void CreateTrd(AGDDTrd*) const override;
59 virtual void CreateTubs(AGDDTubs*) const override;
60 virtual void CreateElcyl(AGDDElcyl*) const override;
61 virtual void CreateCons(AGDDCons*) const override;
62 virtual void CreatePcon(AGDDPcon*) const override;
63 virtual void CreatePgon(AGDDPgon*) const override;
64 virtual void CreateGvxy(AGDDGvxy*) const override;
65 virtual void CreateSnake(AGDDSnake*) const override;
66 virtual void CreateUnion(AGDDUnion*) const override;
67 virtual void CreateIntersection(AGDDIntersection*) const override;
68 virtual void CreateSubtraction(AGDDSubtraction*) const override;
69
70 virtual void CreateBolt(AGDDBolt*) const override;
71 virtual void CreateIbeam(AGDDIbeam*) const override;
72 virtual void CreateUbeam(AGDDUbeam*) const override;
73
74 virtual void CreateVolume(AGDDVolume*) override;
75 virtual void CreateComposition(AGDDComposition*) override;
76
77 virtual void SetMotherVolume(GeoPhysVol *v) {m_mother=v;}
78 virtual void BuildAllVolumes();
79 virtual void BuildFromSection(const std::string&) override;
80 virtual void BuildFromVolume(const std::string&) override;
81
82 virtual StoredMaterialManager& GetMaterialManager() const override;
83
84private:
85 GeoPhysVol *m_mother;
91
92 const GeoMaterial* GetMMMaterial(const std::string&) const;
93
95 inline double phi(const GeoTrf::Vector3D &vec) const {
96 if (vec.rows() < 2) return 0.;
97 return std::atan2(vec[1],vec[0]);
98 }
99
100 inline double theta(const GeoTrf::Vector3D &vec) const {
101 if (vec.rows() < 3) return 0.;
102 return std::atan2(std::hypot(vec[0],vec[1]),vec[2]);
103 }
104};
105
106#endif
std::vector< size_t > vec
static Double_t ss
GeoElement * CreateElement(const std::string &)
~AGDD2GeoModelBuilder()=default
virtual void CreateVolume(AGDDVolume *) override
virtual void CreateComposition(AGDDComposition *) override
virtual void CreateUnion(AGDDUnion *) const override
virtual void CreateMaterial() override
double theta(const GeoTrf::Vector3D &vec) const
theta method (cf.
AGDDMaterialStore & m_ms
virtual void CreateIntersection(AGDDIntersection *) const override
virtual void CreateTubs(AGDDTubs *) const override
virtual void CreatePcon(AGDDPcon *) const override
virtual void CreateGvxy(AGDDGvxy *) const override
virtual void CreatePgon(AGDDPgon *) const override
virtual void CreateTrd(AGDDTrd *) const override
AGDDDetectorStore & m_ds
virtual void SetMotherVolume(GeoPhysVol *v)
virtual StoredMaterialManager & GetMaterialManager() const override
const GeoMaterial * GetMMMaterial(const std::string &) const
virtual void CreateElements() override
virtual void CreateBolt(AGDDBolt *) const override
virtual void CreateElcyl(AGDDElcyl *) const override
virtual void BuildFromVolume(const std::string &) override
virtual void CreateIbeam(AGDDIbeam *) const override
virtual void CreateCons(AGDDCons *) const override
AGDDSectionStore & m_ss
virtual void BuildFromSection(const std::string &) override
virtual void CreateBox(AGDDBox *) const override
virtual void CreateSnake(AGDDSnake *) const override
virtual void CreateUbeam(AGDDUbeam *) const override
double phi(const GeoTrf::Vector3D &vec) const
phi method (cf.
virtual void CreateSubtraction(AGDDSubtraction *) const override
AGDD2GeoModelBuilder(AGDDDetectorStore &ds, AGDDVolumeStore &vs, AGDDSectionStore &ss, AliasStore &as, AGDDMaterialStore &ms)
This class holds one or more material managers and makes them storeable, under StoreGate.