ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_DetectorManager.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6// SCT_DetectorManager.h
8
9#ifndef INDETREADOUTGEOMETRY_SCT_DETECTORMANAGER_H
10#define INDETREADOUTGEOMETRY_SCT_DETECTORMANAGER_H
11
13
14#include "GeoModelKernel/GeoVPhysVol.h"
15
21
24
25#include <memory>
26
27class StoreGateSvc;
28class Identifier;
29class IdentifierHash;
30class GeoAlignableTransform;
31class GeoVFullPhysVol;
32class GeoVPhysVol;
33class GeoVAlignmentStore;
35
36namespace InDetDD {
37
39
49
51
52 public:
53
56
58 SCT_DetectorManager( StoreGateSvc* detStore, const std::string& name, const bool doEncapNeighbour=false );
59
64 virtual unsigned int getNumTreeTops() const override;
65 virtual PVConstLink getTreeTop(unsigned int i) const override;
67
68 void addTreeTop(const PVConstLink& vol);
69
70
75
76 virtual const SiDetectorElement* getDetectorElement(const Identifier& id) const override;
77
79 virtual const SiDetectorElement* getDetectorElement(const IdentifierHash& idHash) const override;
80
82 const SiDetectorElement* getDetectorElement(int barrel_endcap, int layer_wheel, int phi_module, int eta_module, int side) const;
83
88 virtual const SiDetectorElementCollection* getDetectorElementCollection() const override;
94
96 virtual void addDetectorElement(SiDetectorElement* element) override;
98
100 virtual void addAlignableTransform (int level,
101 const Identifier& id,
102 GeoAlignableTransform* xf,
103 const GeoVFullPhysVol* child);
104
106 virtual void addAlignableTransform (int level,
107 const Identifier& id,
108 GeoAlignableTransform* xf,
109 const GeoVPhysVol* child);
110
112 virtual void addAlignableTransform (int, const Identifier&, GeoAlignableTransform*) override {};
113
115 virtual void initNeighbours() override;
116
118 virtual bool isPixel() const override {return false;}
119
121 virtual bool identifierBelongs(const Identifier& id) const override;
122
124 const SCT_ModuleSideDesign* getSCT_Design(int i) const;
125
127 virtual
128 bool processGlobalAlignment(const std::string&, int level, FrameType frame,
129 const CondAttrListCollection* obj,
130 GeoVAlignmentStore* alignStore) const override;
131
133 bool processSpecialAlignment(const std::string& key,
134 InDetDD::AlignFolderType alignfolder) override;
135
137 bool processSpecialAlignment(const std::string& key,
138 const CondAttrListCollection* obj=nullptr,
139 GeoVAlignmentStore* alignStore=nullptr) const override;
140
141
142 //Mother designs are containers for multiple designs which
143 //overall describe a simulated detector which has been split into multiple
144 //DetectorElements (each with its own design)
145 void addMotherDesign(std::unique_ptr<const SCT_ModuleSideDesign>&&);
146
147 private:
148
149 // Used by initNeighbours() to deal with strip encap eta overlap.
150 // This can only be done when all elements are built.
152 IdentifierHash& idHashNeighbour,
153 const bool phi_plus_one=false) const;
154
159 virtual bool setAlignableTransformDelta(int level,
160 const Identifier& id,
161 const Amg::Transform3D& delta,
162 FrameType frame,
163 GeoVAlignmentStore* alignStore) const override;
164
166 const SCT_DetectorManager& operator=(const SCT_DetectorManager& right) = delete;
169
170 virtual const SCT_ID* getIdHelper() const override;
171
176 std::vector<PVConstLink> m_volume;
178 typedef std::map<Identifier, std::unique_ptr<ExtendedAlignableTransform>> AlignableTransformMap;
179 std::vector<AlignableTransformMap> m_higherAlignableTransforms;
180 std::vector<std::unique_ptr<ExtendedAlignableTransform>> m_alignableTransforms;
181 std::vector<std::unique_ptr<ExtendedAlignableTransform>> m_moduleAlignableTransforms;
183 std::vector<std::unique_ptr<const SCT_ModuleSideDesign>> m_motherDesigns;
184
192
194 };
195
196} // namespace InDetDD
197
198#ifndef GAUDI_NEUTRAL
202#endif
203
204#endif // INDETREADOUTGEOMETRY_SCT_DETECTORMANAGER_H
Provide an interface for finding inheritance information at run time.
#define SG_BASES(D,...)
Declare the base classes from which D derives.
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
This is an Identifier helper class for the SCT subdetector.
This class is a collection of AttributeLists where each one is associated with a channel number.
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
This is a "hash" representation of an Identifier.
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_moduleAlignableTransforms
const SCT_DetectorManager & operator=(const SCT_DetectorManager &right)=delete
Prevent assign operator.
virtual void addDetectorElement(SiDetectorElement *element) override
Add elememts during construction.
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const override
virtual void initNeighbours() override
Initialize the neighbours. This can only be done when all elements are built.
SiDetectorElementCollection m_elementCollection
virtual void addAlignableTransform(int, const Identifier &, GeoAlignableTransform *) override
DEPRECATED For backward compatibility.
virtual const SCT_ID * getIdHelper() const override
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const override
SCT_DetectorManager(StoreGateSvc *detStore)
Constructor.
virtual bool isPixel() const override
Methods to query which manager we have.
virtual unsigned int getNumTreeTops() const override
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements via Identifier
std::map< Identifier, std::unique_ptr< ExtendedAlignableTransform > > AlignableTransformMap
std::vector< PVConstLink > m_volume
bool m_isLogical
This variable switches the how the local alignment corrections are applied If true they will be calcu...
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:
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const override
implements the main alignment update for delta transforms in different frames, it translates into the...
SCT_DetectorManager(const SCT_DetectorManager &right)=delete
Prevent copy constructor.
const SCT_ModuleSideDesign * getSCT_Design(int i) const
Access to module design, casts to SCT_ModuleSideDesign.
void addTreeTop(const PVConstLink &vol)
Add tree top.
void addMotherDesign(std::unique_ptr< const SCT_ModuleSideDesign > &&)
std::vector< AlignableTransformMap > m_higherAlignableTransforms
virtual PVConstLink getTreeTop(unsigned int i) const override
virtual bool identifierBelongs(const Identifier &id) const override
Check identifier is for this detector.
bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder) override
Comply with InDetDetectorManager interface (not implemented for SCT).
int getStripEndcapEtaNeighbour(const SiDetectorElement *element, IdentifierHash &idHashNeighbour, const bool phi_plus_one=false) const
std::vector< std::unique_ptr< const SCT_ModuleSideDesign > > m_motherDesigns
virtual const SiDetectorElementCollection * getDetectorElementCollection() const override
access to whole collectiom
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_alignableTransforms
virtual bool processGlobalAlignment(const std::string &, int level, FrameType frame, const CondAttrListCollection *obj, GeoVAlignmentStore *alignStore) const override
Process new global DB folders for L1 and L2.
Base class for the SCT module side design, extended by the Forward and Barrel module design.
Class to hold the SiDetectorElement objects to be put in the detector store.
Class to hold geometrical description of a silicon detector element.
SiDetectorManager(StoreGateSvc *detStore, const std::string &name)
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated SCT in...
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
Base class for Pixel and SCT Detector managers.
The Athena Transient Store API.
Eigen::Affine3d Transform3D
Message Stream Member.