ATLAS Offline Software
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
MuonGMR4::PadDesign Class Reference

#include <PadDesign.h>

Inheritance diagram for MuonGMR4::PadDesign:
Collaboration diagram for MuonGMR4::PadDesign:

Public Types

enum  padCorners { botLeft =0, botRight, topLeft, topRight }
 
using localCornerArray = std::array< Amg::Vector2D, 4 >
 Defining an array of four vectors to store the pad corner position in the order of the enum defined below. More...
 
using CheckVector2D = std::optional< Amg::Vector2D >
 

Public Member Functions

 PadDesign ()=default
 
bool operator< (const PadDesign &other) const
 set sorting operator More...
 
void definePadRow (const double firstPadPhiDiv, const int numPadPhi, const double anglePadPhi, const int padPhiShift)
 Defines the Phi direction layout of the pad detector by specifing the starting angle w.r.t. More...
 
void definePadColumn (const double firstPadHeight, const int numPadEta, const double padHeight, const int maxPadEta=18)
 Defines the Eta direction layout of the pad detector by specifing the height of the first pad in millimeters, the number of pads in the eta direction, height of the pads other than the first row, and finally, the maximum number of pads accomodated in a pad column which is 18, hardcoded. More...
 
int numPads () const
 Returns the total number of pads in a layer. More...
 
double firstPadPhiDiv () const
 Returns the angle of the first pad outer edge w.r.t. the gasGap center from the beamline. More...
 
int numPadPhi () const
 Returns the number of pads in the Phi direction in the given gasGap layer. More...
 
double anglePadPhi () const
 Returns the angular pitch of the pads in the phi direction. More...
 
double padPhiShift () const
 Returns the staggering shift of inner pad edges in the phi direction. More...
 
double firstPadHeight () const
 Returns the height of the pads that are adjacent to the bottom edge of the trapezoid active area. More...
 
int numPadEta () const
 Returns the number of pads in the eta direction in the given layer. More...
 
double padHeight () const
 Returns the height of all the pads that are not adjacent to the bottom edge of the trapezoid active area. More...
 
int maxPadEta () const
 Returns the maximum number of pads that can be contained in a column of a pad. Used to match the pad numbering scheme. More...
 
int padNumber (const int channel) const
 Returns the pad number in the conventional pad numbering scheme from the sequential channel number. More...
 
std::pair< int, int > padEtaPhi (const int channel) const
 Returns a pair of Eta and Phi index for the given sequential channel number. More...
 
int padEta (const int channel) const
 Returns the Eta index of the pad for the given sequential channel number. More...
 
int padPhi (const int channel) const
 Returns the Phi index of the pad for the given sequential channel number. More...
 
void defineBeamlineRadius (const double radius)
 Extracting the distance from gasGap center to beamline from the local to global transformation of the padLayer. More...
 
double beamlineRadius () const
 Returns the distance between the gasGap center and the beamline. More...
 
localCornerArray padCorners (const int channel) const
 Returns an array of local pad corner positions given the sequential pad channel or the Eta/Phi Id. More...
 
localCornerArray padCorners (const std::pair< int, int > &padEtaPhi) const
 
Amg::Vector2D stripPosition (int stripNum) const override final
 Override from stripDesign. This function will give the center of the pad by taking the sequential channel number as input. More...
 
std::pair< int, int > channelNumber (const Amg::Vector2D &hitPos) const
 Function to retrieve the pad eta and phi given a local position coordinate. More...
 
double maxActiveX (const double locY) const
 Function gives the maximum active area length available in the local x for the given hit local y. More...
 
double sectorAngle () const
 Function gives the angular width of the sector. More...
 
double stripPitch () const
 Distance between two adjacent strips. More...
 
double stripWidth () const
 Width of a strip. More...
 
virtual int numStrips () const
 Number of strips on the panel. More...
 
void defineStripLayout (Amg::Vector2D &&posFirst, const double stripPitch, const double stripWidth, const int numStrips, const int numFirst=1)
 Defines the layout of the strip detector by specifing the position of the first strip w.r.t. More...
 
double halfWidth () const
 Returns the half height of the strip panel. More...
 
double shortHalfHeight () const
 Returns the shorter half height of the panel. More...
 
double longHalfHeight () const
 Returns the longer half height of the panel. More...
 
bool hasStereoAngle () const
 Returns whether a stereo angle is defined. More...
 
double stereoAngle () const
 Returns the value of the stereo angle. More...
 
bool isFlipped () const
 Returns whether the trapezoid is flipped. More...
 
void defineTrapezoid (double HalfShortY, double HalfLongY, double HalfHeight)
 Defines the edges of the trapezoid. More...
 
void defineTrapezoid (double HalfShortY, double HalfLongY, double HalfHeight, double sAngle)
 Defines the edges of the trapezoid with stereo angle. More...
 
void flipTrapezoid ()
 Flips the edges of the trapezoid boundaries by 90 degrees clockwise. More...
 
double distanceToStrip (const Amg::Vector2D &pos, int strip) const
 Returns the distance to the strip center along x. More...
 
virtual int stripNumber (const Amg::Vector2D &pos) const
 Calculates the number of the strip whose center is closest to the given point. More...
 
int firstStripNumber () const
 Returns the number of the first strip. More...
 
CheckVector2D leftEdge (int stripNumb) const
 Returns the left edge of the strip (Global numbering scheme) More...
 
CheckVector2D rightEdge (int stripNumb) const
 Returns the right edge of the strip (Global numbering scheme) More...
 
CheckVector2D center (int stripNumb) const
 Returns the bisector of the strip (Global numbering scheme) More...
 
bool operator< (const StripDesign &other) const
 Odering operator. More...
 
virtual double stripLength (int stripNumb) const
 Returns length of the strip. More...
 
bool insideTrapezoid (const Amg::Vector2D &extPos) const
 Checks whether an external point is inside the trapezoidal area. More...
 
const Amg::Vector2DcornerBotLeft () const
 Returns the bottom left corner of the trapezoid. More...
 
const Amg::Vector2DcornerBotRight () const
 Returns the bottom right corner of the trapezoid. More...
 
const Amg::Vector2DcornerTopLeft () const
 Returns the top left corner of the trapezoid. More...
 
const Amg::Vector2DcornerTopRight () const
 Returns the top right corner of the trapezoid. More...
 
const Amg::Vector2DedgeDirBottom () const
 Returns the unit vector pointing from the bottom left -> right corner. More...
 
const Amg::Vector2DedgeDirTop () const
 Returns the unit vector pointing from the top left -> right corner. More...
 
const Amg::Vector2DedgeDirLeft () const
 Returns the unit vector pointing from the left bottom -> top corner. More...
 
const Amg::Vector2DedgeDirRight () const
 Returns the unit vector pointing from the right bottom -> top corner. More...
 
double lenTopEdge () const
 Length of the the edge from top left -> top right. More...
 
double lenLeftEdge () const
 Length of the edge from bottom left -> top left. More...
 
double lenBottomEdge () const
 Length of the edge from bottom left -> bottom right. More...
 
double lenRightEdge () const
 Length of the dge from bottom right -> top right. More...
 
const Amg::Vector2DstripNormal () const
 Vector pointing to the next strip. More...
 
