ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::AlignModuleTool Class Referenceabstract

#include <AlignModuleTool.h>

Inheritance diagram for Trk::AlignModuleTool:
Collaboration diagram for Trk::AlignModuleTool:

Public Types

typedef DataVector< AlignParAlignParVec
typedef DataVector< AlignParVecAlignPar2DVec

Public Member Functions

 AlignModuleTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode initialize () override
virtual StatusCode finalize () override
AlignModuleListType alignModuleListType () const override
 returns type of AlignModuleList (see AlignModuleList.h for more info)
virtual void setAlignModules (AlignModuleList *alignmods, std::vector< AlignModuleList * > *idHashMaps) override
 sets alignModuleLists and idHash maps for a set of AlignModules.
virtual void setAlignParLists (AlignPar2DVec *fullAlignParList, AlignPar2DVec *alignParList=0) override
 Sets the AlignParLists using boost::multi_array.
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 detector type
virtual bool subDetElement (AlignModule::DetectorType detType) const override
virtual AlignModulefindAlignModule (const RIO_OnTrack *rio, AlignModule::DetectorType detType) const override
 Returns pointer to AlignModule containing RIO.
virtual AlignModulefindAlignModule (const TrkDetElementBase *det, AlignModule::DetectorType detType) const override
 Returns pointer to AlignModule containing RIO.
virtual int nAlignParameters () const override
 Returns total number of alignment parameters.
virtual const AlignModuleListalignModules1D () override
 Returns 1-D vector of all AlignModules containing all detector types.
virtual AlignParVecalignParList1D () override
 Returns 1-D vector of all AlignPars for all detector types.
virtual AlignParVecgetAlignPars (const AlignModule *alignModule) const override
 returns vector of AlignPars for an AlignModule
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 position, to be inherited by detector-specific align modules
virtual void restoreModule (const AlignModule *) const override
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 necessary
virtual const AlignModuleListgetAlignModuleCollection () const override
 Returns collection of AlignModules for a particular detector type.
AlignParVecgetFullAlignPars (const AlignModule *alignModule) const override
 returns vector of full AlignPars for an AlignModule
AlignModule::DetectorType getDetectorType (const TrkDetElementBase *det) const override
 Returns detector type (AlignModule enum) for a detector element.
virtual int subDetElementIDHash (Identifier) const
 Returns identifier hash for sub-TrkDetElementBase structure based on detector type.
AlignPar2DVecalignParList () const
 returns complete AlignParList (active parameters only)
AlignPar2DVecfullAlignParList () const
 returns complete AlignParList
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
virtual void setAlignParLists (DataVector< DataVector< AlignPar > > *fullAlignParList, DataVector< DataVector< AlignPar > > *alignParList)=0
 sets AlignPar for AlignModules for a particular detector type
virtual void setMeasurementProperties (AlignTSOS *) const
 allows to set detector specific properties of AlignTSOS, like measurement direction (CSC) or fan-out angle (SCT)
virtual void setLogStream (std::ostream *os)
 sets the output stream for the logfile

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Protected Attributes

const AtlasDetectorIDm_idHelper = nullptr
 Used to identify type of detector.
std::ostream * m_logStream = nullptr
 logfile output stream

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

IntegerProperty m_alignModuleListType {this, "AlignModuleListType", Trk::L3}
 uses Trk enum AlignModuleListType (L1,L2,L3,L1_5,L2_5)
AlignModuleListm_alignModules = nullptr
 list of AlignModules
std::vector< const AlignModuleList * > m_alignModuleMaps
 maps detector element idHash to AlignModule
AlignPar2DVecm_alignParList = nullptr
 contains active parameters
AlignPar2DVecm_fullAlignParList = nullptr
 contains all parameters
std::vector< AlignModule * > m_alignModules1D
 1-D vector of AlignModules
AlignParVec m_alignParList1D
 1-D vector of AlignPars
std::vector< bool > m_subDetElement
 identify detectors aligning structures smaller than TrkDetElementBase
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 36 of file AlignModuleTool.h.

Member Typedef Documentation

◆ AlignPar2DVec

◆ AlignParVec

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ AlignModuleTool()

AlignModuleTool::AlignModuleTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 20 of file AlignModuleTool.cxx.

23 : AthAlgTool(type,name,parent)
27 {
28 declareInterface<IAlignModuleTool>(this);
29 }
AthAlgTool()
Default constructor:
std::vector< bool > m_subDetElement
identify detectors aligning structures smaller than TrkDetElementBase
std::vector< const AlignModuleList * > m_alignModuleMaps
maps detector element idHash to AlignModule
AlignParVec m_alignParList1D
1-D vector of AlignPars
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts

Member Function Documentation

◆ alignModuleListType()

AlignModuleListType Trk::AlignModuleTool::alignModuleListType ( ) const
inlineoverridevirtual

returns type of AlignModuleList (see AlignModuleList.h for more info)

Implements Trk::IAlignModuleTool.

Definition at line 48 of file AlignModuleTool.h.

48 {
49 return static_cast<AlignModuleListType>(m_alignModuleListType.value());
50 }
IntegerProperty m_alignModuleListType
uses Trk enum AlignModuleListType (L1,L2,L3,L1_5,L2_5)
AlignModuleListType
Type of AlignModuleList (see description above).

◆ alignModules1D()

virtual const AlignModuleList * Trk::AlignModuleTool::alignModules1D ( )
inlineoverridevirtual

Returns 1-D vector of all AlignModules containing all detector types.

Implements Trk::IAlignModuleTool.

Definition at line 88 of file AlignModuleTool.h.

88{ return &m_alignModules1D; }
std::vector< AlignModule * > m_alignModules1D
1-D vector of AlignModules

◆ alignParList()

AlignPar2DVec * Trk::AlignModuleTool::alignParList ( ) const
inline

returns complete AlignParList (active parameters only)

Definition at line 143 of file AlignModuleTool.h.

143{ return m_alignParList; }
AlignPar2DVec * m_alignParList
contains active parameters

◆ alignParList1D()

virtual AlignParVec * Trk::AlignModuleTool::alignParList1D ( )
inlineoverridevirtual

Returns 1-D vector of all AlignPars for all detector types.

Implements Trk::IAlignModuleTool.

Definition at line 91 of file AlignModuleTool.h.

91{ return &m_alignParList1D; }

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ fillDetAlignmentParameters()

void AlignModuleTool::fillDetAlignmentParameters ( const TrkDetElementBase * det,
DataVector< AlignPar > * apVec,
AlignModule::DetectorType detType ) const
overridevirtual

fills values for alignment parameters for a detector element, applying AlignModule transforms if necessary

Implements Trk::IAlignModuleTool.

Definition at line 195 of file AlignModuleTool.cxx.

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 }
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
AlignParVec * getFullAlignPars(const AlignModule *alignModule) const override
returns vector of full AlignPars for an AlignModule
AlignModule::DetectorType getDetectorType(const TrkDetElementBase *det) const override
Returns detector type (AlignModule enum) for a detector element.
DataVector< AlignPar > AlignParVec
Eigen::AngleAxisd AngleAxis3D
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D
void decomposeTransform(const Amg::Transform3D &transform, double *values)

◆ finalize()

StatusCode AlignModuleTool::finalize ( )
overridevirtual

Implements Trk::IAlignModuleTool.

Reimplemented in InDet::InDetAlignModuleTool.

Definition at line 53 of file AlignModuleTool.cxx.

54 {
55 return StatusCode::SUCCESS;
56 }

◆ findAlignModule() [1/2]

AlignModule * AlignModuleTool::findAlignModule ( const RIO_OnTrack * rio,
AlignModule::DetectorType detType ) const
overridevirtual

Returns pointer to AlignModule containing RIO.

Returns 0 if not found.

Implements Trk::IAlignModuleTool.

Definition at line 140 of file AlignModuleTool.cxx.

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 }
#define ATH_MSG_VERBOSE(x)
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
Identifier identify() const
return the identifier -extends MeasurementBase
virtual int subDetElementIDHash(Identifier) const
Returns identifier hash for sub-TrkDetElementBase structure based on detector type.

◆ findAlignModule() [2/2]

AlignModule * AlignModuleTool::findAlignModule ( const TrkDetElementBase * det,
AlignModule::DetectorType detType ) const
overridevirtual

Returns pointer to AlignModule containing RIO.

Returns 0 if not found.

Implements Trk::IAlignModuleTool.

Definition at line 109 of file AlignModuleTool.cxx.

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 }
#define ATH_MSG_ERROR(x)

◆ fullAlignParList()

AlignPar2DVec * Trk::AlignModuleTool::fullAlignParList ( ) const
inline

returns complete AlignParList

Definition at line 146 of file AlignModuleTool.h.

146{ return m_fullAlignParList; }
AlignPar2DVec * m_fullAlignParList
contains all parameters

