ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
InDetDD::TRT_BarrelElement Class Referencefinal

#include <TRT_BarrelElement.h>

Inheritance diagram for InDetDD::TRT_BarrelElement:
Collaboration diagram for InDetDD::TRT_BarrelElement:

Public Types

enum  Type { BARREL, ENDCAP }
 

Public Member Functions

 TRT_BarrelElement (const GeoVFullPhysVol *volume, const TRT_BarrelDescriptor *descriptor, bool isPositive, unsigned int modIndex, unsigned int phiIndex, unsigned int strawLayIndex, const TRT_ID *idHelper, const TRT_Conditions *conditions)
 Constructor: More...
 
 TRT_BarrelElement (const TRT_BarrelElement &right)
 
virtual ~TRT_BarrelElement ()=default
 Destructor: More...
 
virtual TRT_BaseElement::Type type () const override final
 Type information. More...
 
const TRT_BarrelDescriptorgetDescriptor () const
 Returns a pointer to a descriptor, giving common information on module construction: More...
 
double strawXPos (unsigned int i) const
 Get X Position: DEPRECATED. More...
 
double strawYPos (unsigned int i) const
 Get Y Position: DEPRECATED. More...
 
double strawZPos (unsigned int i) const
 Get Z Position: (active center) DEPRECATED. More...
 
virtual const double & strawLength () const override final
 Get the length of the straws (active length): More...
 
virtual int strawDirection () const override final
 StrawDirection. More...
 
const TRT_BarrelElementnextInPhi () const
 Returns the next-in-phi detector element, or zero if none (forseeing gaps, in other words). More...
 
const TRT_BarrelElementpreviousInPhi () const
 Returns the previous-in-phi detector element, or zero if none (forseeing gaps, in other words). More...
 
const TRT_BarrelElementnextInR () const
 Returns the next-in-R detector element, or zero if none. More...
 
const TRT_BarrelElementpreviousInR () const
 Returns the next-in-R detector element, or zero if none. More...
 
void setNextInPhi (const TRT_BarrelElement *element)
 Sets the next-in-phi detector. More...
 
void setPreviousInPhi (const TRT_BarrelElement *element)
 Sets the previous-in-phi detector. More...
 
void setNextInR (const TRT_BarrelElement *element)
 Sets the next-in-r detector. More...
 
void setPreviousInR (const TRT_BarrelElement *element)
 Sets the previous-in-r detector. More...
 
const TRT_BarrelCodegetCode () const
 Doomed (?): More...
 
virtual const Trk::SurfaceBoundsstrawBounds () const override final
 Surface bounds. More...
 
virtual Identifier identify () const override final
 identifier of this detector element: More...
 
virtual IdentifierHash identifyHash () const override final
 identifier hash More...
 
const GeoTrf::Transform3D & defTransform () const
 Get Default Transform (of module in barrel, layer in endcap) from GeoModel before alignment corrections. More...
 
const HepGeom::Transform3D getAbsoluteTransform (int straw) const
 This is an alias to strawTransform(int straw) More...
 
virtual const Trk::Surfacesurface () const override final
 Element Surface: access to the Surface (straw layer) More...
 
virtual const Trk::Surfacesurface (const Identifier &id) const override final
 Straw Surface: access to the surface via identifier. More...
 
virtual const Trk::SurfaceBoundsbounds () const override final
 Straw layer bounds. More...
 
virtual const Trk::SurfaceBoundsbounds (const Identifier &id) const override final
 Straw Surface: access to the bounds via Identifier. More...
 
virtual const Amg::Transform3Dtransform () const override final
 Element Surface: Get Transform of element in Tracking frame: Amg. More...
 
virtual const Amg::Transform3Dtransform (const Identifier &id) const override final
 Straw Surface: access to the transform of individual straw in Tracking frame: Amg. More...
 
virtual const Amg::Vector3Dcenter () const override final
 Element Surface: center of a straw layer. More...
 
virtual const Amg::Vector3Dcenter (const Identifier &id) const override final
 Straw Surface: Center of a straw using Identifier Straw center and straw axis can be obtained by the following: (The straw center is the center of the active region) Amg::Transform3D& transform = element->strawTransform(straw); Amb::Vector3D& center = element->strawCenter(); double r = element->strawCenter()->perp(); double phi = element->strawCenter()->phi(); Amg::Vector3D strawAxis = element->strawTransform(straw)* Vector3D(0,0,1) * strawDirection() More...
 
virtual const Amg::Vector3Dnormal () const override final
 Element Surface: normal of a straw layer. More...
 
virtual const Amg::Vector3Dnormal (const Identifier &id) const override final
 Normal of a straw. More...
 
virtual Trk::DetectorElemType detectorType () const override final
 TrkDetElementBase interface detectorTyoe. More...
 
const std::vector< const Trk::Surface * > & surfaces () const
 Returns the full list of all detection surfaces associated to this detector element. More...
 
const Amg::Transform3DstrawTransform (unsigned int straw) const
 Straw transform - fast access in array, in Tracking frame: Amg. More...
 
const Amg::Transform3DstrawTransform (int straw) const
 Straw Surface: Local -> global transform of the straw via integer. More...
 
const Trk::StraightLineSurfacestrawSurface (int straw) const
 Straw Surface: access to the surface via integer. More...
 
const Amg::Vector3DstrawCenter (int straw) const
 Straw Surface: Local -> global transform of the straw via integer. More...
 
Amg::Vector3D strawAxis (int straw) const
 Straw axis. More...
 
unsigned int nStraws () const
 Number of straws in the element. More...
 
void invalidate ()
 Invalidate cache. More...
 
void updateAllCaches (GeoAlignmentStore *alignStore=nullptr)
 Update all caches. More...
 
const TRT_Conditionsconditions () const
 Return the TRT_Conditions object associated to this Detector element. More...
 