const Amg::Vector2DstripDir () const
 Vector pointing along the strip. More...
 
const Amg::Vector2DfirstStripPos () const
 Vector indicating the first strip position. More...
 
void defineDiamond (double HalfShortY, double HalfLongY, double HalfHeight, double yCutout)
 Defines the edges of the sTGC diamond L3 sector. More...
 
double yCutout () const
 Returns the cutout of the diamond. More...
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Protected Member Functions

bool insideBoundaries (const Amg::Vector2D &pos) const
 Checks wheather the internal point is inside hte trapezoidal area. More...
 
virtual CheckVector2D leftInterSect (int stripNum, bool uncapped=false) const
 Returns the intersection of a given strip with the left or right edge of the trapezoid If uncapped is set to false and the strip is a routed strip, then the intersection onto the corresponding bottom / top edges are returned. More...
 
CheckVector2D leftInterSect (const Amg::Vector2D &stripPos, bool uncapped=false) const
 
virtual CheckVector2D rightInterSect (int stripNum, bool uncapped=false) const
 
CheckVector2D rightInterSect (const Amg::Vector2D &stripPos, bool uncapped=false) const
 
CheckVector2D stripCenter (int stripNum) const
 Returns the geometrical center of a given strip. More...
 

Private Member Functions

void print (std::ostream &ostr) const override final
 Dump properties to the ostr. More...
 
void setStereoAngle (double stereo)
 
void resetDirCache ()
 Resets the cache of the directions. More...
 
 AmgSymMatrix (2) m_etaToStereo
 Matrix to translate from nominal -> stereo frame. More...
 
 AmgSymMatrix (2) m_stereoToEta
 Matrixt to translate from stereo -> nominal frame. More...
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

double m_firstPadPhiDiv {0.}
 Angle of the first pad outer edge w.r.t. the gasGap center from the beamline. More...
 
int m_numPadPhi {0}
 Number of pads in the Phi direction in the given gasGap layer. More...
 
double m_anglePadPhi {0.}
 Angular pitch of the pads in the phi direction. More...
 
double m_padPhiShift {0.}
 The staggering shift of inner pad edges in the phi direction. More...
 
double m_firstPadHeight {0.}
 Height of the pads that are adjacent to the bottom edge of the trapezoid active area. More...
 
int m_numPadEta {0}
 Number of pads in the eta direction in the given layer. More...
 
double m_padHeight {0.}
 Height of all the pads that are not adjacent to the bottom edge of the trapezoid active area. More...
 
int m_maxPadEta {18}
 The maximum number of pads that can be contained in a column of a pad. Used to match the pad numbering scheme. More...
 
double m_radius {0.}
 Stores the beamline radius extracted from the local to global transformation. More...
 
int m_channelShift {1}
 Shift between the 0-th readout channel and the first strip described by the panel. More...
 
int m_numStrips {0}
 Number of all strips. More...
 
double m_stripPitch {0.}
 Distance between 2 adjacent strip centers. More...
 
double m_stripWidth {0.}
 Width of each strip line. More...
 
Amg::Vector2D m_firstStripPos {Amg::Vector2D::Zero()}
 First strip position. More...
 
Amg::Vector2D m_stripDir {Amg::Vector2D::UnitY()}
 Orientiation of the strips along the panel. More...
 
Amg::Vector2D m_stripNormal {Amg::Vector2D::UnitX()}
 Vector pointing from strip N to the next strip. More...
 
bool m_isFlipped {false}
 Flag telling whether the trapezoid has been flipped. More...
 
bool m_hasStereo {false}
 Flag telling whether the strip design has a stereo angle or not. More...
 
double m_stereoAngle {0.}
 Stereo angle of the strip design. More...
 
Amg::Vector2D m_bottomLeft {Amg::Vector2D::Zero()}
 Bottom left point of the trapezoid. More...
 
Amg::Vector2D m_topLeft {Amg::Vector2D::Zero()}
 Top right point of the trapezoid. More...
 
Amg::Vector2D m_topRight {Amg::Vector2D::Zero()}
 Bottom right point of the trapezoid. More...
 
Amg::Vector2D m_bottomRight {Amg::Vector2D::Zero()}
 Bottom right point of the trapezoid. More...
 
CxxUtils::CachedUniquePtr< Amg::Vector2Dm_dirTopEdge {}
 Vector describing the top edge of the trapzoid (top left -> top right) More...
 
CxxUtils::CachedUniquePtr< Amg::Vector2Dm_dirBotEdge {}
 Vector describing the bottom edge of the trapezoid (bottom left -> bottom right) More...
 
CxxUtils::CachedUniquePtr< Amg::Vector2Dm_dirLeftEdge {}
 Vector describing the left adge of the trapezoid (bottom left -> top left) More...
 
CxxUtils::CachedUniquePtr< Amg::Vector2Dm_dirRightEdge {}
 Vector describing the right edge of the trapezoid (bottom right -> top right) More...
 
double m_lenSlopEdge {0.}
 Length of the edge connecting the short with the long egde. More...
 
double m_shortHalfY {0.}
 Trapezoid dimensions. More...
 
double m_longHalfY {0.}
 
double m_halfX {0.}
 
double m_yCutout {0.}
 Stores the diamond cutout length from the SQLite DB file. More...
 
double m_cutLongEdge {0.}
 Lenght of the line segment that's cut from the long edge to make the trapezoid diamond shaped. More...
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Static Private Attributes

static constexpr double m_largeSectorAngle {28.}
 Large sector opening angle. More...
 
static constexpr double m_smallSectorAngle {17.}
 Small sector opening angle. More...
 

Detailed Description

Definition at line 24 of file PadDesign.h.

Member Typedef Documentation

◆ CheckVector2D

using MuonGMR4::StripDesign::CheckVector2D = std::optional<Amg::Vector2D>
inherited

Definition at line 82 of file StripDesign.h.

◆ localCornerArray

Defining an array of four vectors to store the pad corner position in the order of the enum defined below.

Definition at line 77 of file PadDesign.h.

Member Enumeration Documentation

◆ padCorners

Enumerator
botLeft 
botRight 
topLeft 
topRight 

Definition at line 78 of file PadDesign.h.

Constructor & Destructor Documentation

◆ PadDesign()

MuonGMR4::PadDesign::PadDesign ( )
default

Member Function Documentation

◆ AmgSymMatrix() [1/2]

MuonGMR4::StripDesign::AmgSymMatrix ( )
inlineprivateinherited

Matrix to translate from nominal -> stereo frame.

Definition at line 175 of file StripDesign.h.

175 {AmgSymMatrix(2)::Identity()};

◆ AmgSymMatrix() [2/2]

MuonGMR4::StripDesign::AmgSymMatrix ( )
inlineprivateinherited

Matrixt to translate from stereo -> nominal frame.

Definition at line 177 of file StripDesign.h.

177 {AmgSymMatrix(2)::Identity()};

◆ anglePadPhi()

double MuonGMR4::PadDesign::anglePadPhi ( ) const

Returns the angular pitch of the pads in the phi direction.

◆ beamlineRadius()

double MuonGMR4::PadDesign::beamlineRadius ( ) const

Returns the distance between the gasGap center and the beamline.

◆ center()

CheckVector2D MuonGMR4::StripDesign::center ( int  stripNumb) const
inherited

