ATLAS Offline Software
TRT_DetectorManager.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
13 
14 #include "GeoModelKernel/GeoXF.h"
15 #include "GeoModelKernel/GeoAlignableTransform.h"
16 
18 
21 
22 #include "StoreGate/StoreGateSvc.h"
23 
24 #include "GaudiKernel/Bootstrap.h"
25 #include "GaudiKernel/ISvcLocator.h"
26 
28 
29 namespace InDetDD {
30 
31  const int FIRST_HIGHER_LEVEL = 1;
32 
35  m_numerology(new TRT_Numerology()),
36  m_idHelper(nullptr),
37  m_ownsIdHelper(false),
38  m_gasType(unknown),
39  m_digvers(9999),
40  m_digversname("ERROR:DIGVERSNOTSET!")
41  {
43 
44  // If detstore no passed then get it from bootstrap.
45  if (m_detStore == nullptr) {
46  StatusCode sc = Gaudi::svcLocator()->service("DetectorStore", m_detStore);
47  if (sc.isFailure()) msg(MSG::ERROR) << "Could not locate DetectorStore" << endmsg;
48  }
49 
50  m_barrelXF[0]=m_barrelXF[1]=m_barrelXF[2]=nullptr;
51  m_endcapXF[0]=m_endcapXF[1]=m_endcapXF[2]=nullptr;
52  }
53 
54 
55 
57  return m_numerology;
58  }
59 
61  return m_numerology;
62  }
63 
65  {
66  delete m_numerology;
67  if (m_ownsIdHelper) delete m_idHelper;
68  for (auto & i : m_barrelXF) delete i;
69  for (auto & i : m_endcapXF) delete i;
70 
71 
72  for (auto & m : m_alignableTransforms) {
73  for (auto & j : m) {
74  delete j.second;
75  }
76  }
77 
78  for (const TRT_BarrelDescriptor* barrelDescriptor : m_barrelDescriptors) {
79  delete barrelDescriptor;
80  }
81  for (const TRT_EndcapDescriptor* endcapDescriptor : m_endcapDescriptors) {
82  delete endcapDescriptor;
83  }
84  }
85 
86 
88  {
89  return m_volume.size();
90  }
91 
92  PVConstLink TRT_DetectorManager::getTreeTop(unsigned int i) const
93  {
94  return m_volume[i];
95  }
96 
98  m_volume.push_back(vol);
99  }
100 
101  // Manage the barrel elements:
103  {
105  }
106 
107  // Manage the endcap elements:
109  {
111  }
112 
114  , unsigned int moduleIndex
115  , unsigned int phiIndex
116  , unsigned int strawLayerIndex) const
117  {
118  return m_elementContainer.getBarrelDetElement(positive,moduleIndex,phiIndex,strawLayerIndex);
119  }
120 
122  , unsigned int moduleIndex
123  , unsigned int phiIndex
124  , unsigned int strawLayerIndex)
125  {
126  return m_elementContainer.getBarrelDetElement(positive,moduleIndex,phiIndex,strawLayerIndex);
127  }
128 
130  , unsigned int wheelIndex
131  , unsigned int strawLayerIndex
132  , unsigned int phiIndex) const
133  {
134  return m_elementContainer.getEndcapDetElement(positive,wheelIndex,strawLayerIndex,phiIndex);
135  }
136 
138  , unsigned int wheelIndex
139  , unsigned int strawLayerIndex
140  , unsigned int phiIndex)
141  {
142  return m_elementContainer.getEndcapDetElement(positive,wheelIndex,strawLayerIndex,phiIndex);
143  }
144 
146  {
147  return m_idHelper;
148  }
149 
150  void TRT_DetectorManager::setIdHelper(const TRT_ID *idHelper, bool owns)
151  {
152  m_idHelper=idHelper;
153  m_ownsIdHelper=owns;
154  }
155 
156 
157 
159  {
160  // Make sure it is a straw_layer id
161  Identifier strawLayerId = m_idHelper->layer_id(id);
162  IdentifierHash hashId = m_idHelper->straw_layer_hash(strawLayerId);
164  if (hashId>=elements->size()) return nullptr;
165  return (*elements)[hashId];
166  }
167 
169  {
171  if (id>=elements->size()) return nullptr;
172  return (*elements)[id];
173  }
174 
176  {
177  return &m_elementContainer;
178  }
179 
181  {
183  }
184 
185  TRT_DetElementCollection::const_iterator TRT_DetectorManager::getDetectorElementBegin() const
186  {
187  return m_elementContainer.getElements()->begin();
188  }
189 
190  TRT_DetElementCollection::const_iterator TRT_DetectorManager::getDetectorElementEnd() const
191  {
192  return m_elementContainer.getElements()->end();
193  }
194 
195 
196  void TRT_DetectorManager::setBarrelTransformField(size_t i, const GeoXF::Function * f){
197  if (m_barrelXF[i]!=f) delete m_barrelXF[i];
198  m_barrelXF[i] = f;
199  }
200 
201  const GeoXF::Function * TRT_DetectorManager::barrelTransformField(size_t i) const {
202  return m_barrelXF[i];
203  }
204 
205  void TRT_DetectorManager::setEndcapTransformField(size_t i, const GeoXF::Function *f) {
206  if (m_endcapXF[i]!=f) delete m_endcapXF[i];
207  m_endcapXF[i]=f;
208  }
209 
210  const GeoXF::Function *TRT_DetectorManager::endcapTransformField(size_t i) const{
211  return m_endcapXF[i];
212  }
213 
214 
216  {
217  return m_gasType;
218  }
219 
220  void TRT_DetectorManager::setGasType(const ActiveGasType & activeGasType)
221  {
222  m_gasType = activeGasType;
223  }
224 
226  {
227  return m_digvers;
228  }
229 
231  {
232  return m_digversname;
233  }
234 
235  void TRT_DetectorManager::setDigitizationVersion(const unsigned int & dv, const std::string& name )
236  {
238  }
239 
240  // Register the call back for this key and the corresponding level in
241  // in the hierarchy.
242  // DEPRECATED
243  void TRT_DetectorManager::addKey ATLAS_NOT_THREAD_SAFE (const std::string & key, int level) // Thread unsafe m_detStore->regFcn (callback) is used.
244  {
245  if(msgLvl(MSG::DEBUG))
246  msg(MSG::DEBUG) << "Registering alignmentCallback with key " << key << ", at level " << level
247  << endmsg;
248 
249  const DataHandle<AlignableTransform> transformCollection;
250  if (m_detStore->regFcn(&TRT_DetectorManager::alignmentCallback, this, transformCollection, key).isFailure()) {
251  ATH_MSG_ERROR("Cannot register callback with DetectorStore");
252  }
253  addKey(key, level, InDetDD::other);
254  }
255 
256  void TRT_DetectorManager::addKey(const std::string & key, int level, FrameType frame)
257  {
258  addChannel(key, level, frame);
259  }
260 
262  const Identifier &id,
263  GeoAlignableTransform *transform,
264  const GeoVPhysVol * child,
265  const GeoVPhysVol * frameVol)
266  {
267  if (m_idHelper) {
268  // Check if child and frame are actually full physical volumes.
269  // if they are non zero.
270  const GeoVFullPhysVol * childFPV = nullptr;
271  if (child) {
272  childFPV = dynamic_cast<const GeoVFullPhysVol *>(child);
273  }
274  const GeoVFullPhysVol * frameFPV = nullptr;
275  if (frameVol) {
276  frameFPV = dynamic_cast<const GeoVFullPhysVol *>(frameVol);
277  }
278  if (child && !childFPV) {
279  msg(MSG::ERROR)
280  << "Child of alignable transform is not a full physical volume"
281  << endmsg;
282  } else if (frameVol && !frameFPV) {
283  msg(MSG::ERROR)
284  << "Frame for alignable transform is not a full physical volume"
285  << endmsg;
286  } else {
287  addAlignableTransform (level, id, transform, childFPV, frameFPV);
288  }
289  }
290  }
291 
293  const Identifier &id,
294  GeoAlignableTransform *transform,
295  const GeoVFullPhysVol *child,
296  const GeoVFullPhysVol *frameVol)
297  {
298  if (m_idHelper) {
299  if (level == 0) {
300  // Nothing implemented. Reserved in case we want alignable straws.
301  } else {
302 
303  ExtendedAlignableTransform * extAlignableTransform = new ExtendedAlignableTransform(transform, child, frameVol);
304  if(msgLvl(MSG::VERBOSE)) {
305  msg(MSG::VERBOSE) << "TRT: Adding alignment at level " << level << " " << m_idHelper->show_to_string(id);
306  if (child && !frameVol) {
307  msg(MSG::VERBOSE) << " using global frame";
308  } else if (!child || child == frameVol ) {
309  msg(MSG::VERBOSE) << " using local frame";
310  } else {
311  msg(MSG::VERBOSE) << " using other frame";
312  }
313  msg(MSG::VERBOSE) << endmsg;
314  }
315  // Save in map
316  int index = level - FIRST_HIGHER_LEVEL; // level 0 treated separately.
317  if (index >= static_cast<int>(m_alignableTransforms.size())) m_alignableTransforms.resize(index+1);
318  m_alignableTransforms[index][id] = extAlignableTransform;
319  }
320  }
321  }
322 
324  const Identifier & id,
325  const Amg::Transform3D & delta,
326  FrameType frame,
327  GeoVAlignmentStore* alignStore) const
328  {
329  if (level == 0) {
330  // Nothing implemented. Reserved in case we want alignable straws
331  return false;
332  } else {
333 
334  int index = level - FIRST_HIGHER_LEVEL; // level 0 treated separately.
335  if (index >= static_cast<int>(m_alignableTransforms.size())) return false;
336 
337  // We retrieve it from a map.
338  AlignableTransformMap::const_iterator iter;
339  iter = m_alignableTransforms[index].find(id);
340  if (iter == m_alignableTransforms[index].end()) return false;
341 
342  return setAlignableTransformAnyFrameDelta(iter->second, delta, frame, alignStore);
343 
344  }
345  }
346 
348  const Amg::Transform3D & delta,
349  FrameType frame,
350  GeoVAlignmentStore* alignStore) const
351  {
352  //---------------------
353  // For Local:
354  //---------------------
355  // The geomodel alignable transform delta is already a local delta so we just pass it directly
356 
357  //---------------------
358  // For global frame
359  //---------------------
360  // Sets the alignable transform delta when the supplied delta is in the global frame.
361 
362  // If the default transform down to the alignable transform is
363  // T = A*B*C
364  // and the alignable transform is C with delta c and the delta in the global frame is g, then
365  // A*B*C*c = g*A*B*C
366  // T*c = g*T
367  // c = T.inverse() * g * T
368 
369  // To get default transform up and including the alignable transform,
370  // we assume the next volume down is a fullphys volume and so its
371  // transform is the transform we want (ie T=A*B*C in the above example).
372 
373  //---------------------
374  // For Other frame
375  //---------------------
376  // Sets the alignable transform delta when the supplied delta is in the frame of the
377  // volume "frameVol".
378 
379  // If the default transform down to the alignable transform is
380  // T = A*B*C
381  // and the alignable transform is C with delta c and the delta g is expressed in the frame A, then
382  // A*B*C*c = A*g*B*C
383  // c = (BC).inverse * g * (BC)
384  // BC = A.inverse() * T
385  // C = T.inverse() * A * g * A.inverse() * T
386 
387  // To get default transform up and including the alignable transform,
388  // we assume the next volume down is a fullphys volume and so its
389  // transform is the transform we want (ie T=A*B*C in the above example).
390  // The Transform to the frame is T = A which we get from the fullphys volume frameVol.
391 
392  if (!extXF) return false;
393  if (!extXF->alignableTransform()) return false;
394 
395  const GeoVFullPhysVol * child = extXF->child();
396  const GeoVFullPhysVol * frameVol = extXF->frame();
397 
398  FrameType newFrame = frame;
399  // If frame is other then check if "other" is actually local or global
400  if (frame == InDetDD::other) {
401  if (child && !frameVol) {
402  // frame = 0 indicates to use global frame
403  newFrame = InDetDD::global;
404  } else if (!child || child == frameVol){
405  // if child is 0 or the they are the same volumes then its local
406  newFrame = InDetDD::local;
407  } // else its "other" already.
408  }
409 
410  if (newFrame == InDetDD::global) { // Global
411  if (!child) {
412  msg(MSG::ERROR) << "global frame specified, but child == 0" << endmsg;
413  } else {
414  const GeoTrf::Transform3D & childXF = child->getDefAbsoluteTransform(alignStore);
415  extXF->alignableTransform()->setDelta(childXF.inverse() * delta * childXF);
416  }
417 
418  } else if (frame == InDetDD::local) { // Local
419  // if its a local frame then no transform necessary. We set it directly.
420  extXF->alignableTransform()->setDelta(delta);
421 
422  } else { // Other frame
423  // if child or frame is zero it will have been set to local or global above
424  if (!child) { // CID 113112
425  // shouldn't be happening, if child is null then something is terribly wrong
426  ATH_MSG_ERROR("Child can't be null if frame is 'other'");
427  return false;
428  } else {
429  const GeoTrf::Transform3D & xfChild = child->getDefAbsoluteTransform(alignStore);
430  const GeoTrf::Transform3D & xfFrame = frameVol->getDefAbsoluteTransform(alignStore);
431  extXF->alignableTransform()->setDelta(xfChild.inverse() * xfFrame * delta * xfFrame.inverse() * xfChild);
432  }
433  }
434 
435  return true;
436  }
437 
438 
440  {
441  return align(I, keys);
442  }
443 
444 
445  // We invalidate all the elements if at least one alignment changed.
447  {
448  for (TRT_DetElementCollection::const_iterator element_iter = getDetectorElementBegin();
449  element_iter != getDetectorElementEnd();
450  ++element_iter) {
451 
452  if (*element_iter) {
453  (*element_iter)->invalidate();
454  }
455  }
456  }
457 
459  {
460  for (TRT_DetElementCollection::const_iterator element_iter = getDetectorElementBegin();
461  element_iter != getDetectorElementEnd();
462  ++element_iter) {
463 
464  if (*element_iter) {
465  (*element_iter)->updateAllCaches();
466  }
467  }
468  }
469 
470 
472  {
473  return getIdHelper()->is_trt(id);
474  }
475 
476 
478  {
479  if(msgLvl(MSG::DEBUG))
480  msg(MSG::DEBUG) << "Processing TRT fine alignment." << endmsg;
481 
482  const TRTCond::StrawDxContainer* container = nullptr;
483  StatusCode sc = StatusCode::FAILURE;
485  sc = m_detStore->retrieve(container, key);
486  }
487 
488  if (sc.isFailure()) {
489  if (msgLvl(MSG::INFO))
490  msg(MSG::INFO) << "Cannot find StrawDxContainer for key "
491  << key << " - no fine alignment " << endmsg;
492  throw std::runtime_error("Unable to apply TRT fine alignment. This is normal for simulation");
493  //return false;
494  } else {
495 
496  // Loop trough all barrel elements and pass container.
497 
498  this->setDxContainer(container);
499 
500  for (TRT_DetElementCollection::const_iterator element_iter = getDetectorElementBegin();
501  element_iter != getDetectorElementEnd();
502  ++element_iter) {
503  TRT_BaseElement * element = *element_iter;
504  if (element) {
505  element->invalidate();
506  }
507  }
508  return false; // we return false as we have already invalidated the elements
509  }
510  }
511 
512  bool TRT_DetectorManager::processSpecialAlignment(const std::string& /*key*/,
513  const CondAttrListCollection* /*obj*/,
514  GeoVAlignmentStore* /*alignStore*/) const {
515  return false;
516  }
517 
518 
520  {
521  return this;
522  }
523 
524  // New global alignment filders
525  bool TRT_DetectorManager::processGlobalAlignment(const std::string & key, int level, FrameType frame,
526  const CondAttrListCollection* obj, GeoVAlignmentStore* alignStore) const
527  {
528 
529  bool alignmentChange = false;
530 
531  ATH_MSG_INFO("Processing new global alignment containers with key " << key << " in the " << frame << " frame at level " << level);
532 
534  const CondAttrListCollection* atrlistcol=obj;
535  //cppcheck-suppress nullPointerRedundantCheck
536  if (!atrlistcol) {
537  ATH_MSG_INFO("Read alignment from detector store with key " << key);
538  if (StatusCode::SUCCESS!=m_detStore->retrieve(atrlistcol,key)) {
539  ATH_MSG_WARNING("Cannot find new global align Container for key "
540  << key << " - no new global alignment");
541  return alignmentChange;
542  }
543  }
544  // Avoid cppcheck warning.
545  if (!atrlistcol) {
546  return alignmentChange;
547  }
548  {
549  // loop over objects in collection
550  //cppcheck-suppress nullPointerRedundantCheck
551  for (const auto & citr : *atrlistcol) {
552 
553  const coral::AttributeList& atrlist=citr.second;
554  ident = getIdHelper()->module_id(atrlist["bec"].data<int>(),
555  atrlist["layer"].data<int>(),
556  atrlist["sector"].data<int>());
557 
558  // Follow same definitions as in TRT_AlignDbSvc.cxx
559  CLHEP::Hep3Vector newtranslation(atrlist["Tx"].data<float>(),atrlist["Ty"].data<float>(),atrlist["Tz"].data<float>());
560  CLHEP::HepRotation newrotation;
561  newrotation.set(atrlist["phi"].data<float>(),atrlist["theta"].data<float>(),atrlist["psi"].data<float>());
562  HepGeom::Transform3D newtransform(newrotation, newtranslation);
563 
564  msg(MSG::DEBUG) << "New global DB -- channel: " << citr.first
565  << " ,bec: " << atrlist["bec"].data<int>()
566  << " ,layer: " << atrlist["layer"].data<int>()
567  << " ,sector: " << atrlist["sector"].data<int>()
568  << " ,Tx: " << atrlist["Tx"].data<float>()
569  << " ,Ty: " << atrlist["Ty"].data<float>()
570  << " ,Tz: " << atrlist["Tz"].data<float>()
571  << " ,phi: " << atrlist["phi"].data<float>()
572  << " ,theta: " << atrlist["theta"].data<float>()
573  << " ,psi: " << atrlist["psi"].data<float>() << endmsg;
574 
575  // Set the new transform; Will replace existing one with updated transform
577  ident,
578  Amg::CLHEPTransformToEigen(newtransform),
579  frame,
580  alignStore);
581 
582  if (!status) {
583  if (msgLvl(MSG::DEBUG)) {
584  msg(MSG::DEBUG) << "Cannot set AlignableTransform for identifier."
586  << " at level " << level << " for new global DB " << endmsg;
587  }
588  }
589 
590  alignmentChange = (alignmentChange || status);
591  }
592  }
593  return alignmentChange;
594  }
595 
597  {
598  m_barrelDescriptors.insert(barrelDescriptor);
599  }
600 
602  {
603  m_endcapDescriptors.insert(endcapDescriptor);
604  }
605 
606 } // namespace InDetDD
InDetDD::FrameType
FrameType
Definition: InDetDD_Defs.h:16
InDetDD::ExtendedAlignableTransform::alignableTransform
GeoAlignableTransform * alignableTransform()
Definition: ExtendedAlignableTransform.h:43
InDetDD::TRT_DetectorManager::manageBarrelElement
void manageBarrelElement(TRT_BarrelElement *barrel)
Definition: TRT_DetectorManager.cxx:102
InDetDD::TRT_DetectorManager::conditions
const TRT_Conditions * conditions() const
Conditions interface (mostly for internal use):-------------------------—.
Definition: TRT_DetectorManager.cxx:519
TRT_ID::layer_id
Identifier layer_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer) const
For an individual straw layer.
Definition: TRT_ID.h:500
StoreGateSvc::contains
bool contains(const TKEY &key) const
Look up a keyed object in TDS (compare also tryRetrieve) returns false if object not available in TDS...
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
InDetDD::TRT_DetectorManager::addAlignableTransform
void addAlignableTransform(int level, const Identifier &id, GeoAlignableTransform *transform, const GeoVFullPhysVol *child=0, const GeoVFullPhysVol *frameVol=0)
Add alignable transforms: GeoModel/CLHEP based.
Definition: TRT_DetectorManager.cxx:292
InDetDD::TRT_BarrelElement
Definition: TRT_BarrelElement.h:44
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
PlotCalibFromCool.dv
dv
Definition: PlotCalibFromCool.py:762
InDetDD::TRT_DetectorManager::getDetectorElementCollection
const TRT_DetElementCollection * getDetectorElementCollection() const
Access to Whole Collection of Elements ---------------------------------—.
Definition: TRT_DetectorManager.cxx:180
InDetDD::TRT_DetectorManager::setEndcapDescriptor
void setEndcapDescriptor(const TRT_EndcapDescriptor *endcapDescriptor)
Definition: TRT_DetectorManager.cxx:601
InDetDD::TRT_DetElementContainer::manageEndcapElement
void manageEndcapElement(TRT_EndcapElement *endcap, const TRT_ID *idHelper)
Definition: TRT_DetElementContainer.cxx:168
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TRT_DetectorManager.h
InDetDD::ExtendedAlignableTransform::frame
const GeoVFullPhysVol * frame()
Definition: ExtendedAlignableTransform.h:45
InDetDD::TRT_DetectorManager::m_ownsIdHelper
bool m_ownsIdHelper
Definition: TRT_DetectorManager.h:260
InDetDD::TRT_DetectorManager::m_idHelper
const TRT_ID * m_idHelper
Definition: TRT_DetectorManager.h:259
InDetDD::TRT_DetectorManager::invalidateAll
virtual void invalidateAll() const override
Invalidate cache for all detector elements.
Definition: TRT_DetectorManager.cxx:446
index
Definition: index.py:1
InDetDD::TRT_DetElementContainer
Class to hold different TRT detector elements structures.
Definition: TRT_DetElementContainer.h:25
InDetDD::TRT_DetectorManager::getBarrelElement
const TRT_BarrelElement * getBarrelElement(unsigned int positive, unsigned int moduleIndex, unsigned int phiIndex, unsigned int strawLayerIndex) const
Access Barrel Elements:---------------—(Fast)-------------------------—.
Definition: TRT_DetectorManager.cxx:113
InDetDD::TRT_DetectorManager::setBarrelTransformField
void setBarrelTransformField(size_t i, const GeoXF::Function *field)
Definition: TRT_DetectorManager.cxx:196
InDetDD::TRT_BarrelDescriptor
Definition: TRT_BarrelDescriptor.h:40
InDetDD::TRT_DetectorManager::m_barrelXF
const GeoXF::Function * m_barrelXF[3]
Definition: TRT_DetectorManager.h:261
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
ExtendedAlignableTransform.h
InDetDD::TRT_DetectorManager::m_digversname
std::string m_digversname
Definition: TRT_DetectorManager.h:266
InDetDD::TRT_EndcapElement
Definition: TRT_EndcapElement.h:44
InDetDD::TRT_DetectorManager::processSpecialAlignment
bool processSpecialAlignment(const std::string &key, InDetDD::AlignFolderType dummy) const override
Definition: TRT_DetectorManager.cxx:477
InDetDD::TRT_DetectorManager::setAlignableTransformDelta
virtual bool setAlignableTransformDelta(int level, const Identifier &id, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const override
Set alignable transforms: Amg based.
Definition: TRT_DetectorManager.cxx:323
InDetDD::TRT_DetectorManager::m_endcapDescriptors
std::set< const TRT_EndcapDescriptor * > m_endcapDescriptors
Definition: TRT_DetectorManager.h:274
IOVSVC_CALLBACK_ARGS_P
#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,...
Definition: IOVSvcDefs.h:42
AtlasDetectorID::is_trt
bool is_trt(Identifier id) const
Definition: AtlasDetectorID.h:782
InDetDD::global
@ global
Definition: InDetDD_Defs.h:16
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
InDetDD::TRT_DetectorManager::barrelTransformField
const GeoXF::Function * barrelTransformField(size_t i) const
Definition: TRT_DetectorManager.cxx:201
InDetDD::TRT_Conditions
Definition: TRT_Conditions.h:30
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
InDetDD::TRT_DetectorManager::getIdHelper
virtual const TRT_ID * getIdHelper() const override
Definition: TRT_DetectorManager.cxx:145
InDetDD::TRT_DetElementContainer::manageBarrelElement
void manageBarrelElement(TRT_BarrelElement *barrel, const TRT_ID *idHelper)
Definition: TRT_DetElementContainer.cxx:126
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
InDetDD::TRT_EndcapDescriptor
class TRT_EndcapDescriptor
Definition: TRT_EndcapDescriptor.h:30
StoreGateSvc::retrieve
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
InDetDD::TRT_DetectorManager::manageEndcapElement
void manageEndcapElement(TRT_EndcapElement *endcap)
Definition: TRT_DetectorManager.cxx:108
TRT_EndcapCode.h
InDetDD::TRT_DetectorManager::TRT_DetectorManager
TRT_DetectorManager(StoreGateSvc *detStore=0)
Definition: TRT_DetectorManager.cxx:33
InDetDD::TRT_DetElementContainer::setNumerology
void setNumerology(const TRT_Numerology *mynum)
Definition: TRT_DetElementContainer.cxx:24
TRT_EndcapElement.h
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
InDetDD::TRT_DetectorManager::getTreeTop
virtual PVConstLink getTreeTop(unsigned int i) const override
Definition: TRT_DetectorManager.cxx:92
InDetDD::TRT_DetectorManager::getNumerology
TRT_Numerology * getNumerology()
Access Numerological information:---------------------------------------—.
Definition: TRT_DetectorManager.cxx:56
InDetDD::TRT_DetectorManager::m_endcapXF
const GeoXF::Function * m_endcapXF[3]
Definition: TRT_DetectorManager.h:262
InDetDD::TRT_Numerology
Definition: TRT_Numerology.h:22
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthMessaging::msgLvl
bool msgLvl(const MSG::Level lvl) const
Test the output level.
Definition: AthMessaging.h:151
InDetDD::TRT_DetectorManager::endcapTransformField
const GeoXF::Function * endcapTransformField(size_t i) const
Definition: TRT_DetectorManager.cxx:210
lumiFormat.i
int i
Definition: lumiFormat.py:92
InDetDD::ExtendedAlignableTransform::child
const GeoVFullPhysVol * child()
Definition: ExtendedAlignableTransform.h:44
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
InDetDD::TRT_DetectorManager::getNumTreeTops
virtual unsigned int getNumTreeTops() const override
Access Raw Geometry:----------------------------------------------------—.
Definition: TRT_DetectorManager.cxx:87
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AlignableTransformContainer.h
InDetDD::TRT_DetectorManager::m_digvers
unsigned int m_digvers
Definition: TRT_DetectorManager.h:265
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
InDetDD::TRT_DetectorManager::m_alignableTransforms
std::vector< AlignableTransformMap > m_alignableTransforms
Definition: TRT_DetectorManager.h:270
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
InDetDD::FIRST_HIGHER_LEVEL
const int FIRST_HIGHER_LEVEL
Definition: PixelDetectorManager.cxx:22
InDetDD::TRT_DetectorManager::m_volume
std::vector< PVLink > m_volume
Definition: TRT_DetectorManager.h:254
InDetDD::InDetDetectorManager
Definition: InDetDetectorManager.h:60
InDetDD::TRT_DetectorManager::m_numerology
TRT_Numerology * m_numerology
Definition: TRT_DetectorManager.h:258
InDetDD::TRT_DetectorManager::setAlignableTransformAnyFrameDelta
bool setAlignableTransformAnyFrameDelta(ExtendedAlignableTransform *extXF, const Amg::Transform3D &delta, FrameType frame, GeoVAlignmentStore *alignStore) const
Set alignable transforms: Amg based.
Definition: TRT_DetectorManager.cxx:347
InDetDD::InDetDetectorManager::m_detStore
StoreGateSvc * m_detStore
Definition: InDetDetectorManager.h:99
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
TRT_BarrelElement.h
InDetDD::TRT_DetectorManager::m_elementContainer
TRT_DetElementContainer m_elementContainer
Definition: TRT_DetectorManager.h:256
InDetDD::TRT_DetectorManager::alignmentCallback
StatusCode alignmentCallback(IOVSVC_CALLBACK_ARGS)
Call back for alignment updates, DEPRECATED.
Definition: TRT_DetectorManager.cxx:439
InDetDD::TRT_DetectorManager::getDetectorElementBegin
TRT_DetElementCollection::const_iterator getDetectorElementBegin() const
Definition: TRT_DetectorManager.cxx:185
InDetDD::TRT_DetectorManager::getDetectorElementEnd
TRT_DetElementCollection::const_iterator getDetectorElementEnd() const
Definition: TRT_DetectorManager.cxx:190
InDetDD::local
@ local
Definition: InDetDD_Defs.h:16
CLHEPtoEigenConverter.h
InDetDD::TRT_DetectorManager::getEndcapElement
const TRT_EndcapElement * getEndcapElement(unsigned int positive, unsigned int wheelIndex, unsigned int strawLayerIndex, unsigned int phiIndex) const
Access Endcap Elements:---------------—(Fast)--------------------------—.
Definition: TRT_DetectorManager.cxx:129
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
InDetDD::TRT_DetectorManager::digitizationVersionName
std::string digitizationVersionName() const
Definition: TRT_DetectorManager.cxx:230
Muon::nsw::unknown
@ unknown
Definition: NSWTriggerElink.h:36
InDetDD::ATLAS_NOT_THREAD_SAFE
void TRT_DetectorManager::addKey ATLAS_NOT_THREAD_SAFE(const std::string &key, int level)
Definition: TRT_DetectorManager.cxx:243
InDetDD::TRT_DetectorManager::identifierBelongs
virtual bool identifierBelongs(const Identifier &id) const override
Check identifier is for this detector.
Definition: TRT_DetectorManager.cxx:471
InDetDD::TRT_DetElementContainer::getBarrelDetElement
const TRT_BarrelElement * getBarrelDetElement(unsigned int positive, unsigned int moduleIndex, unsigned int phiIndex, unsigned int strawLayerIndex) const
Definition: TRT_DetElementContainer.cxx:39
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
InDetDD::TRT_DetectorManager::setGasType
void setGasType(const ActiveGasType &)
Definition: TRT_DetectorManager.cxx:220
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
InDetDD::InDetDetectorManager::align
StatusCode align(IOVSVC_CALLBACK_ARGS) const
InDetDD::TRT_DetectorManager::getElement
const TRT_BaseElement * getElement(Identifier id) const
Access Elements Generically---------------------------------------------—.
Definition: TRT_DetectorManager.cxx:158
TRTCond::StrawDxContainer
Definition: StrawDxContainer.h:109
DataHandle
an iterator over instances of a given type in StoreGateSvc. It d-casts and caches locally the pointed...
Definition: DataHandle.h:42
InDetDD::TRT_DetectorManager::m_barrelDescriptors
std::set< const TRT_BarrelDescriptor * > m_barrelDescriptors
Definition: TRT_DetectorManager.h:273
InDetDD::TRT_BaseElement::invalidate
void invalidate()
Invalidate cache.
Definition: TRT_BaseElement.cxx:190
TRT::Hit::ident
@ ident
Definition: HitInfo.h:77
InDetDD::ExtendedAlignableTransform
Definition: ExtendedAlignableTransform.h:31
InDetDD::TRT_DetectorManager::setIdHelper
void setIdHelper(const TRT_ID *idHelper, bool owns=true)
Get the ID helper: -----------------------------------------------------—.
Definition: TRT_DetectorManager.cxx:150
InDetDD::TRT_DetectorManager::getDetectorElementContainer
const TRT_DetElementContainer * getDetectorElementContainer() const
Access the element container -------------------------------------------—.
Definition: TRT_DetectorManager.cxx:175
AlignableTransform.h
eflowRec::phiIndex
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition: EtaPhiLUT.cxx:23
DeMoScan.index
string index
Definition: DeMoScan.py:362
TRT_ID
Definition: TRT_ID.h:84
InDetDD::TRT_DetectorManager::addKey
void addKey(const std::string &key, int level, FrameType frame)
Definition: TRT_DetectorManager.cxx:256
InDetDD::TRT_DetectorManager::m_gasType
ActiveGasType m_gasType
Definition: TRT_DetectorManager.h:264
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:574
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
Amg::CLHEPTransformToEigen
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
Definition: CLHEPtoEigenConverter.h:38
InDetDD::TRT_DetectorManager::gasType
ActiveGasType gasType() const
Definition: TRT_DetectorManager.cxx:215
InDetDD::TRT_DetectorManager::~TRT_DetectorManager
~TRT_DetectorManager()
Definition: TRT_DetectorManager.cxx:64
InDetDD::TRT_DetectorManager::digitizationVersion
unsigned int digitizationVersion() const
Get and set information about digitization version ---------------------—.
Definition: TRT_DetectorManager.cxx:225
DEBUG
#define DEBUG
Definition: page_access.h:11
InDetDD::TRT_DetectorManager::setEndcapTransformField
void setEndcapTransformField(size_t i, const GeoXF::Function *field)
Definition: TRT_DetectorManager.cxx:205
InDetDD::TRT_DetectorManager::updateAll
virtual void updateAll() const override
Update all caches.
Definition: TRT_DetectorManager.cxx:458
InDetDD::TRT_DetectorManager::setDigitizationVersion
void setDigitizationVersion(const unsigned int &, const std::string &name)
Definition: TRT_DetectorManager.cxx:235
InDetDD::TRT_DetElementContainer::getElements
const TRT_DetElementCollection * getElements() const
Definition: TRT_DetElementContainer.cxx:29
TRT_Numerology.h
InDetDD::TRT_Conditions::setDxContainer
void setDxContainer(const TRTCond::StrawDxContainer *container) const
Definition: TRT_Conditions.cxx:20
InDetDD::TRT_DetectorManager::ActiveGasType
ActiveGasType
Definition: TRT_DetectorManager.h:89
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
merge.status
status
Definition: merge.py:17
InDetDD::TRT_DetectorManager::addTreeTop
void addTreeTop(PVLink)
Definition: TRT_DetectorManager.cxx:97
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
I
#define I(x, y, z)
Definition: MD5.cxx:116
InDetDD::TRT_DetElementCollection
Class to hold collection of TRT detector elements.
Definition: TRT_DetElementCollection.h:28
IdentifierHash
Definition: IdentifierHash.h:38
InDetDD::InDetDetectorManager::addChannel
void addChannel(const std::string &key, int level, FrameType frame)
Alignment access.
Definition: InDetDetectorManager.cxx:56
InDetDD::TRT_DetElementContainer::getEndcapDetElement
const TRT_EndcapElement * getEndcapDetElement(unsigned int positive, unsigned int wheelIndex, unsigned int strawLayerIndex, unsigned int phiIndex) const
Definition: TRT_DetElementContainer.cxx:62
TRT_BarrelCode.h
python.PyAthena.obj
obj
Definition: PyAthena.py:135
TRT_Conditions.h
StoreGateSvc.h
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
InDetDD::AlignFolderType
AlignFolderType
Definition: InDetDD_Defs.h:19
StrawDxContainer.h
Class for storing/accessing trt endpoint corrections data.
InDetDD::TRT_DetectorManager::processGlobalAlignment
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.
Definition: TRT_DetectorManager.cxx:525
TRT_ID::straw_layer_hash
IdentifierHash straw_layer_hash(Identifier straw_layer_id) const
straw_layer hash from id - optimized
Definition: TRT_ID.h:750
InDetDD::TRT_DetectorManager::setBarrelDescriptor
void setBarrelDescriptor(const TRT_BarrelDescriptor *barrelDescriptor)
Set TRT_Barrel/EndcapDescriptor pointer to the internal sets to delete them in the destructor.
Definition: TRT_DetectorManager.cxx:596
InDetDD::TRT_BaseElement
Definition: TRT_BaseElement.h:57
TRT_ID::module_id
Identifier module_id(int barrel_ec, int phi_module, int layer_or_wheel) const
For an individual module phi sector.
Definition: TRT_ID.h:448
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37