ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_DetectorManager.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 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
23
24#include <memory>
25
26class StoreGateSvc;
27class Identifier;
28class IdentifierHash;
29class GeoAlignableTransform;
30class GeoVFullPhysVol;
31class GeoVPhysVol;
32class GeoVAlignmentStore;
34
35namespace InDetDD {
36
38
48
50
51 public:
52
55
57 SCT_DetectorManager( StoreGateSvc* detStore, const std::string& name, const bool doEncapNeighbour=false );
58
63 virtual unsigned int getNumTreeTops() const override;
64 virtual PVConstLink getTreeTop(unsigned int i) const override;
66
67 void addTreeTop(const PVConstLink& vol);
68
69
74
75 virtual const SiDetectorElement* getDetectorElement(const Identifier& id) const override;
76
78 virtual const SiDetectorElement* getDetectorElement(const IdentifierHash& idHash) const override;
79
81 const SiDetectorElement* getDetectorElement(int barrel_endcap, int layer_wheel, int phi_module, int eta_module, int side) const;
82
87 virtual const SiDetectorElementCollection* getDetectorElementCollection() const override;
93
95 virtual void addDetectorElement(SiDetectorElement* element) override;
97
99 virtual void addAlignableTransform (int level,
100 const Identifier& id,
101 GeoAlignableTransform* xf,
102 const GeoVFullPhysVol* child);
103
105 virtual void addAlignableTransform (int level,
106 const Identifier& id,
107 GeoAlignableTransform* xf,
108 const GeoVPhysVol* child);
109
111 virtual void addAlignableTransform (int, const Identifier&, GeoAlignableTransform*) override {};
112
114 virtual void initNeighbours() override;
115
117 virtual bool isPixel() const override {return false;}
118
120 virtual bool identifierBelongs(const Identifier& id) const override;
121
123 const SCT_ModuleSideDesign* getSCT_Design(int i) const;
124
126 virtual
127 bool processGlobalAlignment(const std::string&, int level, FrameType frame,
128 const CondAttrListCollection* obj,
129 GeoVAlignmentStore* alignStore) const override;
130
132 bool processSpecialAlignment(const std::string& key,
133 InDetDD::AlignFolderType alignfolder) override;
134
136 bool processSpecialAlignment(const std::string& key,
137 const CondAttrListCollection* obj=nullptr,
138 GeoVAlignmentStore* alignStore=nullptr) const override;
139
140
141 //Mother designs are containers for multiple designs which
142 //overall describe a simulated detector which has been split into multiple
143 //DetectorElements (each with its own design)
144 void addMotherDesign(std::unique_ptr<const SCT_ModuleSideDesign>&&);
145
146 private:
147
148 // Used by initNeighbours() to deal with strip encap eta overlap.
149 // This can only be done when all elements are built.
151 IdentifierHash& idHashNeighbour,
152 const bool phi_plus_one=false) const;
153
158 virtual bool setAlignableTransformDelta(int level,
159 const Identifier& id,
160 const Amg::Transform3D& delta,
161 FrameType frame,
162 GeoVAlignmentStore* alignStore) const override;
163
165 const SCT_DetectorManager& operator=(const SCT_DetectorManager& right) = delete;
168
169 virtual const SCT_ID* getIdHelper() const override;
170
175 std::vector<PVConstLink> m_volume;
177 typedef std::map<Identifier, std::unique_ptr<ExtendedAlignableTransform>> AlignableTransformMap;
178 std::vector<AlignableTransformMap> m_higherAlignableTransforms;
179 std::vector<std::unique_ptr<ExtendedAlignableTransform>> m_alignableTransforms;
180 std::vector<std::unique_ptr<ExtendedAlignableTransform>> m_moduleAlignableTransforms;
182 std::vector<std::unique_ptr<const SCT_ModuleSideDesign>> m_motherDesigns;
183
191
193 };
194
195} // namespace InDetDD
196
197#ifndef GAUDI_NEUTRAL
200#endif
201
202#endif // INDETREADOUTGEOMETRY_SCT_DETECTORMANAGER_H
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)
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
The Athena Transient Store API.
Eigen::Affine3d Transform3D
Message Stream Member.