Returns the bisector of the strip (Global numbering scheme)

◆ channelNumber()

std::pair<int, int> MuonGMR4::PadDesign::channelNumber ( const Amg::Vector2D hitPos) const

Function to retrieve the pad eta and phi given a local position coordinate.

◆ cornerBotLeft()

const Amg::Vector2D& MuonGMR4::StripDesign::cornerBotLeft ( ) const
inherited

Returns the bottom left corner of the trapezoid.

◆ cornerBotRight()

const Amg::Vector2D& MuonGMR4::StripDesign::cornerBotRight ( ) const
inherited

Returns the bottom right corner of the trapezoid.

◆ cornerTopLeft()

const Amg::Vector2D& MuonGMR4::StripDesign::cornerTopLeft ( ) const
inherited

Returns the top left corner of the trapezoid.

◆ cornerTopRight()

const Amg::Vector2D& MuonGMR4::StripDesign::cornerTopRight ( ) const
inherited

Returns the top right corner of the trapezoid.

◆ defineBeamlineRadius()

void MuonGMR4::PadDesign::defineBeamlineRadius ( const double  radius)

Extracting the distance from gasGap center to beamline from the local to global transformation of the padLayer.

Definition at line 60 of file PadDesign.cxx.

60  {
61  m_radius = radius;
62  };

◆ defineDiamond()

void MuonGMR4::StripDesign::defineDiamond ( double  HalfShortY,
double  HalfLongY,
double  HalfHeight,
double  yCutout 
)
inherited

Defines the edges of the sTGC diamond L3 sector.

define a trapezoid region to preserve the functionality of intersect functions in StripDesign class

Definition at line 82 of file StripDesign.cxx.

83  {
85  double HalfLongYuncut = HalfLongY + yCutout * (HalfLongY - HalfShortY)/(2*HalfHeight - yCutout);
86  defineTrapezoid(HalfShortY, HalfLongYuncut, HalfHeight);
88  m_longHalfY = HalfLongY;
90  }

◆ definePadColumn()

void MuonGMR4::PadDesign::definePadColumn ( const double  firstPadHeight,
const int  numPadEta,
const double  padHeight,
const int  maxPadEta = 18 
)

Defines the Eta direction layout of the pad detector by specifing the height of the first pad in millimeters, the number of pads in the eta direction, height of the pads other than the first row, and finally, the maximum number of pads accomodated in a pad column which is 18, hardcoded.

The numbering for the next pad column will start with a factor of 19, regardless of the number of pads in the previous column.

Definition at line 49 of file PadDesign.cxx.

52  {
53 
58  };

◆ definePadRow()

void MuonGMR4::PadDesign::definePadRow ( const double  firstPadPhiDiv,
const int  numPadPhi,
const double  anglePadPhi,
const int  padPhiShift 
)

Defines the Phi direction layout of the pad detector by specifing the starting angle w.r.t.

the layer center, the number of pads in the phi direction, angular pitch to the next pad, and finally, the staggering in mm for the inner edges of the pads. Note: the outer edges of
the pads with either phi = 1, or phi = numPadPhi are fixed, they do not stagger.

Definition at line 38 of file PadDesign.cxx.

41  {
42 
46  m_padPhiShift = static_cast<double>(padPhiShift);
47  };

◆ defineStripLayout()

void MuonGMR4::StripDesign::defineStripLayout ( Amg::Vector2D &&  posFirst,
const double  stripPitch,
const double  stripWidth,
const int  numStrips,
const int  numFirst = 1 
)
inherited

Defines the layout of the strip detector by specifing the position of the first strip w.r.t.

the layer center, the pitch to the next strip, the corresponding width of each strip, the total number of strips and finally the number of the first strip in the global numbering scheme

Definition at line 107 of file StripDesign.cxx.

111  {
112  m_channelShift = numFirst;
116  m_firstStripPos = std::move(posFirst);
117  }

◆ defineTrapezoid() [1/2]

void MuonGMR4::StripDesign::defineTrapezoid ( double  HalfShortY,
double  HalfLongY,
double  HalfHeight 
)
inherited

Defines the edges of the trapezoid.

Definition at line 69 of file StripDesign.cxx.

69  {
70  m_bottomLeft = Amg::Vector2D{-HalfHeight, -HalfShortY};
71  m_bottomRight = Amg::Vector2D{HalfHeight, -HalfLongY};
72  m_topLeft = Amg::Vector2D{-HalfHeight, HalfShortY};
73  m_topRight = Amg::Vector2D{HalfHeight, HalfLongY};
74 
75  m_shortHalfY = HalfShortY;
76  m_longHalfY = HalfLongY;
77  m_halfX = HalfHeight;
78  m_lenSlopEdge = std::hypot(2.*HalfHeight, HalfShortY - HalfLongY);
79  resetDirCache();
80  m_isFlipped = false;
81  }

◆ defineTrapezoid() [2/2]

void MuonGMR4::StripDesign::defineTrapezoid ( double  HalfShortY,
double  HalfLongY,
double  HalfHeight,
double  sAngle 
)
inherited

Defines the edges of the trapezoid with stereo angle.

The stereo angle is defined as the angle going from the nominal scheme to the stereo scheme

Definition at line 54 of file StripDesign.cxx.

54  {
55  defineTrapezoid(HalfShortY,HalfLongY, HalfHeight);
56  setStereoAngle(sAngle);
57  }

◆ distanceToStrip()

double MuonGMR4::StripDesign::distanceToStrip ( const Amg::Vector2D pos,
int  strip 
) const
inherited

Returns the distance to the strip center along x.

◆ edgeDirBottom()

const Amg::Vector2D& MuonGMR4::StripDesign::edgeDirBottom ( ) const
inherited

Returns the unit vector pointing from the bottom left -> right corner.

◆ edgeDirLeft()

const Amg::Vector2D& MuonGMR4::StripDesign::edgeDirLeft ( ) const
inherited

Returns the unit vector pointing from the left bottom -> top corner.

◆ edgeDirRight()

const Amg::Vector2D& MuonGMR4::StripDesign::edgeDirRight ( ) const
inherited

Returns the unit vector pointing from the right bottom -> top corner.

◆ edgeDirTop()

const Amg::Vector2D& MuonGMR4::StripDesign::edgeDirTop ( ) const
inherited

Returns the unit vector pointing from the top left -> right corner.

◆ firstPadHeight()

double MuonGMR4::PadDesign::firstPadHeight ( ) const

Returns the height of the pads that are adjacent to the bottom edge of the trapezoid active area.

◆ firstPadPhiDiv()

double MuonGMR4::PadDesign::firstPadPhiDiv ( ) const

Returns the angle of the first pad outer edge w.r.t. the gasGap center from the beamline.

◆ firstStripNumber()

int MuonGMR4::StripDesign::firstStripNumber ( ) const
inherited

Returns the number of the first strip.

◆ firstStripPos()

const Amg::Vector2D& MuonGMR4::StripDesign::firstStripPos ( ) const
inherited

Vector indicating the first strip position.

◆ flipTrapezoid()

void MuonGMR4::StripDesign::flipTrapezoid ( )
inherited

Flips the edges of the trapezoid boundaries by 90 degrees clockwise.

