|
ATLAS Offline Software
|
#include <SCT_FwdRing.h>
|
| SCT_FwdRing (const std::string &name, SCT_FwdModule *module, int iWheel, int iRing, int ec, 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_FwdRing () |
|
| SCT_FwdRing (const SCT_FwdRing &)=delete |
|
SCT_FwdRing & | operator= (const SCT_FwdRing &)=delete |
|
int | numModules () const |
|
double | moduleStagger () const |
|
int | identifier () const |
|
int | ringSide () const |
|
double | ringOffset () const |
|
double | thickness () const |
|
double | thicknessInner () const |
|
double | thicknessOuter () const |
|
double | innerRadius () const |
|
double | outerRadius () const |
|
int | stereoSign () const |
|
bool | discRotated () const |
|
virtual GeoVPhysVol * | build (SCT_Identifier id) |
|
const SCT_FwdModule * | module () const |
|
const std::string & | getName () const |
|
std::string | intToString (int i) const |
|
Definition at line 21 of file SCT_FwdRing.h.
◆ SCT_FwdRing() [1/2]
SCT_FwdRing::SCT_FwdRing |
( |
const std::string & |
name, |
|
|
SCT_FwdModule * |
module, |
|
|
int |
iWheel, |
|
|
int |
iRing, |
|
|
int |
ec, |
|
|
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_FwdRing()
SCT_FwdRing::~SCT_FwdRing |
( |
| ) |
|
◆ SCT_FwdRing() [2/2]
◆ build()
Implements SCT_UniqueComponentFactory.
Definition at line 173 of file SCT_FwdRing.cxx.
177 GeoPhysVol * ring=
nullptr;
178 bool negativeEndCap = (
id.getBarrelEC() < 0);
205 int idModule = idNumber;
207 if (negativeEndCap) {
240 ring->add(
new GeoNameTag(moduleName));
241 ring->add(
new GeoIdentifierTag(idModule));
242 GeoAlignableTransform * moduleTransform =
new GeoAlignableTransform(modulePos);
243 ring->add(moduleTransform);
244 id.setPhiModule(idModule);
256 double zModuleServices = 0;
257 double rModuleServices = 0;
258 GeoVPhysVol * moduleServices =
nullptr;
259 if (staggerUpperLower > 0){
270 ring->add(
new GeoTransform(GeoTrf::RotateZ3D(
phi)*GeoTrf::Translate3D(rModuleServices, 0, zModuleServices)));
271 ring->add(moduleServices);
297 int idModule = idNumber;
299 if (negativeEndCap) {
305 id.setPhiModule(idModule);
◆ discRotated()
bool SCT_FwdRing::discRotated |
( |
| ) |
const |
|
inline |
◆ epsilon()
double SCT_ComponentFactory::epsilon |
( |
| ) |
const |
|
protectedinherited |
◆ getName()
const std::string& SCT_ComponentFactory::getName |
( |
| ) |
const |
|
inlineinherited |
◆ getParameters()
void SCT_FwdRing::getParameters |
( |
| ) |
|
|
private |
◆ identifier()
int SCT_FwdRing::identifier |
( |
| ) |
const |
|
inline |
◆ innerRadius()
double SCT_FwdRing::innerRadius |
( |
| ) |
const |
|
inline |
◆ intToString()
std::string SCT_ComponentFactory::intToString |
( |
int |
i | ) |
const |
|
inherited |
◆ makeModuleServices()
void SCT_FwdRing::makeModuleServices |
( |
| ) |
|
|
private |
Definition at line 328 of file SCT_FwdRing.cxx.
349 double moduleServicesHiLength = std::abs(coolingBlkMainR - coolingBlkSecR) + 0.5 *
m_coolingBlockHiMain->deltaR();
350 double moduleServicesLoLength = std::abs(coolingBlkMainR - coolingBlkSecR) + 0.5 *
m_coolingBlockLoMain->deltaR();
355 double moduleOrientation = (coolingBlkMainR > coolingBlkSecR) ? +1 : -1;
360 double coolingBlkHiSecRMid = coolingBlkSecR + moduleOrientation * 0.5 *
m_coolingBlockHiSec->deltaR();
361 double coolingBlkLoSecRMid = coolingBlkSecR + moduleOrientation * 0.5 *
m_coolingBlockLoSec->deltaR();
379 const GeoBox * moduleServicesHiShape =
new GeoBox(0.5*moduleServicesHiLength +
m_safety,
380 0.5*moduleServicesHiWidth +
m_safety,
381 0.5*moduleServicesHiThickness +
m_safety);
382 const GeoBox * moduleServicesLoShape =
new GeoBox(0.5*moduleServicesLoLength +
m_safety,
383 0.5*moduleServicesLoWidth +
m_safety,
384 0.5*moduleServicesLoThickness +
m_safety);
385 const GeoLogVol * moduleServicesHiLog =
new GeoLogVol(
"ModuleServicesHi", moduleServicesHiShape,
m_materials->
gasMaterial());
386 const GeoLogVol * moduleServicesLoLog =
new GeoLogVol(
"ModuleServicesLo", moduleServicesLoShape,
m_materials->
gasMaterial());
◆ module()
◆ moduleStagger()
double SCT_FwdRing::moduleStagger |
( |
| ) |
const |
|
inline |
◆ numModules()
int SCT_FwdRing::numModules |
( |
| ) |
const |
|
inline |
◆ operator=()
◆ outerRadius()
double SCT_FwdRing::outerRadius |
( |
| ) |
const |
|
inline |
◆ preBuild()
const GeoLogVol * SCT_FwdRing::preBuild |
( |
| ) |
|
|
privatevirtual |
Implements SCT_UniqueComponentFactory.
Definition at line 93 of file SCT_FwdRing.cxx.
105 if (
m_numModules % 2) std::cout <<
"SCT_FwdRing: Number of modules in ring must be even." << std::endl;
124 double moduleCount =
angle / divisionAngle;
125 int moduleCountInt =
static_cast<int>(floor(moduleCount +0.5 -0.0001));
127 m_startAngle = divisionAngle * (moduleCount - moduleCountInt);
133 double moduleCountNegEC = angleNegEC / divisionAngle;
134 m_moduleZero =
static_cast<int>(floor(moduleCountNegEC + 0.5 - 0.0001));
164 const GeoShape & ringEnvelopeShape = (*tmpShape << GeoTrf::Translate3D(0, 0, envelopeShift));
◆ ringOffset()
double SCT_FwdRing::ringOffset |
( |
| ) |
const |
|
inline |
◆ ringSide()
int SCT_FwdRing::ringSide |
( |
| ) |
const |
|
inline |
◆ stereoSign()
int SCT_FwdRing::stereoSign |
( |
| ) |
const |
|
inline |
◆ thickness()
double SCT_FwdRing::thickness |
( |
| ) |
const |
|
inline |
◆ thicknessInner()
double SCT_FwdRing::thicknessInner |
( |
| ) |
const |
|
inline |
◆ thicknessOuter()
double SCT_FwdRing::thicknessOuter |
( |
| ) |
const |
|
inline |
◆ m_coolingBlockHiMain
◆ m_coolingBlockHiSec
◆ m_coolingBlockLoMain
◆ m_coolingBlockLoSec
◆ m_detectorManager
◆ m_discRotated
bool SCT_FwdRing::m_discRotated = false |
|
private |
◆ m_discSupportThickness
double SCT_FwdRing::m_discSupportThickness = 0.0 |
|
private |
◆ m_endcap
int SCT_FwdRing::m_endcap |
|
private |
◆ m_firstStagger
int SCT_FwdRing::m_firstStagger = 0 |
|
private |
◆ m_geometryManager
◆ m_identifier
int SCT_FwdRing::m_identifier = 0 |
|
private |
◆ m_innerRadius
double SCT_FwdRing::m_innerRadius = 0.0 |
|
private |
◆ m_iRing
◆ m_iWheel
int SCT_FwdRing::m_iWheel |
|
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_maxModuleServicesBaseToRingCenter
double SCT_FwdRing::m_maxModuleServicesBaseToRingCenter = 0.0 |
|
private |
◆ m_module
◆ m_moduleServicesHi
GeoPhysVol* SCT_FwdRing::m_moduleServicesHi = nullptr |
|
private |
◆ m_moduleServicesHiOuterZPos
double SCT_FwdRing::m_moduleServicesHiOuterZPos = 0.0 |
|
private |
◆ m_moduleServicesHiRPos
double SCT_FwdRing::m_moduleServicesHiRPos = 0.0 |
|
private |
◆ m_moduleServicesHiZPos
double SCT_FwdRing::m_moduleServicesHiZPos = 0.0 |
|
private |
◆ m_moduleServicesLo
GeoPhysVol* SCT_FwdRing::m_moduleServicesLo = nullptr |
|
private |
◆ m_moduleServicesLoOuterZPos
double SCT_FwdRing::m_moduleServicesLoOuterZPos = 0.0 |
|
private |
◆ m_moduleServicesLoRPos
double SCT_FwdRing::m_moduleServicesLoRPos = 0.0 |
|
private |
◆ m_moduleServicesLoZPos
double SCT_FwdRing::m_moduleServicesLoZPos = 0.0 |
|
private |
◆ m_moduleStagger
double SCT_FwdRing::m_moduleStagger = 0.0 |
|
private |
◆ m_moduleZero
int SCT_FwdRing::m_moduleZero = 0 |
|
private |
◆ m_name
std::string SCT_ComponentFactory::m_name |
|
privateinherited |
◆ m_numModules
int SCT_FwdRing::m_numModules = 0 |
|
private |
◆ m_outerRadius
double SCT_FwdRing::m_outerRadius = 0.0 |
|
private |
◆ m_refFirstStagger
int SCT_FwdRing::m_refFirstStagger = 0 |
|
private |
◆ m_refStartAngle
double SCT_FwdRing::m_refStartAngle = 0.0 |
|
private |
◆ m_ringOffset
double SCT_FwdRing::m_ringOffset = 0.0 |
|
private |
◆ m_ringSide
int SCT_FwdRing::m_ringSide = 0 |
|
private |
◆ m_safety
double SCT_FwdRing::m_safety = 0.0 |
|
private |
◆ m_sqliteReader
GeoModelIO::ReadGeoModel* SCT_UniqueComponentFactory::m_sqliteReader |
|
protectedinherited |
◆ m_startAngle
double SCT_FwdRing::m_startAngle = 0.0 |
|
private |
◆ m_stereoSign
int SCT_FwdRing::m_stereoSign = 0 |
|
private |
◆ m_thickness
double SCT_FwdRing::m_thickness = 0.0 |
|
private |
◆ m_thicknessInner
double SCT_FwdRing::m_thicknessInner = 0.0 |
|
private |
◆ m_thicknessOuter
double SCT_FwdRing::m_thicknessOuter = 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
double m_moduleServicesLoOuterZPos
double stereoAngle() const
const SiNumerology & numerology() const
Access Numerology.
std::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
Scalar phi() const
phi method
void makeModuleServices()
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
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_FwdCoolingBlock > m_coolingBlockLoSec
virtual GeoVPhysVol * build(SCT_Identifier id)
const SCT_ForwardParameters * forwardParameters() const
std::unique_ptr< SCT_FwdCoolingBlock > m_coolingBlockLoMain
double m_discSupportThickness
double innerWidth() const
InDetDD::SCT_DetectorManager * m_detectorManager
std::unique_ptr< SCT_FwdCoolingBlock > m_coolingBlockHiMain
const SCT_GeneralParameters * generalParameters() const
double m_moduleServicesLoRPos
const SCT_FwdModule * module() const
double endModuleRadius() const
double outerWidth() const
const GeoMaterial * gasMaterial() const
double m_maxModuleServicesBaseToRingCenter
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Eigen::Affine3d Transform3D
double m_moduleServicesHiZPos
std::string intToString(int i) const
GeoPhysVol * m_moduleServicesHi
static const double s_epsilon
void setNumPhiModulesForDiskRing(int disk, int ring, int nPhiModules)
SCT_MaterialManager * m_materials
std::string to_string(const DetectorType &type)
double innerRadius() const
virtual const GeoLogVol * preBuild()
double m_moduleServicesHiOuterZPos
Eigen::Matrix< double, 3, 1 > Vector3D
double outerRadius() const
const GeoLogVol * m_logVolume
double m_moduleServicesHiRPos
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms. No access to these, they will be changed by manager:
double mainMountPointRadius() const
double sensorCenterRadius() const
GeoModelIO::ReadGeoModel * m_sqliteReader
GeoPhysVol * m_moduleServicesLo
const std::string & getName() const
std::unique_ptr< SCT_FwdCoolingBlock > m_coolingBlockHiSec
double m_moduleServicesLoZPos