ATLAS Offline Software
Loading...
Searching...
No Matches
AlignModuleTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRKALIGNGENTOOLS_ALIGNMODULETOOL_H
6#define TRKALIGNGENTOOLS_ALIGNMODULETOOL_H
7
9#include "GaudiKernel/ToolHandle.h"
11
14
27
28class AtlasDetectorID;
29class TRT_ID;
30
31namespace Trk {
32
33 class TrkDetElementBase;
34 class RIO_OnTrack;
35
36 class AlignModuleTool : public AthAlgTool, virtual public IAlignModuleTool {
37
38 public:
41
42 AlignModuleTool(const std::string& type, const std::string& name,
43 const IInterface* parent);
44
45 virtual StatusCode initialize() override;
46 virtual StatusCode finalize() override;
47
49 return static_cast<AlignModuleListType>(m_alignModuleListType.value());
50 }
51
52 //
53 // GeometryManagerTool methods
54 //
55
57 virtual void setAlignModules(AlignModuleList* alignmods,
58 std::vector<AlignModuleList*>* idHashMaps) override;
59
62 AlignPar2DVec* alignParList=0) override;
63
65 virtual void setSubDetElement(AlignModule::DetectorType detType, bool status) override { m_subDetElement[detType]=status; }
66 virtual bool subDetElement(AlignModule::DetectorType detType) const override { return m_subDetElement[detType]; }
67
68 //
69 // AlignTrackCreator methods
70 //
71
73 virtual AlignModule * findAlignModule(const RIO_OnTrack * rio,
74 AlignModule::DetectorType detType) const override;
75
78 AlignModule::DetectorType detType) const override;
79
80 //
81 // MatrixTool methods
82 //
83
85 virtual int nAlignParameters() const override { return m_alignParList1D.size(); }
86
88 virtual const AlignModuleList* alignModules1D() override { return &m_alignModules1D; }
89
91 virtual AlignParVec* alignParList1D() override { return &m_alignParList1D; }
92
93
94 //
95 // DerivCalcTool methods
96 //
97
99 virtual AlignParVec* getAlignPars(const AlignModule* alignModule) const override;
100
104 virtual void shiftModule(const AlignModule*, const Track*,
105 AlignModule::TransformParameters, double) const override {}
106 virtual void restoreModule(const AlignModule*) const override {}
107
108
109 //
110 // AlignDBTool methods
111 //
112
115 virtual void fillDetAlignmentParameters(const TrkDetElementBase* det,
117 AlignModule::DetectorType detType) const override;
118
120 virtual const AlignModuleList* getAlignModuleCollection() const override
121 { return m_alignModules; }
122
123 //
124 // FillNtuple methods
125 //
126
128 AlignParVec* getFullAlignPars(const AlignModule* alignModule) const override;
129
130
131 //
132 // miscellaneous methods
133 //
134
137
140 virtual int subDetElementIDHash(Identifier ) const { return 0; }
141
144
147
148 protected:
149 const AtlasDetectorID* m_idHelper = nullptr;
150
151 private:
152
153 IntegerProperty m_alignModuleListType{this, "AlignModuleListType", Trk::L3};
154
156 std::vector<const AlignModuleList*> m_alignModuleMaps;
157
160
161 std::vector<AlignModule*> m_alignModules1D;
163
164 std::vector<bool> m_subDetElement;
165 };
166
167 MsgStream& operator << ( MsgStream& sl, AlignModuleTool& alignModTool);
168
169}
170
171#endif // TRKALIGNGENTOOLS_ALIGNMODULETOOL_H
An STL vector of pointers that by default owns its pointed-to elements.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Derived DataVector<T>.
Definition DataVector.h:795
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Definition RIO_OnTrack.h:70
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
virtual void setSubDetElement(AlignModule::DetectorType detType, bool status) override
set and retrieve flag whether or not the sub-TrkDetElementBase structures are aligned for a given det...
AlignModuleTool(const std::string &type, const std::string &name, const IInterface *parent)
virtual AlignParVec * alignParList1D() override
Returns 1-D vector of all AlignPars for all detector types.
std::vector< bool > m_subDetElement
identify detectors aligning structures smaller than TrkDetElementBase
std::vector< const AlignModuleList * > m_alignModuleMaps
maps detector element idHash to AlignModule
virtual void setAlignModules(AlignModuleList *alignmods, std::vector< AlignModuleList * > *idHashMaps) override
sets alignModuleLists and idHash maps for a set of AlignModules.
AlignPar2DVec * fullAlignParList() const
returns complete AlignParList
DataVector< AlignParVec > AlignPar2DVec
AlignPar2DVec * alignParList() const
returns complete AlignParList (active parameters only)
AlignModuleList * m_alignModules
list of AlignModules
virtual StatusCode initialize() override
virtual const AlignModuleList * alignModules1D() override
Returns 1-D vector of all AlignModules containing all detector types.
AlignPar2DVec * m_fullAlignParList
contains all parameters
virtual AlignModule * findAlignModule(const RIO_OnTrack *rio, AlignModule::DetectorType detType) const override
Returns pointer to AlignModule containing RIO.
virtual int nAlignParameters() const override
Returns total number of alignment parameters.
AlignPar2DVec * m_alignParList
contains active parameters
AlignParVec * getFullAlignPars(const AlignModule *alignModule) const override
returns vector of full AlignPars for an AlignModule
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...
virtual StatusCode finalize() override
virtual int subDetElementIDHash(Identifier) const
Returns identifier hash for sub-TrkDetElementBase structure based on detector type.
AlignModuleListType alignModuleListType() const override
returns type of AlignModuleList (see AlignModuleList.h for more info)
AlignModule::DetectorType getDetectorType(const TrkDetElementBase *det) const override
Returns detector type (AlignModule enum) for a detector element.
virtual AlignParVec * getAlignPars(const AlignModule *alignModule) const override
returns vector of AlignPars for an AlignModule
const AtlasDetectorID * m_idHelper
Used to identify type of detector.
virtual void shiftModule(const AlignModule *, const Track *, AlignModule::TransformParameters, double) const override
methods used for numerical derivative to shift module before refitting track and restore to normal po...
virtual void restoreModule(const AlignModule *) const override
std::vector< AlignModule * > m_alignModules1D
1-D vector of AlignModules
virtual bool subDetElement(AlignModule::DetectorType detType) const override
IntegerProperty m_alignModuleListType
uses Trk enum AlignModuleListType (L1,L2,L3,L1_5,L2_5)
AlignParVec m_alignParList1D
1-D vector of AlignPars
virtual const AlignModuleList * getAlignModuleCollection() const override
Returns collection of AlignModules for a particular detector type.
DataVector< AlignPar > AlignParVec
virtual void setAlignParLists(AlignPar2DVec *fullAlignParList, AlignPar2DVec *alignParList=0) override
Sets the AlignParLists using boost::multi_array.
TransformParameters
enum to keep track of transformation coordinates
Definition AlignModule.h:54
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Definition RIO_OnTrack.h:70
This is the base class for all tracking detector elements with read-out relevant information.
Ensure that the ATLAS eigen extensions are properly loaded.
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
std::vector< AlignModule * > AlignModuleList
AlignModuleListType
Type of AlignModuleList (see description above).