yCutOut defined for the sTGC detectors. Move the edges to the uncut trapezoid version Deal with the cutOut in the intersect

Definition at line 91 of file StripDesign.cxx.

91  {
92  if (m_isFlipped) {
93  ATH_MSG_WARNING("It's impossible to flip a trapezoid twice. Swap short and long lengths");
94  return;
95  }
96  m_isFlipped = true;
97 
104  resetDirCache();
105  }

◆ halfWidth()

double MuonGMR4::StripDesign::halfWidth ( ) const
inherited

Returns the half height of the strip panel.

◆ hasStereoAngle()

bool MuonGMR4::StripDesign::hasStereoAngle ( ) const
inherited

Returns whether a stereo angle is defined.

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ insideBoundaries()

bool MuonGMR4::StripDesign::insideBoundaries ( const Amg::Vector2D pos) const
protectedinherited

Checks wheather the internal point is inside hte trapezoidal area.

◆ insideTrapezoid()

bool MuonGMR4::StripDesign::insideTrapezoid ( const Amg::Vector2D extPos) const
inherited

Checks whether an external point is inside the trapezoidal area.

◆ isFlipped()

bool MuonGMR4::StripDesign::isFlipped ( ) const
inherited

Returns whether the trapezoid is flipped.

◆ leftEdge()

CheckVector2D MuonGMR4::StripDesign::leftEdge ( int  stripNumb) const
inherited

Returns the left edge of the strip (Global numbering scheme)

◆ leftInterSect() [1/2]

CheckVector2D MuonGMR4::StripDesign::leftInterSect ( const Amg::Vector2D stripPos,
bool  uncapped = false 
) const
protectedinherited

◆ leftInterSect() [2/2]

virtual CheckVector2D MuonGMR4::StripDesign::leftInterSect ( int  stripNum,
bool  uncapped = false 
) const
protectedvirtualinherited

Returns the intersection of a given strip with the left or right edge of the trapezoid If uncapped is set to false and the strip is a routed strip, then the intersection onto the corresponding bottom / top edges are returned.

Reimplemented in MuonGMR4::RadialStripDesign.

◆ lenBottomEdge()

double MuonGMR4::StripDesign::lenBottomEdge ( ) const
inherited

Length of the edge from bottom left -> bottom right.

◆ lenLeftEdge()

double MuonGMR4::StripDesign::lenLeftEdge ( ) const
inherited

Length of the edge from bottom left -> top left.

◆ lenRightEdge()

double MuonGMR4::StripDesign::lenRightEdge ( ) const
inherited

Length of the dge from bottom right -> top right.

◆ lenTopEdge()

double MuonGMR4::StripDesign::lenTopEdge ( ) const
inherited

Length of the the edge from top left -> top right.

◆ longHalfHeight()

double MuonGMR4::StripDesign::longHalfHeight ( ) const
inherited

Returns the longer half height of the panel.

◆ maxActiveX()

double MuonGMR4::PadDesign::maxActiveX ( const double  locY) const

Function gives the maximum active area length available in the local x for the given hit local y.

◆ maxPadEta()

int MuonGMR4::PadDesign::maxPadEta ( ) const

Returns the maximum number of pads that can be contained in a column of a pad. Used to match the pad numbering scheme.

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ numPadEta()

int MuonGMR4::PadDesign::numPadEta ( ) const

Returns the number of pads in the eta direction in the given layer.

◆ numPadPhi()

int MuonGMR4::PadDesign::numPadPhi ( ) const

Returns the number of pads in the Phi direction in the given gasGap layer.

◆ numPads()

int MuonGMR4::PadDesign::numPads ( ) const

Returns the total number of pads in a layer.

◆ numStrips()

virtual int MuonGMR4::StripDesign::numStrips ( ) const
virtualinherited

Number of strips on the panel.

Reimplemented in MuonGMR4::RadialStripDesign.

◆ operator<() [1/2]

bool MuonGMR4::PadDesign::operator< ( const PadDesign other) const

set sorting operator

Definition at line 30 of file PadDesign.cxx.

30  {
35  return static_cast<const StripDesign&>(*this) < other;
36  }

◆ operator<() [2/2]

bool MuonGMR4::StripDesign::operator< ( const StripDesign other) const
inherited

Odering operator.

Definition at line 26 of file StripDesign.cxx.

26  {
36  static const GeoTrf::TransformSorter trfSorter{};
37  return trfSorter(m_firstStripPos, other.m_firstStripPos);
38  }

◆ padCorners() [1/2]

Returns an array of local pad corner positions given the sequential pad channel or the Eta/Phi Id.

◆ padCorners() [2/2]

localCornerArray MuonGMR4::PadDesign::padCorners ( const std::pair< int, int > &  padEtaPhi) const

Variables to store the distance of the two sides of the pad w.r.t. the chamber origin

Variables to store the distance of the four points of the pad in x direction w.r.t. the chamber origin

Defining the top and the bottom edge of the active area depending on whether its a diamond or a trapezoid

Calculating the distance of top and bottom sides of the pad w.r.t. the chamber origin

Caculating the angular positions of the left and the right edges

Defining tangent of the phi angles calculated above

Calculating distance from the beamline to the bottom and top edges of the pad

Calculating the distance of the four corners of the pad in x direction w.r.t. the chamber origin

Calculating the cosine of the angular positions to calculate the staggering in x direction w.r.t. the chamber origin

Adjusting the four corners of the pads for staggering in x direction w.r.t. the chamber origin

Outer edges of the trapezoid do not undergo staggering. Hence the if conditions.

Adjusting the outer edges of the pads in diamond chambers (QL3) There are pads in the outer columns that may contain five vertices when the topEdge of the pad is above the gasGap origin and the bottom edge is below. This is only the case when yCutout is nonzero i.e. L3 sector. In our logic, we are keeping only four corners for all the pads and essentially ignoring the fifth vertex for these specific cases because the technical drawings suggest that the active ignored is very small and the effect on reconstruction and digitization will be negligible.

Swapping the edges and the points in a mirror fashion if our initial assumptions about the left/Right and top/Bottom are false.

Definition at line 64 of file PadDesign.cxx.