◆ getAlignModuleCollection()

virtual const AlignModuleList * Trk::AlignModuleTool::getAlignModuleCollection ( ) const
inlineoverridevirtual

Returns collection of AlignModules for a particular detector type.

Implements Trk::IAlignModuleTool.

Definition at line 120 of file AlignModuleTool.h.

121 { return m_alignModules; }
AlignModuleList * m_alignModules
list of AlignModules

◆ getAlignPars()

DataVector< AlignPar > * AlignModuleTool::getAlignPars ( const AlignModule * alignModule) const
overridevirtual

returns vector of AlignPars for an AlignModule

Implements Trk::IAlignModuleTool.

Definition at line 184 of file AlignModuleTool.cxx.

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 }

◆ getDetectorType()

AlignModule::DetectorType AlignModuleTool::getDetectorType ( const TrkDetElementBase * det) const
overridevirtual

Returns detector type (AlignModule enum) for a detector element.

Implements Trk::IAlignModuleTool.

Definition at line 283 of file AlignModuleTool.cxx.

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 }
const AtlasDetectorID * m_idHelper
Used to identify type of detector.

◆ getFullAlignPars()

AlignModuleTool::AlignParVec * AlignModuleTool::getFullAlignPars ( const AlignModule * alignModule) const
overridevirtual

returns vector of full AlignPars for an AlignModule

Implements Trk::IAlignModuleTool.

Definition at line 303 of file AlignModuleTool.cxx.

304 {
305 int idHash =alignModule->identifyHash();
306 return std::as_const(m_fullAlignParList)->at(idHash);
307 }

◆ initialize()

StatusCode AlignModuleTool::initialize ( )
overridevirtual

Implements Trk::IAlignModuleTool.

Reimplemented in InDet::InDetAlignModuleTool.

Definition at line 32 of file AlignModuleTool.cxx.

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 }
#define endmsg
#define ATH_MSG_INFO(x)
const ServiceHandle< StoreGateSvc > & detStore() const
MsgStream & msg() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & Trk::IAlignModuleTool::interfaceID ( )
inlinestaticinherited

Definition at line 148 of file IAlignModuleTool.h.

static const InterfaceID IID_TRKALIGNINTERFACES_IAlignModuleTool("Trk::IAlignModuleTool", 1, 0)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ nAlignParameters()

virtual int Trk::AlignModuleTool::nAlignParameters ( ) const
inlineoverridevirtual

Returns total number of alignment parameters.

Implements Trk::IAlignModuleTool.

Definition at line 85 of file AlignModuleTool.h.

85{ return m_alignParList1D.size(); }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ restoreModule()

virtual void Trk::AlignModuleTool::restoreModule ( const AlignModule * ) const
inlineoverridevirtual

Reimplemented from Trk::IAlignModuleTool.

Definition at line 106 of file AlignModuleTool.h.

106{}

◆ setAlignModules()

void AlignModuleTool::setAlignModules ( AlignModuleList * alignmods,
std::vector< AlignModuleList * > * idHashMaps )
overridevirtual

sets alignModuleLists and idHash maps for a set of AlignModules.

AlignModuleList should be of type Combined, containing detector elements of different types.

Implements Trk::IAlignModuleTool.

Definition at line 59 of file AlignModuleTool.cxx.

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 }

◆ setAlignParLists() [1/2]

void AlignModuleTool::setAlignParLists ( AlignPar2DVec * fullAlignParList,
AlignPar2DVec * alignParList = 0 )
overridevirtual

Sets the AlignParLists using boost::multi_array.

Lists are owned by GeometryManagerTool.

Definition at line 83 of file AlignModuleTool.cxx.

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");
94 m_alignParList1D.clear();
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) {
101 m_alignParList1D.push_back(*ap);
102 (*ap)->setIndex(index++);
103 }
104
105 }
106 }
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
AlignPar2DVec * fullAlignParList() const
returns complete AlignParList
DataVector< AlignParVec > AlignPar2DVec
AlignPar2DVec * alignParList() const
returns complete AlignParList (active parameters only)
str index
Definition DeMoScan.py:362

◆ setAlignParLists() [2/2]

virtual void Trk::IAlignModuleTool::setAlignParLists ( DataVector< DataVector< AlignPar > > * fullAlignParList,
DataVector< DataVector< AlignPar > > * alignParList )
pure virtualinherited

sets AlignPar for AlignModules for a particular detector type