void createSurfaceCache (Identifier id, GeoAlignmentStore *alignStore=nullptr) const
 create the surface & surface cache for the straw More...
 
void invalidateOther () const
 invalidate action on the cache More...
 
std::string detectorTypeString () const
 Returns a string of the Detector element type. More...
 

Static Public Member Functions

static const TRT_BarrelConditions * getConditionsData ()
 Returns a pointer to conditions data. More...
 

Protected Attributes

Identifier m_id
 
IdentifierHash m_idHash
 
unsigned int m_nstraws = 0
 
const TRT_IDm_idHelper =nullptr
 
const TRT_Conditionsm_conditions =nullptr
 
CxxUtils::CachedUniquePtr< Trk::Surfacem_surface
 
std::vector< CxxUtils::CachedUniquePtr< Trk::StraightLineSurface > > m_strawSurfaces {}
 
std::vector< CxxUtils::CachedUniquePtr< SurfaceCacheBase > > m_strawSurfacesCache {}
 helper element surface for the cache More...
 
CxxUtils::CachedValue< std::vector< const Trk::Surface * > > m_surfaces
 
CxxUtils::CachedValue< SurfaceCachem_surfaceCache
 

Private Member Functions

const TRT_BarrelElementoperator= (const TRT_BarrelElement &right)=delete
 Illegal Operations: More...
 
virtual HepGeom::Transform3D calculateStrawTransform (int straw, GeoAlignmentStore *alignStore) const override
 These transforms are effectively to the local coord system of a straw derived from GeoModel -> hence CLHEP. More...
 
HepGeom::Transform3D calculateLocalStrawTransform (int straw) const
 
virtual const Trk::SurfaceelementSurface () const override
 return the surface of the element More...
 
virtual void createSurfaceCache (GeoAlignmentStore *alignStore) const override
 create the cache for the element More...
 
SurfaceCache createSurfaceCacheHelper () const
 
void deleteCache ()
 Helper method for cache dealing. More...
 

Private Attributes

TRT_BarrelCode m_code
 
const TRT_BarrelDescriptorm_descriptor
 
const TRT_BarrelElementm_nextInPhi
 
const TRT_BarrelElementm_previousInPhi
 
const TRT_BarrelElementm_nextInR
 
const TRT_BarrelElementm_previousInR
 

Detailed Description

Extended TRT_BaseElement to describe a TRT readout element, this is a planar layer with n ( order of 20 ) straws, in one of the 32 sectors of the TRT barrel.

The number of straws described by this readout element can be retrieved by nStraws()

Author
: Grant Gorfine
  • modified & maintained: Nick Styles, Andreas Salzburger

Definition at line 43 of file TRT_BarrelElement.h.

Member Enumeration Documentation

◆ Type

Enumerator
BARREL 
ENDCAP 

Definition at line 56 of file TRT_BaseElement.h.

56 {BARREL, ENDCAP};

Constructor & Destructor Documentation

◆ TRT_BarrelElement() [1/2]

InDetDD::TRT_BarrelElement::TRT_BarrelElement ( const GeoVFullPhysVol *  volume,
const TRT_BarrelDescriptor descriptor,
bool  isPositive,
unsigned int  modIndex,
unsigned int  phiIndex,
unsigned int  strawLayIndex,
const TRT_ID idHelper,
const TRT_Conditions conditions 
)

Constructor:

Definition at line 25 of file TRT_BarrelElement.cxx.

33  : TRT_BaseElement(volume,
34  idHelper->layer_id((isPositive ? 1 : -1),
35  phiIndex,
36  modIndex,
37  strawLayIndex),
38  idHelper,
39  conditions)
40  , m_code(isPositive, modIndex, phiIndex, strawLayIndex)
41  , m_descriptor(descriptor)
42  , m_nextInPhi(nullptr)
43  , m_previousInPhi(nullptr)
44  , m_nextInR(nullptr)
45  , m_previousInR(nullptr)
46 
47 {
49  m_strawSurfaces.resize(m_nstraws);
51 }

◆ TRT_BarrelElement() [2/2]

InDetDD::TRT_BarrelElement::TRT_BarrelElement ( const TRT_BarrelElement right)

Definition at line 53 of file TRT_BarrelElement.cxx.

54  : TRT_BaseElement(right)
55  , m_code(right.m_code)
56  , m_descriptor(right.m_descriptor)
57  , m_nextInPhi(right.m_nextInPhi)
58  , m_previousInPhi(right.m_previousInPhi)
59  , m_nextInR(right.m_nextInR)
60  , m_previousInR(right.m_previousInR)
61 {
62  m_nstraws = right.m_nstraws;
63  m_strawSurfaces.resize(m_nstraws);
65 }

◆ ~TRT_BarrelElement()

virtual InDetDD::TRT_BarrelElement::~TRT_BarrelElement ( )
virtualdefault

Destructor:

Member Function Documentation

◆ bounds() [1/2]

virtual const Trk::SurfaceBounds& InDetDD::TRT_BaseElement::bounds ( ) const
finaloverridevirtualinherited

Straw layer bounds.

Implements Trk::TrkDetElementBase.

◆ bounds() [2/2]

const Trk::SurfaceBounds & InDetDD::TRT_BaseElement::bounds ( const Identifier id) const
finaloverridevirtualinherited

Straw Surface: access to the bounds via Identifier.

Implements Trk::TrkDetElementBase.

Definition at line 72 of file TRT_BaseElement.cxx.

73 {
74  return strawBounds();
75 }

◆ calculateLocalStrawTransform()

HepGeom::Transform3D InDetDD::TRT_BarrelElement::calculateLocalStrawTransform ( int  straw) const
private

Definition at line 126 of file TRT_BarrelElement.cxx.

