 |
ATLAS Offline Software
|
#include <PixelDetectorManager.h>
|
| PixelDetectorManager (StoreGateSvc *detStore) |
| Constructor. More...
|
|
| PixelDetectorManager (StoreGateSvc *detStore, const std::string &name, const std::string &pixelIDName) |
| Constructor with name. More...
|
|
virtual unsigned int | getNumTreeTops () const override |
| Access to raw geometry: More...
|
|
virtual PVConstLink | getTreeTop (unsigned int i) const override |
|
void | addTreeTop (const PVConstLink &vol) |
| Add a Tree top: More...
|
|
virtual const SiDetectorElement * | getDetectorElement (const Identifier &id) const override |
| access to individual elements : via Identifier More...
|
|
virtual const SiDetectorElement * | getDetectorElement (const IdentifierHash &idHash) const override |
| access to individual elements : via IdentifierHash More...
|
|
const SiDetectorElement * | getDetectorElement (int barrel_endcap, int layer_wheel, int phi_module, int eta_module) const |
| access to individual elements : via element identification More...
|
|
virtual const SiDetectorElementCollection * | getDetectorElementCollection () const override |
| access to whole collection via Iterators More...
|
|
virtual SiDetectorElementCollection::const_iterator | getDetectorElementBegin () const override |
|
virtual SiDetectorElementCollection::const_iterator | getDetectorElementEnd () const override |
|
virtual SiDetectorElementCollection::iterator | getDetectorElementBegin () override |
|
virtual SiDetectorElementCollection::iterator | getDetectorElementEnd () override |
|
virtual void | addDetectorElement (SiDetectorElement *element) override |
| Add elememts. More...
|
|
virtual void | addAlignableTransform (int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child) |
| Add alignable transforms. More...
|
|
virtual void | addAlignableTransform (int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVPhysVol *child) |
| As above but does a dynamic_cast to GeoVFullPhysVol. More...
|
|
virtual void | addAlignableTransform (int, const Identifier &, GeoAlignableTransform *) override |
| Add alignable transforms. More...
|
|
virtual void | initNeighbours () override |
| Initialize the neighbours. More...
|
|
virtual bool | isPixel () const override |
| Methods to query which manager we have. More...
|
|
virtual bool | identifierBelongs (const Identifier &id) const override |
| Check identifier is for this detector. More...
|
|
unsigned int | getBarrelLayers () const |
| Layers built. More...
|
|
unsigned int | getEndcapLayers () const |
| Layers built. More...
|
|
virtual const PixelModuleDesign * | getPixelDesign (int i) const |
| Access to module design, Casts to PixelModuleDesign. More...
|
|
bool | processSpecialAlignment (const std::string &, InDetDD::AlignFolderType) override |
| Process new IBLDist DB folder. More...
|
|
bool | processSpecialAlignment (const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const override |
|
virtual bool | processGlobalAlignment (const std::string &, int level, FrameType frame, const CondAttrListCollection *obj, GeoVAlignmentStore *alignStore) const override |
| Process new global DB folders for L1 and L2. More...
|
|
const std::string & | tag () const |
| Get tag used in dictionary. More...
|
|
bool | isSCT () const |
|
virtual void | invalidateAll () |
| Invalidate cache for all detector elements. More...
|
|
virtual void | updateAll () const |
| Update all caches. More...
|
|
const SiDetectorDesign * | addDesign (std::unique_ptr< const SiDetectorDesign > &&) |
| Access to module design; returns an observer pointer. More...
|
|
int | numDesigns () const |
|
const SiDetectorDesign * | getDesign (int i) const |
|
const SiNumerology & | numerology () const |
| Access Numerology. More...
|
|
SiNumerology & | numerology () |
|
void | setCommonItems (std::unique_ptr< const SiCommonItems > &&commonItems) |
| Set SiCommonItems. More...
|
|
const Version & | getVersion () const |
| Get version information. More...
|
|
const std::string & | getLayout () const |
|
void | setVersion (const Version &version) |
|
void | addChannel (const std::string &key, int level, FrameType frame) |
| Alignment access. More...
|
|
void | addFolder (const std::string &key) |
|
void | addSpecialFolder (const std::string &key) |
|
void | addGlobalFolder (const std::string &key) |
|
void | addAlignFolderType (const AlignFolderType alignfolder) |
|
StatusCode | align (IOVSVC_CALLBACK_ARGS) |
|
StatusCode | align (const RawAlignmentObjects &alignObjects, GeoVAlignmentStore *alignStore) const |
|
bool | msgLvl (const MSG::Level lvl) const |
| Test the output level. More...
|
|
MsgStream & | msg () const |
| The standard message stream. More...
|
|
MsgStream & | msg (const MSG::Level lvl) const |
| The standard message stream. More...
|
|
void | setLevel (MSG::Level lvl) |
| Change the current logging level. More...
|
|
|
virtual bool | setAlignableTransformDelta (int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const override |
| implements the main alignment update for delta transforms in different frames, it translates into the LocalDelta or GlobalDelta function of SiDetectorManager More...
|
|
const PixelDetectorManager & | operator= (const PixelDetectorManager &right) |
| prevent copy and assignment More...
|
|
| PixelDetectorManager (const PixelDetectorManager &right) |
|
virtual const PixelID * | getIdHelper () const override |
|
void | printTransform (MSG::Level level, const Amg::Transform3D &tr) const |
|
const LevelInfo & | getLevel (const std::string &key) const |
| Retrieve level information. More...
|
|
bool | processAlignmentContainer (const std::string &key) const |
| return align folder string to use More...
|
|
bool | processAlignmentContainer (const AlignableTransformContainer *container, GeoVAlignmentStore *alignStore) const |
|
bool | processKey (const std::string &key, const AlignableTransform *transformCollection, GeoVAlignmentStore *alignStore=nullptr) const |
| Called by processAlignmentContainer, applies only one key on the transform Collections. More...
|
|
bool | processGlobalAlignmentContainer (const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const |
|
void | initMessaging () const |
| Initialize our message level and MessageSvc. More...
|
|
Dedicated detector manager extending the functionality of the SiDetectorManager with dedicated pixel information, access.
- Author
- : Grant Gorfine
- modified and maintained by Nick Styles & Andreas Salzburger
Definition at line 47 of file PixelDetectorManager.h.
◆ AlignableTransformMap
◆ PixelDetectorManager() [1/3]
InDetDD::PixelDetectorManager::PixelDetectorManager |
( |
StoreGateSvc * |
detStore | ) |
|
◆ PixelDetectorManager() [2/3]
InDetDD::PixelDetectorManager::PixelDetectorManager |
( |
StoreGateSvc * |
detStore, |
|
|
const std::string & |
name, |
|
|
const std::string & |
pixelIDName |
|
) |
| |
◆ PixelDetectorManager() [3/3]
◆ addAlignableTransform() [1/3]
void InDetDD::PixelDetectorManager::addAlignableTransform |
( |
int |
level, |
|
|
const Identifier & |
id, |
|
|
GeoAlignableTransform * |
xf, |
|
|
const GeoVFullPhysVol * |
child |
|
) |
| |
|
virtual |
Add alignable transforms.
No access to these, they will be changed by manager:
Definition at line 274 of file PixelDetectorManager.cxx.
◆ addAlignableTransform() [2/3]
void InDetDD::PixelDetectorManager::addAlignableTransform |
( |
int |
level, |
|
|
const Identifier & |
id, |
|
|
GeoAlignableTransform * |
xf, |
|
|
const GeoVPhysVol * |
child |
|
) |
| |
|
virtual |
As above but does a dynamic_cast to GeoVFullPhysVol.
Definition at line 257 of file PixelDetectorManager.cxx.
265 const GeoVFullPhysVol * childFPV =
dynamic_cast<const GeoVFullPhysVol *
>(child);
267 ATH_MSG_ERROR(
"Child of alignable transform is not a full physical volume");
◆ addAlignableTransform() [3/3]
virtual void InDetDD::PixelDetectorManager::addAlignableTransform |
( |
int |
level, |
|
|
const Identifier & |
id, |
|
|
GeoAlignableTransform * |
xf |
|
) |
| |
|
inlineoverridevirtual |
◆ addAlignFolderType()
◆ addChannel()
void InDetDD::InDetDetectorManager::addChannel |
( |
const std::string & |
key, |
|
|
int |
level, |
|
|
FrameType |
frame |
|
) |
| |
|
inherited |
Alignment access.
Definition at line 56 of file InDetDetectorManager.cxx.
58 std::string frameStr =
"other";
62 <<
", with frame " << frameStr <<
".");
◆ addDesign()
◆ addDetectorElement()
void InDetDD::PixelDetectorManager::addDetectorElement |
( |
SiDetectorElement * |
element | ) |
|
|
overridevirtual |
◆ addFolder()
void InDetDD::InDetDetectorManager::addFolder |
( |
const std::string & |
key | ) |
|
|
inherited |
◆ addGlobalFolder()
void InDetDD::InDetDetectorManager::addGlobalFolder |
( |
const std::string & |
key | ) |
|
|
inherited |
◆ addSpecialFolder()
void InDetDD::InDetDetectorManager::addSpecialFolder |
( |
const std::string & |
key | ) |
|
|
inherited |
◆ addTreeTop()
void InDetDD::PixelDetectorManager::addTreeTop |
( |
const PVConstLink & |
vol | ) |
|
◆ align() [1/2]
StatusCode InDetDD::InDetDetectorManager::align |
( |
const RawAlignmentObjects & |
alignObjects, |
|
|
GeoVAlignmentStore * |
alignStore |
|
) |
| const |
|
inherited |
Definition at line 209 of file InDetDetectorManager.cxx.
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;
269 return StatusCode::RECOVERABLE;
272 return StatusCode::SUCCESS;
◆ align() [2/2]
◆ getBarrelLayers()
unsigned int InDetDD::PixelDetectorManager::getBarrelLayers |
( |
| ) |
const |
Layers built.
Deprecated. Recommend to access via numerology (see SiDetectorManager) Warning: decodes in "human-readable", e.g. using 3 out of 3 pixel layers yiels 111, the laset two out of 3 in 110, etc.
Definition at line 172 of file PixelDetectorManager.cxx.
174 unsigned int barrelLayers = 0;
◆ getDesign()
◆ getDetectorElement() [1/3]
◆ getDetectorElement() [2/3]
◆ getDetectorElement() [3/3]
const SiDetectorElement * InDetDD::PixelDetectorManager::getDetectorElement |
( |
int |
barrel_endcap, |
|
|
int |
layer_wheel, |
|
|
int |
phi_module, |
|
|
int |
eta_module |
|
) |
| const |
◆ getDetectorElementBegin() [1/2]
◆ getDetectorElementBegin() [2/2]
◆ getDetectorElementCollection()
◆ getDetectorElementEnd() [1/2]
◆ getDetectorElementEnd() [2/2]
◆ getEndcapLayers()
unsigned int InDetDD::PixelDetectorManager::getEndcapLayers |
( |
| ) |
const |
Layers built.
Deprecated. Recommend to access via numerology (see SiDetectorManager) Warning: decodes in "human-readable", e.g. using 3 out of 3 pixel layers yiels 111, the laset two out of 3 in 110, etc.
Definition at line 182 of file PixelDetectorManager.cxx.
184 unsigned int endcapLayers = 0;
◆ getIdHelper()
const PixelID * InDetDD::PixelDetectorManager::getIdHelper |
( |
| ) |
const |
|
overrideprivatevirtual |
◆ getLayout()
const std::string & InDetDD::InDetDetectorManager::getLayout |
( |
| ) |
const |
|
inherited |
◆ getLevel()
◆ getNumTreeTops()
unsigned int InDetDD::PixelDetectorManager::getNumTreeTops |
( |
| ) |
const |
|
overridevirtual |
◆ getPixelDesign()
◆ getTreeTop()
PVConstLink InDetDD::PixelDetectorManager::getTreeTop |
( |
unsigned int |
i | ) |
const |
|
overridevirtual |
◆ getVersion()
const Version & InDetDD::InDetDetectorManager::getVersion |
( |
| ) |
const |
|
inherited |
◆ identifierBelongs()
bool InDetDD::PixelDetectorManager::identifierBelongs |
( |
const Identifier & |
id | ) |
const |
|
overridevirtual |
◆ initMessaging()
void AthMessaging::initMessaging |
( |
| ) |
const |
|
privateinherited |
Initialize our message level and MessageSvc.
This method should only be called once.
Definition at line 39 of file AthMessaging.cxx.
◆ initNeighbours()
void InDetDD::PixelDetectorManager::initNeighbours |
( |
| ) |
|
|
overridevirtual |
◆ invalidateAll()
void InDetDD::SiDetectorManager::invalidateAll |
( |
| ) |
|
|
virtualinherited |
◆ isPixel()
virtual bool InDetDD::PixelDetectorManager::isPixel |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ isSCT()
bool InDetDD::SiDetectorManager::isSCT |
( |
| ) |
const |
|
inlineinherited |
◆ msg() [1/2]
MsgStream & AthMessaging::msg |
( |
| ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 164 of file AthMessaging.h.
◆ msg() [2/2]
MsgStream & AthMessaging::msg |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 179 of file AthMessaging.h.
180 {
return msg() << lvl; }
◆ msgLvl()
bool AthMessaging::msgLvl |
( |
const MSG::Level |
lvl | ) |
const |
|
inlineinherited |
Test the output level.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
◆ numDesigns()
int InDetDD::SiDetectorManager::numDesigns |
( |
| ) |
const |
|
inherited |
◆ numerology() [1/2]
◆ numerology() [2/2]
◆ operator=()
prevent copy and assignment
◆ printTransform()
void InDetDD::PixelDetectorManager::printTransform |
( |
MSG::Level |
level, |
|
|
const Amg::Transform3D & |
tr |
|
) |
| const |
|
private |
◆ processAlignmentContainer() [1/2]
Definition at line 303 of file InDetDetectorManager.cxx.
305 bool alignmentChange =
false;
308 if (container->
empty()) {
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;
318 for (
const auto *
pat : *container) {
319 stringToTransform[
pat->tag()] =
pat;
321 for (
const std::pair<const std::string, const AlignableTransform*>&
value: stringToTransform) {
323 alignmentChange = (alignmentChange ||
status);
325 return alignmentChange;
◆ processAlignmentContainer() [2/2]
bool InDetDD::InDetDetectorManager::processAlignmentContainer |
( |
const std::string & |
key | ) |
const |
|
privateinherited |
return align folder string to use
Process the alignment container, calls processKey
Definition at line 275 of file InDetDetectorManager.cxx.
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");
288 if (container->
empty()) {
290 <<
key <<
" is empty. Probably due to out of range IOV");
292 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
295 for (
const auto *
pat : *container) {
298 alignmentChange = (alignmentChange ||
status);
300 return alignmentChange;
◆ processGlobalAlignment()
Process new global DB folders for L1 and L2.
Reimplemented from InDetDD::InDetDetectorManager.
Definition at line 577 of file PixelDetectorManager.cxx.
580 bool alignmentChange =
false;
582 ATH_MSG_INFO(
"Processing new global alignment containers with key " <<
key
583 <<
" in the " << frame <<
" frame at level " <<
level);
592 <<
key <<
" - no new global alignment");
593 return alignmentChange;
598 return alignmentChange;
606 if (atrlist[
"det"].data<int>()!=1)
continue;
609 atrlist[
"layer"].data<int>(),
610 atrlist[
"ring"].data<int>(),
611 atrlist[
"sector"].data<int>());
617 ATH_MSG_WARNING(
"No global alignment corrections can be applied for invalid HashID's - exiting");
623 Amg::Translation3D newtranslation(atrlist[
"Tx"].data<float>(),atrlist[
"Ty"].data<float>(),atrlist[
"Tz"].data<float>());
624 Amg::Transform3D newtrans = newtranslation * Amg::RotationMatrix3D::Identity();
630 <<
" ,det: " << atrlist[
"det"].data<
int>()
631 <<
" ,bec: " << atrlist[
"bec"].data<
int>()
632 <<
" ,layer: " << atrlist[
"layer"].data<
int>()
633 <<
" ,ring: " << atrlist[
"ring"].data<
int>()
634 <<
" ,sector: " << atrlist[
"sector"].data<
int>()
635 <<
" ,Tx: " << atrlist[
"Tx"].data<
float>()
636 <<
" ,Ty: " << atrlist[
"Ty"].data<
float>()
637 <<
" ,Tz: " << atrlist[
"Tz"].data<
float>()
638 <<
" ,Rx: " << atrlist[
"Rx"].data<
float>()
639 <<
" ,Ry: " << atrlist[
"Ry"].data<
float>()
640 <<
" ,Rz: " << atrlist[
"Rz"].data<
float>());
650 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
652 <<
" at level " <<
level <<
" for new global DB");
655 alignmentChange = (alignmentChange ||
status);
658 return alignmentChange;
◆ processGlobalAlignmentContainer()
bool InDetDD::InDetDetectorManager::processGlobalAlignmentContainer |
( |
const std::string & |
key, |
|
|
const CondAttrListCollection * |
obj = nullptr , |
|
|
GeoVAlignmentStore * |
alignStore = nullptr |
|
) |
| const |
|
privateinherited |
Definition at line 391 of file InDetDetectorManager.cxx.
395 bool alignmentChange =
false;
401 if (levelInfo.isValid()) {
408 if (!levelInfo.isValid() )
return false;
413 alignmentChange = (alignmentChange ||
status);
415 return alignmentChange;
◆ processKey()
bool InDetDD::InDetDetectorManager::processKey |
( |
const std::string & |
key, |
|
|
const AlignableTransform * |
transformCollection, |
|
|
GeoVAlignmentStore * |
alignStore = nullptr |
|
) |
| const |
|
privateinherited |
Called by processAlignmentContainer, applies only one key on the transform Collections.
Definition at line 328 of file InDetDetectorManager.cxx.
332 bool alignmentChange =
false;
337 if (levelInfo.isValid()) {
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;
◆ processSpecialAlignment() [1/2]
Process new IBLDist DB folder.
Matthias D. (Oct. 2016): The idea of this first implementation is to get the AlignTransforms for IBL modules from their folder; Calculate from the new DB entries the Tx displacement for this module; Make a simple transfrom in local frame; Add the Tx to the aligntransform; Apply this new transform with the setAlignableTransformDelta() function; This is non-optimal as it simply overrides the previous Delta (these are included in total Delta); Possibly we could extend this in future to add tweak() functionality to GeoAlignableTransform?
Verbose level debug section for transforms
End of verbose level debug section
Implements InDetDD::InDetDetectorManager.
Definition at line 311 of file PixelDetectorManager.cxx.
314 bool alignmentChange =
false;
316 std::string alignfolder;
320 ATH_MSG_INFO(
"Processing IBLDist alignment container with key (" <<
key <<
")"
321 <<
"and alignment folder pointing to " << alignfolder);
324 if (
numerology().numPhiModulesForLayer(0)<14) nstaves = 14;
327 std::vector<float> ibldist;
328 std::vector<float> iblbaseline;
329 ibldist.resize(nstaves);
330 iblbaseline.resize(nstaves);
337 ibldist[atrlist[
"stave"].data<
int>()] = atrlist[
"mag"].data<float>();
338 iblbaseline[atrlist[
"stave"].data<
int>()] = atrlist[
"base"].data<float>();
341 <<
" ,stave: " << atrlist[
"stave"].data<
int>()
342 <<
" ,mag: " << atrlist[
"mag"].data<
float>()
343 <<
" ,base: " << atrlist[
"base"].data<
float>());
348 <<
key <<
" - no IBL bowing alignment");
349 return alignmentChange;
365 ATH_MSG_ERROR(
"Cannot find AlignableTransformContainer for key "
366 <<
key <<
" - no misalignment");
368 throw std::runtime_error(
"Unable to apply Inner Detector alignments");
371 if (container->
empty()) {
373 <<
key <<
" is empty. Probably due to out of range IOV");
375 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
378 std::string IBLalignfolder = alignfolder;
379 IBLalignfolder.append(
"/PIXB1");
380 for (
const auto *
pat : *container)
382 if (!(
pat->tag()==IBLalignfolder &&
390 trans_iter != transformCollection->
end();
394 <<
getIdHelper()->show_to_string(trans_iter->identify()));
399 <<
getIdHelper()->show_to_string(trans_iter->identify()));
400 ATH_MSG_WARNING(
"No IBLDist corrections can be applied for invalid HashID's - exiting");
406 double z = center[2];
407 const double y0y0 = 366.5*366.5;
413 ATH_MSG_DEBUG(
"Total IBL-module Tx shift (baseline+bowing): " << basex+bowx);
414 if ( (basex+bowx)==0 )
continue;
435 trans_iter->identify(),
441 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
442 <<
getIdHelper()->show_to_string(trans_iter->identify())
443 <<
" at level 0 for IBLDist bowing deformation");
445 alignmentChange = (alignmentChange ||
status);
450 return alignmentChange;
◆ processSpecialAlignment() [2/2]
bool InDetDD::PixelDetectorManager::processSpecialAlignment |
( |
const std::string & |
key, |
|
|
const CondAttrListCollection * |
obj = nullptr , |
|
|
GeoVAlignmentStore * |
alignStore = nullptr |
|
) |
| const |
|
overridevirtual |
Paul Gessinger (Jun 2019): For MT, we won't retrieve the underlying actual alignable transform container, since that's hard to come by. We loop over all detector elements, check if they match the detector elements we have IBL dist info for, retrieve the actual transform from the provided GeoAlignmentStore, and re-set it to the corrected value including IBL bowing.
The calculation of the bowing is taken from the non-MT implementation above.
Implements InDetDD::InDetDetectorManager.
Definition at line 453 of file PixelDetectorManager.cxx.
456 bool alignmentChange =
false;
458 ATH_MSG_INFO(
"Processing IBLDist alignment container with key " <<
key);
461 return alignmentChange;
465 if (
numerology().numPhiModulesForLayer(0) < 14)
470 std::vector<float> ibldist;
471 std::vector<float> iblbaseline;
472 ibldist.resize(nstaves);
473 iblbaseline.resize(nstaves);
477 citr !=
obj->end(); ++citr) {
480 ibldist[atrlist[
"stave"].data<
int>()] = atrlist[
"mag"].data<float>();
481 iblbaseline[atrlist[
"stave"].data<
int>()] = atrlist[
"base"].data<float>();
484 <<
", stave: " << atrlist[
"stave"].data<
int>()
485 <<
", mag: " << atrlist[
"mag"].data<
float>()
486 <<
", base: " << atrlist[
"base"].data<
float>());
502 if(!detElem->isInnermostPixelLayer()) {
515 "invalid HashID's - exiting ");
523 double z = center[2];
524 const double y0y0 = 366.5 * 366.5;
526 double bowx = ibldist[stave] * (
z *
z - y0y0) / y0y0;
527 double basex = iblbaseline[stave];
530 ATH_MSG_DEBUG(
"Total IBL-module Tx shift (baseline+bowing): " << basex + bowx);
532 if ((basex + bowx) == 0) {
537 Amg::RotationMatrix3D::Identity();
543 if (currentDelta ==
nullptr) {
544 ATH_MSG_ERROR(
"Have IBL Dist for element which does not have an alignment delta."
545 <<
" This indicates inconsistent alignment data");
568 << alignStore->getDelta(eat->alignableTransform())->matrix());
570 alignmentChange |=
status;
573 return alignmentChange;
◆ setAlignableTransformDelta()
◆ setAlignableTransformGlobalDelta()
Helper method to set delta transform from a global delta - Amg interface.
Definition at line 101 of file SiDetectorManager.cxx.
121 if (!extXF)
return false;
123 const GeoVFullPhysVol * child = extXF->child();
124 if (child && extXF->alignableTransform()) {
127 extXF->alignableTransform()->setDelta(
transform.inverse() * delta *
transform, alignStore);
◆ setAlignableTransformLocalDelta()
Helper method to set delta transform from a local delta - Amg interface.
Definition at line 62 of file SiDetectorManager.cxx.
84 if (!extXF)
return false;
86 const GeoVFullPhysVol* child = extXF->child();
87 if (child && extXF->alignableTransform()) {
94 extXF->alignableTransform()->setDelta(correctedDelta, alignStore);
◆ setCommonItems()
void InDetDD::SiDetectorManager::setCommonItems |
( |
std::unique_ptr< const SiCommonItems > && |
commonItems | ) |
|
|
inherited |
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ setVersion()
void InDetDD::InDetDetectorManager::setVersion |
( |
const Version & |
version | ) |
|
|
inherited |
◆ tag()
const std::string & InDetDD::SiDetectorManager::tag |
( |
| ) |
const |
|
inherited |
◆ updateAll()
void InDetDD::SiDetectorManager::updateAll |
( |
| ) |
const |
|
virtualinherited |
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_alignableTransforms
◆ m_alignfoldertype
◆ m_commonItems
◆ m_designs
◆ m_detStore
◆ m_elementCollection
◆ m_folders
std::set<std::string> InDetDD::InDetDetectorManager::m_folders |
|
privateinherited |
◆ m_globalFolders
std::set<std::string> InDetDD::InDetDetectorManager::m_globalFolders |
|
privateinherited |
◆ m_higherAlignableTransforms
◆ m_idHelper
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_isLogical
bool InDetDD::PixelDetectorManager::m_isLogical |
|
private |
This variable switches the how the local alignment corrections are applied If true they will be calcualted on top of all of other corrections but in the default reference frame If false they will be calcualted on top of all of other corrections but in the globally aligned reference frame.
Definition at line 178 of file PixelDetectorManager.h.
◆ m_keys
std::map<std::string, LevelInfo> InDetDD::InDetDetectorManager::m_keys |
|
privateinherited |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ m_msg_tls
boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls |
|
mutableprivateinherited |
MsgStream instance (a std::cout like with print-out levels)
Definition at line 132 of file AthMessaging.h.
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_numerology
◆ m_specialFolders
std::set<std::string> InDetDD::InDetDetectorManager::m_specialFolders |
|
privateinherited |
◆ m_suppressWarnings
std::atomic_bool InDetDD::InDetDetectorManager::m_suppressWarnings |
|
mutableprotectedinherited |
◆ m_tag
std::string InDetDD::SiDetectorManager::m_tag |
|
privateinherited |
◆ m_version
Version InDetDD::InDetDetectorManager::m_version |
|
privateinherited |
◆ m_volume
std::vector<PVConstLink> InDetDD::PixelDetectorManager::m_volume |
|
private |
◆ s_invalidLevel
The documentation for this class was generated from the following files:
void printTransform(MSG::Level level, const Amg::Transform3D &tr) const
bool is_pixel(Identifier id) const
std::atomic< MSG::Level > m_lvl
Current logging level.
const_iterator end() const
SiDetectorElementCollection m_elementCollection
const SiNumerology & numerology() const
Access Numerology.
DataModel_detail::iterator< DataVector > iterator
Standard iterator.
virtual bool identifierBelongs(const Identifier &id) const =0
Check identifier is for this detector.
const PixelID * m_idHelper
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
SiDetectorManager(StoreGateSvc *detStore, const std::string &name)
std::vector< std::unique_ptr< const SiDetectorDesign > > m_designs
A CondMultChanCollection is a template class which can hold a collection of T* objects which are inte...
static bool setAlignableTransformLocalDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &localToGlobalXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
Helper method to set delta transform from a local delta - Amg interface.
virtual const AtlasDetectorID * getIdHelper() const =0
bool useLayer(int layer) const
Check if layer exists.
This is a Identifier helper class for the PLR subdetector. This class inherits from PixelID.
std::atomic_bool m_suppressWarnings
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
GeoIntrusivePtr< T > GeoNodePtr
int get_prev_in_phi(const IdentifierHash &id, IdentifierHash &prev) const
Previous wafer hash in phi (return == 0 for neighbor found)
const std::string & layout() const
Layout (eg Initial, Final, TestBeam)
#define ATH_MSG_VERBOSE(x)
This class is a collection of AttributeLists where each one is associated with a channel number....
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::map< std::string, LevelInfo > m_keys
IMessageSvc * getMessageSvc(bool quiet=false)
const LevelInfo & getLevel(const std::string &key) const
Retrieve level information.
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
static bool setAlignableTransformGlobalDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &delta, GeoVAlignmentStore *alignStore=nullptr)
Helper method to set delta transform from a global delta - Amg interface.
bool m_isLogical
This variable switches the how the local alignment corrections are applied If true they will be calcu...
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
#define ATH_MSG_LVL_NOCHK(lvl, x)
virtual const SiDetectorElementCollection * getDetectorElementCollection() const override
access to whole collection via Iterators
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
bool msgLvl(const MSG::Level lvl) const
Test the output level.
int get_next_in_phi(const IdentifierHash &id, IdentifierHash &next) const
Next wafer hash in phi (return == 0 for neighbor found)
::StatusCode StatusCode
StatusCode definition for legacy code.
const SiDetectorDesign * getDesign(int i) const
Eigen::Affine3d Transform3D
std::set< std::string > m_globalFolders
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
const int FIRST_HIGHER_LEVEL
PixelDetectorManager(StoreGateSvc *detStore)
Constructor.
static const LevelInfo s_invalidLevel
std::string repr(PyObject *o)
returns the string representation of a python object equivalent of calling repr(o) in python
bool useDisk(int disk) const
Check if disk exists.
int get_next_in_eta(const IdentifierHash &id, IdentifierHash &next) const
Next wafer hash in eta (return == 0 for neighbor found)
StoreGateSvc * m_detStore
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...
MsgStream & msg() const
The standard message stream.
virtual void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *xf, const GeoVFullPhysVol *child)
Add alignable transforms.
bool is_valid() const
Check if id is in a valid state.
size_type wafer_hash_max() const
std::set< std::string > m_folders
void resize(size_type sz)
Resizes the collection to the specified number of elements.
std::vector< PVConstLink > m_volume
virtual bool isPixel() const =0
Methods to query which manager we have.
virtual const PixelID * getIdHelper() const override
SiNumerology m_numerology
constexpr unsigned int numLayers()
virtual bool processGlobalAlignment(const std::string &key, int level, FrameType frame, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
Eigen::Matrix< double, 3, 1 > Vector3D
bool processKey(const std::string &key, const AlignableTransform *transformCollection, GeoVAlignmentStore *alignStore=nullptr) const
Called by processAlignmentContainer, applies only one key on the transform Collections.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
#define ATH_MSG_WARNING(x)
ChanAttrListMap::const_iterator const_iterator
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
std::set< std::string > m_specialFolders
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const override
implements the main alignment update for delta transforms in different frames, it translates into the...
std::string m_nm
Message source name.
Eigen::Translation< double, 3 > Translation3D
bool processAlignmentContainer(const std::string &key) const
return align folder string to use
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
int numPhiModulesForLayer(int layer) const
Number of sectors in phi for a layer.
std::vector< std::unique_ptr< ExtendedAlignableTransform > > m_alignableTransforms
bool processGlobalAlignmentContainer(const std::string &key, const CondAttrListCollection *obj=nullptr, GeoVAlignmentStore *alignStore=nullptr) const
AlignFolderType m_alignfoldertype
virtual bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder)=0
Eigen::AngleAxisd AngleAxis3D
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const =0
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements : via Identifier
void initMessaging() const
Initialize our message level and MessageSvc.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
virtual SiDetectorElementCollection::const_iterator getDetectorElementBegin() const =0
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
int phi_module(const Identifier &id) const
std::unique_ptr< const SiCommonItems > m_commonItems
size_type size() const noexcept
Returns the number of elements in the collection.
int get_prev_in_eta(const IdentifierHash &id, IdentifierHash &prev) const
Previous wafer hash in eta (return == 0 for neighbor found)
std::vector< AlignableTransformMap > m_higherAlignableTransforms
bool empty() const noexcept
Returns true if the collection is empty.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.