ATLAS Offline Software
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
MuonGM::MuonPadDesign Struct Reference

Parameters defining the design of the readout sTGC pads. More...

#include <MuonPadDesign.h>

Inheritance diagram for MuonGM::MuonPadDesign:
Collaboration diagram for MuonGM::MuonPadDesign:

Public Types

enum  padCorners { botLeft =0, botRight, topLeft, topRight }
 
using CornerArray = std::array< Amg::Vector2D, 4 >
 calculate local channel corners for a given channel number More...
 

Public Member Functions

 MuonPadDesign ()
 
std::pair< int, int > etaPhiId (const int channel) const
 
int channelId (const std::pair< int, int > &padId) const
 
double distanceToChannel (const Amg::Vector2D &pos, bool measPhi, int channel=0) const
 distance to channel - residual More...
 
Amg::Vector2D distanceToPad (const Amg::Vector2D &pos, int channel) const
 
bool withinSensitiveArea (const Amg::Vector2D &pos) const
 whether pos is within the sensitive area of the module More...
 
double minSensitiveY () const
 lowest y (local) of the sensitive volume More...
 
double maxSensitiveY () const
 highest y (local) of the sensitive volume More...
 
double maxAbsSensitiveX (const double &y) const
 largest (abs, local) x of the sensitive volume More...
 
std::pair< int, int > channelNumber (const Amg::Vector2D &pos) const
 calculate local channel number, range 1=nstrips like identifiers. More...
 
bool channelPosition (const std::pair< int, int > &pad, Amg::Vector2D &pos) const
 calculate local channel position for a given channel number More...
 
bool channelPosition (const int channel, Amg::Vector2D &pos) const
 
bool channelCorners (const std::pair< int, int > &pad, CornerArray &corners) const
 
bool channelCorners (const int channel, CornerArray &corners) const
 
double channelWidth (const Amg::Vector2D &pos, bool measPhi, bool preciseMeas=false) const
 calculate local channel width More...
 
double gasGapThickness () const
 thickness of gas gap More...
 
void setR (double R)
 access to cache 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...
 

Public Attributes

int padEtaMin {0}
 
int padEtaMax {0}
 
double inputRowPitch {0.}
 
double inputPhiPitch {0.}
 
double signY {0.}
 
double firstRowPos {0.}
 
double firstPhiPos {0.}
 
double Length {0.}
 
double sWidth {0.}
 
double lWidth {0.}
 
double Size {0.}
 
double thickness {0.}
 
double radialDistance {0.}
 DT-2015-11-29 distance from the beamline to the center of the module. More...
 
double sPadWidth {0.}
 
double lPadWidth {0.}
 
double xFrame {0.}
 
double ysFrame {0.}
 
double ylFrame {0.}
 
double yCutout {0.}
 
int nPadH {0}
 
int nPadColumns {0}
 
double PadPhiShift {0.}
 
int etasign {0}
 
int isLargeSector {0}
 
double sectorOpeningAngle {0.}
 

Static Public Attributes

static constexpr double largeSectorOpeningAngle {28.0}
 
static constexpr double smallSectorOpeningAngle {17.0}
 

Private Member Functions

void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

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...
 

Detailed Description

Parameters defining the design of the readout sTGC pads.

The parameters below are the ones from the parameter book. The naming convention used here refers to the one explained on p.90 ("naming of .xml tags and .h variables") of https://twiki.cern.ch/twiki/bin/view/Atlas/NSWParameterBook#Parameter_book

Note that the pads do not exist as objects in memory. Instead, a MuonPadDesign is defined for each layer in a module. From the readout parameters one can map position <-> channel:

Definition at line 40 of file MuonPadDesign.h.

Member Typedef Documentation

◆ CornerArray

calculate local channel corners for a given channel number

Definition at line 104 of file MuonPadDesign.h.

Member Enumeration Documentation

◆ padCorners

Enumerator
botLeft 
botRight 
topLeft 
topRight 

