ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_ComponentFactory.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef SCT_GEOMODEL_SCT_COMPONENTFACTORY_H
6#define SCT_GEOMODEL_SCT_COMPONENTFACTORY_H
7
10#include "SCT_Identifier.h"
11#include <string>
12#include <map>
13#include <memory>
14
15namespace InDetDD{class SCT_DetectorManager;}
18
19class GeoLogVol;
20class GeoVPhysVol;
21class GeoFullPhysVol;
22class GeoAlignableTransform;
23
24namespace GeoModelIO {
25 class ReadGeoModel;
26}
27
29{
30
31public:
32 SCT_ComponentFactory(const std::string & name,
33 InDetDD::SCT_DetectorManager* detectorManager,
34 SCT_GeometryManager* geometryManager,
35 SCT_MaterialManager* materials);
36
37 const std::string & getName() const {return m_name;}
38
39protected:
43
44 double epsilon() const;
46
47private:
48 std::string m_name;
49 static const double s_epsilon;
50
51};
52
53
55{
56
57public:
58 SCT_SharedComponentFactory(const std::string & name,
59 InDetDD::SCT_DetectorManager* detectorManager,
60 SCT_GeometryManager* geometryManager,
61 SCT_MaterialManager* materials=nullptr) :
62 SCT_ComponentFactory(name, detectorManager, geometryManager, materials)
63 {};
64
65 GeoVPhysVol * getVolume() {return m_physVolume;}
66
67protected:
68 GeoVPhysVol * m_physVolume{};
69 virtual GeoVPhysVol * build() = 0;
70
71};
72
74{
75
76public:
77 SCT_UniqueComponentFactory(const std::string & name,
78 InDetDD::SCT_DetectorManager* detectorManager,
79 SCT_GeometryManager* geometryManager,
80 SCT_MaterialManager* materials=nullptr,
81 GeoModelIO::ReadGeoModel* sqliteReader=nullptr,
82 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV=nullptr,
83 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX=nullptr);
84
85 virtual GeoVPhysVol * build(SCT_Identifier id) = 0;
86
87protected:
88 const GeoLogVol * m_logVolume{};
89 GeoModelIO::ReadGeoModel* m_sqliteReader{};
90
91 virtual const GeoLogVol * preBuild() = 0;
92
93 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> m_mapFPV;
94 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> m_mapAX;
95
96};
97
98#endif // SCT_GEOMODEL_SCT_COMPONENTFACTORY_H
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
const std::string & getName() const
SCT_ComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials)
static const double s_epsilon
InDetDD::SCT_DetectorManager * m_detectorManager
virtual ~SCT_ComponentFactory()
SCT_GeometryManager * m_geometryManager
SCT_MaterialManager * m_materials
virtual GeoVPhysVol * build()=0
SCT_SharedComponentFactory(const std::string &name, InDetDD::SCT_DetectorManager *detectorManager, SCT_GeometryManager *geometryManager, SCT_MaterialManager *materials=nullptr)
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::shared_ptr< std::map< std::string, GeoFullPhysVol * > > m_mapFPV
virtual const GeoLogVol * preBuild()=0
std::shared_ptr< std::map< std::string, GeoAlignableTransform * > > m_mapAX
GeoModelIO::ReadGeoModel * m_sqliteReader
virtual GeoVPhysVol * build(SCT_Identifier id)=0
Message Stream Member.