ATLAS Offline Software
Loading...
Searching...
No Matches
PixelDetectorManager.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// PixelDectorManager.h
8// (c) ATLAS Detector software
10
11#ifndef InDetReadoutGeometry_PixelDetectorManager_h
12#define InDetReadoutGeometry_PixelDetectorManager_h 1
13
18
19#include "InDetIdentifier/PixelID.h" //covariant return type
20
21#include <map>
22#include <vector>
23
24class StoreGateSvc;
25class Identifier;
26class IdentifierHash;
27class GeoAlignableTransform;
28class GeoVFullPhysVol;
29class GeoVPhysVol;
30class GeoVAlignmentStore;
32
33namespace InDetDD {
34
37
46
48
49 public:
50
54 PixelDetectorManager(StoreGateSvc* detStore, const std::string& name, const std::string& pixelIDName);
55
57 virtual unsigned int getNumTreeTops() const override;
58 virtual PVConstLink getTreeTop(unsigned int i) const override;
59
61 void addTreeTop(const PVConstLink& vol);
62
63 //
64 // Access Readout Elements
65 //
67 virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override;
68
70 virtual const SiDetectorElement * getDetectorElement(const IdentifierHash &idHash) const override;
71
73 const SiDetectorElement * getDetectorElement(int barrel_endcap,
74 int layer_wheel,
75 int phi_module,
76 int eta_module) const;
77
79 virtual const SiDetectorElementCollection * getDetectorElementCollection() const override;
84
86 virtual void addDetectorElement(SiDetectorElement * element) override;
87
89 virtual void addAlignableTransform (int level,
90 const Identifier &id,
91 GeoAlignableTransform *xf,
92 const GeoVFullPhysVol * child);
93
95 virtual void addAlignableTransform (int level,
96 const Identifier &id,
97 GeoAlignableTransform *xf,
98 const GeoVPhysVol * child);
99
100 // DEPRECATED
101 virtual void addAlignableTransform (int,
102 const Identifier &,
103 GeoAlignableTransform *) override {}; // For backward compatibility
104
105
107 virtual void initNeighbours() override;
108
110 virtual bool isPixel() const override {return true;}
111
113 virtual bool identifierBelongs(const Identifier & id) const override;
114
115
119 unsigned int getBarrelLayers() const ;
120
124 unsigned int getEndcapLayers() const;
125
127 virtual const PixelModuleDesign * getPixelDesign(int i) const;
128
130 bool processSpecialAlignment(const std::string &, InDetDD::AlignFolderType) override;
131
132 bool processSpecialAlignment(const std::string& key,
133 const CondAttrListCollection* obj=nullptr,
134 GeoVAlignmentStore* alignStore=nullptr) const override;
135
137 virtual
138 bool processGlobalAlignment(const std::string &, int level, FrameType frame,
139 const CondAttrListCollection* obj,
140 GeoVAlignmentStore* alignStore) const override;
141
142 private:
143
147 virtual bool setAlignableTransformDelta(int level,
148 const Identifier & id,
149 const Amg::Transform3D & delta,
150 FrameType frame,
151 GeoVAlignmentStore* alignStore) const override;
152
153
157
158
159 virtual const PixelID * getIdHelper() const override;
160
161 // data members
162 std::vector<PVConstLink> m_volume;
164 typedef std::map<Identifier, std::unique_ptr<ExtendedAlignableTransform>> AlignableTransformMap;
165 std::vector< AlignableTransformMap > m_higherAlignableTransforms;
166 std::vector< std::unique_ptr<ExtendedAlignableTransform> > m_alignableTransforms;
168
169 // Helpful function for debugging of transforms
170 void printTransform(MSG::Level level,
171 const Amg::Transform3D & tr) const;
172
173
179
180 };
181
182} // namespace InDetDD
183
184#ifndef GAUDI_NEUTRAL
187
188#endif
189
190#endif
191
192
193
194
195
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 Pixel 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 pixel ...
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_alignableTransforms
virtual const PixelModuleDesign * getPixelDesign(int i) const
Access to module design, Casts to PixelModuleDesign.
std::map< Identifier, std::unique_ptr< ExtendedAlignableTransform > > AlignableTransformMap
void printTransform(MSG::Level level, const Amg::Transform3D &tr) const
void addTreeTop(const PVConstLink &vol)
Add a Tree top:
virtual void addDetectorElement(SiDetectorElement *element) override
Add elememts.
bool processSpecialAlignment(const std::string &, InDetDD::AlignFolderType) override
Process new IBLDist DB folder.
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const override
virtual void addAlignableTransform(int, const Identifier &, GeoAlignableTransform *) override
Add alignable transforms.
virtual bool isPixel() const override
Methods to query which manager we have.
std::vector< PVConstLink > m_volume
virtual const PixelID * getIdHelper() const override
PixelDetectorManager(StoreGateSvc *detStore)
Constructor.
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const override
const PixelDetectorManager & operator=(const PixelDetectorManager &right)
prevent copy and assignment
virtual const SiDetectorElementCollection * getDetectorElementCollection() const override
access to whole collection via Iterators
virtual unsigned int getNumTreeTops() const override
Access to raw geometry:
PixelDetectorManager(const PixelDetectorManager &right)
SiDetectorElementCollection m_elementCollection
bool m_isLogical
This variable switches the how the local alignment corrections are applied If true they will be calcu...
unsigned int getEndcapLayers() const
Layers built.
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...
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
std::vector< AlignableTransformMap > m_higherAlignableTransforms
unsigned int getBarrelLayers() const
Layers built.
virtual void initNeighbours() override
Initialize the neighbours.
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.
virtual PVConstLink getTreeTop(unsigned int i) const override
virtual bool identifierBelongs(const Identifier &id) const override
Check identifier is for this detector.
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements : via Identifier
Class used to describe the design of a module (diode segmentation and readout scheme)
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 Pixel subdetector.
Definition PixelID.h:67
The Athena Transient Store API.
Eigen::Affine3d Transform3D
Message Stream Member.