ATLAS Offline Software
AlignModuleTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
9 #include "TrkTrack/Track.h"
10 
11 #include "TrkAlignEvent/AlignPar.h"
14 
16 
17 namespace Trk {
18 
19  //______________________________________________________________
20  AlignModuleTool::AlignModuleTool(const std::string& type, const std::string& name,
21  const IInterface* parent)
22 
24  , m_idHelper (nullptr)
25  , m_alignModules (nullptr)
26  , m_alignModuleMaps (AlignModule::NDetectorTypes,(const AlignModuleList*)nullptr)
27  , m_alignParList (nullptr)
28  , m_fullAlignParList (nullptr)
29  , m_alignParList1D (SG::VIEW_ELEMENTS)
30  , m_subDetElement (AlignModule::NDetectorTypes,false)
31  {
32  declareInterface<IAlignModuleTool>(this);
33 
34  declareProperty("AlignModuleListType", m_alignModuleListType = Trk::L3);
35 
36  m_logStream = nullptr;
37  }
38 
39  //________________________________________________________________________
41  = default;
42 
43  //________________________________________________________________________
45  {
46  // Number of layers in the superstructures
48  msg(MSG::FATAL)<<"AlignModuleListType can be 0, 1, 2, or 3" << endmsg;
49  return StatusCode::FAILURE;
50  }
51 
52  msg(MSG::INFO).setColor(MSG::GREEN);
53  ATH_MSG_INFO("AlignModuleListType set to " << m_alignModuleListType);
54 
55  // Set up ATLAS ID helper
56  if (detStore()->retrieve(m_idHelper, "AtlasID").isFailure()) {
57  msg(MSG::FATAL)<<"Could not get Atlas ID helper"<<endmsg;
58  return StatusCode::FAILURE;
59  }
60 
61  return StatusCode::SUCCESS;
62  }
63 
64  //________________________________________________________________________
66  {
67 
68  return StatusCode::SUCCESS;
69  }
70 
71  //________________________________________________________________________
73  std::vector<AlignModuleList*>* idHashMaps)
74  {
75  ATH_MSG_DEBUG("in setAlignModules");
76 
77  m_alignModules=alignmods;
78 
79  for (int i=0;i<(int)idHashMaps->size();i++) {
80  if ((*idHashMaps)[i]) m_alignModuleMaps[i]=(*idHashMaps)[i];
81  }
82 
83  // reset 1-D collection
84  ATH_MSG_DEBUG("clearing alignModules1D");
85  int nmods(0);
86  for (int imod=0;imod<(int)m_alignModules->size();imod++) {
87  m_alignModules1D.push_back((*m_alignModules)[imod]);
88  (*m_alignModules)[imod]->setIdHash(nmods++); // this overwrites what's set in geometry manager tool... should we do this?
89  }
90 
91  ATH_MSG_DEBUG("done setting AlignModules");
92  }
93 
94 
95  //________________________________________________________________________
97  AlignPar2DVec* alignParList)
98  {
99  ATH_MSG_DEBUG("setting fullAlignParList="<<fullAlignParList
100  <<", alignParList="<<alignParList);
101 
104 
105  // recalculate 1-D collection of alignment parameters
106  ATH_MSG_DEBUG("getting AlignParList1D");
108  int index(0);
109 
111 
112  for (AlignPar2DVec::iterator apVec=aplist->begin(); apVec!=aplist->end();++apVec) {
113  for (AlignParVec::iterator ap=(*apVec)->begin(); ap!=(*apVec)->end();++ap) {
115  (*ap)->setIndex(index++);
116  }
117 
118  }
119  }
120 
121  //________________________________________________________________________
123  AlignModule::DetectorType detType) const
124  {
125  ATH_MSG_DEBUG("in AlignModuleTool::findAlignModule(det,detType)");
126 
127  if (!det) {
128  ATH_MSG_VERBOSE("no det!");
129  return nullptr;
130  }
131 
132  if (m_subDetElement[detType]) {
133  ATH_MSG_ERROR("please use findAlignModule method passing RIO_OnTrack");
134  return nullptr;
135  }
136 
137  ATH_MSG_VERBOSE("in findAlignModule, detType="<<detType);
138 
139  if (detType==AlignModule::NDetectorTypes)
140  detType=getDetectorType(det);
141  if (detType==AlignModule::NDetectorTypes || !m_alignModuleMaps[detType]) {
142  ATH_MSG_VERBOSE("bad detector type or no map for detType "<<detType);
143  return nullptr;
144  }
145 
146  // find align module
147  int idHash = det->identifyHash();
148  return (*m_alignModuleMaps[detType])[idHash];
149 
150  }
151 
152  //________________________________________________________________________
154  AlignModule::DetectorType detType) const
155  {
156 
157  ATH_MSG_DEBUG("in AlignModuleTool::findAlignModule(rio,detType)");
158 
159  if (!rio) {
160  ATH_MSG_VERBOSE("no rio!");
161  return nullptr;
162  }
163 
164  // find detector type using TrkDetElementBase
165  const TrkDetElementBase * detelement = rio->detectorElement();
166  if (detelement) {
167  ATH_MSG_DEBUG("have detelement");
168 
169  if (detType==AlignModule::NDetectorTypes)
170  detType=getDetectorType(detelement);
171  if (detType==AlignModule::NDetectorTypes || !m_alignModuleMaps[detType]) {
172  ATH_MSG_VERBOSE("bad detector type or no map for detType "<<detType);
173  return nullptr;
174  }
175 
176  // find align module
177  int idHash(0);
178  if (m_subDetElement[detType]) {
179  idHash = subDetElementIDHash(rio->identify());
180  ATH_MSG_DEBUG("idHash (from subDetElement): "<<idHash);
181  }
182  else {
183  idHash = detelement->identifyHash();
184  ATH_MSG_DEBUG("idHash: "<<idHash);
185  }
186 
187  return (*m_alignModuleMaps[detType])[idHash];
188 
189  }
190 
191  ATH_MSG_VERBOSE("no detector element!");
192  return nullptr;
193  }
194 
195 
196  //________________________________________________________________________
198  {
199  if (!alignModule) return nullptr;
200 
201  int idHash =alignModule->identifyHash();
202  ATH_MSG_DEBUG("getting alignPars for idHash "<<idHash);
203 
204  return std::as_const(m_alignParList)->at(idHash);
205  }
206 
207  //________________________________________________________________________
209  DataVector<AlignPar>* detAPVec,
210  AlignModule::DetectorType detType) const
211  {
212  if (detType==AlignModule::NDetectorTypes)
213  detType=getDetectorType(det);
214  if (detType==AlignModule::NDetectorTypes || !m_alignModuleMaps[detType]) return;
215 
216  // get AlignModule
217  int idHash=det->identifyHash();
218  AlignModule* alignModule=(*(m_alignModuleMaps[detType]))[idHash];
219 
220  ATH_MSG_DEBUG("have alignModule "<<alignModule->identify());
221  // get alignment parameters
222  const AlignParVec* modAlignPar = getFullAlignPars(alignModule);
223  ATH_MSG_DEBUG("modAlignPar size: "<<modAlignPar->size());
224 
225  double alignModPar[AlignModule::NTransformPar];
226  double alignModErr[AlignModule::NTransformPar];
227  for (int i=0;i<AlignModule::NTransformPar;i++) {
228  if ((*modAlignPar)[i]) {
229  alignModPar[i]=(*modAlignPar)[i]->par();
230  alignModErr[i]=(*modAlignPar)[i]->err();
231  }
232  else {
233  alignModPar[i]=alignModErr[i]=0.;
234  ATH_MSG_DEBUG("no alignModPar!");
235  }
236  }
237 
238  ATH_MSG_DEBUG("getting transforms");
239 
240  Amg::Translation3D alignModXTranslation(alignModPar[AlignModule::TransX],
241  alignModPar[AlignModule::TransY],
242  alignModPar[AlignModule::TransZ]);
243 
244  Amg::Transform3D alignModXform = alignModXTranslation * Amg::RotationMatrix3D::Identity();
245  alignModXform *= Amg::AngleAxis3D(alignModPar[AlignModule::RotZ], Amg::Vector3D(0.,0.,1.));
246  alignModXform *= Amg::AngleAxis3D(alignModPar[AlignModule::RotY], Amg::Vector3D(0.,1.,0.));
247  alignModXform *= Amg::AngleAxis3D(alignModPar[AlignModule::RotX], Amg::Vector3D(1.,0.,0.));
248 
249 
250  Amg::Translation3D alignModXTranslationErr(alignModErr[AlignModule::TransX],
251  alignModErr[AlignModule::TransY],
252  alignModErr[AlignModule::TransZ]);
253 
254  Amg::Transform3D alignModXformErr = alignModXTranslationErr * Amg::RotationMatrix3D::Identity();
255  alignModXformErr *= Amg::AngleAxis3D(alignModErr[AlignModule::RotZ], Amg::Vector3D(0.,0.,1.));
256  alignModXformErr *= Amg::AngleAxis3D(alignModErr[AlignModule::RotY], Amg::Vector3D(0.,1.,0.));
257  alignModXformErr *= Amg::AngleAxis3D(alignModErr[AlignModule::RotX], Amg::Vector3D(1.,0.,0.));
258 
259  ATH_MSG_DEBUG("getting AlignPars for detector element "<<det->identify());
260 
261  // get the transform for this detector element
262  const Amg::Transform3D* transform = alignModule->alignModuleToDetElementTransform(detType,det);
263 
264  // get the alignment parameters for this detector element
265  ATH_MSG_WARNING("Check that order is correct: AlignModuleTool:271,284");
266  Amg::Transform3D xformPar( (*transform) * alignModXform );
267  double* detpars = new double[AlignModule::NTransformPar];
268  double* deterrs = new double[AlignModule::NTransformPar];
269  decomposeTransform(xformPar,detpars);
270 
271  ATH_MSG_DEBUG("transx="<<detpars[0]);
272  ATH_MSG_DEBUG("transy="<<detpars[1]);
273  ATH_MSG_DEBUG("transz="<<detpars[2]);
274  ATH_MSG_DEBUG("rotx=" <<detpars[3]);
275  ATH_MSG_DEBUG("roty=" <<detpars[4]);
276  ATH_MSG_DEBUG("rotz=" <<detpars[5]);
277 
278  Amg::Transform3D xformErr( (*transform) * alignModXformErr);
279  decomposeTransform(xformErr,deterrs);
280 
281  // set in AlignParList for this detector element
282  ATH_MSG_DEBUG("setting AlignPar for detector element ");
283  for (int ipar=0;ipar<AlignModule::NTransformPar;ipar++) {
284  AlignPar* ap=(*detAPVec)[ipar];
285  ap->setPar(detpars[ipar],deterrs[ipar]);
286  ap->setFinalPar(ap->initPar()+detpars[ipar],
287  std::sqrt(ap->initErr()*ap->initErr() + deterrs[ipar]*deterrs[ipar]) );
288  }
289 
290  ATH_MSG_DEBUG("set");
291 
292  }
293 
294  //________________________________________________________________________
297  {
298  Identifier id = det->identify();
299 
300  // get dector type
301  if ( id.is_valid()) {
302  if (m_idHelper->is_pixel(id)) return AlignModule::Pixel;
303  else if (m_idHelper->is_sct(id)) return AlignModule::SCT;
304  else if (m_idHelper->is_trt(id)) return AlignModule::TRT;
305  else if (m_idHelper->is_mdt(id)) return AlignModule::MDT;
306  else if (m_idHelper->is_csc(id)) return AlignModule::CSC;
307  else if (m_idHelper->is_rpc(id)) return AlignModule::RPC;
308  else if (m_idHelper->is_tgc(id)) return AlignModule::TGC;
309  }
310 
312  }
313 
314  //________________________________________________________________________
317  {
318  int idHash =alignModule->identifyHash();
319  return std::as_const(m_fullAlignParList)->at(idHash);
320  }
321 
322  //________________________________________________________________________
323  MsgStream& operator << ( MsgStream& sl, AlignModuleTool& alignModTool)
324  {
325  const AlignModuleList* modules=alignModTool.alignModules1D();
326  for (int imod=0;imod<(int)modules->size(); imod++) {
327  sl << "AML: "<<*((*modules)[imod]);
328  }
329 
330  DataVector<AlignPar>* alignParList=alignModTool.alignParList1D();
331  for (int iap=0;iap<(int)alignParList->size();iap++) {
332  sl << *((*alignParList)[iap]);
333  }
334  return sl;
335  }
336 }
Trk::AlignModuleTool::setAlignParLists
void setAlignParLists(AlignPar2DVec *fullAlignParList, AlignPar2DVec *alignParList=0)
Sets the AlignParLists using boost::multi_array.
Definition: AlignModuleTool.cxx:96
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
Trk::AlignModuleTool::m_fullAlignParList
AlignPar2DVec * m_fullAlignParList
contains all parameters
Definition: AlignModuleTool.h:155
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:760
Trk::AlignModule::TGC
@ TGC
Definition: AlignModule.h:57
TrkDetElementBase.h
AtlasDetectorID::is_rpc
bool is_rpc(Identifier id) const
Definition: AtlasDetectorID.h:875
Trk::AlignModule::TRT
@ TRT
Definition: AlignModule.h:57
Trk::AlignModuleTool::alignParList1D
AlignParVec * alignParList1D()
Returns 1-D vector of all AlignPars for all detector types.
Definition: AlignModuleTool.h:89
Trk::AlignModule::TransZ
@ TransZ
Definition: AlignModule.h:54
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AtlasDetectorID::is_csc
bool is_csc(Identifier id) const
Definition: AtlasDetectorID.h:891
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
Trk::AlignModuleTool::setAlignModules
void setAlignModules(AlignModuleList *alignmods, std::vector< AlignModuleList * > *idHashMaps)
sets alignModuleLists and idHash maps for a set of AlignModules.
Definition: AlignModuleTool.cxx:72
Trk::AlignModuleList
std::vector< AlignModule * > AlignModuleList
Definition: AlignModuleList.h:37
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:770
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::AlignModuleTool::m_alignModules
AlignModuleList * m_alignModules
list of AlignModules
Definition: AlignModuleTool.h:151
Trk::AlignModule
Definition: AlignModule.h:45
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Trk::decomposeTransform
void decomposeTransform(const Amg::Transform3D &transform, double *values)
Definition: AlignModule.cxx:57
Trk::TrkDetElementBase
Definition: TrkDetElementBase.h:52
Trk::AlignModule::Pixel
@ Pixel
Definition: AlignModule.h:57
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
Trk::AlignModuleTool::m_subDetElement
std::vector< bool > m_subDetElement
identify detectors aligning structures smaller than TrkDetElementBase
Definition: AlignModuleTool.h:160
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::AlignModule::NDetectorTypes
@ NDetectorTypes
Definition: AlignModule.h:57
python.AtlRunQueryParser.ap
ap
Definition: AtlRunQueryParser.py:826
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
Track.h
Trk::AlignModuleTool
Definition: AlignModuleTool.h:36
Trk::AlignModuleTool::finalize
virtual StatusCode finalize()
Definition: AlignModuleTool.cxx:65
Trk::AlignModuleTool::getFullAlignPars
AlignParVec * getFullAlignPars(const AlignModule *alignModule) const
returns vector of full AlignPars for an AlignModule
Definition: AlignModuleTool.cxx:316
AtlasDetectorID.h
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Trk::AlignModuleTool::subDetElementIDHash
virtual int subDetElementIDHash(Identifier) const
Returns identifier hash for sub-TrkDetElementBase structure based on detector type.
Definition: AlignModuleTool.h:138
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::AlignModuleTool::~AlignModuleTool
virtual ~AlignModuleTool()
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
lumiFormat.i
int i
Definition: lumiFormat.py:92
Trk::L3
@ L3
Definition: AlignModuleList.h:32
Trk::AlignModule::identifyHash
IdentifierHash identifyHash() const
Set and return index of module, used by alignment classes to keep track of order of align module.
Definition: AlignModule.h:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
AtlasDetectorID::is_tgc
bool is_tgc(Identifier id) const
Definition: AtlasDetectorID.h:902
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
WritePulseShapeToCool.det
det
Definition: WritePulseShapeToCool.py:204
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Trk::AlignModuleTool::fillDetAlignmentParameters
virtual void fillDetAlignmentParameters(const TrkDetElementBase *det, DataVector< AlignPar > *apVec, AlignModule::DetectorType detType) const
fills values for alignment parameters for a detector element, applying AlignModule transforms if nece...
Definition: AlignModuleTool.cxx:208
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
Trk::AlignPar
Definition: AlignPar.h:25
AlignModuleTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Trk::AlignModule::RotX
@ RotX
Definition: AlignModule.h:54
Trk::AlignModuleTool::alignModules1D
const AlignModuleList * alignModules1D()
Returns 1-D vector of all AlignModules containing all detector types.
Definition: AlignModuleTool.h:86
Trk::AlignModule::SCT
@ SCT
Definition: AlignModule.h:57
Trk::IAlignModuleTool::m_alignModuleListType
int m_alignModuleListType
uses Trk enum AlignModuleListType (L1,L2,L3,L1_5,L2_5)
Definition: IAlignModuleTool.h:143
Trk::AlignModuleTool::AlignModuleTool
AlignModuleTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: AlignModuleTool.cxx:20
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
AlignModuleList.h
Trk::AlignModuleTool::getAlignPars
AlignParVec * getAlignPars(const AlignModule *alignModule) const
returns vector of AlignPars for an AlignModule
Definition: AlignModuleTool.cxx:197
Trk::AlignModuleTool::alignParList
AlignPar2DVec * alignParList() const
returns complete AlignParList (active parameters only)
Definition: AlignModuleTool.h:141
DataVector::clear
void clear()
Erase all the elements in the collection.
Trk::AlignModuleTool::m_alignModuleMaps
std::vector< const AlignModuleList * > m_alignModuleMaps
maps detector element idHash to AlignModule
Definition: AlignModuleTool.h:152
Trk::AlignModuleTool::m_idHelper
const AtlasDetectorID * m_idHelper
Used to identify type of detector.
Definition: AlignModuleTool.h:147
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::AlignModule::CSC
@ CSC
Definition: AlignModule.h:57
Trk::AlignModuleTool::m_alignParList
AlignPar2DVec * m_alignParList
contains active parameters
Definition: AlignModuleTool.h:154
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
RIO_OnTrack.h
Trk::AlignModule::DetectorType
DetectorType
Definition: AlignModule.h:57
AlignModule.h
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
Trk::AlignModule::TransX
@ TransX
Definition: AlignModule.h:54
DeMoScan.index
string index
Definition: DeMoScan.py:362
python.consts.GREEN
GREEN
Definition: consts.py:3
Trk::AlignModule::alignModuleToDetElementTransform
const Amg::Transform3D * alignModuleToDetElementTransform(AlignModule::DetectorType detType, const TrkDetElementBase *det, const Identifier id=Identifier()) const
returns AlignModule to DetElement transform for a detector element
Definition: AlignModule.cxx:151
Trk::AlignModule::NTransformPar
@ NTransformPar
Definition: AlignModule.h:55
Trk::AlignModuleTool::fullAlignParList
AlignPar2DVec * fullAlignParList() const
returns complete AlignParList
Definition: AlignModuleTool.h:144
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::AlignModule::RotY
@ RotY
Definition: AlignModule.h:54
Trk::operator<<
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
Definition: AlignModule.cxx:204
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::RIO_OnTrack::identify
virtual Identifier identify() const final
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:155
Trk::AlignModuleTool::initialize
virtual StatusCode initialize()
Definition: AlignModuleTool.cxx:44
Trk::AlignModuleTool::findAlignModule
virtual AlignModule * findAlignModule(const RIO_OnTrack *rio, AlignModule::DetectorType detType) const
Returns pointer to AlignModule containing RIO.
Definition: AlignModuleTool.cxx:153
Trk::IAlignModuleTool::m_logStream
std::ostream * m_logStream
logfile output stream
Definition: IAlignModuleTool.h:145
AlignPar.h
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition: GeoPrimitives.h:45
Trk::TrkDetElementBase::identifyHash
virtual IdentifierHash identifyHash() const =0
Identifier hash.
Trk::AlignModuleTool::getDetectorType
AlignModule::DetectorType getDetectorType(const TrkDetElementBase *det) const
Returns detector type (AlignModule enum) for a detector element.
Definition: AlignModuleTool.cxx:296
Trk::RIO_OnTrack::detectorElement
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
AthAlgTool
Definition: AthAlgTool.h:26
Trk::AlignModule::RotZ
@ RotZ
Definition: AlignModule.h:54
Trk::AlignModule::MDT
@ MDT
Definition: AlignModule.h:57
Trk::AlignModuleTool::m_alignModules1D
std::vector< AlignModule * > m_alignModules1D
1-D vector of AlignModules
Definition: AlignModuleTool.h:157
Trk::AlignModule::TransY
@ TransY
Definition: AlignModule.h:54
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
Trk::AlignModule::identify
Identifier identify() const
Definition: AlignModule.h:97
Trk::AlignModule::RPC
@ RPC
Definition: AlignModule.h:57
Trk::AlignModuleTool::m_alignParList1D
AlignParVec m_alignParList1D
1-D vector of AlignPars
Definition: AlignModuleTool.h:158
Trk::L0
@ L0
Definition: AlignModuleList.h:32
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
AtlasDetectorID::is_mdt
bool is_mdt(Identifier id) const
Definition: AtlasDetectorID.h:859