Definition at line 105 of file MuonPadDesign.h.

109 { this->radialDistance = R; }

Constructor & Destructor Documentation

◆ MuonPadDesign()

MuonPadDesign::MuonPadDesign ( )

Definition at line 12 of file MuonPadDesign.cxx.

12 : AthMessaging{"MuonPadDesign"}{}

Member Function Documentation

◆ channelCorners() [1/2]

bool MuonPadDesign::channelCorners ( const int  channel,
CornerArray corners 
) const

Definition at line 154 of file MuonPadDesign.cxx.

154  {
155  return channelCorners(etaPhiId(channel), corners);
156 }

◆ channelCorners() [2/2]

bool MuonPadDesign::channelCorners ( const std::pair< int, int > &  pad,
CornerArray corners 
) const

Definition at line 157 of file MuonPadDesign.cxx.

157  {
158  // DG-2015-11-30: todo check whether the offset subtraction is still needed
159  int iEta = pad.first; // -1 + padEtaMin;
160  int iPhi = pad.second; // -1 + padPhiMin;
161  // bool invalid_indices = iEta<1 || iPhi<1; // DG-2015-11-30 do we still need to check this?
162  // if(invalid_indices) return false;
163  // double yBot = -0.5*Length + firstRowPos + ysFrame + iEta*inputRowPitch;
164  // double yTop = -0.5*Length + firstRowPos + ysFrame + (iEta+1)*inputRowPitch;
165 
167  double yBot = 0., yTop = 0.;
168  if (iEta == 1) {
169  yBot = yCutout ? -(Size - yCutout) : -0.5 * Size;
170  yTop = yBot + firstRowPos;
171  } else if (iEta > 1) {
172  yBot = yCutout ? -(Size - yCutout) + firstRowPos + (iEta - 2) * inputRowPitch
173  : -0.5 * Size + firstRowPos + (iEta - 2) * inputRowPitch;
174  yTop = yBot + inputRowPitch;
175  if (iEta == nPadH) yTop = maxSensitiveY();
176  } else { // Unkwown ieta
177  return false;
178  }
180 
181  // restrict y to the module sensitive area
182  double minY = minSensitiveY();
183  double maxY = maxSensitiveY();
184  if (yBot < minY) yBot = minY;
185  if (yTop > maxY) yTop = maxY;
186 
187  // here L/R are defined as if you were looking from the IP to the
188  // detector (same a clockwise/counterclockwise phi but shorter)
189  double phiRight = firstPhiPos + (iPhi - 2) * inputPhiPitch;
190  double phiLeft = firstPhiPos + (iPhi - 1) * inputPhiPitch;
191 
192  const double tanRight = std::tan(phiRight *CLHEP::degree);
193  const double tanLeft = std::tan(phiLeft *CLHEP::degree);
194  double xBotRight = -(yBot + radialDistance) * tanRight;
195  double xBotLeft = -(yBot + radialDistance) * tanLeft;
196  double xTopRight = -(yTop + radialDistance) * tanRight;
197  double xTopLeft = -(yTop + radialDistance) * tanLeft;
198 
199  const double cosRight = (radialDistance + yBot) / std::hypot(xBotRight, (radialDistance + yBot));
200  const double cosLeft = (radialDistance + yBot) / std::hypot(xBotLeft, (radialDistance + yBot));
201 
202  xBotRight += 1.*PadPhiShift*cosRight;
203  xBotLeft += 1.*PadPhiShift*cosLeft;
204  xTopRight += 1.*PadPhiShift*cosRight;
205  xTopLeft += 1.*PadPhiShift*cosLeft;
206 
207  // Adjust outer columns
208  // No staggering from fuziness in the outer edges
209  if (iPhi == 1) {
210  double yLength = yCutout ? Size - yCutout : Size;
211  xBotRight = 0.5 * (sPadWidth + (lPadWidth - sPadWidth) * (yBot - minY) / yLength);
212  xTopRight = 0.5 * (sPadWidth + (lPadWidth - sPadWidth) * (yTop - minY) / yLength);
213  }
214  if (iPhi == nPadColumns) {
215  double yLength = yCutout ? Size - yCutout : Size;
216  xBotLeft = -0.5 * (sPadWidth + (lPadWidth - sPadWidth) * (yBot - minY) / yLength);
217  xTopLeft = -0.5 * (sPadWidth + (lPadWidth - sPadWidth) * (yTop - minY) / yLength);
218  }
219 
220  // Adjust for cutout region
221  if (yCutout && yTop > 0) {
222  float cutoutXpos = 0.5 * lPadWidth;
223  if (iPhi == 1) {
224  xTopRight = cutoutXpos;
225  if (yBot > 0) xBotRight = cutoutXpos;
226  } else if (iPhi == nPadColumns) {
227  xTopLeft = -1.0 * cutoutXpos;
228  if (yBot > 0) xBotLeft = -1.0 * cutoutXpos;
229  }
230  }
231  if (yBot > yTop) {
232  ATH_MSG_VERBOSE("Swap top and bottom side "<<pad.first<<"/"<<pad.second);
233  std::swap(yBot, yTop);
234  }
235  if (xBotLeft > xBotRight) {
236  ATH_MSG_VERBOSE("Swap bottom left and right points "<<pad.first<<"/"<<pad.second);
237  std::swap(xBotLeft, xBotRight);
238  }
239  if (xTopLeft > xTopRight) {
240  ATH_MSG_VERBOSE("Swap top left and right points "<<pad.first<<"/"<<pad.second);
241  std::swap(xTopLeft, xTopRight);
242  }
243  corners[botLeft] = Amg::Vector2D(xBotLeft, yBot);
244  corners[botRight] = Amg::Vector2D(xBotRight, yBot);
245  corners[topLeft] = Amg::Vector2D(xTopLeft, yTop);
246  corners[topRight] = Amg::Vector2D(xTopRight, yTop);
247  return true;
248 }