127 {
128  const TRTCond::StrawDxContainer* container = conditions()->dxContainer();
130  if(!container) {
131  // std::cout << " TRT_BarrelElement: no local transform found " << std::endl;
132  } else {
133  // important note: dx1 moves the 'negative' wire endpoint end dx2
134  // the 'positive' wire endpoint in the local straw frame. In the
135  // global frame, 'dx1' corresponds to the readout side and 'dx2'
136  // to the wire joint side for both sides of the barrel.
137 
138  int bec = getCode().isPosZ() ? +1 : -1 ;
139  int layer = getCode().getModuleIndex();
140  int phimodule = getCode().getPhiIndex();
141  int strawlayer = getCode().getStrawLayerIndex();
143  (bec,layer,phimodule,strawlayer,straw,TRTCond::ExpandedIdentifier::STRAW);
144  double dx1 = container->getDx1(id);
145  double dx2 = container->getDx2(id);
146  double ang = (dx2-dx1)/strawLength();
147  double dx = (dx2+dx1)/2.;
148  rc = HepGeom::TranslateX3D(dx)*HepGeom::RotateY3D(ang) ;
149  }
150  return rc ;
151 }

◆ calculateStrawTransform()

HepGeom::Transform3D InDetDD::TRT_BarrelElement::calculateStrawTransform ( int  straw,
GeoAlignmentStore alignStore 
) const
overrideprivatevirtual

These transforms are effectively to the local coord system of a straw derived from GeoModel -> hence CLHEP.

Implements InDetDD::TRT_BaseElement.

Definition at line 99 of file TRT_BarrelElement.cxx.

100 {
101  // NB The tranformation to a straw is reconstructed here precisely as
102  // it was ... hopefully... in the factory. One could eliminate this
103  // requirement and make the code a little more robust in this regard but
104  // at the cost of doubling the descriptors. (One descriptor now suffices
105  // for both positive and negative endcaps).
106  //std::cout << "In calculateStrawTransform" << std::endl;
107 
108  const GeoXF::Function *f= m_descriptor->getStrawTransform();
109  if (f) {
110  size_t offsetInto = m_descriptor->getStrawTransformOffset();
111  double zPos = -m_descriptor->strawZPos();
112  double zAng = m_code.isPosZ() ? M_PI : 0;
113  return Amg::EigenTransformToCLHEP(getMaterialGeom()->getAbsoluteTransform(alignStore)*((*f)(straw+offsetInto)))
114  * HepGeom::RotateY3D(zAng)*HepGeom::TranslateZ3D(zPos)
120  } else {
121  std::cout << "calculateStrawTransform: f is 0 !!!!" << std::endl;
122  return {};
123  }
124 }

◆ center() [1/2]

virtual const Amg::Vector3D& InDetDD::TRT_BaseElement::center ( ) const
finaloverridevirtualinherited

Element Surface: center of a straw layer.

Implements Trk::TrkDetElementBase.

◆ center() [2/2]

const Amg::Vector3D & InDetDD::TRT_BaseElement::center ( const Identifier id) const
finaloverridevirtualinherited

Straw Surface: Center of a straw using Identifier Straw center and straw axis can be obtained by the following: (The straw center is the center of the active region) Amg::Transform3D& transform = element->strawTransform(straw); Amb::Vector3D& center = element->strawCenter(); double r = element->strawCenter()->perp(); double phi = element->strawCenter()->phi(); Amg::Vector3D strawAxis = element->strawTransform(straw)* Vector3D(0,0,1) * strawDirection()

Implements Trk::TrkDetElementBase.

Definition at line 110 of file TRT_BaseElement.cxx.

111 {
112  int straw = m_idHelper->straw(id);
113  if (!m_strawSurfacesCache[straw]) {
114  createSurfaceCache(id);
115  }
116  // forward the transform of the cache
117  return m_strawSurfacesCache[straw]->center();
118 }

◆ conditions()

const TRT_Conditions* InDetDD::TRT_BaseElement::conditions ( ) const
inherited

Return the TRT_Conditions object associated to this Detector element.

◆ createSurfaceCache() [1/2]

void InDetDD::TRT_BarrelElement::createSurfaceCache ( GeoAlignmentStore alignStore) const
overrideprivatevirtual

create the cache for the element

Implements InDetDD::TRT_BaseElement.

Definition at line 166 of file TRT_BarrelElement.cxx.

167 {
168  // create the surface cache
169  if (!m_surfaceCache.isValid()) {
171  }
172  // creaete the surface (only if needed, links are still ok even if cache
173  // update)
174  if (!m_surface) {
175  elementSurface();
176  }
177 }

◆ createSurfaceCache() [2/2]

void InDetDD::TRT_BaseElement::createSurfaceCache ( Identifier  id,
GeoAlignmentStore alignStore = nullptr 
) const
inherited

create the surface & surface cache for the straw

Definition at line 161 of file TRT_BaseElement.cxx.

162 {
163  int straw = m_idHelper->straw(id);
164 
165  // convert neccessary parts to Amg
166  if (!m_strawSurfacesCache[straw]) {
167  // create the surface cache & fill it
169  }
170  // creaete the surface only if needed (the links are still intact)
171  if (!m_strawSurfaces[straw]) {
172  m_strawSurfaces[straw].set(
173  std::make_unique<Trk::StraightLineSurface>(*this, id));
174  }
175 }

◆ createSurfaceCacheHelper()

SurfaceCache InDetDD::TRT_BarrelElement::createSurfaceCacheHelper ( ) const
private

Definition at line 179 of file TRT_BarrelElement.cxx.

