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