64  {
65  int padEta = padEtaPhi.first;
66  int padPhi = padEtaPhi.second;
67  localCornerArray padCorners = {make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
69  double botEdge{0.};
70  double topEdge{0.};
72  double botLeftPoint{0.};
73  double botRightPoint{0.};
74  double topLeftPoint{0.};
75  double topRightPoint{0.};
77  double maxBottom = -halfWidth();
78  double maxTop = halfWidth();
79  if(padEta == 1) {
81  botEdge = maxBottom;
82  topEdge = botEdge + firstPadHeight();
83  }
84  else if(padEta > 1 && padEta <= numPadEta()) {
85  botEdge = maxBottom + firstPadHeight() + (padEta - 2) * padHeight();
86  topEdge = botEdge + padHeight();
87  if(padEta == numPadEta()) topEdge = maxTop;
88  }
89  else {
90  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" The given pad Eta " << padEta << " is out of range. Maximum range is " << numPadEta());
91  return padCorners;
92  }
93 
95  double phiRight = firstPadPhiDiv() + (padPhi - 2) * anglePadPhi();
96  double phiLeft = firstPadPhiDiv() + (padPhi - 1) * anglePadPhi();
98  double tanRight = std::tan(phiRight * Gaudi::Units::deg);
99  double tanLeft = std::tan(phiLeft * Gaudi::Units::deg);
101  double botBase = botEdge + beamlineRadius();
102  double topBase = topEdge + beamlineRadius();
104  botLeftPoint = -botBase * tanLeft;
105  botRightPoint = -botBase * tanRight;
106  topLeftPoint = -topBase * tanLeft;
107  topRightPoint = -topBase * tanRight;
109  double cosRight = botBase / std::hypot(botRightPoint, botBase);
110  double cosLeft = botBase / std::hypot(botLeftPoint, botBase);
112  botLeftPoint += padPhiShift() * cosLeft;
113  botRightPoint += padPhiShift() * cosRight;
114  topLeftPoint += padPhiShift() * cosLeft;
115  topRightPoint += padPhiShift() * cosRight;
117  double adjHeight = yCutout()? 2 * halfWidth() - yCutout() : 2 * halfWidth();
118  if(padPhi == 1) {
119  botRightPoint = shortHalfHeight() + ((longHalfHeight() - shortHalfHeight()) * (botEdge - maxBottom) / adjHeight);
120  topRightPoint = shortHalfHeight() + ((longHalfHeight() - shortHalfHeight()) * (topEdge - maxBottom) / adjHeight);
121  }
122  if(padPhi == numPadPhi()) {
123  botLeftPoint = -shortHalfHeight() - ((longHalfHeight() - shortHalfHeight()) * (botEdge - maxBottom) / adjHeight);
124  topLeftPoint = -shortHalfHeight() - ((longHalfHeight() - shortHalfHeight()) * (topEdge - maxBottom) / adjHeight);
125  }
132 
133  if (yCutout() && topEdge > (halfWidth() - yCutout())) {
134  if (padPhi == 1) {
135  topRightPoint = longHalfHeight();
136  if (botEdge > (halfWidth() - yCutout())) botRightPoint = longHalfHeight();
137  }
138  if (padPhi == numPadPhi()) {
139  topLeftPoint = -longHalfHeight();
140  if (botEdge > (halfWidth() - yCutout())) botLeftPoint = -longHalfHeight();
141  }
142  }
143 
146  if (botEdge > topEdge) {
147  ATH_MSG_VERBOSE("Swap top and bottom side "<<padEtaPhi.first<<"/"<<padEtaPhi.second);
148  std::swap(botEdge, topEdge);
149  }
150  if (botLeftPoint > botRightPoint) {
151  ATH_MSG_VERBOSE("Swap bottom left and right points "<<padEtaPhi.first<<"/"<<padEtaPhi.second);
152  std::swap(botLeftPoint, botRightPoint);
153  }
154  if (topLeftPoint > topRightPoint) {
155  ATH_MSG_VERBOSE("Swap top left and right points "<<padEtaPhi.first<<"/"<<padEtaPhi.second);
156  std::swap(topLeftPoint, topRightPoint);
157  }
158  padCorners[botLeft] = Amg::Vector2D(botLeftPoint, botEdge);
159  padCorners[botRight] = Amg::Vector2D(botRightPoint, botEdge);
160  padCorners[topLeft] = Amg::Vector2D(topLeftPoint, topEdge);
161  padCorners[topRight] = Amg::Vector2D(topRightPoint, topEdge);
162  return padCorners;
163  };

◆ padEta()

int MuonGMR4::PadDesign::padEta ( const int  channel) const

Returns the Eta index of the pad for the given sequential channel number.

◆ padEtaPhi()

std::pair<int, int> MuonGMR4::PadDesign::padEtaPhi ( const int  channel) const

Returns a pair of Eta and Phi index for the given sequential channel number.

◆ padHeight()

double MuonGMR4::PadDesign::padHeight ( ) const

Returns the height of all the pads that are not adjacent to the bottom edge of the trapezoid active area.

◆ padNumber()

int MuonGMR4::PadDesign::padNumber ( const int  channel) const

Returns the pad number in the conventional pad numbering scheme from the sequential channel number.

◆ padPhi()

int MuonGMR4::PadDesign::padPhi ( const int  channel) const

Returns the Phi index of the pad for the given sequential channel number.

◆ padPhiShift()

double MuonGMR4::PadDesign::padPhiShift ( ) const

Returns the staggering shift of inner pad edges in the phi direction.

◆ print()

void MuonGMR4::PadDesign::print ( std::ostream &  ostr) const
finaloverrideprivatevirtual

Dump properties to the ostr.

Reimplemented from MuonGMR4::StripDesign.

Definition at line 18 of file PadDesign.cxx.

18  {
19  ostr<<"Dimension -- width x height [mm]: "<<halfWidth() * Gaudi::Units::mm<<" x ";
20  ostr<<shortHalfHeight()<<"/"<<longHalfHeight()<<" [mm], ";
21  if (hasStereoAngle()) ostr<<"stereo angle: "<<stereoAngle() / Gaudi::Units::deg<<", ";
22  ostr<<"position first pad "<<Amg::toString(stripPosition(firstStripNumber()),1);
23  ostr<<" *** Trapezoid edges "<<Amg::toString(cornerBotLeft(),1)<<" - "<<Amg::toString(cornerBotRight(), 1)<<" --- ";
24  ostr<<Amg::toString(cornerTopLeft(), 1)<<" - "<<Amg::toString(cornerTopRight(), 1);
25  ostr<<" -- numPadEta: "<<numPadEta()<<", numPadPhi: "<<numPadPhi()<<", pad height: "<<padHeight();
26  ostr<<" -- firstPadPhiDiv: "<<firstPadPhiDiv()<<", anglePadPhi: "<<anglePadPhi()<<", padPhiShift: "<<padPhiShift();
27  ostr<<" -- firstPadHeight: "<<firstPadHeight()<<", beamlineRadius: "<<beamlineRadius();
28  }

◆ resetDirCache()

void MuonGMR4::StripDesign::resetDirCache ( )
privateinherited

Resets the cache of the directions.

Definition at line 118 of file StripDesign.cxx.

118  {
119  m_dirTopEdge.release();
120  m_dirBotEdge.release();
121  m_dirLeftEdge.release();
122  m_dirRightEdge.release();
123  }

◆ rightEdge()

CheckVector2D MuonGMR4::StripDesign::rightEdge ( int  stripNumb) const
inherited

Returns the right edge of the strip (Global numbering scheme)

◆ rightInterSect() [1/2]

CheckVector2D MuonGMR4::StripDesign::rightInterSect ( const Amg::Vector2D stripPos,
bool  uncapped = false 
) const
protectedinherited

◆ rightInterSect() [2/2]

virtual CheckVector2D MuonGMR4::StripDesign::rightInterSect ( int  stripNum,
bool  uncapped = false 
) const
protectedvirtualinherited

Reimplemented in MuonGMR4::RadialStripDesign.

◆ sectorAngle()

double MuonGMR4::PadDesign::sectorAngle ( ) const

Function gives the angular width of the sector.

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

◆ setStereoAngle()

void MuonGMR4::StripDesign::setStereoAngle ( double  stereo)
privateinherited

Definition at line 59 of file StripDesign.cxx.

