ATLAS Offline Software
AlignModuleTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 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_alignModuleMaps (AlignModule::NDetectorTypes, nullptr)
25  , m_alignParList1D (SG::VIEW_ELEMENTS)
26  , m_subDetElement (AlignModule::NDetectorTypes, false)
27  {
28  declareInterface<IAlignModuleTool>(this);
29  }
30 
31  //________________________________________________________________________
33  {
34  // Number of layers in the superstructures
36  msg(MSG::FATAL)<<"AlignModuleListType can be 0, 1, 2, or 3" << endmsg;
37  return StatusCode::FAILURE;
38  }
39 
40  msg(MSG::INFO).setColor(MSG::GREEN);
41  ATH_MSG_INFO("AlignModuleListType set to " << m_alignModuleListType);
42 
43  // Set up ATLAS ID helper
44  if (detStore()->retrieve(m_idHelper, "AtlasID").isFailure()) {
45  msg(MSG::FATAL)<<"Could not get Atlas ID helper"<<endmsg;
46  return StatusCode::FAILURE;
47  }
48 
49  return StatusCode::SUCCESS;
50  }
51 
52  //________________________________________________________________________
54  {
55  return StatusCode::SUCCESS;
56  }
57 
58  //________________________________________________________________________
60  std::vector<AlignModuleList*>* idHashMaps)
61  {
62  ATH_MSG_DEBUG("in setAlignModules");
63 
64  m_alignModules=alignmods;
65 
66  for (int i=0;i<(int)idHashMaps->size();i++) {
67  if ((*idHashMaps)[i]) m_alignModuleMaps[i]=(*idHashMaps)[i];
68  }
69 
70  // reset 1-D collection
71  ATH_MSG_DEBUG("clearing alignModules1D");
72  int nmods(0);
73  for (int imod=0;imod<(int)m_alignModules->size();imod++) {
74  m_alignModules1D.push_back((*m_alignModules)[imod]);
75  (*m_alignModules)[imod]->setIdHash(nmods++); // this overwrites what's set in geometry manager tool... should we do this?
76  }
77 
78  ATH_MSG_DEBUG("done setting AlignModules");
79  }
80 
81 
82  //________________________________________________________________________
84  AlignPar2DVec* alignParList)
85  {
86  ATH_MSG_DEBUG("setting fullAlignParList="<<fullAlignParList
87  <<", alignParList="<<alignParList);
88 
91 
92  // recalculate 1-D collection of alignment parameters
93  ATH_MSG_DEBUG("getting AlignParList1D");
95  int index(0);
96 
98 
99  for (AlignPar2DVec::iterator apVec=aplist->begin(); apVec!=aplist->end();++apVec) {
100  for (AlignParVec::iterator ap=(*apVec)->begin(); ap!=(*apVec)->end();++ap) {
102  (*ap)->setIndex(index++);
103  }
104 
105  }
106  }
107 
108  //________________________________________________________________________
110  AlignModule::DetectorType detType) const
111  {
112  ATH_MSG_DEBUG("in AlignModuleTool::findAlignModule(det,detType)");
113 
114  if (!det) {
115  ATH_MSG_VERBOSE("no det!");
116  return nullptr;
117  }
118 
119  if (m_subDetElement[detType]) {
120  ATH_MSG_ERROR("please use findAlignModule method passing RIO_OnTrack");
121  return nullptr;
122  }
123 
124  ATH_MSG_VERBOSE("in findAlignModule, detType="<<detType);
125 
126  if (detType==AlignModule::NDetectorTypes)
127  detType=getDetectorType(det);
128  if (detType==AlignModule::NDetectorTypes || !m_alignModuleMaps[detType]) {
129  ATH_MSG_VERBOSE("bad detector type or no map for detType "<<detType);
130  return nullptr;
131  }
132 
133  // find align module
134  int idHash = det->identifyHash();
135  return (*m_alignModuleMaps[detType])[idHash];
136 
137  }
138 
139  //________________________________________________________________________
141  AlignModule::DetectorType detType) const
142  {
143 
144  ATH_MSG_DEBUG("in AlignModuleTool::findAlignModule(rio,detType)");
145 
146  if (!rio) {
147  ATH_MSG_VERBOSE("no rio!");
148  return nullptr;
149  }
150 
151  // find detector type using TrkDetElementBase
152  const TrkDetElementBase * detelement = rio->detectorElement();
153  if (detelement) {
154  ATH_MSG_DEBUG("have detelement");
155 
156  if (detType==AlignModule::NDetectorTypes)
157  detType=getDetectorType(detelement);
158  if (detType==AlignModule::NDetectorTypes || !m_alignModuleMaps[detType]) {
159  ATH_MSG_VERBOSE("bad detector type or no map for detType "<<detType);
160  return nullptr;
161  }
162 
163  // find align module
164  int idHash(0);
165  if (m_subDetElement[detType]) {
166  idHash = subDetElementIDHash(rio->identify());
167  ATH_MSG_DEBUG("idHash (from subDetElement): "<<idHash);
168  }
169  else {
170  idHash = detelement->identifyHash();
171  ATH_MSG_DEBUG("idHash: "<<idHash);
172  }
173 
174  return (*m_alignModuleMaps[detType])[idHash];
175 
176  }
177 
178  ATH_MSG_VERBOSE("no detector element!");
179  return nullptr;
180  }
181 
182 
183  //________________________________________________________________________
185  {
186  if (!alignModule) return nullptr;
187 
188  int idHash =alignModule->identifyHash();
189  ATH_MSG_DEBUG("getting alignPars for idHash "<<idHash);
190 
191  return std::as_const(m_alignParList)->at(idHash);
192  }
193 
194  //________________________________________________________________________
196  DataVector<AlignPar>* detAPVec,
197  AlignModule::DetectorType detType) const
198  {
199  if (detType==AlignModule::NDetectorTypes)
200  detType=getDetectorType(det);
201  if (detType==AlignModule::NDetectorTypes || !m_alignModuleMaps[detType]) return;
202 
203  // get AlignModule
204  int idHash=det->identifyHash();
205  AlignModule* alignModule=(*(m_alignModuleMaps[detType]))[idHash];
206 
207  ATH_MSG_DEBUG("have alignModule "<<alignModule->identify());
208  // get alignment parameters
209  const AlignParVec* modAlignPar = getFullAlignPars(alignModule);
210  ATH_MSG_DEBUG("modAlignPar size: "<<modAlignPar->size());
211 
212  double alignModPar[AlignModule::NTransformPar];
213  double alignModErr[AlignModule::NTransformPar];
214  for (int i=0;i<AlignModule::NTransformPar;i++) {
215  if ((*modAlignPar)[i]) {
216  alignModPar[i]=(*modAlignPar)[i]->par();
217  alignModErr[i]=(*modAlignPar)[i]->err();
218  }
219  else {
220  alignModPar[i]=alignModErr[i]=0.;
221  ATH_MSG_DEBUG("no alignModPar!");
222  }
223  }
224 
225  ATH_MSG_DEBUG("getting transforms");
226 
227  Amg::Translation3D alignModXTranslation(alignModPar[AlignModule::TransX],
228  alignModPar[AlignModule::TransY],
229  alignModPar[AlignModule::TransZ]);
230 
231  Amg::Transform3D alignModXform = alignModXTranslation * Amg::RotationMatrix3D::Identity();
232  alignModXform *= Amg::AngleAxis3D(alignModPar[AlignModule::RotZ], Amg::Vector3D(0.,0.,1.));
233  alignModXform *= Amg::AngleAxis3D(alignModPar[AlignModule::RotY], Amg::Vector3D(0.,1.,0.));
234  alignModXform *= Amg::AngleAxis3D(alignModPar[AlignModule::RotX], Amg::Vector3D(1.,0.,0.));
235 
236 
237  Amg::Translation3D alignModXTranslationErr(alignModErr[AlignModule::TransX],
238  alignModErr[AlignModule::TransY],
239  alignModErr[AlignModule::TransZ]);
240 
241  Amg::Transform3D alignModXformErr = alignModXTranslationErr * Amg::RotationMatrix3D::Identity();
242  alignModXformErr *= Amg::AngleAxis3D(alignModErr[AlignModule::RotZ], Amg::Vector3D(0.,0.,1.));
243  alignModXformErr *= Amg::AngleAxis3D(alignModErr[AlignModule::RotY], Amg::Vector3D(0.,1.,0.));
244  alignModXformErr *= Amg::AngleAxis3D(alignModErr[AlignModule::RotX], Amg::Vector3D(1.,0.,0.));
245 
246  ATH_MSG_DEBUG("getting AlignPars for detector element "<<det->identify());
247 
248  // get the transform for this detector element
249  const Amg::Transform3D* transform = alignModule->alignModuleToDetElementTransform(detType,det);
250 
251  // get the alignment parameters for this detector element
252  ATH_MSG_WARNING("Check that order is correct: AlignModuleTool:271,284");
253  Amg::Transform3D xformPar( (*transform) * alignModXform );
254  double* detpars = new double[AlignModule::NTransformPar];
255  double* deterrs = new double[AlignModule::NTransformPar];
256  decomposeTransform(xformPar,detpars);
257 
258  ATH_MSG_DEBUG("transx="<<detpars[0]);
259  ATH_MSG_DEBUG("transy="<<detpars[1]);
260  ATH_MSG_DEBUG("transz="<<detpars[2]);
261  ATH_MSG_DEBUG("rotx=" <<detpars[3]);
262  ATH_MSG_DEBUG("roty=" <<detpars[4]);
263  ATH_MSG_DEBUG("rotz=" <<detpars[5]);
264 
265  Amg::Transform3D xformErr( (*transform) * alignModXformErr);
266  decomposeTransform(xformErr,deterrs);
267 
268  // set in AlignParList for this detector element
269  ATH_MSG_DEBUG("setting AlignPar for detector element ");
270  for (int ipar=0;ipar<AlignModule::NTransformPar;ipar++) {
271  AlignPar* ap=(*detAPVec)[ipar];
272  ap->setPar(detpars[ipar],deterrs[ipar]);
273  ap->setFinalPar(ap->initPar()+detpars[ipar],
274  std::sqrt(ap->initErr()*ap->initErr() + deterrs[ipar]*deterrs[ipar]) );
275  }
276 
277  ATH_MSG_DEBUG("set");
278 
279  }
280 
281  //________________________________________________________________________
284  {
285  Identifier id = det->identify();
286 
287  // get dector type
288  if ( id.is_valid()) {
289  if (m_idHelper->is_pixel(id)) return AlignModule::Pixel;
290  else if (m_idHelper->is_sct(id)) return AlignModule::SCT;
291  else if (m_idHelper->is_trt(id)) return AlignModule::TRT;
292  else if (m_idHelper->is_mdt(id)) return AlignModule::MDT;
293  else if (m_idHelper->is_csc(id)) return AlignModule::CSC;
294  else if (m_idHelper->is_rpc(id)) return AlignModule::RPC;
295  else if (m_idHelper->is_tgc(id)) return AlignModule::TGC;
296  }
297 
299  }
300 
301  //________________________________________________________________________
304  {
305  int idHash =alignModule->identifyHash();
306  return std::as_const(m_fullAlignParList)->at(idHash);
307  }
308 
309  //________________________________________________________________________
310  MsgStream& operator << ( MsgStream& sl, AlignModuleTool& alignModTool)
311  {
312  const AlignModuleList* modules=alignModTool.alignModules1D();
313  for (int imod=0;imod<(int)modules->size(); imod++) {
314  sl << "AML: "<<*((*modules)[imod]);
315  }
316 
317  DataVector<AlignPar>* alignParList=alignModTool.alignParList1D();
318  for (int iap=0;iap<(int)alignParList->size();iap++) {
319  sl << *((*alignParList)[iap]);
320  }
321  return sl;
322  }
323 }
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:159
AtlasDetectorID::is_pixel
bool is_pixel(Identifier id) const
Definition: AtlasDetectorID.h:755
Trk::AlignModule::TGC
@ TGC
Definition: AlignModule.h:57
TrkDetElementBase.h
AtlasDetectorID::is_rpc
bool is_rpc(Identifier id) const
Definition: AtlasDetectorID.h:870
Trk::AlignModuleTool::alignParList1D
virtual AlignParVec * alignParList1D() override
Returns 1-D vector of all AlignPars for all detector types.
Definition: AlignModuleTool.h:91
Trk::AlignModule::TRT
@ TRT
Definition: AlignModule.h:57
Trk::AlignModuleTool::getDetectorType
AlignModule::DetectorType getDetectorType(const TrkDetElementBase *det) const override
Returns detector type (AlignModule enum) for a detector element.
Definition: AlignModuleTool.cxx:283
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:18
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AtlasDetectorID::is_csc
bool is_csc(Identifier id) const
Definition: AtlasDetectorID.h:886
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
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
AtlasDetectorID::is_sct
bool is_sct(Identifier id) const
Definition: AtlasDetectorID.h:765
index
Definition: index.py:1
Trk::AlignModuleTool::m_alignModules
AlignModuleList * m_alignModules
list of AlignModules
Definition: AlignModuleTool.h:155
Trk::AlignModule
Definition: AlignModule.h:45
Trk::AlignModuleTool::initialize
virtual StatusCode initialize() override
Definition: AlignModuleTool.cxx:32
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:777
Trk::AlignModuleTool::m_subDetElement
std::vector< bool > m_subDetElement
identify detectors aligning structures smaller than TrkDetElementBase
Definition: AlignModuleTool.h:164
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::AlignModuleTool::setAlignModules
virtual void setAlignModules(AlignModuleList *alignmods, std::vector< AlignModuleList * > *idHashMaps) override
sets alignModuleLists and idHash maps for a set of AlignModules.
Definition: AlignModuleTool.cxx:59
Trk::AlignModule::NDetectorTypes
@ NDetectorTypes
Definition: AlignModule.h:57
python.AtlRunQueryParser.ap
ap
Definition: AtlRunQueryParser.py:825
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
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
AtlasDetectorID.h
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Trk::AlignModuleTool::alignModules1D
virtual const AlignModuleList * alignModules1D() override
Returns 1-D vector of all AlignModules containing all detector types.
Definition: AlignModuleTool.h:88
Trk::AlignModuleTool::subDetElementIDHash
virtual int subDetElementIDHash(Identifier) const
Returns identifier hash for sub-TrkDetElementBase structure based on detector type.
Definition: AlignModuleTool.h:140
Trk::AlignModuleTool::finalize
virtual StatusCode finalize() override
Definition: AlignModuleTool.cxx:53
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
lumiFormat.i
int i
Definition: lumiFormat.py:85
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
Trk::AlignModuleTool::findAlignModule
virtual AlignModule * findAlignModule(const RIO_OnTrack *rio, AlignModule::DetectorType detType) const override
Returns pointer to AlignModule containing RIO.
Definition: AlignModuleTool.cxx:140
AtlasDetectorID::is_tgc
bool is_tgc(Identifier id) const
Definition: AtlasDetectorID.h:897
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
Trk::AlignModuleTool::getAlignPars
virtual AlignParVec * getAlignPars(const AlignModule *alignModule) const override
returns vector of AlignPars for an AlignModule
Definition: AlignModuleTool.cxx:184
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
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::AlignModule::SCT
@ SCT
Definition: AlignModule.h:57
Trk::AlignModuleTool::fillDetAlignmentParameters
virtual void fillDetAlignmentParameters(const TrkDetElementBase *det, DataVector< AlignPar > *apVec, AlignModule::DetectorType detType) const override
fills values for alignment parameters for a detector element, applying AlignModule transforms if nece...
Definition: AlignModuleTool.cxx:195
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:795
AlignModuleList.h
Trk::AlignModuleTool::alignParList
AlignPar2DVec * alignParList() const
returns complete AlignParList (active parameters only)
Definition: AlignModuleTool.h:143
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:156
Trk::AlignModuleTool::m_idHelper
const AtlasDetectorID * m_idHelper
Used to identify type of detector.
Definition: AlignModuleTool.h:149
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:158
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
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
Trk::AlignModuleTool::m_alignModuleListType
IntegerProperty m_alignModuleListType
uses Trk enum AlignModuleListType (L1,L2,L3,L1_5,L2_5)
Definition: AlignModuleTool.h:153
Trk::AlignModuleTool::setAlignParLists
virtual void setAlignParLists(AlignPar2DVec *fullAlignParList, AlignPar2DVec *alignParList=0) override
Sets the AlignParLists using boost::multi_array.
Definition: AlignModuleTool.cxx:83
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
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
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:146
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
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
Trk::RIO_OnTrack::identify
Identifier identify() const
return the identifier -extends MeasurementBase
Definition: RIO_OnTrack.h:152
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Trk::AlignModuleTool::getFullAlignPars
AlignParVec * getFullAlignPars(const AlignModule *alignModule) const override
returns vector of full AlignPars for an AlignModule
Definition: AlignModuleTool.cxx:303
AlignPar.h
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition: GeoPrimitives.h:45
Trk::TrkDetElementBase::identifyHash
virtual IdentifierHash identifyHash() const =0
Identifier hash.
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:161
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:162
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:854
Identifier
Definition: IdentifierFieldParser.cxx:14