ATLAS Offline Software
Loading...
Searching...
No Matches
SiDetectorManager.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6// SiDetectorManager.h
8// (c) ATLAS Detector software
10
11#ifndef INDETREADOUTGEOMETRY_SIDETECTORMANAGER_H
12#define INDETREADOUTGEOMETRY_SIDETECTORMANAGER_H
13
15
19
20// Amg stuff
22
23#include "CLHEP/Geometry/Transform3D.h"
24
25#include <map>
26#include <memory>
27#include <string>
28
29class StoreGateSvc;
30class Identifier;
31class IdentifierHash;
32class AtlasDetectorID;
33class GeoAlignableTransform;
34class GeoVAlignmentStore;
35
36namespace InDetDD {
37
38class SiCommonItems;
42class SiNumerology;
43
59
61
62
63 public:
64
65 // Constructor
66 SiDetectorManager(StoreGateSvc * detStore, const std::string & name);
67
68 // Destructor
70
71
72 //
73 // Access Readout Elements
74 //
75
77 virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const = 0;
78 virtual const SiDetectorElement * getDetectorElement(const IdentifierHash &idHash) const = 0;
79
86
87
88
90 virtual void addDetectorElement(SiDetectorElement * element) = 0;
91
93 virtual void initNeighbours() = 0;
94
96 const std::string & tag() const;
97
99 virtual bool isPixel() const = 0;
100 bool isSCT() const {return !isPixel();}
101
103 virtual void addAlignableTransform (int level, const Identifier &id, GeoAlignableTransform *xf) = 0;
104
106 virtual void invalidateAll();
107
109 virtual void updateAll() const;
110
113 const Amg::Transform3D & delta,
114 GeoVAlignmentStore* alignStore=nullptr) ;
115
118 const Amg::Transform3D & localToGlobalXF,
119 const Amg::Transform3D & delta,
120 GeoVAlignmentStore* alignStore=nullptr) ;
121
123 const SiDetectorDesign * addDesign(std::unique_ptr<const SiDetectorDesign>&&);
124 int numDesigns() const;
125 const SiDetectorDesign * getDesign(int i) const;
126
128 const SiNumerology & numerology() const {return m_numerology;}
130
132 void setCommonItems(std::unique_ptr<const SiCommonItems>&& commonItems);
133
134 private:
135 //** Prevent copy and assignment */
138
140 virtual bool setAlignableTransformDelta(int level,
141 const Identifier & id,
142 const Amg::Transform3D & delta,
143 FrameType frame,
144 GeoVAlignmentStore* alignStore) const = 0;
145
146
147
148 std::string m_tag;
150 std::vector<std::unique_ptr<const SiDetectorDesign>> m_designs;
151 std::unique_ptr<const SiCommonItems> m_commonItems;
152
153 };
154
155
156} // namespace InDetDD
157
158#ifndef GAUDI_NEUTRAL
160
162#endif
163
164#endif // INDETREADOUTGEOMETRY_SIDETECTORMANAGER_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 class provides an interface to generate or decode an identifier for the upper levels of the dete...
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.
Class to hold alignable transform plus a pointer to the child volume and optionally a frame volume.
InDetDetectorManager(StoreGateSvc *detStore, const std::string &name)
Helper class to concentrate common items, such as the pointer to the IdHelper, the lorentzAngle tool ...
Base class for the detector design classes for Pixel and SCT.
Class to hold the SiDetectorElement objects to be put in the detector store.
Class to hold geometrical description of a silicon detector element.
Base class for Pixel and SCT Detector managers.
virtual void updateAll() const
Update all caches.
virtual void addDetectorElement(SiDetectorElement *element)=0
Add elememts.
virtual void invalidateAll()
Invalidate cache for all detector elements.
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const =0
access to individual elements using Identifier or IdentiferHash
virtual const SiDetectorElementCollection * getDetectorElementCollection() const =0
access to whole collectiom
virtual void initNeighbours()=0
Initialize the neighbours.
const std::string & tag() const
Get tag used in dictionary.
const SiNumerology & numerology() const
Access Numerology.
const SiDetectorManager & operator=(const SiDetectorManager &right)
SiDetectorManager(StoreGateSvc *detStore, const std::string &name)
void setCommonItems(std::unique_ptr< const SiCommonItems > &&commonItems)
Set SiCommonItems.
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const =0
This method is called by the InDetDetectorManager.
const SiDetectorDesign * getDesign(int i) const
std::vector< std::unique_ptr< const SiDetectorDesign > > m_designs
const SiDetectorDesign * addDesign(std::unique_ptr< const SiDetectorDesign > &&)
Access to module design; returns an observer pointer.
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const =0
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const =0
virtual SiDetectorElementCollection::iterator getDetectorElementBegin()=0
SiDetectorManager(const SiDetectorManager &right)
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf)=0
Add alignable transforms.
std::unique_ptr< const SiCommonItems > m_commonItems
static bool setAlignableTransformGlobalDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
Helper method to set delta transform from a global delta - Amg interface.
virtual bool isPixel() const =0
Methods to query which manager we have.
virtual const SiDetectorElement * getDetectorElement(const IdentifierHash &idHash) const =0
virtual SiDetectorElementCollection::iterator getDetectorElementEnd()=0
static bool setAlignableTransformLocalDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &localToGlobalXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
Helper method to set delta transform from a local delta - Amg interface.
Class to extract numerology for Pixel and SCT.
The Athena Transient Store API.
Eigen::Affine3d Transform3D
Message Stream Member.