43 {
44
45 GeoFullPhysVol* barrelPhys{nullptr};
46
48 barrelPhys = (*m_mapFPV)["Barrel"];
49 }
50 else {
51
52
53
54 double rmin =
m_gmt_mgr->PixelBarrelRMin();
55 double rmax =
m_gmt_mgr->PixelBarrelRMax();
56 double halflength =
m_gmt_mgr->PixelBarrelHalfLength();
57 const GeoMaterial* air =
m_mat_mgr->getMaterial(
"std::Air");
58 const GeoTube* barrelTube = new GeoTube(rmin,rmax,halflength);
59 const GeoLogVol* barrelLog = new GeoLogVol("Barrel",barrelTube,air);
60 barrelPhys = new GeoFullPhysVol(barrelLog);
61 }
62
63
65
66
69
70
71
72
74 for(
int ii = 0; ii <
m_gmt_mgr->PixelBarrelNLayer(); ii++){
75
78 std::ostringstream lname;
79 lname << "Layer" << ii;
80
81 Identifier
id =
m_gmt_mgr->getIdHelper()->wafer_id(0,ii,0,0);
82
84 GeoAlignableTransform* xform = (*m_mapAX)[lname.str()];
86 GeoFullPhysVol* layerFPV = (*m_mapFPV) [lname.str()];
87
88 m_DDmgr->addAlignableTransform(1,
id, xform, layerFPV);
89
90
91
92
93
94 InDetDD::ExtraMaterial xMat(
m_gmt_mgr->distortedMatManager());
95 xMat.add(layerFPV,"PixelLayer");
96 std::ostringstream ostr; ostr <<
m_gmt_mgr->GetLD();
97 xMat.add(layerFPV,"PixelLayer"+ostr.str());
98 }
99 else {
100
101 double layerZshift =
m_gmt_mgr->PixelLayerGlobalShift();
102 GeoAlignableTransform* xform = new GeoAlignableTransform(GeoTrf::Translate3D(0.,0.,layerZshift));
103 GeoVPhysVol* layerphys =
layer.Build();
104 GeoNameTag *
tag =
new GeoNameTag(lname.str());
105 barrelPhys->add(tag);
106 barrelPhys->add(new GeoIdentifierTag(ii));
107 barrelPhys->add(xform);
108 barrelPhys->add(layerphys);
109
110
111 m_DDmgr->addAlignableTransform(1,
id, xform, layerphys);
112
113
115 {
116
117 GeoNameTag * tagSupportA = new GeoNameTag("StaveRingAndEndblocks_A");
118 GeoTransform *xformSupportA =
layer.getSupportTrfA();
119 GeoPhysVol *supportPhys_A =
layer.getSupportA();
120 barrelPhys->add(tagSupportA);
121 barrelPhys->add(xformSupportA);
122 barrelPhys->add(supportPhys_A);
123
124
125 GeoNameTag * tagSupportC = new GeoNameTag("StaveRingAndEndblocks_C");
126 GeoTransform *xformSupportC =
layer.getSupportTrfC();
127 GeoPhysVol *supportPhys_C =
layer.getSupportC();
128 barrelPhys->add(tagSupportC);
129 barrelPhys->add(xformSupportC);
130 barrelPhys->add(supportPhys_C);
131
132
134 GeoNameTag *tagM = new GeoNameTag("Brl0M_StaveRing");
135 GeoTransform *xformSupportMidRing =
layer.getSupportTrfMidRing();
136 GeoVPhysVol *supportPhysMidRing =
layer.getSupportMidRing();
137 barrelPhys->add(tagM);
138 barrelPhys->add(xformSupportMidRing);
139 barrelPhys->add(supportPhysMidRing);
140 }
141
142
143
146 iFlexSrv.Build();
147
148 GeoNameTag * tagFlexA = new GeoNameTag("PP0Flex_A");
149 GeoTransform *xformFlexA = iFlexSrv.getSupportTrfA();
150 GeoPhysVol *flexPhys_A = iFlexSrv.getSupportA();
151 barrelPhys->add(tagFlexA);
152 barrelPhys->add(xformFlexA);
153 barrelPhys->add(flexPhys_A);
154
155 GeoNameTag * tagFlexC = new GeoNameTag("PP0Flex_C");
156 GeoTransform *xformFlexC = iFlexSrv.getSupportTrfC();
157 GeoPhysVol *flexPhys_C = iFlexSrv.getSupportC();
158 barrelPhys->add(tagFlexC);
159 barrelPhys->add(xformFlexC);
160 barrelPhys->add(flexPhys_C);
161 }
162 }
163 }
164 }
165 else
166 {
168 }
169 }
170
172
173
174
177 m_pixServices->getServMatBuilder()->buildAndPlace(
"B", barrelPhys);
178 }
179
180
181
182
185 frame.BuildInBarrel(barrelPhys);
186 }
187 }
188
189
190 InDetDD::ExtraMaterial xMat(
m_gmt_mgr->distortedMatManager());
191 xMat.add(barrelPhys,"PixelBarrel");
192
193 return barrelPhys;
194}
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
PixelGeometryManager * m_gmt_mgr
InDetDD::PixelDetectorManager * m_DDmgr
InDetMaterialManager * m_mat_mgr