ATLAS Offline Software
Loading...
Searching...
No Matches
EMECSupportConstruction.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
12
13// EMECSupportConstruction
14// construct EMEC support structures
15// 20-May-2003 AMS
16// 06-Oct-2003 JT, modified for using GeoModel
17#ifndef LARGEOENDCAP_EMECSUPPORTCONSTRUCTION_H
18#define LARGEOENDCAP_EMECSUPPORTCONSTRUCTION_H
19
22#include <map>
23
24class GeoPhysVol;
25class GeoElement;
26class GeoMaterial;
27class GeoPcon;
28
29/*
30types:
31 0 - front
32 1 - back
33 2 - outer
34 3 - inner
35 4 - middle
36
37 10 - front only in region of inner wheel
38 11 - back only in region of inner wheel
39 12 - front only in region of outer wheel
40 13 - back only in region of outer wheel
41*/
42
43namespace LArGeo {
44
49{
50 public:
51 typedef enum {
55 } type_t;
56
59 bool pos_zside = true,
60 bool is_module = false,
61 std::string basename = "LAr::EMEC::",
62 double position = 0.
63 );
65
66 // Get the envelope containing this detector.
67 virtual GeoIntrusivePtr<GeoPhysVol> GetEnvelope(void) const;
68
69 private:
70 GeoIntrusivePtr<GeoPhysVol>front_envelope(void) const;
71 GeoIntrusivePtr<GeoPhysVol>back_envelope(void) const;
72 GeoIntrusivePtr<GeoPhysVol>outer_envelope(void) const;
73 GeoIntrusivePtr<GeoPhysVol>inner_envelope(void) const;
74 GeoIntrusivePtr<GeoPhysVol>middle_envelope(void) const;
75 GeoIntrusivePtr<GeoPhysVol>front_inner_envelope(void) const;
76 GeoIntrusivePtr<GeoPhysVol>back_inner_envelope(void) const;
77 GeoIntrusivePtr<GeoPhysVol>front_outer_envelope(void) const;
78 GeoIntrusivePtr<GeoPhysVol>back_outer_envelope(void) const;
79
80 void put_front_outer_extracyl(GeoIntrusivePtr<GeoPhysVol>) const;
81
82 void put_front_inner_barettes(GeoIntrusivePtr<GeoPhysVol>) const;
83 void put_front_inner_longbar(GeoIntrusivePtr<GeoPhysVol>) const;
84 void put_front_inner_ring(GeoIntrusivePtr<GeoPhysVol>) const;
85 void put_front_middle_ring(GeoIntrusivePtr<GeoPhysVol>) const;
86 void put_back_middle_ring(GeoIntrusivePtr<GeoPhysVol>) const;
87 void put_back_inner_ring(GeoIntrusivePtr<GeoPhysVol>) const;
88 void put_back_inner_longbar(GeoIntrusivePtr<GeoPhysVol>) const;
89 void put_back_inner_barettes(GeoIntrusivePtr<GeoPhysVol>) const;
90 void put_front_outer_ring(GeoIntrusivePtr<GeoPhysVol>) const;
91 void put_front_indexing_rings(GeoIntrusivePtr<GeoPhysVol>) const;
92 void put_front_outer_longbar(GeoIntrusivePtr<GeoPhysVol>) const;
93 void put_front_outer_barettes(GeoIntrusivePtr<GeoPhysVol>) const;
94 void put_back_outer_ring(GeoIntrusivePtr<GeoPhysVol>) const;
95 void put_back_indexing_rings(GeoIntrusivePtr<GeoPhysVol>) const;
96 void put_back_outer_longbar(GeoIntrusivePtr<GeoPhysVol>) const;
97 void put_back_outer_barettes(GeoIntrusivePtr<GeoPhysVol>) const;
98 void put_front_outer_electronics(GeoIntrusivePtr<GeoPhysVol>) const;
99
100 GeoPcon* getPcon(const std::string&) const;
101
105 std::string m_BaseName;
107
108 const GeoMaterial* m_LAr;
109 const GeoMaterial* m_Alu;
110 const GeoMaterial* m_Gten;
111 const GeoMaterial* m_PermaliE730;
112 const GeoMaterial* m_G10FeInner;
113 const GeoMaterial* m_G10FeOuter;
114 const GeoMaterial* m_Kapton_Cu;
115 const GeoMaterial* m_Cable;
116 const GeoMaterial* m_Copper;
117 const GeoMaterial* m_Lead;
118
123
124 using map_t = std::map<std::string, unsigned int>;
125 map_t getMap(const IRDBRecordset_ptr& db, const std::string& s) const;
126 map_t getNumbersMap(const IRDBRecordset_ptr& db, const std::string& s) const;
127 double getNumber(const IRDBRecordset_ptr& db, const map_t &m, const std::string &idx,
128 const char *number, double defval = 0.) const;
129 double getNumber(const IRDBRecordset_ptr& db, const std::string &s,
130 const std::string &parameter, double defval = 0.) const;
131};
132
133} // namespace LArGeo
134
135#endif // LARGEOENDCAP_EMECSUPPORTCONSTRUCTION_H
Definition of the abstract IRDBAccessSvc interface.
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
GeoIntrusivePtr< GeoPhysVol > outer_envelope(void) const
void put_back_inner_longbar(GeoIntrusivePtr< GeoPhysVol >) const
GeoIntrusivePtr< GeoPhysVol > back_envelope(void) const
void put_front_outer_ring(GeoIntrusivePtr< GeoPhysVol >) const
void put_back_outer_longbar(GeoIntrusivePtr< GeoPhysVol >) const
GeoIntrusivePtr< GeoPhysVol > front_outer_envelope(void) const
EMECSupportConstruction(type_t type, bool pos_zside=true, bool is_module=false, std::string basename="LAr::EMEC::", double position=0.)
void put_front_inner_ring(GeoIntrusivePtr< GeoPhysVol >) const
void put_front_inner_longbar(GeoIntrusivePtr< GeoPhysVol >) const
void put_front_indexing_rings(GeoIntrusivePtr< GeoPhysVol >) const
GeoIntrusivePtr< GeoPhysVol > back_inner_envelope(void) const
void put_back_indexing_rings(GeoIntrusivePtr< GeoPhysVol >) const
void put_front_inner_barettes(GeoIntrusivePtr< GeoPhysVol >) const
void put_front_outer_longbar(GeoIntrusivePtr< GeoPhysVol >) const
GeoIntrusivePtr< GeoPhysVol > front_envelope(void) const
map_t getMap(const IRDBRecordset_ptr &db, const std::string &s) const
std::map< std::string, unsigned int > map_t
double getNumber(const IRDBRecordset_ptr &db, const map_t &m, const std::string &idx, const char *number, double defval=0.) const
void put_back_inner_barettes(GeoIntrusivePtr< GeoPhysVol >) const
void put_back_middle_ring(GeoIntrusivePtr< GeoPhysVol >) const
virtual GeoIntrusivePtr< GeoPhysVol > GetEnvelope(void) const
GeoIntrusivePtr< GeoPhysVol > middle_envelope(void) const
!!!
void put_front_outer_extracyl(GeoIntrusivePtr< GeoPhysVol >) const
void put_back_outer_ring(GeoIntrusivePtr< GeoPhysVol >) const
void put_front_outer_electronics(GeoIntrusivePtr< GeoPhysVol >) const
GeoPcon * getPcon(const std::string &) const
void put_back_outer_barettes(GeoIntrusivePtr< GeoPhysVol >) const
void put_front_middle_ring(GeoIntrusivePtr< GeoPhysVol >) const
map_t getNumbersMap(const IRDBRecordset_ptr &db, const std::string &s) const
void put_back_inner_ring(GeoIntrusivePtr< GeoPhysVol >) const
GeoIntrusivePtr< GeoPhysVol > inner_envelope(void) const
GeoIntrusivePtr< GeoPhysVol > back_outer_envelope(void) const
void put_front_outer_barettes(GeoIntrusivePtr< GeoPhysVol >) const
GeoIntrusivePtr< GeoPhysVol > front_inner_envelope(void) const
std::string basename(std::string name)
Definition utils.cxx:207
std::string number(const double &d, const std::string &s)
Definition utils.cxx:186