14#include "GeoModelRead/ReadGeoModel.h"
15#include "GeoModelKernel/GeoTrd.h"
16#include "GeoModelKernel/GeoShape.h"
17#include "GeoModelKernel/GeoLogVol.h"
18#include "GeoModelKernel/GeoShapeShift.h"
19#include "GeoModelKernel/GeoShapeUnion.h"
20#include "GeoModelKernel/GeoPhysVol.h"
21#include "GeoModelKernel/GeoFullPhysVol.h"
22#include "GeoModelKernel/GeoNameTag.h"
23#include "GeoModelKernel/GeoTransform.h"
24#include "GeoModelKernel/GeoAlignableTransform.h"
25#include "GeoModelKernel/GeoMaterial.h"
26#include "GaudiKernel/SystemOfUnits.h"
28#include "GeoModelKernel/GeoDefinitions.h"
47 GeoModelIO::ReadGeoModel* sqliteReader,
48 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV,
49 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX)
120 const GeoLogVol * sensorLog=
nullptr;
128 const GeoTrd * sensorShapeN=
nullptr;
136 const GeoShape * sensorShape =
nullptr;
139 sensorShape = sensorShapeF;
145 const GeoShape & sensorPosN = (*sensorShapeN<< GeoTrf::TranslateZ3D(positionNearZ)) ;
148 const GeoShape & sensorPosF = (*sensorShapeF<< GeoTrf::TranslateZ3D(positionFarZ) );
149 sensorShape = &(sensorPosF.add(sensorPosN));
158 const GeoShape & sensorPosN = (*sensorShapeN<< GeoTrf::TranslateZ3D(positionZ) );
226 double halfHeight1=0;
227 double halfHeight2=0;
248 std::cout <<
"ERROR!!!! SCT_FwdSensor: Invalid ring type" << std::endl;
251 double etaCenter = 0;
252 double phiCenter = 0;
258 int cells = parameters->fwdSensorNumReadoutStrips(
m_ringType);
262 double step = parameters->fwdSensorAngularPitch(
m_ringType);
269 int readoutSide = +1;
272 std::unique_ptr<SCT_ForwardModuleSideDesign> design = std::make_unique<SCT_ForwardModuleSideDesign>(
m_thicknessN,
306 GeoFullPhysVol * sensor=
nullptr;
310 std::string key=
"FwdSensor_Side#"+std::to_string(
id.getSide())+
"_"+std::to_string(
id.getBarrelEC())+
"_"+std::to_string(
id.getLayerDisk())+
"_"+std::to_string(
id.getEtaModule())+
"_"+std::to_string(
id.getPhiModule());
312 sensor = (*m_mapFPV)[key];
336 std::cout <<
"WARNING!!!!: No SCT id helper and so no elements being produced." << std::endl;
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
Helper class to concentrate common items, such as the pointer to the IdHelper, the lorentzAngle tool ...
const AtlasDetectorID * getIdHelper() const
Class to hold geometrical description of a silicon detector element.
const std::string & getName() const
InDetDD::SCT_DetectorManager * m_detectorManager
SCT_GeometryManager * m_geometryManager
SCT_MaterialManager * m_materials
virtual const GeoLogVol * preBuild()
virtual GeoVPhysVol * build(SCT_Identifier id)
const GeoMaterial * m_materialGlass
double m_activeHalfLengthFar
std::atomic_bool m_noElementWarning
GeoIntrusivePtr< GeoPhysVol > m_inactive
SCT_FwdSensor(const std::string &name, int ringType, 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)
const InDetDD::SiDetectorDesign * m_design
double m_activeHalfLengthNear
const GeoMaterial * m_materialSensor
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)
const GeoLogVol * m_logVolume
GeoModelIO::ReadGeoModel * m_sqliteReader