179  {
180 
181  // Calculate the surface from the two end straws.
182  int firstStraw = 0;
183  int lastStraw = nStraws() - 1;
184 
185  const Amg::Vector3D& centerFirstStraw =
186  center(m_idHelper->straw_id(identify(), firstStraw));
187  const Amg::Vector3D& centerLastStraw =
188  center(m_idHelper->straw_id(identify(), lastStraw));
189 
190  // Calculate center as the average position of the end straws.
191  auto center = Amg::Vector3D(0.5 * (centerFirstStraw + centerLastStraw));
192 
193  Amg::Vector3D phiAxis = centerLastStraw - centerFirstStraw;
194  double width = phiAxis.mag();
195  phiAxis = phiAxis.normalized();
196  double elementWidth =
197  width + 2 * m_descriptor->innerTubeRadius(); // Add the straw tube radius
198 
199  // Get local z-axis. This is roughly in +ve global z direction (exactly if no
200  // misalignment) We could probably use any straw for this but we average the
201  // first and last straw and renormalize to a unit vector.
202  Amg::Vector3D etaAxis = 0.5 * (strawAxis(firstStraw) + strawAxis(lastStraw));
203  etaAxis = etaAxis.normalized();
204 
205  // Calculate normal. This will point away from the beam line based
206  // on the assumption that the straw numbering goes in the direction
207  // of increasing phi and the straw axis is in +ve z direction.
208  auto normal = Amg::Vector3D(phiAxis.cross(etaAxis)); // phi cross z
209 
210  // Transform from local to global.
211  // local x axis -> phiAxis
212  // local y axis -> etaAxis
213  // local z axis -> cross product of local x and local y
214  // translation -> center
215 
217  rotation.col(0) = phiAxis;
218  rotation.col(1) = etaAxis;
219  rotation.col(2) = normal;
220 
221  // This constructor takes three points in the two coordinate systems.
223 
224  // create the element bounds
225  auto elementBounds = std::make_unique<Trk::RectangleBounds>(
226  0.5 * elementWidth, 0.5 * strawLength());
227 
228  return { transform, center, normal, std::move(elementBounds) };
229 }

◆ defTransform()

const GeoTrf::Transform3D& InDetDD::TRT_BaseElement::defTransform ( ) const
inherited

Get Default Transform (of module in barrel, layer in endcap) from GeoModel before alignment corrections.

◆ deleteCache()

void InDetDD::TRT_BaseElement::deleteCache ( )
privateinherited

Helper method for cache dealing.

Definition at line 200 of file TRT_BaseElement.cxx.

201 {
202  // for all straws
203  for (auto & i : m_strawSurfacesCache) {
204  i.store(nullptr);
205  }
206 }

◆ detectorType()

virtual Trk::DetectorElemType InDetDD::TRT_BaseElement::detectorType ( ) const
finaloverridevirtualinherited

TrkDetElementBase interface detectorTyoe.

Implements Trk::TrkDetElementBase.

◆ detectorTypeString()

std::string Trk::TrkDetElementBase::detectorTypeString ( ) const
inherited

Returns a string of the Detector element type.

Definition at line 10 of file TrkDetElementBase.cxx.

10  {
11  auto type = detectorType();
13  return "SolidState";
15  return "Silicon";
16  else if (type == Trk::DetectorElemType::TRT)
17  return "TRT";
18  else if (type == Trk::DetectorElemType::Csc)
19  return "Csc";
20  else if (type == Trk::DetectorElemType::Mdt)
21  return "Mdt";
22  else if (type == Trk::DetectorElemType::Rpc)
23  return "Rpc";
24  else if (type == Trk::DetectorElemType::Tgc)
25  return "Tgc";
27  return "sTgc";
28  else if (type == Trk::DetectorElemType::MM)
29  return "Mm";
30  return "Unknown";
31 }

◆ elementSurface()

const Trk::Surface & InDetDD::TRT_BarrelElement::elementSurface ( ) const
overrideprivatevirtual

return the surface of the element

Implements InDetDD::TRT_BaseElement.

Definition at line 158 of file TRT_BarrelElement.cxx.

159 {
160  if (not m_surface) {
161  m_surface.set(std::make_unique<Trk::PlaneSurface>(*this));
162  }
163  return *m_surface;
164 }

◆ getAbsoluteTransform()

const HepGeom::Transform3D InDetDD::TRT_BaseElement::getAbsoluteTransform ( int  straw) const
inherited

This is an alias to strawTransform(int straw)

Definition at line 42 of file TRT_BaseElement.cxx.

43 {
45 }

◆ getCode()

const TRT_BarrelCode& InDetDD::TRT_BarrelElement::getCode ( ) const

Doomed (?):

◆ getConditionsData()

const TRT_BarrelConditions * InDetDD::TRT_BarrelElement::getConditionsData ( )
static

Returns a pointer to conditions data.

This includes information on dead and noisy wires, as well as wire sags.

Definition at line 67 of file TRT_BarrelElement.cxx.

68 {
69  return nullptr;
70 }

◆ getDescriptor()

const TRT_BarrelDescriptor * InDetDD::TRT_BarrelElement::getDescriptor ( ) const

Returns a pointer to a descriptor, giving common information on module construction:

Definition at line 72 of file TRT_BarrelElement.cxx.

73 {
74  return m_descriptor;
75 }

◆ identify()

virtual Identifier InDetDD::TRT_BaseElement::identify ( ) const
finaloverridevirtualinherited

identifier of this detector element:

Implements Trk::TrkDetElementBase.

◆ identifyHash()

virtual IdentifierHash InDetDD::TRT_BaseElement::identifyHash ( ) const
finaloverridevirtualinherited

identifier hash

Implements Trk::TrkDetElementBase.

◆ invalidate()

void InDetDD::TRT_BaseElement::invalidate ( )
inherited

Invalidate cache.

Definition at line 190 of file TRT_BaseElement.cxx.

191 {
192  // Invalidate the caches
193  // Call and barrel or endcap specific invalidation
194  invalidateOther();
195  // Its enough to delete and zero the caches.
196  deleteCache();
197 }

◆ invalidateOther()

void InDetDD::TRT_BaseElement::invalidateOther ( ) const
inlineinherited

invalidate action on the cache

Definition at line 188 of file TRT_BaseElement.h.

188 {};

◆ nextInPhi()

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::nextInPhi ( ) const