◆ setLogStream()

virtual void Trk::IAlignModuleTool::setLogStream ( std::ostream * os)
inlinevirtualinherited

sets the output stream for the logfile

Definition at line 140 of file IAlignModuleTool.h.

140{ m_logStream = os; }
std::ostream * m_logStream
logfile output stream

◆ setMeasurementProperties()

virtual void Trk::IAlignModuleTool::setMeasurementProperties ( AlignTSOS * ) const
inlinevirtualinherited

allows to set detector specific properties of AlignTSOS, like measurement direction (CSC) or fan-out angle (SCT)

Reimplemented in InDet::InDetAlignModuleTool.

Definition at line 87 of file IAlignModuleTool.h.

87{};

◆ setSubDetElement()

virtual void Trk::AlignModuleTool::setSubDetElement ( AlignModule::DetectorType detType,
bool status )
inlineoverridevirtual

set and retrieve flag whether or not the sub-TrkDetElementBase structures are aligned for a given detector type

Implements Trk::IAlignModuleTool.

Definition at line 65 of file AlignModuleTool.h.

65{ m_subDetElement[detType]=status; }
status
Definition merge.py:16

◆ shiftModule()

virtual void Trk::AlignModuleTool::shiftModule ( const AlignModule * ,
const Track * ,
AlignModule::TransformParameters ,
double  ) const
inlineoverridevirtual

methods used for numerical derivative to shift module before refitting track and restore to normal position, to be inherited by detector-specific align modules

Reimplemented from Trk::IAlignModuleTool.

Definition at line 104 of file AlignModuleTool.h.

105 {}

◆ subDetElement()

virtual bool Trk::AlignModuleTool::subDetElement ( AlignModule::DetectorType detType) const
inlineoverridevirtual

Implements Trk::IAlignModuleTool.

Definition at line 66 of file AlignModuleTool.h.

66{ return m_subDetElement[detType]; }

◆ subDetElementIDHash()

virtual int Trk::AlignModuleTool::subDetElementIDHash ( Identifier ) const
inlinevirtual

Returns identifier hash for sub-TrkDetElementBase structure based on detector type.

It needs detector specific implementation in a derived class

Reimplemented in InDet::InDetAlignModuleTool.

Definition at line 140 of file AlignModuleTool.h.

140{ return 0; }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_alignModuleListType

IntegerProperty Trk::AlignModuleTool::m_alignModuleListType {this, "AlignModuleListType", Trk::L3}
private

uses Trk enum AlignModuleListType (L1,L2,L3,L1_5,L2_5)

Definition at line 153 of file AlignModuleTool.h.

153{this, "AlignModuleListType", Trk::L3};

◆ m_alignModuleMaps

std::vector<const AlignModuleList*> Trk::AlignModuleTool::m_alignModuleMaps
private

maps detector element idHash to AlignModule

Definition at line 156 of file AlignModuleTool.h.

◆ m_alignModules

AlignModuleList* Trk::AlignModuleTool::m_alignModules = nullptr
private

list of AlignModules

Definition at line 155 of file AlignModuleTool.h.

◆ m_alignModules1D

std::vector<AlignModule*> Trk::AlignModuleTool::m_alignModules1D
private

1-D vector of AlignModules

Definition at line 161 of file AlignModuleTool.h.

◆ m_alignParList

AlignPar2DVec* Trk::AlignModuleTool::m_alignParList = nullptr
private

contains active parameters

Definition at line 158 of file AlignModuleTool.h.

◆ m_alignParList1D

AlignParVec Trk::AlignModuleTool::m_alignParList1D
private

1-D vector of AlignPars

Definition at line 162 of file AlignModuleTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fullAlignParList

AlignPar2DVec* Trk::AlignModuleTool::m_fullAlignParList = nullptr
private

contains all parameters

Definition at line 159 of file AlignModuleTool.h.

◆ m_idHelper

const AtlasDetectorID* Trk::AlignModuleTool::m_idHelper = nullptr
protected

Used to identify type of detector.

Definition at line 149 of file AlignModuleTool.h.

◆ m_logStream

std::ostream* Trk::IAlignModuleTool::m_logStream = nullptr
protectedinherited

logfile output stream

Definition at line 144 of file IAlignModuleTool.h.

◆ m_subDetElement

std::vector<bool> Trk::AlignModuleTool::m_subDetElement
private

identify detectors aligning structures smaller than TrkDetElementBase

Definition at line 164 of file AlignModuleTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: