256{
257
258 double divisionAngle = 360 * Gaudi::Units::degree /
m_skisPerLayer;
259
262 id.setPhiModule(iSki);
264
265 }
266 return nullptr;
267 }
268
269
270
272
273
274
275
276
277
278
280 GeoLogVol * activeLayerLog =
new GeoLogVol(
getName()+
"Active", activeLayerEnvelopeShape,
m_materials->gasMaterial());
281 GeoPhysVol * activeLayer = new GeoPhysVol(activeLayerLog);
282
284 std::ostringstream
name;
name <<
"Ski#" << iSki;
285
287
290 GeoTrf::Transform3D rot = GeoTrf::RotateZ3D(
m_tilt)*GeoTrf::RotateZ3D(
phi);
291
292
293
294 GeoTrf::Transform3D trans(GeoTrf::Transform3D(GeoTrf::Translate3D(
pos.x(),
pos.y(),
pos.z())*rot) *
m_ski->getRefPointTransform()->getTransform().inverse());
295
296 activeLayer->add(new GeoAlignableTransform(trans));
297 activeLayer->add(
new GeoNameTag(
name.str()));
298 activeLayer->add(new GeoIdentifierTag(iSki));
299 id.setPhiModule(iSki);
300 activeLayer->add(
m_ski->build(
id));
301 }
302
303
305 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(clampZPos)));
306 activeLayer->add(
m_clamp->getVolume());
307 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-clampZPos)));
308 activeLayer->add(
m_clamp->getVolume());
309
311 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(coolingZPos)));
313 activeLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-coolingZPos)));
315
316
317
318
319
320 const GeoTube * auxLayerEnvelopeShape =
new GeoTube(
m_skiAux->innerRadius(),
m_skiAux->outerRadius(),
322 GeoLogVol * auxLayerLog =
new GeoLogVol(
getName()+
"Aux", auxLayerEnvelopeShape,
m_materials->gasMaterial());
323 GeoPhysVol * auxLayer = new GeoPhysVol(auxLayerLog);
324
326
328 auxLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(
phi)));
329 auxLayer->add(
m_skiAux->getVolume());
330 }
331
332
333
334
335
336
337
338
339
341 GeoLogVol * supportLayerLog =
new GeoLogVol(
getName()+
"Support", supportLayerTube,
343 GeoPhysVol * supportLayer = new GeoPhysVol(supportLayerLog);
344
345
347 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(flangeZPos)));
348 supportLayer->add(
m_flange->getVolume());
349 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-flangeZPos)));
350 supportLayer->add(
m_flange->getVolume());
351
352
354
356
358 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(fibreMaskZPos)));
360 supportLayer->add(new GeoTransform(GeoTrf::TranslateZ3D(-fibreMaskZPos)));
362
363
367 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(jewelAngle)*GeoTrf::TranslateX3D(jewelRadius)*GeoTrf::TranslateZ3D(
m_zEndJewel)));
369 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(jewelAngle)*GeoTrf::TranslateX3D(jewelRadius)*GeoTrf::TranslateZ3D(-
m_zEndJewel)));
371 }
372
373
377 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(scorpionAngle)*GeoTrf::TranslateX3D(scorpionRadius)*GeoTrf::TranslateZ3D(
m_zScorpion)));
379 supportLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(scorpionAngle)*GeoTrf::TranslateX3D(scorpionRadius)*GeoTrf::TranslateZ3D(-
m_zScorpion)));
381 }
382 }
383
384
387
388
389
390 layer->add(activeLayer);
391 layer->add(auxLayer);
392 layer->add(supportLayer);
393
395}
Scalar phi() const
phi method
const std::string & getName() const
std::string intToString(int i) 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