12#include "GeoModelKernel/GeoVAlignmentStore.h"
29 if (
sc.isFailure() ) {
88 throw std::runtime_error(
89 "HGTD_DetectorManager: Error adding detector element."
98 GeoAlignableTransform* transform,
99 const GeoVFullPhysVol* child)
113 <<
" hash=" << idHash
114 <<
" transform ptr=" << transform
115 <<
" child ptr=" << child);
118 std::make_unique<InDetDD::ExtendedAlignableTransform>(transform, child);
136 GeoVAlignmentStore* alignStore)
const
142 if (!idHash.
is_valid())
return false;
148 <<
" hash=" << idHash
149 <<
" ext transform ptr=" << transform
150 <<
" geo alignable ptr="
151 << (transform ? transform->alignableTransform() :
nullptr));
160 << delta.translation().x()
162 << delta.translation().y()
164 << delta.translation().z());
166 alignStore->setDelta(transform->alignableTransform(), delta);
174 GeoVAlignmentStore* alignStore)
const
181 return StatusCode::FAILURE;
186 if (container->empty()) {
188 return StatusCode::SUCCESS;
193 <<
" AlignableTransform collection(s)");
196 std::map<std::string,const AlignableTransform*> transforms;
198 for (
const auto* pat : *container) {
208 transforms[pat->tag()] = pat;
212 for (
const auto& entry : transforms) {
219 transformCollection->
begin();
220 transIter != transformCollection->
end();
233 << delta.translation().x() <<
", "
234 << delta.translation().y() <<
", "
235 << delta.translation().z() <<
")");
245 << std::boolalpha << ok);
249 <<
id.get_compact());
254 return StatusCode::SUCCESS;
266 element->invalidate();
275 element->updateCache();
#define ATH_MSG_WARNING(x)
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
const HGTD_ID * m_idHelper
virtual unsigned int getNumTreeTops() const override
Access to raw geometry:
void addTreeTop(PVConstLink treeTop)
Add a Tree top:
const InDetDD::HGTD_DetectorElement * getDetectorElement(const Identifier &id) const
access to individual elements : via Identifier
bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore) const
Apply alignment correction.
const InDetDD::HGTD_DetectorElementCollection * getDetectorElementCollection() const
Get the collection of element that is held.
void invalidateAll()
Invalidate cache for all detector elements.
void updateAll() const
Update all caches.
~HGTD_DetectorManager()
Destructor.
std::vector< PVConstLink > m_volume
HGTD_DetectorManager(StoreGateSvc *detStore)
Constructor.
std::unique_ptr< const InDetDD::SiCommonItems > m_commonItems
void addDetectorElement(InDetDD::HGTD_DetectorElement *element)
Add elememts.
std::vector< std::unique_ptr< InDetDD::ExtendedAlignableTransform > > m_alignableTransforms
const HGTD_ID * getIdHelper() const
virtual PVConstLink getTreeTop(unsigned int i) const override
void setCommonItems(std::unique_ptr< const InDetDD::SiCommonItems > &&commonItems)
Set SiCommonItems.
void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *transform, const GeoVFullPhysVol *child)
Register alignable transform.
InDetDD::HGTD_DetectorElementCollection m_elementCollection
StatusCode align(const AlignableTransformContainer *container, GeoVAlignmentStore *alignStore) const
Apply alignment constants from an AlignableTransformContainer.
This is an Identifier helper class for the HGTD subdetector.
This is a "hash" representation of an Identifier.
constexpr bool is_valid() const
Class to hold geometrical description of an HGTD detector element.
Helper class to concentrate common items, such as the pointer to the IdHelper, the lorentzAngle tool ...
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
The Athena Transient Store API.
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
Eigen::Affine3d Transform3D
DataVector< HGTD_DetectorElement > HGTD_DetectorElementCollection