51 (version.tag() ==
"Pixel-01" || version.tag() ==
"Pixel-DC2-Initial-00"))
52 || version.layout() ==
"SR1" || version.layout() ==
"SR1-EndcapC");
58 std::string frameStr =
"other";
61 ATH_MSG_INFO(
"Registering alignment channel with key " << key <<
", level " << level
62 <<
", with frame " << frameStr <<
".");
89 std::map<std::string, LevelInfo>::const_iterator iter;
104 bool alignmentChange =
false;
116 alignmentChange = (alignmentChange || status);
117 }
catch(std::runtime_error& err) {
120 return StatusCode::FAILURE;
129 alignmentChange = (alignmentChange ||
status);
131 catch(std::runtime_error& err) {
134 return StatusCode::FAILURE;
141 alignmentChange = (alignmentChange ||
status);
142 }
catch(std::runtime_error& err) {
151 for (std::list<std::string>::const_iterator itr=
keys.begin(); itr!=
keys.end(); ++itr) {
153 const std::string &
key = *itr;
162 alignmentChange = (alignmentChange ||
status);
163 }
catch(std::runtime_error& err) {
166 return StatusCode::FAILURE;
174 alignmentChange = (alignmentChange ||
status);
175 }
catch(std::runtime_error& err) {
178 return StatusCode::FAILURE;
185 alignmentChange = (alignmentChange ||
status);
187 catch(std::runtime_error& err) {
190 return StatusCode::FAILURE;
195 return StatusCode::RECOVERABLE;
201 if (alignmentChange) {
206 return StatusCode::SUCCESS;
215 bool alignmentChange =
false;
218 for(
const auto& alignObj : alignObjects) {
219 const std::string& key = alignObj.first;
228 alignmentChange = (alignmentChange || status);
229 }
catch(std::runtime_error& err) {
232 return StatusCode::FAILURE;
240 alignmentChange = (alignmentChange || status);
241 }
catch(std::runtime_error& err) {
244 return StatusCode::FAILURE;
253 alignmentChange = (alignmentChange || status);
255 catch(std::runtime_error& err) {
259 return StatusCode::FAILURE;
264 ATH_MSG_ERROR(
"Unrecognized folder name "<<key<<
". Expected names are:");
269 return StatusCode::RECOVERABLE;
272 return StatusCode::SUCCESS;
277 bool alignmentChange =
false;
282 ATH_MSG_ERROR(
"Cannot find AlignableTransformContainer for key "
283 << key <<
" - no misalignment");
285 throw std::runtime_error(
"Unable to apply Inner Detector alignments");
290 << key <<
" is empty. Probably due to out of range IOV");
292 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
298 alignmentChange = (alignmentChange || status);
300 return alignmentChange;
305 bool alignmentChange =
false;
310 <<
" is empty. Probably due to out of range IOV");
312 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
317 std::map<const std::string, const AlignableTransform*> stringToTransform;
319 stringToTransform[pat->tag()] = pat;
321 for (
const std::pair<const std::string, const AlignableTransform*>& value: stringToTransform) {
322 bool status =
processKey(value.first, value.second, alignStore);
323 alignmentChange = (alignmentChange || status);
325 return alignmentChange;
330 GeoVAlignmentStore* alignStore)
const
332 bool alignmentChange =
false;
340 ATH_MSG_DEBUG(
"Channel " << key <<
" not registered in this manager");
344 if (!levelInfo.
isValid() )
return false;
348 trans_iter != transformCollection->
end();
351 <<
getIdHelper()->show_to_string(trans_iter->identify())
352 <<
" at level " << levelInfo.
level());
358 trans_iter->identify(),
363 alignmentChange = (alignmentChange || status);
368 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
369 <<
" Probably OK if its /Indet/Align/ID folder. "
370 <<
getIdHelper()->show_to_string(trans_iter->identify())
371 <<
" at level " << levelInfo.
level());
374 ATH_MSG_DEBUG(
"WARNING: Cannot set AlignableTransform for identifier "
375 <<
getIdHelper()->show_to_string(trans_iter->identify())
376 <<
" at level " << levelInfo.
level());
379 <<
getIdHelper()->show_to_string(trans_iter->identify())
380 <<
" at level " << levelInfo.
level());
381 ATH_MSG_WARNING(
"Subsequent WARNINGS will be printed at DEBUG level.");
387 return alignmentChange;
393 GeoVAlignmentStore* alignStore)
const
395 bool alignmentChange =
false;
397 ATH_MSG_DEBUG(
"processing GlobalAlignmentContainer with key: " << key);
404 ATH_MSG_DEBUG(
"Channel " << key <<
" not registered in this manager");
408 if (!levelInfo.
isValid() )
return false;
413 alignmentChange = (alignmentChange || status);
415 return alignmentChange;
#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...
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
#define IOVSVC_CALLBACK_ARGS_P(I, K)
short hand for IOVSvc call back argument list, to be used when access to formal arguments is needed,...
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
This class is a collection of AttributeLists where each one is associated with a channel number.
Private helper class definition.
virtual bool identifierBelongs(const Identifier &id) const =0
Check identifier is for this detector.
StoreGateSvc * m_detStore
void addGlobalFolder(const std::string &key)
void addAlignFolderType(const AlignFolderType alignfolder)
AlignFolderType m_alignfoldertype
bool processKey(const std::string &key, const AlignableTransform *transformCollection, GeoVAlignmentStore *alignStore=nullptr) const
Called by processAlignmentContainer, applies only one key on the transform Collections.
InDetDetectorManager(StoreGateSvc *detStore, const std::string &name)
std::set< std::string > m_specialFolders
const std::string & getLayout() const
virtual bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder)=0
static const LevelInfo s_invalidLevel
void addChannel(const std::string &key, int level, FrameType frame)
Alignment access.
void addFolder(const std::string &key)
virtual bool processGlobalAlignment(const std::string &key, int level, FrameType frame, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
const LevelInfo & getLevel(const std::string &key) const
Retrieve level information.
bool processGlobalAlignmentContainer(const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
virtual const AtlasDetectorID * getIdHelper() const =0
void addSpecialFolder(const std::string &key)
std::set< std::string > m_folders
std::atomic_bool m_suppressWarnings
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore=nullptr) const =0
Set method applying the delta transform (in global or local frame) onto the geoModel transform : CLHE...
virtual void invalidateAll()=0
Invalidate cache for all detector elements.
std::set< std::string > m_globalFolders
void setVersion(const Version &version)
StatusCode align(IOVSVC_CALLBACK_ARGS)
const Version & getVersion() const
Get version information.
bool processAlignmentContainer(const std::string &key) const
return align folder string to use
std::map< std::string, LevelInfo > m_keys
virtual ~InDetDetectorManager()
Class to hold version information consisting of tag, name layout and description as strings,...
The Athena Transient Store API.
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
std::map< std::string, const void * > RawAlignmentObjects