21 const IInterface* parent)
28 declareInterface<IAlignModuleTool>(
this);
36 msg(MSG::FATAL)<<
"AlignModuleListType can be 0, 1, 2, or 3" <<
endmsg;
37 return StatusCode::FAILURE;
40 msg(MSG::INFO).setColor(MSG::GREEN);
45 msg(MSG::FATAL)<<
"Could not get Atlas ID helper"<<
endmsg;
46 return StatusCode::FAILURE;
49 return StatusCode::SUCCESS;
55 return StatusCode::SUCCESS;
60 std::vector<AlignModuleList*>* idHashMaps)
66 for (
int i=0;i<(int)idHashMaps->size();i++) {
75 (*m_alignModules)[imod]->setIdHash(nmods++);
102 (*ap)->setIndex(
index++);
112 ATH_MSG_DEBUG(
"in AlignModuleTool::findAlignModule(det,detType)");
120 ATH_MSG_ERROR(
"please use findAlignModule method passing RIO_OnTrack");
134 int idHash = det->identifyHash();
144 ATH_MSG_DEBUG(
"in AlignModuleTool::findAlignModule(rio,detType)");
186 if (!alignModule)
return nullptr;
204 int idHash=det->identifyHash();
215 if ((*modAlignPar)[i]) {
216 alignModPar[i]=(*modAlignPar)[i]->par();
217 alignModErr[i]=(*modAlignPar)[i]->err();
220 alignModPar[i]=alignModErr[i]=0.;
231 Amg::Transform3D alignModXform = alignModXTranslation * Amg::RotationMatrix3D::Identity();
241 Amg::Transform3D alignModXformErr = alignModXTranslationErr * Amg::RotationMatrix3D::Identity();
246 ATH_MSG_DEBUG(
"getting AlignPars for detector element "<<det->identify());
252 ATH_MSG_WARNING(
"Check that order is correct: AlignModuleTool:271,284");
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]) );
288 if (
id.is_valid()) {
313 for (
int imod=0;imod<(int)modules->size(); imod++) {
314 sl <<
"AML: "<<*((*modules)[imod]);
318 for (
int iap=0;iap<(int)alignParList->
size();iap++) {
319 sl << *((*alignParList)[iap]);
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
const ServiceHandle< StoreGateSvc > & detStore() const
DataModel_detail::iterator< DataVector > iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
Identifier identify() const
const Amg::Transform3D * alignModuleToDetElementTransform(AlignModule::DetectorType detType, const TrkDetElementBase *det, const Identifier id=Identifier()) const
returns AlignModule to DetElement transform for a detector element
IdentifierHash identifyHash() const
Set and return index of module, used by alignment classes to keep track of order of align module.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
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
This is the base class for all tracking detector elements with read-out relevant information.
virtual IdentifierHash identifyHash() const =0
Identifier hash.
Eigen::AngleAxisd AngleAxis3D
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D
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
void decomposeTransform(const Amg::Transform3D &transform, double *values)