59  {
60  if (std::abs(sAngle) < std::numeric_limits<float>::epsilon()) return;
61  m_stereoAngle = sAngle;
62  m_hasStereo = true;
63  m_etaToStereo = Eigen::Rotation2D{sAngle};
64  m_stereoToEta = Eigen::Rotation2D{-sAngle};
65  m_stripDir = m_stereoToEta * m_stripDir;
66  m_stripNormal = m_stereoToEta * m_stripNormal;
67  }

◆ shortHalfHeight()

double MuonGMR4::StripDesign::shortHalfHeight ( ) const
inherited

Returns the shorter half height of the panel.

◆ stereoAngle()

double MuonGMR4::StripDesign::stereoAngle ( ) const
inherited

Returns the value of the stereo angle.

◆ stripCenter()

CheckVector2D MuonGMR4::StripDesign::stripCenter ( int  stripNum) const
protectedinherited

Returns the geometrical center of a given strip.

◆ stripDir()

const Amg::Vector2D& MuonGMR4::StripDesign::stripDir ( ) const
inherited

Vector pointing along the strip.

◆ stripLength()

virtual double MuonGMR4::StripDesign::stripLength ( int  stripNumb) const
virtualinherited

Returns length of the strip.

Reimplemented in MuonGMR4::RadialStripDesign.

◆ stripNormal()

const Amg::Vector2D& MuonGMR4::StripDesign::stripNormal ( ) const
inherited

Vector pointing to the next strip.

◆ stripNumber()

virtual int MuonGMR4::StripDesign::stripNumber ( const Amg::Vector2D pos) const
virtualinherited

Calculates the number of the strip whose center is closest to the given point.

If the point is outside of the panel, -1 is returned

Reimplemented in MuonGMR4::WireGroupDesign, and MuonGMR4::RadialStripDesign.

◆ stripPitch()

double MuonGMR4::StripDesign::stripPitch ( ) const
inherited

Distance between two adjacent strips.

◆ stripPosition()

Amg::Vector2D MuonGMR4::PadDesign::stripPosition ( int  stripNum) const
finaloverridevirtual

Override from stripDesign. This function will give the center of the pad by taking the sequential channel number as input.

Reimplemented from MuonGMR4::StripDesign.

◆ stripWidth()

double MuonGMR4::StripDesign::stripWidth ( ) const
inherited

Width of a strip.

◆ yCutout()

double MuonGMR4::StripDesign::yCutout ( ) const
inherited

Returns the cutout of the diamond.

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_anglePadPhi

double MuonGMR4::PadDesign::m_anglePadPhi {0.}
private

Angular pitch of the pads in the phi direction.

Definition at line 98 of file PadDesign.h.

◆ m_bottomLeft

Amg::Vector2D MuonGMR4::StripDesign::m_bottomLeft {Amg::Vector2D::Zero()}
privateinherited

Bottom left point of the trapezoid.

Definition at line 179 of file StripDesign.h.

◆ m_bottomRight

Amg::Vector2D MuonGMR4::StripDesign::m_bottomRight {Amg::Vector2D::Zero()}
privateinherited

Bottom right point of the trapezoid.

Definition at line 185 of file StripDesign.h.

◆ m_channelShift

int MuonGMR4::StripDesign::m_channelShift {1}
privateinherited

Shift between the 0-th readout channel and the first strip described by the panel.

Definition at line 152 of file StripDesign.h.

◆ m_cutLongEdge

double MuonGMR4::StripDesign::m_cutLongEdge {0.}
privateinherited

Lenght of the line segment that's cut from the long edge to make the trapezoid diamond shaped.

Definition at line 206 of file StripDesign.h.

◆ m_dirBotEdge

CxxUtils::CachedUniquePtr<Amg::Vector2D> MuonGMR4::StripDesign::m_dirBotEdge {}
privateinherited

Vector describing the bottom edge of the trapezoid (bottom left -> bottom right)

Definition at line 190 of file StripDesign.h.

◆ m_dirLeftEdge

CxxUtils::CachedUniquePtr<Amg::Vector2D> MuonGMR4::StripDesign::m_dirLeftEdge {}
privateinherited

Vector describing the left adge of the trapezoid (bottom left -> top left)

Definition at line 192 of file StripDesign.h.

◆ m_dirRightEdge

CxxUtils::CachedUniquePtr<Amg::Vector2D> MuonGMR4::StripDesign::m_dirRightEdge {}
privateinherited

Vector describing the right edge of the trapezoid (bottom right -> top right)

Definition at line 194 of file StripDesign.h.

◆ m_dirTopEdge

CxxUtils::CachedUniquePtr<Amg::Vector2D> MuonGMR4::StripDesign::m_dirTopEdge {}
privateinherited

Vector describing the top edge of the trapzoid (top left -> top right)

Definition at line 188 of file StripDesign.h.

◆ m_firstPadHeight

double MuonGMR4::PadDesign::m_firstPadHeight {0.}
private

Height of the pads that are adjacent to the bottom edge of the trapezoid active area.

Definition at line 102 of file PadDesign.h.

◆ m_firstPadPhiDiv

double MuonGMR4::PadDesign::m_firstPadPhiDiv {0.}
private

Angle of the first pad outer edge w.r.t. the gasGap center from the beamline.

Definition at line 94 of file PadDesign.h.

◆ m_firstStripPos

Amg::Vector2D MuonGMR4::StripDesign::m_firstStripPos {Amg::Vector2D::Zero()}
privateinherited

First strip position.

Definition at line 160 of file StripDesign.h.

◆ m_halfX

double MuonGMR4::StripDesign::m_halfX {0.}
privateinherited

Definition at line 200 of file StripDesign.h.

◆ m_hasStereo

bool MuonGMR4::StripDesign::m_hasStereo {false}
privateinherited

Flag telling whether the strip design has a stereo angle or not.

Definition at line 170 of file StripDesign.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_isFlipped

bool MuonGMR4::StripDesign::m_isFlipped {false}
privateinherited

Flag telling whether the trapezoid has been flipped.

Definition at line 168 of file StripDesign.h.

◆ m_largeSectorAngle

constexpr double MuonGMR4::PadDesign::m_largeSectorAngle {28.}
staticconstexprprivate

Large sector opening angle.

Definition at line 112 of file PadDesign.h.

◆ m_lenSlopEdge

double MuonGMR4::StripDesign::m_lenSlopEdge {0.}
privateinherited

Length of the edge connecting the short with the long egde.

Definition at line 196 of file StripDesign.h.

◆ m_longHalfY

double MuonGMR4::StripDesign::m_longHalfY {0.}
privateinherited

Definition at line 199 of file StripDesign.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_maxPadEta

int MuonGMR4::PadDesign::m_maxPadEta {18}
private

The maximum number of pads that can be contained in a column of a pad. Used to match the pad numbering scheme.

Definition at line 108 of file PadDesign.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_numPadEta

int MuonGMR4::PadDesign::m_numPadEta {0}
private

Number of pads in the eta direction in the given layer.

Definition at line 104 of file PadDesign.h.

◆ m_numPadPhi

int MuonGMR4::PadDesign::m_numPadPhi {0}
private

Number of pads in the Phi direction in the given gasGap layer.

Definition at line 96 of file PadDesign.h.

◆ m_numStrips

int MuonGMR4::StripDesign::m_numStrips {0}
privateinherited