Returns the next-in-phi detector element, or zero if none (forseeing gaps, in other words).

◆ nextInR()

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::nextInR ( ) const

Returns the next-in-R detector element, or zero if none.

◆ normal() [1/2]

virtual const Amg::Vector3D& InDetDD::TRT_BaseElement::normal ( ) const
finaloverridevirtualinherited

Element Surface: normal of a straw layer.

Implements Trk::TrkDetElementBase.

◆ normal() [2/2]

const Amg::Vector3D & InDetDD::TRT_BaseElement::normal ( const Identifier id) const
finaloverridevirtualinherited

Normal of a straw.

(Not very meaningful).

Implements Trk::TrkDetElementBase.

Definition at line 100 of file TRT_BaseElement.cxx.

101 {
102  // Not sure if the normal of the straw is ever used.
103  // nor is there a well defined normal.
104  // This wont be corrected for alignments.
105  // Just return the element normal
106  return normal();
107 }

◆ nStraws()

unsigned int InDetDD::TRT_BaseElement::nStraws ( ) const
inherited

Number of straws in the element.

◆ operator=()

const TRT_BarrelElement& InDetDD::TRT_BarrelElement::operator= ( const TRT_BarrelElement right)
privatedelete

Illegal Operations:

◆ previousInPhi()

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::previousInPhi ( ) const

Returns the previous-in-phi detector element, or zero if none (forseeing gaps, in other words).

◆ previousInR()

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::previousInR ( ) const

Returns the next-in-R detector element, or zero if none.

◆ setNextInPhi()

void InDetDD::TRT_BarrelElement::setNextInPhi ( const TRT_BarrelElement element)

Sets the next-in-phi detector.

Definition at line 77 of file TRT_BarrelElement.cxx.

78 {
79  m_nextInPhi=element;
80 }

◆ setNextInR()

void InDetDD::TRT_BarrelElement::setNextInR ( const TRT_BarrelElement element)

Sets the next-in-r detector.

Definition at line 87 of file TRT_BarrelElement.cxx.

88 {
89  m_nextInR=element;
90 }

◆ setPreviousInPhi()

void InDetDD::TRT_BarrelElement::setPreviousInPhi ( const TRT_BarrelElement element)

Sets the previous-in-phi detector.

Definition at line 82 of file TRT_BarrelElement.cxx.

83 {
84  m_previousInPhi=element;
85 }

◆ setPreviousInR()

void InDetDD::TRT_BarrelElement::setPreviousInR ( const TRT_BarrelElement element)

Sets the previous-in-r detector.

Definition at line 92 of file TRT_BarrelElement.cxx.

93 {
94  m_previousInR=element;
95 }

◆ strawAxis()

Amg::Vector3D InDetDD::TRT_BaseElement::strawAxis ( int  straw) const
inherited

Straw axis.

Always in direction of increasing eta. +ve z direction in barrel (for both +ve and -ve half) Away from beam pipe in -ve z endcap, Towards beam pipe in +ve endcap.

Definition at line 154 of file TRT_BaseElement.cxx.

155 {
156  return (strawTransform(straw).linear() * Amg::Vector3D::UnitZ() *
157  strawDirection());
158 }

◆ strawBounds()

const Trk::SurfaceBounds & InDetDD::TRT_BarrelElement::strawBounds ( ) const
finaloverridevirtual

Surface bounds.

Implements InDetDD::TRT_BaseElement.

Definition at line 153 of file TRT_BarrelElement.cxx.

154 {
155  return m_descriptor->strawBounds();
156 }

◆ strawCenter()

const Amg::Vector3D & InDetDD::TRT_BaseElement::strawCenter ( int  straw) const
inherited

Straw Surface: Local -> global transform of the straw via integer.

Definition at line 143 of file TRT_BaseElement.cxx.

144 {
145  if (!m_strawSurfacesCache[straw]) {
147  createSurfaceCache(id);
148  }
149  // forward the transform of the cache
150  return m_strawSurfacesCache[straw]->center();
151 }

◆ strawDirection()

int InDetDD::TRT_BarrelElement::strawDirection ( ) const
finaloverridevirtual

StrawDirection.

+1 if axis is in same direction as local coordinate, -1 otherwise.

Implements InDetDD::TRT_BaseElement.

Definition at line 231 of file TRT_BarrelElement.cxx.

232 {
233  // Return +1 if the straw local axis is in the same direction as the z axis, -1 otherwise.
234  // The straw axis by convention goes in the direction away from the readout.
235  // So for -ve endcap this is the positive z direction (we return +1) and in the
236  // +ve endcap its in the -ve z direction (we return -1).
237  //
238  return !(m_code.isPosZ()) ? +1 : -1;
239 }

◆ strawLength()

virtual const double& InDetDD::TRT_BarrelElement::strawLength ( ) const
finaloverridevirtual

Get the length of the straws (active length):

Implements InDetDD::TRT_BaseElement.

◆ strawSurface()

const Trk::StraightLineSurface & InDetDD::TRT_BaseElement::strawSurface ( int  straw) const
inherited

Straw Surface: access to the surface via integer.

Definition at line 121 of file TRT_BaseElement.cxx.

122 {
123  if (!m_strawSurfaces[straw]) {
124  // get the straw identifier to the given straw number and element identifier
126  createSurfaceCache(id);
127  }
128  return *(m_strawSurfaces[straw].get());
129 }

◆ strawTransform() [1/2]

const Amg::Transform3D & InDetDD::TRT_BaseElement::strawTransform ( int  straw) const
inherited

Straw Surface: Local -> global transform of the straw via integer.

Definition at line 132 of file TRT_BaseElement.cxx.

133 {
134  if (!m_strawSurfacesCache[straw]) {
136  createSurfaceCache(id);
137  }
138  // forward the transform of the cache
139  return m_strawSurfacesCache[straw]->transform();
140 }

◆ strawTransform() [2/2]

