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
8#include "SCT_Identifier.h"
9#include <string>
10#include <map>
11#include <memory>
12
13namespace InDetDD{class SCT_DetectorManager;}
16
17class GeoLogVol;
18class GeoVPhysVol;
19class GeoFullPhysVol;
20class GeoAlignableTransform;
21
22namespace GeoModelIO {
23 class ReadGeoModel;
24}
25
27{
28
29public:
30 SCT_ComponentFactory(const std::string & name,
31 InDetDD::SCT_DetectorManager* detectorManager,
32 SCT_GeometryManager* geometryManager,
33 SCT_MaterialManager* materials);
34
35 const std::string & getName() const {return m_name;}
36
37protected:
41
42 double epsilon() const;
44
45private:
46 std::string m_name;
47 static const double s_epsilon;
48
49};
50
51
53{
54
55public:
56 SCT_SharedComponentFactory(const std::string & name,
57 InDetDD::SCT_DetectorManager* detectorManager,
58 SCT_GeometryManager* geometryManager,
59 SCT_MaterialManager* materials=nullptr) :
60 SCT_ComponentFactory(name, detectorManager, geometryManager, materials)
61 {};
62
63 GeoVPhysVol * getVolume() {return m_physVolume;}
64
65protected:
66 GeoVPhysVol * m_physVolume{};
67 virtual GeoVPhysVol * build() = 0;
68
69};
70
72{
73
74public:
75 SCT_UniqueComponentFactory(const std::string & name,
76 InDetDD::SCT_DetectorManager* detectorManager,
77 SCT_GeometryManager* geometryManager,
78 SCT_MaterialManager* materials=nullptr,
79 GeoModelIO::ReadGeoModel* sqliteReader=nullptr,
80 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> mapFPV=nullptr,
81 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> mapAX=nullptr);
82
83 virtual GeoVPhysVol * build(SCT_Identifier id) = 0;
84
85protected:
86 const GeoLogVol * m_logVolume{};
87 GeoModelIO::ReadGeoModel* m_sqliteReader{};
88
89 virtual const GeoLogVol * preBuild() = 0;
90
91 std::shared_ptr<std::map<std::string, GeoFullPhysVol*>> m_mapFPV;
92 std::shared_ptr<std::map<std::string, GeoAlignableTransform*>> m_mapAX;
93
94};
95
96#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.