|
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 SiDetectorElement * | getDetectorElement (const Identifier &id) const override |
| access to individual elements : via Identifier More...
|
|
virtual SiDetectorElement * | getDetectorElement (const IdentifierHash &idHash) const override |
| access to individual elements : via IdentifierHash More...
|
|
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 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) const 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 () const |
| 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) const |
|
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 262 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 245 of file PixelDetectorManager.cxx.
253 const GeoVFullPhysVol * childFPV =
dynamic_cast<const GeoVFullPhysVol *
>(child);
255 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 208 of file InDetDetectorManager.cxx.
214 bool alignmentChange =
false;
217 for(
const auto& alignObj : alignObjects) {
218 const std::string&
key = alignObj.first;
227 alignmentChange = (alignmentChange ||
status);
228 }
catch(std::runtime_error&
err) {
231 return StatusCode::FAILURE;
239 alignmentChange = (alignmentChange ||
status);
240 }
catch(std::runtime_error&
err) {
243 return StatusCode::FAILURE;
252 alignmentChange = (alignmentChange ||
status);
254 catch(std::runtime_error&
err) {
258 return StatusCode::FAILURE;
268 return StatusCode::RECOVERABLE;
276 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 165 of file PixelDetectorManager.cxx.
167 unsigned int barrelLayers = 0;
◆ getDesign()
◆ getDetectorElement() [1/3]
◆ getDetectorElement() [2/3]
◆ getDetectorElement() [3/3]
SiDetectorElement * InDetDD::PixelDetectorManager::getDetectorElement |
( |
int |
barrel_endcap, |
|
|
int |
layer_wheel, |
|
|
int |
phi_module, |
|
|
int |
eta_module |
|
) |
| const |
◆ getDetectorElementBegin()
SiDetectorElementCollection::const_iterator InDetDD::PixelDetectorManager::getDetectorElementBegin |
( |
| ) |
const |
|
overridevirtual |
◆ getDetectorElementCollection()
◆ getDetectorElementEnd()
SiDetectorElementCollection::const_iterator InDetDD::PixelDetectorManager::getDetectorElementEnd |
( |
| ) |
const |
|
overridevirtual |
◆ 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 175 of file PixelDetectorManager.cxx.
177 unsigned int endcapLayers = 0;
◆ getIdHelper()
const PixelID * InDetDD::PixelDetectorManager::getIdHelper |
( |
| ) |
const |
|
overrideprivatevirtual |
◆ getLayout()
const std::string & InDetDD::InDetDetectorManager::getLayout |
( |
| ) |
const |
|
inherited |
◆ getLevel()
Retrieve level information.
Definition at line 87 of file InDetDetectorManager.cxx.
89 std::map<std::string, LevelInfo>::const_iterator iter;
◆ 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 |
( |
| ) |
const |
|
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 307 of file InDetDetectorManager.cxx.
309 bool alignmentChange =
false;
312 if (container->
empty()) {
314 <<
" is empty. Probably due to out of range IOV");
316 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
321 std::map<const std::string, const AlignableTransform*> stringToTransform;
322 for (
const auto *
pat : *container) {
323 stringToTransform[
pat->tag()] =
pat;
325 for (
const std::pair<const std::string, const AlignableTransform*>&
value: stringToTransform) {
327 alignmentChange = (alignmentChange ||
status);
329 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 279 of file InDetDetectorManager.cxx.
281 bool alignmentChange =
false;
286 ATH_MSG_ERROR(
"Cannot find AlignableTransformContainer for key "
287 <<
key <<
" - no misalignment");
289 throw std::runtime_error(
"Unable to apply Inner Detector alignments");
292 if (container->
empty()) {
294 <<
key <<
" is empty. Probably due to out of range IOV");
296 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
299 for (
const auto *
pat : *container) {
302 alignmentChange = (alignmentChange ||
status);
304 return alignmentChange;
◆ processGlobalAlignment()
Process new global DB folders for L1 and L2.
Reimplemented from InDetDD::InDetDetectorManager.
Definition at line 565 of file PixelDetectorManager.cxx.
568 bool alignmentChange =
false;
570 ATH_MSG_INFO(
"Processing new global alignment containers with key " <<
key
571 <<
" in the " << frame <<
" frame at level " <<
level);
580 <<
key <<
" - no new global alignment");
581 return alignmentChange;
586 return alignmentChange;
594 if (atrlist[
"det"].data<int>()!=1)
continue;
597 atrlist[
"layer"].data<int>(),
598 atrlist[
"ring"].data<int>(),
599 atrlist[
"sector"].data<int>());
605 ATH_MSG_WARNING(
"No global alignment corrections can be applied for invalid HashID's - exiting");
611 Amg::Translation3D newtranslation(atrlist[
"Tx"].data<float>(),atrlist[
"Ty"].data<float>(),atrlist[
"Tz"].data<float>());
612 Amg::Transform3D newtrans = newtranslation * Amg::RotationMatrix3D::Identity();
618 <<
" ,det: " << atrlist[
"det"].data<
int>()
619 <<
" ,bec: " << atrlist[
"bec"].data<
int>()
620 <<
" ,layer: " << atrlist[
"layer"].data<
int>()
621 <<
" ,ring: " << atrlist[
"ring"].data<
int>()
622 <<
" ,sector: " << atrlist[
"sector"].data<
int>()
623 <<
" ,Tx: " << atrlist[
"Tx"].data<
float>()
624 <<
" ,Ty: " << atrlist[
"Ty"].data<
float>()
625 <<
" ,Tz: " << atrlist[
"Tz"].data<
float>()
626 <<
" ,Rx: " << atrlist[
"Rx"].data<
float>()
627 <<
" ,Ry: " << atrlist[
"Ry"].data<
float>()
628 <<
" ,Rz: " << atrlist[
"Rz"].data<
float>());
638 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
640 <<
" at level " <<
level <<
" for new global DB");
643 alignmentChange = (alignmentChange ||
status);
646 return alignmentChange;
◆ processGlobalAlignmentContainer()
bool InDetDD::InDetDetectorManager::processGlobalAlignmentContainer |
( |
const std::string & |
key, |
|
|
const CondAttrListCollection * |
obj = nullptr , |
|
|
GeoVAlignmentStore * |
alignStore = nullptr |
|
) |
| const |
|
privateinherited |
Definition at line 395 of file InDetDetectorManager.cxx.
399 bool alignmentChange =
false;
405 if (levelInfo.isValid()) {
412 if (!levelInfo.isValid() )
return false;
417 alignmentChange = (alignmentChange ||
status);
419 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 332 of file InDetDetectorManager.cxx.
336 bool alignmentChange =
false;
341 if (levelInfo.isValid()) {
348 if (!levelInfo.isValid() )
return false;
352 trans_iter != transformCollection->
end();
355 <<
getIdHelper()->show_to_string(trans_iter->identify())
356 <<
" at level " << levelInfo.level());
362 trans_iter->identify(),
367 alignmentChange = (alignmentChange ||
status);
372 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
373 <<
" Probably OK if its /Indet/Align/ID folder. "
374 <<
getIdHelper()->show_to_string(trans_iter->identify())
375 <<
" at level " << levelInfo.level());
378 ATH_MSG_DEBUG(
"WARNING: Cannot set AlignableTransform for identifier "
379 <<
getIdHelper()->show_to_string(trans_iter->identify())
380 <<
" at level " << levelInfo.level());
383 <<
getIdHelper()->show_to_string(trans_iter->identify())
384 <<
" at level " << levelInfo.level());
385 ATH_MSG_WARNING(
"Subsequent WARNINGS will be printed at DEBUG level.");
391 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 299 of file PixelDetectorManager.cxx.
302 bool alignmentChange =
false;
304 std::string alignfolder;
308 ATH_MSG_INFO(
"Processing IBLDist alignment container with key (" <<
key <<
")"
309 <<
"and alignment folder pointing to " << alignfolder);
312 if (
numerology().numPhiModulesForLayer(0)<14) nstaves = 14;
315 std::vector<float> ibldist;
316 std::vector<float> iblbaseline;
317 ibldist.resize(nstaves);
318 iblbaseline.resize(nstaves);
325 ibldist[atrlist[
"stave"].data<
int>()] = atrlist[
"mag"].data<float>();
326 iblbaseline[atrlist[
"stave"].data<
int>()] = atrlist[
"base"].data<float>();
329 <<
" ,stave: " << atrlist[
"stave"].data<
int>()
330 <<
" ,mag: " << atrlist[
"mag"].data<
float>()
331 <<
" ,base: " << atrlist[
"base"].data<
float>());
336 <<
key <<
" - no IBL bowing alignment");
337 return alignmentChange;
353 ATH_MSG_ERROR(
"Cannot find AlignableTransformContainer for key "
354 <<
key <<
" - no misalignment");
356 throw std::runtime_error(
"Unable to apply Inner Detector alignments");
359 if (container->
empty()) {
361 <<
key <<
" is empty. Probably due to out of range IOV");
363 throw std::runtime_error(
"Unable to apply Inner Detector alignments.");
366 std::string IBLalignfolder = alignfolder;
367 IBLalignfolder.append(
"/PIXB1");
368 for (
const auto *
pat : *container)
370 if (!(
pat->tag()==IBLalignfolder &&
378 trans_iter != transformCollection->
end();
382 <<
getIdHelper()->show_to_string(trans_iter->identify()));
387 <<
getIdHelper()->show_to_string(trans_iter->identify()));
388 ATH_MSG_WARNING(
"No IBLDist corrections can be applied for invalid HashID's - exiting");
394 double z = center[2];
395 const double y0y0 = 366.5*366.5;
401 ATH_MSG_DEBUG(
"Total IBL-module Tx shift (baseline+bowing): " << basex+bowx);
402 if ( (basex+bowx)==0 )
continue;
423 trans_iter->identify(),
429 ATH_MSG_DEBUG(
"Cannot set AlignableTransform for identifier."
430 <<
getIdHelper()->show_to_string(trans_iter->identify())
431 <<
" at level 0 for IBLDist bowing deformation");
433 alignmentChange = (alignmentChange ||
status);
438 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 441 of file PixelDetectorManager.cxx.
444 bool alignmentChange =
false;
446 ATH_MSG_INFO(
"Processing IBLDist alignment container with key " <<
key);
449 return alignmentChange;
453 if (
numerology().numPhiModulesForLayer(0) < 14)
458 std::vector<float> ibldist;
459 std::vector<float> iblbaseline;
460 ibldist.resize(nstaves);
461 iblbaseline.resize(nstaves);
465 citr !=
obj->end(); ++citr) {
468 ibldist[atrlist[
"stave"].data<
int>()] = atrlist[
"mag"].data<float>();
469 iblbaseline[atrlist[
"stave"].data<
int>()] = atrlist[
"base"].data<float>();
472 <<
", stave: " << atrlist[
"stave"].data<
int>()
473 <<
", mag: " << atrlist[
"mag"].data<
float>()
474 <<
", base: " << atrlist[
"base"].data<
float>());
490 if(!detElem->isInnermostPixelLayer()) {
503 "invalid HashID's - exiting ");
511 double z = center[2];
512 const double y0y0 = 366.5 * 366.5;
514 double bowx = ibldist[stave] * (
z *
z - y0y0) / y0y0;
515 double basex = iblbaseline[stave];
518 ATH_MSG_DEBUG(
"Total IBL-module Tx shift (baseline+bowing): " << basex + bowx);
520 if ((basex + bowx) == 0) {
525 Amg::RotationMatrix3D::Identity();
531 if (currentDelta ==
nullptr) {
532 ATH_MSG_ERROR(
"Have IBL Dist for element which does not have an alignment delta."
533 <<
" This indicates inconsistent alignment data");
556 << alignStore->getDelta(eat->alignableTransform())->matrix());
558 alignmentChange |=
status;
561 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 176 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
JetConstituentVector::iterator iterator
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.
virtual bool identifierBelongs(const Identifier &id) const =0
Check identifier is for this detector.
const PixelID * m_idHelper
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 an 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.
std::set< std::string > m_folders
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
size_type wafer_hash_max(void) const
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.
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
Eigen::AngleAxisd AngleAxis3D
virtual SiDetectorElementCollection::const_iterator getDetectorElementEnd() const =0
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
virtual bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType alignfolder) const =0
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.
virtual SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements : via Identifier