const Amg::Transform3D & InDetDD::TRT_BaseElement::strawTransform ( unsigned int  straw) const
inherited

Straw transform - fast access in array, in Tracking frame: Amg.

Straw Surface: access to the transform of individual straw in Tracking frame: Amg

Definition at line 89 of file TRT_BaseElement.cxx.

90 {
94  }
95  // forward the transform of the cache
96  return m_strawSurfacesCache[straw]->transform();
97 }

◆ strawXPos()

double InDetDD::TRT_BarrelElement::strawXPos ( unsigned int  i) const
inline

Get X Position: DEPRECATED.

Please use starwCenter(i).x()

◆ strawYPos()

double InDetDD::TRT_BarrelElement::strawYPos ( unsigned int  i) const
inline

Get Y Position: DEPRECATED.

Please use starwCenter(i).y()

◆ strawZPos()

double InDetDD::TRT_BarrelElement::strawZPos ( unsigned int  i) const
inline

Get Z Position: (active center) DEPRECATED.

Please use starwCenter(i).z()

◆ surface() [1/2]

virtual const Trk::Surface& InDetDD::TRT_BaseElement::surface ( ) const
finaloverridevirtualinherited

Element Surface: access to the Surface (straw layer)

Implements Trk::TrkDetElementBase.

◆ surface() [2/2]

const Trk::Surface & InDetDD::TRT_BaseElement::surface ( const Identifier id) const
finaloverridevirtualinherited

Straw Surface: access to the surface via identifier.

Implements Trk::TrkDetElementBase.

Definition at line 48 of file TRT_BaseElement.cxx.

49 {
50  int straw = m_idHelper->straw(id);
51  if (!m_strawSurfaces[straw]) {
53  }
54  return *(m_strawSurfaces[straw]);
55 }

◆ surfaces()

const std::vector< const Trk::Surface * > & InDetDD::TRT_BaseElement::surfaces ( ) const
inherited

Returns the full list of all detection surfaces associated to this detector element.

Definition at line 58 of file TRT_BaseElement.cxx.

59 {
60  if (!m_surfaces.isValid()) {
61  std::vector<const Trk::Surface*> tmp_surfaces;
62  tmp_surfaces.reserve(nStraws());
63  for (unsigned is = 0; is < nStraws(); ++is) {
64  tmp_surfaces.push_back(&strawSurface(is));
65  }
66  m_surfaces.set(tmp_surfaces);
67  }
68  return *(m_surfaces.ptr());
69 }

◆ transform() [1/2]

virtual const Amg::Transform3D& InDetDD::TRT_BaseElement::transform ( ) const
finaloverridevirtualinherited

Element Surface: Get Transform of element in Tracking frame: Amg.

Implements Trk::TrkDetElementBase.

◆ transform() [2/2]

const Amg::Transform3D & InDetDD::TRT_BaseElement::transform ( const Identifier id) const
finaloverridevirtualinherited

Straw Surface: access to the transform of individual straw in Tracking frame: Amg.

Implements Trk::TrkDetElementBase.

Definition at line 78 of file TRT_BaseElement.cxx.

79 {
80  int straw = m_idHelper->straw(id);
83  }
84  // forward the transform of the cache
85  return m_strawSurfacesCache[straw]->transform();
86 }

◆ type()

virtual TRT_BaseElement::Type InDetDD::TRT_BarrelElement::type ( ) const
finaloverridevirtual

Type information.

Implements InDetDD::TRT_BaseElement.

◆ updateAllCaches()

void InDetDD::TRT_BaseElement::updateAllCaches ( GeoAlignmentStore alignStore = nullptr)
inherited

Update all caches.

Definition at line 209 of file TRT_BaseElement.cxx.

210 {
211  // delete the caches first
212  deleteCache();
213  // Strawlayer caches
214  if (!m_surfaceCache.isValid()){
215  createSurfaceCache(alignStore);
216  }
217  // Loop over all straws and request items that get cached.
218  for (unsigned int iStraw = 0; iStraw < nStraws(); iStraw++) {
219  Identifier strawId = m_idHelper->straw_id(identify(), iStraw);
220  createSurfaceCache(strawId,alignStore);
221  }
222 }

Member Data Documentation

◆ m_code

TRT_BarrelCode InDetDD::TRT_BarrelElement::m_code
private

Definition at line 136 of file TRT_BarrelElement.h.

◆ m_conditions

const TRT_Conditions* InDetDD::TRT_BaseElement::m_conditions =nullptr
protectedinherited

Definition at line 208 of file TRT_BaseElement.h.

◆ m_descriptor

const TRT_BarrelDescriptor* InDetDD::TRT_BarrelElement::m_descriptor
private

Definition at line 137 of file TRT_BarrelElement.h.

◆ m_id

Identifier InDetDD::TRT_BaseElement::m_id
protectedinherited

Definition at line 199 of file TRT_BaseElement.h.

◆ m_idHash

IdentifierHash InDetDD::TRT_BaseElement::m_idHash
protectedinherited

Definition at line 200 of file TRT_BaseElement.h.

◆ m_idHelper

const TRT_ID* InDetDD::TRT_BaseElement::m_idHelper =nullptr
protectedinherited

Definition at line 207 of file TRT_BaseElement.h.

◆ m_nextInPhi

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::m_nextInPhi
private

Definition at line 138 of file TRT_BarrelElement.h.

◆ m_nextInR

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::m_nextInR
private

Definition at line 140 of file TRT_BarrelElement.h.

◆ m_nstraws

unsigned int InDetDD::TRT_BaseElement::m_nstraws = 0
protectedinherited

Definition at line 206 of file TRT_BaseElement.h.

◆ m_previousInPhi

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::m_previousInPhi
private

Definition at line 139 of file TRT_BarrelElement.h.

◆ m_previousInR

const TRT_BarrelElement* InDetDD::TRT_BarrelElement::m_previousInR
private