◆ channelId()

int MuonGM::MuonPadDesign::channelId ( const std::pair< int, int > &  padId) const
inline

Definition at line 118 of file MuonPadDesign.h.

119  {
120  // if channel number not provided, get the nearest channel ( mostly for validation purposes )

◆ channelNumber()

std::pair< int, int > MuonPadDesign::channelNumber ( const Amg::Vector2D pos) const

calculate local channel number, range 1=nstrips like identifiers.

Returns -1 if out of range

Definition at line 39 of file MuonPadDesign.cxx.

39  {
40  /* Changes in this package are due to new geometry implementations
41  * Correct active area position and inclusion of proper QL3 shape.
42  * coordinates (0,0) now point to the center of the active region, not gas volume
43  * for QL3, where ycutout !=0, (0,0) is at start of ycutout */
44 
45  // perform check of the sensitive area
46  std::pair<int, int> result(-1, -1);
47 
48  // padEta
49  double y1 = yCutout ? Size - yCutout + pos.y() : 0.5 * Size + pos.y(); // distance from small edge to hit
50  double padEtadouble;
51  int padEta = 0;
52  // padPhi
53  // To obtain the pad number of a given position, its easier to apply the
54  // pad staggering to the position instead of the pad: apply -PadPhiShift.
55  // Pad corners and positions however fully account for their staggering
56  double locPhi = std::atan(-1.0 * pos.x() / (radialDistance + pos.y())) / CLHEP::degree;
57  double maxlocPhi = std::atan(maxAbsSensitiveX(pos.y()) / (radialDistance + pos.y())) / CLHEP::degree;
58  double fuzziedX = pos.x() - 1. * PadPhiShift * std::cos(locPhi * CLHEP::degree);
59  double fuzziedlocPhi = std::atan(-1.0 * fuzziedX / (radialDistance + pos.y())) / CLHEP::degree;
60 
61  bool below_half_length = (y1 < 0);
62  bool outside_phi_range = (std::abs(locPhi) > maxlocPhi) || (std::abs(fuzziedlocPhi) > maxlocPhi);
63 
64  if (withinSensitiveArea(pos) && !below_half_length) {
65  if (y1 > firstRowPos) {
66  //+1 for firstRow, +1 because a remainder means another row (3.1=4)
67  padEtadouble = ((y1 - firstRowPos) / inputRowPitch) + 1 + 1;
68  padEta = padEtadouble;
69  } else if (y1 >= 0) {
70  padEta = 1;
71  }
72  double padPhidouble;
73  // These are separated as the hits on the pads closest to the side edges are not fuzzied
74  // We must do a correction in order to stay consistent with indexing
75  if (outside_phi_range)
76  padPhidouble = (locPhi - firstPhiPos) / inputPhiPitch;
77  else // Look for the index of the fuzzied hit
78  padPhidouble = (fuzziedlocPhi - firstPhiPos) / inputPhiPitch;
79  int padPhi = padPhidouble + 2; //(+1 because remainder means next column e.g. 1.1=2, +1 so rightmostcolumn=1)
80 
81  // adjust indices if necessary
82  if (padEta == nPadH + 1) { padEta -= 1; } // the top row can be bigger, therefore it is really in the nPadH row.
83  if (padPhi == 0) { padPhi = 1; } // adjust rightmost
84  if (padPhi == nPadColumns + 1) { padPhi = nPadColumns; } // adjust lefmost
85 
86  // final check on range
87  bool ieta_out_of_range = (padEta > nPadH + 1);
88  bool iphi_out_of_range = (padPhi < 0 || padPhi > nPadColumns + 1);
89  bool index_out_of_range = ieta_out_of_range or iphi_out_of_range;
90  if (index_out_of_range) {
91  std::stringstream sstr{};
92  if (ieta_out_of_range){
93  sstr<<__FILE__<<":"<<__LINE__<<" "<<__func__<<"() eta out of range "
94  <<Amg::toString(pos, 2)<<" (ieta, iphi) = ("<<padEta<<","<<padPhi<<").";
95  } else {
96  sstr<<__FILE__<<":"<<__LINE__<<" "<<__func__<<"() phi out of range "
97  <<Amg::toString(pos, 2)<<" (ieta, iphi) = ("<<padEta<<","<<padPhi<<").";
98  }
99  throw std::runtime_error(sstr.str());
100 
101  } else {
102  result = std::make_pair(padEta, padPhi);
103  }
104  }
105  return result;
106 }

◆ channelPosition() [1/2]

bool MuonPadDesign::channelPosition ( const int  channel,
Amg::Vector2D pos 
) const

Definition at line 109 of file MuonPadDesign.cxx.

109  {
111 }

◆ channelPosition() [2/2]

bool MuonPadDesign::channelPosition ( const std::pair< int, int > &  pad,
Amg::Vector2D pos 
) const

calculate local channel position for a given channel number

Definition at line 112 of file MuonPadDesign.cxx.

112  {
113  CornerArray corners{make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
114  channelCorners(pad, corners);
115  pos = 0.25 * (corners[botLeft] + corners[botRight] + corners[topLeft] + corners[topRight]);
116  return true;
117 }

◆ channelWidth()

double MuonGM::MuonPadDesign::channelWidth ( const Amg::Vector2D pos,
bool  measPhi,
bool  preciseMeas = false 
) const
inline

calculate local channel width

Definition at line 142 of file MuonPadDesign.h.

142  {make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
143  channelCorners(pad, corners);
144 
145  // For eta pad measurement, return height of given pad
146  if (!measPhi) return corners.at(2)[1] - corners.at(0)[1];
147 
148  // Return the width at the top of the pads
149  /* This is used by default and allows for track/segment association to pads to work correctly
150  In these cases, the given position of the pad is always its centre so we can not know the
151  precise position where we want to compute the width so its best to give a larger value
152  */
153  if (!preciseMeas) return corners.at(3)[0] - corners.at(2)[0];
154 
155  // Return precise Phi width for a given precise position on the pad
156  /* This is only used when the precise position of a hit, track or segment is known on the pad
157  Only to be used in specific cases, like in the digitization when we need to know the exact
158  width along a certain point in the pad, e.g. for charge sharing.
159  */
160 
161  double WidthTop = corners.at(3)[0] - corners.at(2)[0];
162  double WidthBot = corners.at(1)[0] - corners.at(0)[0];
163  return WidthBot + (WidthTop - WidthBot) * (pos.y() - corners.at(0)[1]) / (corners.at(2)[1]-corners.at(0)[1]);
164  }
165 
166  inline double MuonPadDesign::gasGapThickness() const { return thickness; }
167 

◆ distanceToChannel()

double MuonGM::MuonPadDesign::distanceToChannel ( const Amg::Vector2D pos,
bool  measPhi,
int  channel = 0 
) const
inline

distance to channel - residual

Definition at line 122 of file MuonPadDesign.h.

122  {};
123  if (channel < 1) { // retrieve nearest pad indices
124  pad = channelNumber(pos);
125  } else { // hardcode - or add a member saving idHelper max
126  pad = etaPhiId(channel);
127  }
128 
130  if (!channelPosition(pad, chPos)) return -10000.;
131 
132  if (!measPhi) return (pos.y() - chPos.y());
133 
134  // the "phi" distance to be compared with channel width (taking into account the stereo angle)
135 
136  return (pos.x() - chPos.x());
137  }
138 
139  inline double MuonPadDesign::channelWidth(const Amg::Vector2D& pos, bool measPhi, bool preciseMeas) const {
140  // get Eta and Phi indices, and corner positions of given pad

◆ distanceToPad()

Amg::Vector2D MuonPadDesign::distanceToPad ( const Amg::Vector2D pos,
int  channel 
) const

In terms of y the hit could be in the pad

Hit is inside the pad

Definition at line 118 of file MuonPadDesign.cxx.

118  {
119  CornerArray corners{make_array<Amg::Vector2D, 4>(Amg::Vector2D::Zero())};
120  channelCorners(channel, corners);
121 
122  Amg::Vector2D leftEdge = corners[topLeft] - corners[botLeft];
123  const double lenLeft = std::hypot(leftEdge.x(), leftEdge.y());
124  leftEdge /= lenLeft;
125  const double leftIsect = Amg::intersect<2>(pos, Amg::Vector2D::UnitX(),
126  corners[botLeft], leftEdge).value_or(1.e9);
127 
128  const Amg::Vector2D leftPad = corners[botLeft] + leftIsect * leftEdge;
129  const Amg::Vector2D rightPad = corners[botRight] + leftIsect * (corners[topRight] - corners[botRight]).unit();
130  const double deltaX = pos.x() - leftPad.x();
131  const double lenX = rightPad.x() - leftPad.x();
132 
134  if (leftIsect >= 0. && leftIsect <= lenLeft) {
136  if (deltaX >= 0. && deltaX < lenX) {
137  return Amg::Vector2D::Zero();
138  } else if (deltaX < 0.) {
139  return deltaX * Amg::Vector2D::UnitX();
140  }
141  return (deltaX - lenX) * Amg::Vector2D::UnitX();
142  }
143  if (deltaX > 0. && deltaX < lenX) {
144  return (leftIsect < 0 ? corners[botRight].y() - pos.y()
145  : pos.y() - corners[topRight].y())* Amg::Vector2D::UnitY();
146  }
147  return (leftIsect < 0 ? corners[botRight].y() - pos.y()
148  : pos.y() - corners[topRight].y())* Amg::Vector2D::UnitY() +
149  (deltaX < 0. ? deltaX : (deltaX - lenX) )* Amg::Vector2D::UnitX();
150 
151 }

◆ etaPhiId()

std::pair< int, int > MuonGM::MuonPadDesign::etaPhiId ( const int  channel) const
inline

Definition at line 115 of file MuonPadDesign.h.

115  {
116  return 1 + (padId.first - 1) + (padId.second - 1 ) * 18;
117  }

◆ gasGapThickness()

double MuonGM::MuonPadDesign::gasGapThickness ( ) const
inline

thickness of gas gap

Definition at line 169 of file MuonPadDesign.h.

◆ 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 }

◆ maxAbsSensitiveX()

double MuonPadDesign::maxAbsSensitiveX ( const double &  y) const

largest (abs, local) x of the sensitive volume

Definition at line 26 of file MuonPadDesign.cxx.

26  {
27  double half_openingAngle = sectorOpeningAngle / 2.0;
28  if (isLargeSector && yCutout) { // if QL3
29  if (y > 0) // In cutout region
30  return 0.5 * lPadWidth;
31  else
32  return y * std::tan(half_openingAngle * CLHEP::degree) + 0.5 * lPadWidth;
33  } else
34  return (y - Size * 0.5) * std::tan(half_openingAngle * CLHEP::degree) + 0.5 * lPadWidth;
35 
36  return -1;
37 }

◆ maxSensitiveY()

double MuonPadDesign::maxSensitiveY ( ) const

highest y (local) of the sensitive volume

Definition at line 24 of file MuonPadDesign.cxx.

24 { return yCutout ? yCutout : 0.5 * Size; }

◆ minSensitiveY()

double MuonPadDesign::minSensitiveY ( ) const

lowest y (local) of the sensitive volume

Definition at line 22 of file MuonPadDesign.cxx.

22 { return yCutout ? -(Size - yCutout) : -0.5 * Size; }

◆ 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 }

◆ 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 }

◆ setR()

void MuonGM::MuonPadDesign::setR ( double  R)
inline

access to cache

Definition at line 115 of file MuonPadDesign.h.

115 {

◆ withinSensitiveArea()

bool MuonPadDesign::withinSensitiveArea ( const Amg::Vector2D pos) const

whether pos is within the sensitive area of the module

Definition at line 13 of file MuonPadDesign.cxx.

13  {
14  double top_H1 = maxSensitiveY();
15  double bot_H2 = minSensitiveY();
16  double max_x = maxAbsSensitiveX(pos.y());
17  bool y_in_range = (pos.y() <= top_H1 and pos.y() >= bot_H2);
18  bool x_in_range = std::abs(pos.x()) <= max_x + 0.01;
19  return y_in_range and x_in_range;
20 }

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.

◆ etasign

int MuonGM::MuonPadDesign::etasign {0}

Definition at line 71 of file MuonPadDesign.h.

◆ firstPhiPos

double MuonGM::MuonPadDesign::firstPhiPos {0.}

Definition at line 53 of file MuonPadDesign.h.

◆ firstRowPos

double MuonGM::MuonPadDesign::firstRowPos {0.}

Definition at line 52 of file MuonPadDesign.h.

◆ inputPhiPitch

double MuonGM::MuonPadDesign::inputPhiPitch {0.}

Definition at line 50 of file MuonPadDesign.h.

◆ inputRowPitch

double MuonGM::MuonPadDesign::inputRowPitch {0.}

Definition at line 49 of file MuonPadDesign.h.

◆ isLargeSector

int MuonGM::MuonPadDesign::isLargeSector {0}

Definition at line 72 of file MuonPadDesign.h.

◆ largeSectorOpeningAngle

constexpr double MuonGM::MuonPadDesign::largeSectorOpeningAngle {28.0}
staticconstexpr

Definition at line 75 of file MuonPadDesign.h.

◆ Length

double MuonGM::MuonPadDesign::Length {0.}

Definition at line 55 of file MuonPadDesign.h.

◆ lPadWidth

double MuonGM::MuonPadDesign::lPadWidth {0.}

Definition at line 63 of file MuonPadDesign.h.

◆ lWidth

double MuonGM::MuonPadDesign::lWidth {0.}

Definition at line 57 of file MuonPadDesign.h.

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.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_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.

◆ nPadColumns

int MuonGM::MuonPadDesign::nPadColumns {0}

Definition at line 69 of file MuonPadDesign.h.

◆ nPadH

int MuonGM::MuonPadDesign::nPadH {0}

Definition at line 68 of file MuonPadDesign.h.

◆ padEtaMax

int MuonGM::MuonPadDesign::padEtaMax {0}

Definition at line 47 of file MuonPadDesign.h.

◆ padEtaMin

int MuonGM::MuonPadDesign::padEtaMin {0}

Definition at line 46 of file MuonPadDesign.h.

◆ PadPhiShift

double MuonGM::MuonPadDesign::PadPhiShift {0.}

Definition at line 70 of file MuonPadDesign.h.

◆ radialDistance

double MuonGM::MuonPadDesign::radialDistance {0.}

DT-2015-11-29 distance from the beamline to the center of the module.

Definition at line 60 of file MuonPadDesign.h.

◆ sectorOpeningAngle

double MuonGM::MuonPadDesign::sectorOpeningAngle {0.}

Definition at line 73 of file MuonPadDesign.h.

◆ signY

double MuonGM::MuonPadDesign::signY {0.}

Definition at line 51 of file MuonPadDesign.h.

◆ Size

double MuonGM::MuonPadDesign::Size {0.}

Definition at line 58 of file MuonPadDesign.h.

◆ smallSectorOpeningAngle

constexpr double MuonGM::MuonPadDesign::smallSectorOpeningAngle {17.0}
staticconstexpr

Definition at line 76 of file MuonPadDesign.h.

◆ sPadWidth

double MuonGM::MuonPadDesign::sPadWidth {0.}

Definition at line 62 of file MuonPadDesign.h.

◆ sWidth

double MuonGM::MuonPadDesign::sWidth {0.}

Definition at line 56 of file MuonPadDesign.h.

◆ thickness

double MuonGM::MuonPadDesign::thickness {0.}

Definition at line 59 of file MuonPadDesign.h.

◆ xFrame

double MuonGM::MuonPadDesign::xFrame {0.}

Definition at line 64 of file MuonPadDesign.h.

◆ yCutout

double MuonGM::MuonPadDesign::yCutout {0.}

Definition at line 67 of file MuonPadDesign.h.

◆ ylFrame

double MuonGM::MuonPadDesign::ylFrame {0.}

Definition at line 66 of file MuonPadDesign.h.

◆ ysFrame

double MuonGM::MuonPadDesign::ysFrame {0.}

Definition at line 65 of file MuonPadDesign.h.


The documentation for this struct was generated from the following files:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
MuonGM::MuonPadDesign::topRight
@ topRight
Definition: MuonPadDesign.h:105
MuonGM::MuonPadDesign::firstPhiPos
double firstPhiPos
Definition: MuonPadDesign.h:53
MuonGM::MuonPadDesign::channelNumber
std::pair< int, int > channelNumber(const Amg::Vector2D &pos) const
calculate local channel number, range 1=nstrips like identifiers.
Definition: MuonPadDesign.cxx:39
get_generator_info.result
result
Definition: get_generator_info.py:21
MuonGM::MuonPadDesign::channelPosition
bool channelPosition(const std::pair< int, int > &pad, Amg::Vector2D &pos) const
calculate local channel position for a given channel number
Definition: MuonPadDesign.cxx:112
MuonGM::MuonPadDesign::botLeft
@ botLeft
Definition: MuonPadDesign.h:105
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGM::MuonPadDesign::maxAbsSensitiveX
double maxAbsSensitiveX(const double &y) const
largest (abs, local) x of the sensitive volume
Definition: MuonPadDesign.cxx:26
CornerArray
MuonGM::MuonPadDesign::CornerArray CornerArray
Definition: sTgcPadPlottingAlg.cxx:19
MuonGM::MuonPadDesign::minSensitiveY
double minSensitiveY() const
lowest y (local) of the sensitive volume
Definition: MuonPadDesign.cxx:22
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
MuonGM::MuonPadDesign::Size
double Size
Definition: MuonPadDesign.h:58
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
MuonGM::MuonPadDesign::radialDistance
double radialDistance
DT-2015-11-29 distance from the beamline to the center of the module.
Definition: MuonPadDesign.h:60
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
MuonGM::MuonPadDesign::lPadWidth
double lPadWidth
Definition: MuonPadDesign.h:63
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
MuonGM::MuonPadDesign::nPadH
int nPadH
Definition: MuonPadDesign.h:68
MuonGM::MuonPadDesign::maxSensitiveY
double maxSensitiveY() const
highest y (local) of the sensitive volume
Definition: MuonPadDesign.cxx:24
MuonGM::MuonPadDesign::botRight
@ botRight
Definition: MuonPadDesign.h:105
MuonGM::MuonPadDesign::thickness
double thickness
Definition: MuonPadDesign.h:59
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
MuonGM::MuonPadDesign::gasGapThickness
double gasGapThickness() const
thickness of gas gap
Definition: MuonPadDesign.h:169
MuonGM::MuonPadDesign::inputRowPitch
double inputRowPitch
Definition: MuonPadDesign.h:49
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
WriteCalibToCool.swap
swap
Definition: WriteCalibToCool.py:94
compareGeometries.deltaX
float deltaX
Definition: compareGeometries.py:32
MuonGM::MuonPadDesign::channelWidth
double channelWidth(const Amg::Vector2D &pos, bool measPhi, bool preciseMeas=false) const
calculate local channel width
Definition: MuonPadDesign.h:142
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
Trk::locPhi
@ locPhi
local polar
Definition: ParamDefs.h:45
MuonGM::MuonPadDesign::nPadColumns
int nPadColumns
Definition: MuonPadDesign.h:69
MuonGM::MuonPadDesign::isLargeSector
int isLargeSector
Definition: MuonPadDesign.h:72
MuonGM::MuonPadDesign::firstRowPos
double firstRowPos
Definition: MuonPadDesign.h:52
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::iPhi
@ iPhi
Definition: ParamDefs.h:47
MuonGM::MuonPadDesign::channelCorners
bool channelCorners(const std::pair< int, int > &pad, CornerArray &corners) const
Definition: MuonPadDesign.cxx:157
y
#define y
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:21
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
MuonGM::MuonPadDesign::PadPhiShift
double PadPhiShift
Definition: MuonPadDesign.h:70
MuonGM::MuonPadDesign::yCutout
double yCutout
Definition: MuonPadDesign.h:67
MuonGM::MuonPadDesign::sectorOpeningAngle
double sectorOpeningAngle
Definition: MuonPadDesign.h:73
MuonGM::MuonPadDesign::sPadWidth
double sPadWidth
Definition: MuonPadDesign.h:62
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
MuonGM::MuonPadDesign::withinSensitiveArea
bool withinSensitiveArea(const Amg::Vector2D &pos) const
whether pos is within the sensitive area of the module
Definition: MuonPadDesign.cxx:13
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
xAOD::iEta
setScale setgFexType iEta
Definition: gFexJetRoI_v1.cxx:74
MuonGM::MuonPadDesign::topLeft
@ topLeft
Definition: MuonPadDesign.h:105
python.SystemOfUnits.degree
tuple degree
Definition: SystemOfUnits.py:106
MuonGM::MuonPadDesign::inputPhiPitch
double inputPhiPitch
Definition: MuonPadDesign.h:50
MuonGM::MuonPadDesign::etaPhiId
std::pair< int, int > etaPhiId(const int channel) const
Definition: MuonPadDesign.h:115
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32