|
ATLAS Offline Software
|
#include <SCT_Layer.h>
|
| SCT_Layer (const std::string &name, int iLayer, SCT_Module *module, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials, GeoModelIO::ReadGeoModel *sqliteReader, std::shared_ptr< std::map< std::string, GeoFullPhysVol * >> mapFPV, std::shared_ptr< std::map< std::string, GeoAlignableTransform * >> mapAX) |
|
virtual | ~SCT_Layer () |
|
| SCT_Layer (const SCT_Layer &)=delete |
|
SCT_Layer & | operator= (const SCT_Layer &)=delete |
|
virtual GeoVPhysVol * | build (SCT_Identifier id) |
|
int | skisPerLayer () const |
|
double | tilt () const |
|
int | stereoSign () const |
|
double | radius () const |
|
double | innerRadius () const |
|
double | outerRadius () const |
|
double | length () const |
|
double | skiPhiStart () const |
|
const std::string & | getName () const |
|
std::string | intToString (int i) const |
|
Definition at line 36 of file SCT_Layer.h.
◆ SCT_Layer() [1/2]
SCT_Layer::SCT_Layer |
( |
const std::string & |
name, |
|
|
int |
iLayer, |
|
|
SCT_Module * |
module, |
|
|
InDetDD::SCT_DetectorManager * |
detectorManager, |
|
|
SCT_GeometryManager * |
geometryManager, |
|
|
SCT_MaterialManager * |
materials, |
|
|
GeoModelIO::ReadGeoModel * |
sqliteReader, |
|
|
std::shared_ptr< std::map< std::string, GeoFullPhysVol * >> |
mapFPV, |
|
|
std::shared_ptr< std::map< std::string, GeoAlignableTransform * >> |
mapAX |
|
) |
| |
◆ ~SCT_Layer()
SCT_Layer::~SCT_Layer |
( |
| ) |
|
|
virtual |
◆ SCT_Layer() [2/2]
◆ activeEnvelopeExtent()
void SCT_Layer::activeEnvelopeExtent |
( |
double & |
rmin, |
|
|
double & |
rmax |
|
) |
| |
|
private |
Definition at line 398 of file SCT_Layer.cxx.
406 -(
m_ski->env1RefPointVector()->y()) + 0.5*(
m_ski->env1Width()),
409 -(
m_ski->env2RefPointVector()->y()) + 0.5*(
m_ski->env2Width()),
413 -(
m_ski->env1RefPointVector()->y()) - 0.5*(
m_ski->env1Width()),
420 c4 = GeoTrf::RotateZ3D(
m_tilt)*c4;
424 if (
c1.x() <
c2.x()) {
431 double xmax = vxmax.x();
432 double xmin = vxmin.x();
433 double ymax = vxmax.y();
434 double ymin = vxmin.y();
◆ build()
Implements SCT_UniqueComponentFactory.
Definition at line 255 of file SCT_Layer.cxx.
262 id.setPhiModule(iSki);
281 GeoPhysVol * activeLayer =
new GeoPhysVol(activeLayerLog);
284 std::ostringstream
name;
name <<
"Ski#" << iSki;
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));
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());
311 activeLayer->add(
new GeoTransform(GeoTrf::TranslateZ3D(coolingZPos)));
313 activeLayer->add(
new GeoTransform(GeoTrf::TranslateZ3D(-coolingZPos)));
320 const GeoTube * auxLayerEnvelopeShape =
new GeoTube(
m_skiAux->innerRadius(),
m_skiAux->outerRadius(),
323 GeoPhysVol * auxLayer =
new GeoPhysVol(auxLayerLog);
328 auxLayer->add(
new GeoTransform(GeoTrf::RotateZ3D(
phi)));
329 auxLayer->add(
m_skiAux->getVolume());
341 GeoLogVol * supportLayerLog =
new GeoLogVol(
getName()+
"Support", supportLayerTube,
343 GeoPhysVol * supportLayer =
new GeoPhysVol(supportLayerLog);
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());
358 supportLayer->add(
new GeoTransform(GeoTrf::TranslateZ3D(fibreMaskZPos)));
360 supportLayer->add(
new GeoTransform(GeoTrf::TranslateZ3D(-fibreMaskZPos)));
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)));
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)));
390 layer->add(activeLayer);
391 layer->add(auxLayer);
392 layer->add(supportLayer);
◆ calcSkiPhiOffset()
double SCT_Layer::calcSkiPhiOffset |
( |
| ) |
|
|
private |
Definition at line 442 of file SCT_Layer.cxx.
460 - ctilt * moduleHalfThickness - stilt * activeHalfWidth;
461 double yin = - stilt * moduleHalfThickness + ctilt * activeHalfWidth;
463 + ctilt * moduleHalfThickness - stilt * activeHalfWidth;
464 double yout = stilt * moduleHalfThickness + ctilt * activeHalfWidth;
465 double alpha_in =
atan(yin/xin);
466 double alpha_out =
atan(yout/xout);
467 double alpha =
std::max(alpha_in, alpha_out);
469 int tiltSign = (
m_tilt < 0) ? -1 : 1;
472 double skiPhiOffset = tiltSign * (0.5 * divisionAngle - alpha);
◆ epsilon()
double SCT_ComponentFactory::epsilon |
( |
| ) |
const |
|
protectedinherited |
◆ getName()
const std::string& SCT_ComponentFactory::getName |
( |
| ) |
const |
|
inlineinherited |
◆ getParameters()
void SCT_Layer::getParameters |
( |
| ) |
|
|
private |
◆ innerRadius()
double SCT_Layer::innerRadius |
( |
| ) |
const |
|
inline |
◆ intToString()
std::string SCT_ComponentFactory::intToString |
( |
int |
i | ) |
const |
|
inherited |
◆ length()
double SCT_Layer::length |
( |
| ) |
const |
|
inline |
◆ operator=()
◆ outerRadius()
double SCT_Layer::outerRadius |
( |
| ) |
const |
|
inline |
◆ preBuild()
const GeoLogVol * SCT_Layer::preBuild |
( |
| ) |
|
|
privatevirtual |
Implements SCT_UniqueComponentFactory.
Definition at line 110 of file SCT_Layer.cxx.
131 m_skiPhiStart = divisionAngle * (moduleCount - floor(moduleCount +0.5 -0.0001));
148 m_fibreMask = std::make_unique<SCT_FSIFibreMask>(
"FSIFibreMask"+layerNumStr,
m_iLayer, length_mask,
167 int tiltSign = (
m_tilt < 0) ? -1 : +1;
170 double powerTapeOffset = bracketOffset - tiltSign * 0.5*divisionAngle;
176 m_skiAux = std::make_unique<SCT_SkiAux>(
"SkiAux"+layerNumStr,
195 double coolingInnerRadius =
m_clamp->outerRadius();
198 m_coolingEnd = std::make_unique<SCT_CoolingEnd>(
"CoolingEnd"+layerNumStr,
m_iLayer, coolingInnerRadius, coolingLength,
210 double rMinActive, rMaxActive;
220 rMinActive =
m_skiAux->outerRadius();
247 if (
m_skiAux->outerRadius() > rMinActive) {
248 std::cout <<
"----> WARNING: SCT_Layer: Overlap between active layer and aux layer." << std::endl;
◆ radius()
double SCT_Layer::radius |
( |
| ) |
const |
|
inline |
◆ skiPhiStart()
double SCT_Layer::skiPhiStart |
( |
| ) |
const |
|
inline |
◆ skisPerLayer()
int SCT_Layer::skisPerLayer |
( |
| ) |
const |
|
inline |
◆ stereoSign()
int SCT_Layer::stereoSign |
( |
| ) |
const |
|
inline |
◆ tilt()
double SCT_Layer::tilt |
( |
| ) |
const |
|
inline |
◆ m_activeLength
double SCT_Layer::m_activeLength = 0.0 |
|
private |
◆ m_bracket
◆ m_bracketPhiOffset
double SCT_Layer::m_bracketPhiOffset = 0.0 |
|
private |
◆ m_clamp
std::unique_ptr<SCT_Clamp> SCT_Layer::m_clamp |
|
private |
◆ m_coolingEnd
◆ m_cylinderLength
double SCT_Layer::m_cylinderLength = 0.0 |
|
private |
◆ m_detectorManager
◆ m_endJewel
◆ m_fibreMask
◆ m_flange
◆ m_geometryManager
◆ m_harness
◆ m_iLayer
◆ m_includeFSI
bool SCT_Layer::m_includeFSI = false |
|
private |
◆ m_innerRadius
double SCT_Layer::m_innerRadius = 0.0 |
|
private |
◆ m_innerRadiusActive
double SCT_Layer::m_innerRadiusActive = 0.0 |
|
private |
◆ m_logVolume
const GeoLogVol* SCT_UniqueComponentFactory::m_logVolume |
|
protectedinherited |
◆ m_mapAX
std::shared_ptr<std::map<std::string, GeoAlignableTransform*> > SCT_UniqueComponentFactory::m_mapAX |
|
protectedinherited |
◆ m_mapFPV
std::shared_ptr<std::map<std::string, GeoFullPhysVol*> > SCT_UniqueComponentFactory::m_mapFPV |
|
protectedinherited |
◆ m_materials
◆ m_module
◆ m_name
std::string SCT_ComponentFactory::m_name |
|
privateinherited |
◆ m_nRepeatEndJewel
int SCT_Layer::m_nRepeatEndJewel = 0 |
|
private |
◆ m_nRepeatScorpion
int SCT_Layer::m_nRepeatScorpion = 0 |
|
private |
◆ m_outerRadius
double SCT_Layer::m_outerRadius = 0.0 |
|
private |
◆ m_outerRadiusActive
double SCT_Layer::m_outerRadiusActive = 0.0 |
|
private |
◆ m_outerRadiusOfSupport
double SCT_Layer::m_outerRadiusOfSupport = 0.0 |
|
private |
◆ m_phiEndJewel
double SCT_Layer::m_phiEndJewel = 0.0 |
|
private |
◆ m_phiRefModule
double SCT_Layer::m_phiRefModule = 0.0 |
|
private |
◆ m_phiScorpion
double SCT_Layer::m_phiScorpion = 0.0 |
|
private |
◆ m_radius
double SCT_Layer::m_radius = 0.0 |
|
private |
◆ m_safety
double SCT_Layer::m_safety = 0.0 |
|
private |
◆ m_scorpion
◆ m_ski
std::unique_ptr<SCT_Ski> SCT_Layer::m_ski |
|
private |
◆ m_skiAux
◆ m_skiAuxPhiStart
double SCT_Layer::m_skiAuxPhiStart = 0.0 |
|
private |
◆ m_skiPhiStart
double SCT_Layer::m_skiPhiStart = 0.0 |
|
private |
◆ m_skiPowerTape
◆ m_skisPerLayer
int SCT_Layer::m_skisPerLayer = 0 |
|
private |
◆ m_sqliteReader
GeoModelIO::ReadGeoModel* SCT_UniqueComponentFactory::m_sqliteReader |
|
protectedinherited |
◆ m_stereoSign
int SCT_Layer::m_stereoSign = 0 |
|
private |
◆ m_supportCyl
◆ m_tilt
double SCT_Layer::m_tilt = 0.0 |
|
private |
◆ m_zEndJewel
double SCT_Layer::m_zEndJewel = 0.0 |
|
private |
◆ m_zScorpion
double SCT_Layer::m_zScorpion = 0.0 |
|
private |
◆ s_epsilon
const double SCT_ComponentFactory::s_epsilon = 1.0e-6 * Gaudi::Units::mm |
|
staticprivateinherited |
The documentation for this class was generated from the following files:
SCT_GeometryManager * m_geometryManager
std::unique_ptr< SCT_Ski > m_ski
const SiNumerology & numerology() const
Access Numerology.
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Scalar phi() const
phi method
std::unique_ptr< SCT_CoolingEnd > m_coolingEnd
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
SCT_UniqueComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr, GeoModelIO::ReadGeoModel *sqliteReader=nullptr, std::shared_ptr< std::map< std::string, GeoFullPhysVol * >> mapFPV=nullptr, std::shared_ptr< std::map< std::string, GeoAlignableTransform * >> mapAX=nullptr)
std::unique_ptr< SCT_Bracket > m_bracket
double m_outerRadiusOfSupport
double activeWidth() const
InDetDD::SCT_DetectorManager * m_detectorManager
double m_innerRadiusActive
const SCT_GeneralParameters * generalParameters() const
double m_bracketPhiOffset
std::unique_ptr< SCT_Clamp > m_clamp
std::unique_ptr< SCT_SkiPowerTape > m_skiPowerTape
std::unique_ptr< SCT_FSIFibreMask > m_fibreMask
std::unique_ptr< SCT_FSIEndJewel > m_endJewel
const GeoMaterial * gasMaterial() const
Eigen::Affine3d Transform3D
std::unique_ptr< SCT_SupportCyl > m_supportCyl
const SCT_BarrelParameters * barrelParameters() const
InDetDD::DistortedMaterialManager * distortedMatManager() const
std::string intToString(int i) const
static const double s_epsilon
std::unique_ptr< SCT_SkiAux > m_skiAux
SCT_MaterialManager * m_materials
void setNumEtaModulesForLayer(int layer, int nEtaModules)
double m_outerRadiusActive
Eigen::Matrix< double, 3, 1 > Vector3D
const GeoLogVol * m_logVolume
std::unique_ptr< SCT_FSIScorpion > m_scorpion
GeoModelIO::ReadGeoModel * m_sqliteReader
std::unique_ptr< SCT_Harness > m_harness
void setNumPhiModulesForLayer(int layer, int nPhiModules)
const std::string & getName() const
std::unique_ptr< SCT_Flange > m_flange
void activeEnvelopeExtent(double &rmin, double &rmax)
virtual const GeoLogVol * preBuild()