Definition at line 141 of file TRT_BarrelElement.h.

◆ m_strawSurfaces

std::vector<CxxUtils::CachedUniquePtr<Trk::StraightLineSurface> > InDetDD::TRT_BaseElement::m_strawSurfaces {}
protectedinherited

Definition at line 211 of file TRT_BaseElement.h.

◆ m_strawSurfacesCache

std::vector<CxxUtils::CachedUniquePtr<SurfaceCacheBase> > InDetDD::TRT_BaseElement::m_strawSurfacesCache {}
protectedinherited

helper element surface for the cache

Definition at line 212 of file TRT_BaseElement.h.

◆ m_surface

CxxUtils::CachedUniquePtr<Trk::Surface> InDetDD::TRT_BaseElement::m_surface
protectedinherited

Definition at line 209 of file TRT_BaseElement.h.

◆ m_surfaceCache

CxxUtils::CachedValue<SurfaceCache> InDetDD::TRT_BaseElement::m_surfaceCache
protectedinherited

Definition at line 215 of file TRT_BaseElement.h.

◆ m_surfaces

CxxUtils::CachedValue<std::vector<const Trk::Surface*> > InDetDD::TRT_BaseElement::m_surfaces
protectedinherited

Definition at line 214 of file TRT_BaseElement.h.


