254{
255
256 double divisionAngle = 360 * Gaudi::Units::degree /
m_skisPerLayer;
257
260 id.setPhiModule(iSki);
262
263 }
264 return nullptr;
265 }
266
267
268
270
271
272
273
274
275
276
278 GeoLogVol * activeLayerLog =
new GeoLogVol(
getName()+
"Active", activeLayerEnvelopeShape,
m_materials->gasMaterial());
279 GeoPhysVol * activeLayer = new GeoPhysVol(activeLayerLog);
280
282 std::ostringstream
name;
name <<
"Ski#" << iSki;
283
285
288 GeoTrf::Transform3D rot = GeoTrf::RotateZ3D(
m_tilt)*GeoTrf::RotateZ3D(
phi);
289
290
291
292 GeoTrf::Transform3D trans(GeoTrf::Transform3D(GeoTrf::Translate3D(
pos.x(),
pos.y(),
pos.z())*rot) *
m_ski->getRefPointTransform()->getTransform().inverse());
293
294 activeLayer->add(new GeoAlignableTransform(trans));
295 activeLayer->add(
new GeoNameTag(
name.str()));
296 activeLayer->add(new GeoIdentifierTag(iSki));
297 id.setPhiModule(iSki);
298 activeLayer->add(
m_ski->build(
id));
299 }
300
301
303 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(clampZPos)));
304 activeLayer->add(
m_clamp->getVolume());
305 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-clampZPos)));
306 activeLayer->add(
m_clamp->getVolume());
307
309 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(coolingZPos)));
311 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-coolingZPos)));
313
314
315
316
317
318 const GeoTube * auxLayerEnvelopeShape =
new GeoTube(
m_skiAux->innerRadius(),
m_skiAux->outerRadius(),
320 GeoLogVol * auxLayerLog =
new GeoLogVol(
getName()+
"Aux", auxLayerEnvelopeShape,
m_materials->gasMaterial());
321 GeoPhysVol * auxLayer = new GeoPhysVol(auxLayerLog);
322
324
326 auxLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(
phi)));
327 auxLayer->add(
m_skiAux->getVolume());
328 }
329
330
331
332
333
334
335
336
337
339 GeoLogVol * supportLayerLog =
new GeoLogVol(
getName()+
"Support", supportLayerTube,
341 GeoPhysVol * supportLayer = new GeoPhysVol(supportLayerLog);
342
343
345 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(flangeZPos)));
346 supportLayer->add(
m_flange->getVolume());
347 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-flangeZPos)));
348 supportLayer->add(
m_flange->getVolume());
349
350
352
354
356 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(fibreMaskZPos)));
358 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-fibreMaskZPos)));
360
361
365 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(jewelAngle)*GeoTrf::TranslateX3D(jewelRadius)*GeoTrf::TranslateZ3D(
m_zEndJewel)));
367 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(jewelAngle)*GeoTrf::TranslateX3D(jewelRadius)*GeoTrf::TranslateZ3D(-
m_zEndJewel)));
369 }
370
371
375 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(scorpionAngle)*GeoTrf::TranslateX3D(scorpionRadius)*GeoTrf::TranslateZ3D(
m_zScorpion)));
377 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(scorpionAngle)*GeoTrf::TranslateX3D(scorpionRadius)*GeoTrf::TranslateZ3D(-
m_zScorpion)));
379 }
380 }
381
382
384 xMat.add(supportLayer, std::format(
"SCTLayer{}",
m_iLayer));
385
386
387 layer->add(activeLayer);
388 layer->add(auxLayer);
389 layer->add(supportLayer);
390
392}
Scalar phi() const
phi method
const std::string & getName() const
SCT_GeometryManager * m_geometryManager
SCT_MaterialManager * m_materials
std::unique_ptr< SCT_FSIFibreMask > m_fibreMask
double m_outerRadiusActive
std::unique_ptr< SCT_Flange > m_flange
double m_innerRadiusActive
std::unique_ptr< SCT_SkiAux > m_skiAux
std::unique_ptr< SCT_Clamp > m_clamp
double m_outerRadiusOfSupport
std::unique_ptr< SCT_CoolingEnd > m_coolingEnd
std::unique_ptr< SCT_SupportCyl > m_supportCyl
std::unique_ptr< SCT_FSIEndJewel > m_endJewel
std::unique_ptr< SCT_FSIScorpion > m_scorpion
GeoModelIO::ReadGeoModel * m_sqliteReader