Number of all strips.

Definition at line 154 of file StripDesign.h.

◆ m_padHeight

double MuonGMR4::PadDesign::m_padHeight {0.}
private

Height of all the pads that are not adjacent to the bottom edge of the trapezoid active area.

Definition at line 106 of file PadDesign.h.

◆ m_padPhiShift

double MuonGMR4::PadDesign::m_padPhiShift {0.}
private

The staggering shift of inner pad edges in the phi direction.

Definition at line 100 of file PadDesign.h.

◆ m_radius

double MuonGMR4::PadDesign::m_radius {0.}
private

Stores the beamline radius extracted from the local to global transformation.

Definition at line 110 of file PadDesign.h.

◆ m_shortHalfY

double MuonGMR4::StripDesign::m_shortHalfY {0.}
privateinherited

Trapezoid dimensions.

Definition at line 198 of file StripDesign.h.

◆ m_smallSectorAngle

constexpr double MuonGMR4::PadDesign::m_smallSectorAngle {17.}
staticconstexprprivate

Small sector opening angle.

Definition at line 114 of file PadDesign.h.

◆ m_stereoAngle

double MuonGMR4::StripDesign::m_stereoAngle {0.}
privateinherited

Stereo angle of the strip design.

Definition at line 172 of file StripDesign.h.

◆ m_stripDir

Amg::Vector2D MuonGMR4::StripDesign::m_stripDir {Amg::Vector2D::UnitY()}
privateinherited

Orientiation of the strips along the panel.

Definition at line 163 of file StripDesign.h.

◆ m_stripNormal

Amg::Vector2D MuonGMR4::StripDesign::m_stripNormal {Amg::Vector2D::UnitX()}
privateinherited

Vector pointing from strip N to the next strip.

Definition at line 165 of file StripDesign.h.

◆ m_stripPitch

double MuonGMR4::StripDesign::m_stripPitch {0.}
privateinherited

Distance between 2 adjacent strip centers.

Definition at line 156 of file StripDesign.h.

◆ m_stripWidth

double MuonGMR4::StripDesign::m_stripWidth {0.}
privateinherited

Width of each strip line.

Definition at line 158 of file StripDesign.h.

◆ m_topLeft

Amg::Vector2D MuonGMR4::StripDesign::m_topLeft {Amg::Vector2D::Zero()}
privateinherited

Top right point of the trapezoid.

Definition at line 181 of file StripDesign.h.

◆ m_topRight

Amg::Vector2D MuonGMR4::StripDesign::m_topRight {Amg::Vector2D::Zero()}
privateinherited

Bottom right point of the trapezoid.

Definition at line 183 of file StripDesign.h.

◆ m_yCutout

double MuonGMR4::StripDesign::m_yCutout {0.}
privateinherited

Stores the diamond cutout length from the SQLite DB file.

Definition at line 203 of file StripDesign.h.


