ATLAS Offline Software
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 
28 class AtlasDetectorID;
29 class TRT_ID;
30 
31 namespace 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 
116  DataVector<AlignPar>* apVec,
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
Trk::AlignModuleTool::m_fullAlignParList
AlignPar2DVec * m_fullAlignParList
contains all parameters
Definition: AlignModuleTool.h:159
Trk::AlignModuleTool::alignParList1D
virtual AlignParVec * alignParList1D() override
Returns 1-D vector of all AlignPars for all detector types.
Definition: AlignModuleTool.h:91
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::IAlignModuleTool
Definition: IAlignModuleTool.h:42
Trk::AlignModuleTool::getAlignModuleCollection
virtual const AlignModuleList * getAlignModuleCollection() const override
Returns collection of AlignModules for a particular detector type.
Definition: AlignModuleTool.h:120
Trk::AlignModuleList
std::vector< AlignModule * > AlignModuleList
Definition: AlignModuleList.h:37
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
Trk::AlignModuleTool::setSubDetElement
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...
Definition: AlignModuleTool.h:65
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::TrkDetElementBase
Definition: TrkDetElementBase.h:52
Trk::AlignModuleTool::m_subDetElement
std::vector< bool > m_subDetElement
identify detectors aligning structures smaller than TrkDetElementBase
Definition: AlignModuleTool.h:164
Trk::AlignModuleTool::restoreModule
virtual void restoreModule(const AlignModule *) const override
Definition: AlignModuleTool.h:106
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::TransformParameters
TransformParameters
enum to keep track of transformation coordinates
Definition: AlignModule.h:54
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
Trk::AlignModuleTool
Definition: AlignModuleTool.h:36
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
Trk::AlignModuleTool::alignModuleListType
AlignModuleListType alignModuleListType() const override
returns type of AlignModuleList (see AlignModuleList.h for more info)
Definition: AlignModuleTool.h:48
Trk::AlignModuleTool::AlignParVec
DataVector< AlignPar > AlignParVec
Definition: AlignModuleTool.h:39
Trk::L3
@ L3
Definition: AlignModuleList.h:32
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
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::AlignModuleTool::getAlignPars
virtual AlignParVec * getAlignPars(const AlignModule *alignModule) const override
returns vector of AlignPars for an AlignModule
Definition: AlignModuleTool.cxx:184
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
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< AlignPar >
Trk::AlignModuleTool::alignParList
AlignPar2DVec * alignParList() const
returns complete AlignParList (active parameters only)
Definition: AlignModuleTool.h:143
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::AlignModuleTool::m_alignParList
AlignPar2DVec * m_alignParList
contains active parameters
Definition: AlignModuleTool.h:158
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trk::AlignModule::DetectorType
DetectorType
Definition: AlignModule.h:57
AlignModule.h
Trk::AlignModuleTool::AlignPar2DVec
DataVector< AlignParVec > AlignPar2DVec
Definition: AlignModuleTool.h:40
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
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
Trk::AlignModuleTool::subDetElement
virtual bool subDetElement(AlignModule::DetectorType detType) const override
Definition: AlignModuleTool.h:66
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
TRT_ID
Definition: TRT_ID.h:82
Trk::AlignModuleTool::nAlignParameters
virtual int nAlignParameters() const override
Returns total number of alignment parameters.
Definition: AlignModuleTool.h:85
Trk::AlignModuleTool::fullAlignParList
AlignPar2DVec * fullAlignParList() const
returns complete AlignParList
Definition: AlignModuleTool.h:146
Trk::operator<<
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
Definition: AlignModule.cxx:204
Trk::AlignModuleTool::getFullAlignPars
AlignParVec * getFullAlignPars(const AlignModule *alignModule) const override
returns vector of full AlignPars for an AlignModule
Definition: AlignModuleTool.cxx:303
IAlignModuleTool.h
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
merge.status
status
Definition: merge.py:16
AthAlgTool
Definition: AthAlgTool.h:26
Trk::AlignModuleListType
AlignModuleListType
Type of AlignModuleList (see description above).
Definition: AlignModuleList.h:32
Trk::AlignModuleTool::shiftModule
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...
Definition: AlignModuleTool.h:104
Trk::AlignModuleTool::m_alignModules1D
std::vector< AlignModule * > m_alignModules1D
1-D vector of AlignModules
Definition: AlignModuleTool.h:161
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AtlasDetectorID
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
Definition: AtlasDetectorID.h:52
Trk::AlignModuleTool::m_alignParList1D
AlignParVec m_alignParList1D
1-D vector of AlignPars
Definition: AlignModuleTool.h:162
Identifier
Definition: IdentifierFieldParser.cxx:14