The documentation for this class was generated from the following files:
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
InDetDD::TRT_BarrelElement::m_nextInPhi
const TRT_BarrelElement * m_nextInPhi
Definition: TRT_BarrelElement.h:138
InDetDD::TRT_BaseElement::strawDirection
virtual int strawDirection() const =0
StrawDirection.
TRT::Hit::straw
@ straw
Definition: HitInfo.h:82
CxxUtils::CachedValue::ptr
const T * ptr() const
Return a pointer to the cached value.
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
Trk::DetectorElemType::Tgc
@ Tgc
InDetDD::TRT_BarrelDescriptor::getStrawTransformOffset
size_t getStrawTransformOffset() const
Get the offset into the transformation field:
InDetDD::TRT_BaseElement::deleteCache
void deleteCache()
Helper method for cache dealing.
Definition: TRT_BaseElement.cxx:200
CxxUtils::CachedValue::isValid
bool isValid() const
Test to see if the value is valid.
Trk::DetectorElemType::TRT
@ TRT
InDetDD::TRT_BaseElement::nStraws
unsigned int nStraws() const
Number of straws in the element.
InDetDD::TRT_BaseElement::strawAxis
Amg::Vector3D strawAxis(int straw) const
Straw axis.
Definition: TRT_BaseElement.cxx:154
InDetDD::TRT_BarrelElement::m_nextInR
const TRT_BarrelElement * m_nextInR
Definition: TRT_BarrelElement.h:140
M_PI
#define M_PI
Definition: ActiveFraction.h:11
InDetDD::TRT_BaseElement::TRT_BaseElement
TRT_BaseElement(const GeoVFullPhysVol *volume, const Identifier &id, const TRT_ID *idHelper, const TRT_Conditions *conditions)
Constructor:
Definition: TRT_BaseElement.cxx:17
InDetDD::TRT_BarrelElement::m_descriptor
const TRT_BarrelDescriptor * m_descriptor
Definition: TRT_BarrelElement.h:137
InDetDD::TRT_BarrelDescriptor::innerTubeRadius
double innerTubeRadius() const
Get inner tube radius of the straw.
InDetDD::TRT_BaseElement::createSurfaceCache
virtual void createSurfaceCache(GeoAlignmentStore *alignStore=nullptr) const =0
create the surface cache of the detector element, to be implementd in the deried class
InDetDD::TRT_BarrelDescriptor::strawZPos
const double & strawZPos() const
Position of center of active region.
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
Trk::DetectorElemType::Csc
@ Csc
Trk::TrkDetElementBase::detectorType
virtual DetectorElemType detectorType() const =0
Return the Detector element type.
InDetDD::TRT_BaseElement::m_nstraws
unsigned int m_nstraws
Definition: TRT_BaseElement.h:206
InDetDD::TRT_BarrelElement::m_previousInPhi
const TRT_BarrelElement * m_previousInPhi
Definition: TRT_BarrelElement.h:139
Trk::DetectorElemType::Silicon
@ Silicon
InDetDD::TRT_BaseElement::m_strawSurfaces
std::vector< CxxUtils::CachedUniquePtr< Trk::StraightLineSurface > > m_strawSurfaces
Definition: TRT_BaseElement.h:211
TRT_ID::straw
int straw(const Identifier &id) const
Definition: TRT_ID.h:902
InDetDD::TRT_BaseElement::m_surfaceCache
CxxUtils::CachedValue< SurfaceCache > m_surfaceCache
Definition: TRT_BaseElement.h:215
InDetDD::TRT_BarrelElement::createSurfaceCacheHelper
SurfaceCache createSurfaceCacheHelper() const
Definition: TRT_BarrelElement.cxx:179
Trk::DetectorElemType::SolidState
@ SolidState
lumiFormat.i
int i
Definition: lumiFormat.py:85
InDetDD::TRT_BaseElement::ENDCAP
@ ENDCAP
Definition: TRT_BaseElement.h:56
InDetDD::TRT_BarrelElement::strawLength
virtual const double & strawLength() const override final
Get the length of the straws (active length):
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
dumpNswErrorDb.linear
def linear
Definition: dumpNswErrorDb.py:29
InDetDD::TRT_BaseElement::m_idHelper
const TRT_ID * m_idHelper
Definition: TRT_BaseElement.h:207
InDetDD::TRT_BarrelCode::getStrawLayerIndex
unsigned int getStrawLayerIndex() const
Definition: TRT_BarrelCode.h:98
InDetDD::TRT_BarrelDescriptor::getStrawTransform
const GeoXF::Function * getStrawTransform() const
Get the tranformation field, which we do not own: Does not include the z shift which is different for...
InDetDD::TRT_BaseElement::conditions
const TRT_Conditions * conditions() const
Return the TRT_Conditions object associated to this Detector element.
InDetDD::TRT_BaseElement::BARREL
@ BARREL
Definition: TRT_BaseElement.h:56
InDetDD::TRT_BaseElement::getAbsoluteTransform
const HepGeom::Transform3D getAbsoluteTransform(int straw) const
This is an alias to strawTransform(int straw)
Definition: TRT_BaseElement.cxx:42
InDetDD::TRT_BarrelElement::m_previousInR
const TRT_BarrelElement * m_previousInR
Definition: TRT_BarrelElement.h:141
InDetDD::TRT_BaseElement::identify
virtual Identifier identify() const override final
identifier of this detector element:
hist_file_dump.f
f
Definition: hist_file_dump.py:141
InDetDD::TRT_BarrelElement::calculateLocalStrawTransform
HepGeom::Transform3D calculateLocalStrawTransform(int straw) const
Definition: TRT_BarrelElement.cxx:126
InDetDD::TRT_BarrelCode::isPosZ
unsigned int isPosZ() const
Definition: TRT_BarrelCode.h:83
InDetDD::TRT_BarrelElement::getCode
const TRT_BarrelCode & getCode() const
Doomed (?):
InDetDD::TRT_BaseElement::m_surfaces
CxxUtils::CachedValue< std::vector< const Trk::Surface * > > m_surfaces
Definition: TRT_BaseElement.h:214
InDetDD::TRT_BarrelDescriptor::strawBounds
const Trk::SurfaceBounds & strawBounds() const
Get Bounds.
Definition: TRT_BarrelDescriptor.cxx:39
InDetDD::TRT_BarrelCode::getModuleIndex
unsigned int getModuleIndex() const
Definition: TRT_BarrelCode.h:88
Trk::DetectorElemType::sTgc
@ sTgc
InDetDD::TRT_BaseElement::m_strawSurfacesCache
std::vector< CxxUtils::CachedUniquePtr< SurfaceCacheBase > > m_strawSurfacesCache
helper element surface for the cache
Definition: TRT_BaseElement.h:212
InDetDD::TRT_BaseElement::invalidateOther
void invalidateOther() const
invalidate action on the cache
Definition: TRT_BaseElement.h:188
TRTCond::ExpandedIdentifier::STRAW
@ STRAW
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:37
TRTCond::StrawDxContainer
Definition: StrawDxContainer.h:109
CxxUtils::CachedValue::set
void set(const T &val) const
Set the value, assuming it is currently invalid.
TRTCond::StrawDxContainerTemplate::getDx1
float getDx1(const ExpandedIdentifier &id) const
access to unpacked dx
Definition: StrawDxContainer.h:61
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
eflowRec::phiIndex
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition: EtaPhiLUT.cxx:23
InDetDD::TRT_BaseElement::createSurfaceCacheHelper
std::unique_ptr< SurfaceCacheBase > createSurfaceCacheHelper(int straw, GeoAlignmentStore *alignStore=nullptr) const
Definition: TRT_BaseElement.cxx:178
InDetDD::TRT_BaseElement::strawTransform
const Amg::Transform3D & strawTransform(unsigned int straw) const
Straw transform - fast access in array, in Tracking frame: Amg.
Definition: TRT_BaseElement.cxx:89
Trk::DetectorElemType::MM
@ MM
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
Trk::DetectorElemType::Rpc
@ Rpc
InDetDD::TRT_BarrelElement::m_code
TRT_BarrelCode m_code
Definition: TRT_BarrelElement.h:136
InDetDD::TRT_BarrelElement::elementSurface
virtual const Trk::Surface & elementSurface() const override
return the surface of the element
Definition: TRT_BarrelElement.cxx:158
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
InDetDD::TRT_Conditions::dxContainer
const TRTCond::StrawDxContainer * dxContainer() const
Definition: TRT_Conditions.cxx:14
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
InDetDD::TRT_BaseElement::center
virtual const Amg::Vector3D & center() const override final
Element Surface: center of a straw layer.
Amg::EigenTransformToCLHEP
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
Definition: CLHEPtoEigenConverter.h:120
InDetDD::TRT_BaseElement::strawSurface
const Trk::StraightLineSurface & strawSurface(int straw) const
Straw Surface: access to the surface via integer.
Definition: TRT_BaseElement.cxx:121
InDetDD::TRT_BaseElement::strawBounds
virtual const Trk::SurfaceBounds & strawBounds() const =0
the straw bounds
InDetDD::TRT_BaseElement::normal
virtual const Amg::Vector3D & normal() const override final
Element Surface: normal of a straw layer.
TRTCond::ExpandedIdentifier
Identifier for TRT detector elements in the conditions code.
Definition: InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/ExpandedIdentifier.h:30
InDetDD::TRT_BarrelCode::getPhiIndex
unsigned int getPhiIndex() const
Definition: TRT_BarrelCode.h:93
TRTCond::StrawDxContainerTemplate::getDx2
float getDx2(const ExpandedIdentifier &id) const
Definition: StrawDxContainer.h:65
InDetDD::TRT_BarrelDescriptor::nStraws
unsigned int nStraws() const
Get the number of straws:
Trk::DetectorElemType::Mdt
@ Mdt
InDetDD::TRT_BaseElement::m_surface
CxxUtils::CachedUniquePtr< Trk::Surface > m_surface
Definition: TRT_BaseElement.h:209
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:372
TRT_ID::straw_id
Identifier straw_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer, int straw) const
Three ways of getting id for a single straw:
Definition: TRT_ID.h:581
InDetDD::TRT_BaseElement::transform
virtual const Amg::Transform3D & transform() const override final
Element Surface: Get Transform of element in Tracking frame: Amg.
Identifier
Definition: IdentifierFieldParser.cxx:14