The documentation for this class was generated from the following files:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
MuonGMR4::StripDesign::cornerTopLeft
const Amg::Vector2D & cornerTopLeft() const
Returns the top left corner of the trapezoid.
MuonGMR4::PadDesign::padHeight
double padHeight() const
Returns the height of all the pads that are not adjacent to the bottom edge of the trapezoid active a...
MuonGMR4::StripDesign::m_cutLongEdge
double m_cutLongEdge
Lenght of the line segment that's cut from the long edge to make the trapezoid diamond shaped.
Definition: StripDesign.h:206
MuonGMR4::PadDesign::maxPadEta
int maxPadEta() const
Returns the maximum number of pads that can be contained in a column of a pad. Used to match the pad ...
MuonGMR4::PadDesign::beamlineRadius
double beamlineRadius() const
Returns the distance between the gasGap center and the beamline.
MuonGMR4::StripDesign::stereoAngle
double stereoAngle() const
Returns the value of the stereo angle.
MuonGMR4::StripDesign::m_lenSlopEdge
double m_lenSlopEdge
Length of the edge connecting the short with the long egde.
Definition: StripDesign.h:196
MuonGMR4::StripDesign::m_channelShift
int m_channelShift
Shift between the 0-th readout channel and the first strip described by the panel.
Definition: StripDesign.h:152
MuonGMR4::StripDesign::isFlipped
bool isFlipped() const
Returns whether the trapezoid is flipped.
MuonGMR4::PadDesign::m_maxPadEta
int m_maxPadEta
The maximum number of pads that can be contained in a column of a pad. Used to match the pad numberin...
Definition: PadDesign.h:108
MuonGMR4::StripDesign::m_shortHalfY
double m_shortHalfY
Trapezoid dimensions.
Definition: StripDesign.h:198
MuonGMR4::StripDesign::cornerBotLeft
const Amg::Vector2D & cornerBotLeft() const
Returns the bottom left corner of the trapezoid.
MuonGMR4::StripDesign::setStereoAngle
void setStereoAngle(double stereo)
Definition: StripDesign.cxx:59
MuonGMR4::StripDesign::m_stereoAngle
double m_stereoAngle
Stereo angle of the strip design.
Definition: StripDesign.h:172
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGMR4::PadDesign::m_padHeight
double m_padHeight
Height of all the pads that are not adjacent to the bottom edge of the trapezoid active area.
Definition: PadDesign.h:106
MuonGMR4::PadDesign::padEta
int padEta(const int channel) const
Returns the Eta index of the pad for the given sequential channel number.
MuonGMR4::StripDesign::numStrips
virtual int numStrips() const
Number of strips on the panel.
MuonGMR4::StripDesign::m_dirRightEdge
CxxUtils::CachedUniquePtr< Amg::Vector2D > m_dirRightEdge
Vector describing the right edge of the trapezoid (bottom right -> top right)
Definition: StripDesign.h:194
MuonGMR4::PadDesign::m_numPadPhi
int m_numPadPhi
Number of pads in the Phi direction in the given gasGap layer.
Definition: PadDesign.h:96
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGMR4::StripDesign::m_stripNormal
Amg::Vector2D m_stripNormal
Vector pointing from strip N to the next strip.
Definition: StripDesign.h:165
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonGMR4::StripDesign::m_topLeft
Amg::Vector2D m_topLeft
Top right point of the trapezoid.
Definition: StripDesign.h:181
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
MuonGMR4::StripDesign::m_stripPitch
double m_stripPitch
Distance between 2 adjacent strip centers.
Definition: StripDesign.h:156
MuonGMR4::StripDesign::longHalfHeight
double longHalfHeight() const
Returns the longer half height of the panel.
MuonGMR4::StripDesign::StripDesign
StripDesign()
Definition: StripDesign.cxx:21
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
MuonGMR4::PadDesign::firstPadHeight
double firstPadHeight() const
Returns the height of the pads that are adjacent to the bottom edge of the trapezoid active area.
MuonGMR4::StripDesign::m_bottomRight
Amg::Vector2D m_bottomRight
Bottom right point of the trapezoid.
Definition: StripDesign.h:185
MuonGMR4::StripDesign::shortHalfHeight
double shortHalfHeight() const
Returns the shorter half height of the panel.
ORDER_PROP
#define ORDER_PROP(PROP)
Helper macro to facilliate the ordering.
Definition: PadDesign.cxx:10
MuonGMR4::StripDesign::m_firstStripPos
Amg::Vector2D m_firstStripPos
First strip position.
Definition: StripDesign.h:160
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
MuonGMR4::StripDesign::m_dirLeftEdge
CxxUtils::CachedUniquePtr< Amg::Vector2D > m_dirLeftEdge
Vector describing the left adge of the trapezoid (bottom left -> top left)
Definition: StripDesign.h:192
MuonGMR4::PadDesign::padEtaPhi
std::pair< int, int > padEtaPhi(const int channel) const
Returns a pair of Eta and Phi index for the given sequential channel number.
MuonGMR4::PadDesign::numPadPhi
int numPadPhi() const
Returns the number of pads in the Phi direction in the given gasGap layer.
MuonGMR4::StripDesign::yCutout
double yCutout() const
Returns the cutout of the diamond.
MuonGMR4::PadDesign::anglePadPhi
double anglePadPhi() const
Returns the angular pitch of the pads in the phi direction.
MuonGMR4::PadDesign::m_padPhiShift
double m_padPhiShift
The staggering shift of inner pad edges in the phi direction.
Definition: PadDesign.h:100
MuonGMR4::PadDesign::botRight
@ botRight
Definition: PadDesign.h:78
MuonGMR4::StripDesign::m_yCutout
double m_yCutout
Stores the diamond cutout length from the SQLite DB file.
Definition: StripDesign.h:203
MuonGMR4::StripDesign::stripWidth
double stripWidth() const
Width of a strip.
MuonGMR4::StripDesign::defineTrapezoid
void defineTrapezoid(double HalfShortY, double HalfLongY, double HalfHeight)
Defines the edges of the trapezoid.
Definition: StripDesign.cxx:69
MuonGMR4::PadDesign::padPhiShift
double padPhiShift() const
Returns the staggering shift of inner pad edges in the phi direction.
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
MuonGMR4::StripDesign::firstStripNumber
int firstStripNumber() const
Returns the number of the first strip.
WriteCalibToCool.swap
swap
Definition: WriteCalibToCool.py:94
MuonGMR4::PadDesign::botLeft
@ botLeft
Definition: PadDesign.h:78
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
MuonGMR4::StripDesign::cornerTopRight
const Amg::Vector2D & cornerTopRight() const
Returns the top right corner of the trapezoid.
MuonGMR4::PadDesign::padCorners
padCorners
Definition: PadDesign.h:78
MuonGMR4::PadDesign::numPadEta
int numPadEta() const
Returns the number of pads in the eta direction in the given layer.
MuonGMR4::PadDesign::localCornerArray
std::array< Amg::Vector2D, 4 > localCornerArray
Defining an array of four vectors to store the pad corner position in the order of the enum defined b...
Definition: PadDesign.h:77
MuonGMR4::StripDesign::m_dirBotEdge
CxxUtils::CachedUniquePtr< Amg::Vector2D > m_dirBotEdge
Vector describing the bottom edge of the trapezoid (bottom left -> bottom right)
Definition: StripDesign.h:190
MuonGMR4::StripDesign::m_hasStereo
bool m_hasStereo
Flag telling whether the strip design has a stereo angle or not.
Definition: StripDesign.h:170
MuonGM::MuonPadDesign::padCorners
padCorners
Definition: MuonPadDesign.h:105
MuonGMR4::StripDesign::m_stripWidth
double m_stripWidth
Width of each strip line.
Definition: StripDesign.h:158
MuonGMR4::StripDesign::m_longHalfY
double m_longHalfY
Definition: StripDesign.h:199
MuonGMR4::PadDesign::m_anglePadPhi
double m_anglePadPhi
Angular pitch of the pads in the phi direction.
Definition: PadDesign.h:98
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
MuonGMR4::PadDesign::topLeft
@ topLeft
Definition: PadDesign.h:78
MuonGMR4::StripDesign::AmgSymMatrix
AmgSymMatrix(2) m_etaToStereo
Matrix to translate from nominal -> stereo frame.
Definition: StripDesign.h:175
MuonGMR4::StripDesign::halfWidth
double halfWidth() const
Returns the half height of the strip panel.
MuonGMR4::StripDesign::m_isFlipped
bool m_isFlipped
Flag telling whether the trapezoid has been flipped.
Definition: StripDesign.h:168
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
MuonGMR4::StripDesign::m_dirTopEdge
CxxUtils::CachedUniquePtr< Amg::Vector2D > m_dirTopEdge
Vector describing the top edge of the trapzoid (top left -> top right)
Definition: StripDesign.h:188
MuonGMR4::StripDesign::cornerBotRight
const Amg::Vector2D & cornerBotRight() const
Returns the bottom right corner of the trapezoid.
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
MuonGMR4::StripDesign::resetDirCache
void resetDirCache()
Resets the cache of the directions.
Definition: StripDesign.cxx:118
MuonGMR4::StripDesign::m_bottomLeft
Amg::Vector2D m_bottomLeft
Bottom left point of the trapezoid.
Definition: StripDesign.h:179
MuonGMR4::PadDesign::topRight
@ topRight
Definition: PadDesign.h:78
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGMR4::StripDesign::m_stripDir
Amg::Vector2D m_stripDir
Orientiation of the strips along the panel.
Definition: StripDesign.h:163
MuonGMR4::PadDesign::m_radius
double m_radius
Stores the beamline radius extracted from the local to global transformation.
Definition: PadDesign.h:110
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
MuonGMR4::StripDesign::hasStereoAngle
bool hasStereoAngle() const
Returns whether a stereo angle is defined.
ORDER_PROP
#define ORDER_PROP(PROP)
Helper macro to facilliate the ordering.
Definition: StripDesign.cxx:13
MuonGMR4::StripDesign::stripPitch
double stripPitch() const
Distance between two adjacent strips.
MuonGMR4::PadDesign::stripPosition
Amg::Vector2D stripPosition(int stripNum) const override final
Override from stripDesign. This function will give the center of the pad by taking the sequential cha...
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
MuonGMR4::StripDesign::m_halfX
double m_halfX
Definition: StripDesign.h:200
MuonGMR4::PadDesign::m_firstPadHeight
double m_firstPadHeight
Height of the pads that are adjacent to the bottom edge of the trapezoid active area.
Definition: PadDesign.h:102
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
MuonGMR4::PadDesign::firstPadPhiDiv
double firstPadPhiDiv() const
Returns the angle of the first pad outer edge w.r.t. the gasGap center from the beamline.
MuonGMR4::PadDesign::m_firstPadPhiDiv
double m_firstPadPhiDiv
Angle of the first pad outer edge w.r.t. the gasGap center from the beamline.
Definition: PadDesign.h:94
MuonGMR4::PadDesign::padPhi
int padPhi(const int channel) const
Returns the Phi index of the pad for the given sequential channel number.
MuonGMR4::StripDesign::m_topRight
Amg::Vector2D m_topRight
Bottom right point of the trapezoid.
Definition: StripDesign.h:183
MuonGMR4::PadDesign::m_numPadEta
int m_numPadEta
Number of pads in the eta direction in the given layer.
Definition: PadDesign.h:104
MuonGMR4::StripDesign::m_numStrips
int m_numStrips
Number of all strips.
Definition: StripDesign.h:154
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32