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

#include <MuonChannelDesign.h>

Collaboration diagram for MuonGM::MuonChannelDesign:

Public Types

enum  ChannelType { ChannelType::etaStrip, ChannelType::phiStrip }
 
enum  DetType { DetType::MM, DetType::STGC, DetType::Other }
 

Public Member Functions

 MuonChannelDesign ()
 
double distanceToReadout (const Amg::Vector2D &pos) const
 distance to readout More...
 
double distanceToChannel (const Amg::Vector2D &pos, int nChannel) const
 distance to channel - residual More...
 
int channelNumber (const Amg::Vector2D &pos) const
 calculate local channel number, range 1=nstrips like identifiers. Returns -1 if out of range More...
 
int wireGroupNumber (const Amg::Vector2D &pos) const
 calculate local wire group number, range 1=64 like identifiers. Returns -1 if out of range More...
 
int wireNumber (const Amg::Vector2D &pos) const
 calculate the sTGC wire number. The method can return a value outside the range [1, nch]. More...
 
double channelWidth () const
 calculate local channel width More...
 
void defineTrapezoid (double HalfShortY, double HalfLongY, double HalfHeight)
 set the trapezoid dimensions More...
 
void defineTrapezoid (double HalfShortY, double HalfLongY, double HalfHeight, double sAngle)
 
void defineDiamond (double HalfShortY, double HalfLongY, double HalfHeight, double ycutout)
 
double stereoAngle () const
 returns the stereo angle More...
 
double yCutout () const
 
double hasStereoAngle () const
 returns whether the stereo angle is non-zero More...
 
double isDiamondShape () const
 returns whether it's a diamond shape (sTGC QL3) More...
 
const AmgSymMatrix (2) &rotation() const
 returns the rotation matrix between eta <-> phi layer More...
 
double channelLength (int channel) const
 STRIPS ONLY: calculate channel length for a given strip number. More...
 
double channelHalfLength (int st, bool left) const
 STRIPS ONLY: calculate channel length on the given side of the x axis (for MM stereo strips) More...
 
double gasGapThickness () const
 thickness of gas gap More...
 
bool center (int channel, Amg::Vector2D &pos) const
 STRIPS ONLY: Returns the center on the strip. More...
 
bool leftEdge (int channel, Amg::Vector2D &pos) const
 STRIPS ONLY: Returns the left edge of the strip. More...
 
bool rightEdge (int channel, Amg::Vector2D &pos) const
 STRIPS ONLY: Returns the right edge of the strip. More...
 
int numberOfMissingTopStrips () const
 Returns the number of missing top strips. More...
 
int numberOfMissingBottomStrips () const
 Returns the number of missing bottom strips. More...
 
double xSize () const
 
double maxYSize () const
 
double minYSize () const
 
double passivatedLength (double passivWidth, bool left) const
 top edge -> left edge bottom edge -> right edge a rectangle with height H parallel to the inclined edges is passivated More...
 
double passivatedHeight (double passivHeight, bool edge) const
 Passivation is applied parallel to. More...
 
void setFirstPos (const double pos)
 Set the position of the first strip along the x-axis. More...
 
double firstPos () const
 Returns the position of the first strip along the x-axis. More...
 
int positionRelativeToStrip (const Amg::Vector2D &lpos, Amg::Vector2D &rel_pos) const
 STRIPS ONLY. More...
 

Public Attributes

ChannelType type { ChannelType::etaStrip }
 
DetType detType { DetType::Other }
 
int nch {-1}
 
double inputPitch {0.}
 
double inputWidth {0.}
 
double inputLength {0.}
 
double firstPitch {0.}
 
double groupWidth {0.}
 
double nGroups {0.}
 
double wireCutout {0.}
 
double thickness {0.}
 
int nMissedTopEta {0}
 
int nMissedBottomEta {0}
 
int nMissedTopStereo {0}
 
int nMissedBottomStereo {0}
 
int totalStrips {0}
 

Private Member Functions

bool channelPosition (int channel, Amg::Vector2D &pos) const
 calculate local channel position for a given channel number More...
 
bool leftInterSect (int channel, Amg::Vector2D &pos, bool uncapped=false) const
 Returns the intersection of the strip with the left edge of the trapezoid. Special cases: More...
 
bool rightInterSect (int channel, Amg::Vector2D &pos, bool uncapped=false) const
 Returns the right edge of the strip. More...
 
bool geomCenter (int channel, Amg::Vector2D &pos) const
 Returns the geometrical strip center. More...
 
void setStereoAngle (double sAngle)
 calculate local stereo angle More...
 
 AmgSymMatrix (2) m_rotMat
 

Private Attributes

bool m_hasStereo {false}
 
bool m_isDiamond {false}
 
double m_sAngle {0.}
 
double m_yCutout {0.}
 
Amg::Vector2D m_stereoDir {0,1}
 Direction of the strips. More...
 
Amg::Vector2D m_stereoNormal {1.,0.}
 Direction pointing to the next strips. More...
 
double m_firstPos {0.}
 Position of the first measurement. More...
 
Amg::Vector2D m_topEdge {Amg::Vector2D::Zero()}
 Vector describing the right edge of the trapzoid. More...
 
Amg::Vector2D m_bottomEdge {Amg::Vector2D::Zero()}
 Vector describing the left edge of the trapezoid. More...
 
Amg::Vector2D m_bottomLeft {Amg::Vector2D::Zero()}
 Bottom left point of the trapezoid. More...
 
Amg::Vector2D m_bottomRight {Amg::Vector2D::Zero()}
 Bottom right 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...
 
double m_maxHorSize {0.}
 
double m_xSize {0.}
 
double m_minYSize {0.}
 
double m_maxYSize {0.}
 

Detailed Description

Definition at line 24 of file MuonChannelDesign.h.

Member Enumeration Documentation

◆ ChannelType

Enumerator
etaStrip 
phiStrip 

Definition at line 30 of file MuonChannelDesign.h.

30 {0.};

◆ DetType

Enumerator
MM 
STGC 
Other 

Definition at line 31 of file MuonChannelDesign.h.

31 {0.};

Constructor & Destructor Documentation

◆ MuonChannelDesign()

MuonGM::MuonChannelDesign::MuonChannelDesign ( )

Definition at line 6 of file MuonChannelDesign.cxx.

6  {
7  m_rotMat.setIdentity();
8  }

Member Function Documentation

◆ AmgSymMatrix() [1/2]

const MuonGM::MuonChannelDesign::AmgSymMatrix ( ) const &
inline

returns the rotation matrix between eta <-> phi layer

Definition at line 84 of file MuonChannelDesign.h.

87 { return thickness; }

◆ AmgSymMatrix() [2/2]

MuonGM::MuonChannelDesign::AmgSymMatrix ( )
inlineprivate

Definition at line 174 of file MuonChannelDesign.h.

◆ center()

bool MuonGM::MuonChannelDesign::center ( int  channel,
Amg::Vector2D pos 
) const
inline

STRIPS ONLY: Returns the center on the strip.

Definition at line 484 of file MuonChannelDesign.h.

488  {

◆ channelHalfLength()

double MuonGM::MuonChannelDesign::channelHalfLength ( int  st,
bool  left 
) const
inline

STRIPS ONLY: calculate channel length on the given side of the x axis (for MM stereo strips)

Definition at line 381 of file MuonChannelDesign.h.

◆ channelLength()

double MuonGM::MuonChannelDesign::channelLength ( int  channel) const
inline

STRIPS ONLY: calculate channel length for a given strip number.

Definition at line 391 of file MuonChannelDesign.h.

◆ channelNumber()

int MuonGM::MuonChannelDesign::channelNumber ( const Amg::Vector2D pos) const
inline

calculate local channel number, range 1=nstrips like identifiers. Returns -1 if out of range

Definition at line 198 of file MuonChannelDesign.h.

198  {
199  // ** MM strips: keeping cases outside the active area, but within the envelope,
200  // to avoid warnings from MuonPRDTest. Those channels are removed from digitization.
201  const Amg::Vector2D posInEta = m_rotMat.inverse()*pos;
202  const double xMid = (posInEta - firstPos()*Amg::Vector2D::UnitX()).dot(m_stereoNormal) / m_stereoNormal.x();
203  const int missedBottom = numberOfMissingBottomStrips();
204 
205  // first position is always 1/2 pitch above the center of the first active strip
206  chNum = static_cast<int>(std::floor( xMid / inputPitch)) + missedBottom + 2;
207  if (chNum < 1 || chNum > totalStrips) chNum = -1;
208 
209  } else if (type == ChannelType::phiStrip && detType == DetType::STGC) {
210 
211  // ** sTGC wires: return the wire group
212  chNum = wireGroupNumber(pos);
213 
214  } else {
215 
216  // ** All other cases
217  chNum = (int)std::floor( (pos.x() - firstPos()) / inputPitch ) + 2;
218  if (chNum < 1 || chNum > nch) chNum = -1;
219  }
220 
221  return chNum;
222  }
223 
224 
225  //============================================================================

◆ channelPosition()

bool MuonGM::MuonChannelDesign::channelPosition ( int  channel,
Amg::Vector2D pos 
) const
inlineprivate

calculate local channel position for a given channel number

sTGC Wires: return the center of the wire group (not the wire)

Default case for phi wires

MM eta strips (strip numbering starts at 1)

sTGC and default case for eta strips

Definition at line 311 of file MuonChannelDesign.h.

314  {
315 
317  if (st > nGroups || st == 63) return false; // 63 is defined as an unactive digit
318 
319  // calculate the end of the first wire group (accounts for staggering).
320  // for wires, firstPitch is the number of wires in the first group
321  double firstX = firstPos() + (firstPitch - 1) * inputPitch;
322  double locX{0.};
323 
324  if (st == 1) {
325  // first group: average the starting and ending x of the group
326  locX = 0.5 * (-0.5 * m_maxYSize + firstX);
327  } else if (st == nGroups) {
328  // last group: average the starting and ending x of the group
329  locX = 0.5 * (0.5 * m_maxYSize + firstX + (nGroups - 2) * groupWidth * inputPitch);
330  } else {
331  locX = firstX + groupWidth * inputPitch * (st - 1.5);
332  }
333 
334  pos[0] = locX;
335  pos[1] = 0.;
336 
337  } else {
338 
340  double dY = 0.5 * (m_maxYSize - m_minYSize);
341  double locY = firstPos() + (st-1)*inputPitch;
342  double locX{0.};
343 
344  if (std::abs(locY) > 0.5*m_minYSize) {
345  locX = 0.5 * m_xSize *(1. - (0.5*m_maxYSize - std::abs(locY)) / dY);
346  }
347  pos[0] = locY;
348  pos[1] = locX;
349  }
350 
351  } else if (detType == DetType::MM) {
352 
354  const int nMissedBottom = numberOfMissingBottomStrips();
355  if (st <= nMissedBottom || st > nMissedBottom + nch) return false;
356 
357  // firstPos is 1/2 pitch above the center of the first active strip.
358  pos = (firstPos() + inputPitch* (st - nMissedBottom - 1.5)) * Amg::Vector2D::UnitX();
359  } else {
360 
362  if (st < 1 || st > nch) return false;
363 
364  double x = firstPos() + (st - 1.5)*inputPitch;
365  if (detType == DetType::STGC) {
366  if (firstPitch == inputPitch && st == nch) x -= inputWidth/4.; // case last strip is a half-strip
367  if (firstPitch < inputPitch && st == 1) x += inputWidth/4.; // case first strip is a half-strip
368  }
369 
370  pos[0] = x;
371  pos[1] = 0;
372  }
373 
374  return true;
375  }
376 
377  //============================================================================
378  inline double MuonChannelDesign::channelHalfLength(int st, bool left) const {

◆ channelWidth()

double MuonGM::MuonChannelDesign::channelWidth ( ) const
inline

calculate local channel width

Definition at line 399 of file MuonChannelDesign.h.

401  : groupWidth * inputPitch;
402  }
403 
404  return inputWidth;
405  }
406 
407  //============================================================================
408  inline bool MuonChannelDesign::geomCenter(int channel, Amg::Vector2D& pos) const {

◆ defineDiamond()

void MuonGM::MuonChannelDesign::defineDiamond ( double  HalfShortY,
double  HalfLongY,
double  HalfHeight,
double  ycutout 
)

Definition at line 42 of file MuonChannelDesign.cxx.

42  {
43 
44  // define a trapezoid region
45  double HalfLongY_uncut = HalfLongY + ycutout * (HalfLongY - HalfShortY)/(2*HalfHeight - ycutout);
46  defineTrapezoid(HalfShortY, HalfLongY_uncut, HalfHeight);
47 
48  // move the origin to the cutout base
49  Amg::Vector2D offset(ycutout - HalfHeight, 0.);
52  m_topLeft += offset;
53  m_topRight += offset;
54 
55  m_isDiamond = true;
56  m_yCutout = ycutout;
57  m_maxYSize = 2*HalfLongY;
58  }

◆ defineTrapezoid() [1/2]

void MuonGM::MuonChannelDesign::defineTrapezoid ( double  HalfShortY,
double  HalfLongY,
double  HalfHeight 
)

set the trapezoid dimensions

Definition at line 25 of file MuonChannelDesign.cxx.

25  {
26  m_bottomLeft = Amg::Vector2D{-HalfHeight, -HalfShortY};
27  m_bottomRight = Amg::Vector2D{HalfHeight, -HalfLongY};
28  m_topLeft = Amg::Vector2D{-HalfHeight, HalfShortY};
29  m_topRight = Amg::Vector2D{HalfHeight, HalfLongY};
30 
33  m_maxHorSize = std::hypot(m_topEdge.x(), m_topEdge.y());
34  m_topEdge = m_topEdge.unit();
35 
36  m_xSize = 2.*HalfHeight; // radial length (active area)
37  m_minYSize = 2.*HalfShortY; // bottom length (active area)
38  m_maxYSize = 2.*HalfLongY; // top length (active area)
40  }

◆ defineTrapezoid() [2/2]

void MuonGM::MuonChannelDesign::defineTrapezoid ( double  HalfShortY,
double  HalfLongY,
double  HalfHeight,
double  sAngle 
)

Definition at line 10 of file MuonChannelDesign.cxx.

10  {
11  defineTrapezoid(HalfShortY,HalfLongY, HalfHeight);
12  setStereoAngle(sAngle);
13  }

◆ distanceToChannel()

double MuonGM::MuonChannelDesign::distanceToChannel ( const Amg::Vector2D pos,
int  nChannel 
) const
inline

distance to channel - residual

Definition at line 181 of file MuonChannelDesign.h.

◆ distanceToReadout()

double MuonGM::MuonChannelDesign::distanceToReadout ( const Amg::Vector2D pos) const
inline

distance to readout

Definition at line 190 of file MuonChannelDesign.h.

◆ firstPos()

double MuonGM::MuonChannelDesign::firstPos ( ) const
inline

Returns the position of the first strip along the x-axis.

Definition at line 481 of file MuonChannelDesign.h.

481 {

◆ gasGapThickness()

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

thickness of gas gap

Definition at line 93 of file MuonChannelDesign.h.

◆ geomCenter()

bool MuonGM::MuonChannelDesign::geomCenter ( int  channel,
Amg::Vector2D pos 
) const
inlineprivate

Returns the geometrical strip center.

Definition at line 411 of file MuonChannelDesign.h.

416  {

◆ hasStereoAngle()

double MuonGM::MuonChannelDesign::hasStereoAngle ( ) const
inline

returns whether the stereo angle is non-zero

Definition at line 78 of file MuonChannelDesign.h.

78 { return m_rotMat; }

◆ isDiamondShape()

double MuonGM::MuonChannelDesign::isDiamondShape ( ) const
inline

returns whether it's a diamond shape (sTGC QL3)

Definition at line 81 of file MuonChannelDesign.h.

87 { return thickness; }

◆ leftEdge()

bool MuonGM::MuonChannelDesign::leftEdge ( int  channel,
Amg::Vector2D pos 
) const
inline

STRIPS ONLY: Returns the left edge of the strip.

Definition at line 491 of file MuonChannelDesign.h.

495  {

◆ leftInterSect()

bool MuonGM::MuonChannelDesign::leftInterSect ( int  channel,
Amg::Vector2D pos,
bool  uncapped = false 
) const
inlineprivate

Returns the intersection of the strip with the left edge of the trapezoid. Special cases:

Nominal channel position

Return immediately for a strip in the cutout region of QL3

If the channel is a stereo channel && lamda is either smaller 0 or longer then the bottom edge, then it's a routed strip

Definition at line 419 of file MuonChannelDesign.h.

422  {
423  pos = Amg::Vector2D(chanPos.x(), -0.5*m_maxYSize);
424  return true;
425  }
426 
427  std::optional<double> lambda = Amg::intersect<2>(chanPos, m_stereoDir, m_bottomLeft, m_bottomEdge);
428  if (!lambda) return false;
431  if (!uncapped && m_hasStereo && ( (*lambda) < 0. || (*lambda) > m_maxHorSize)) {
432  const Amg::Vector2D e_y{0., 1.};
433  const std::optional<double> bottom_line = Amg::intersect<2>(m_stereoDir.x() > 0.? m_bottomLeft: m_bottomRight, e_y, chanPos, m_stereoDir);
434  if (bottom_line) {
435  pos = chanPos + (*bottom_line)* m_stereoDir;
436  return true;
437  }
438  }
439  pos = (m_bottomLeft + (*lambda) * m_bottomEdge);
440  return true;
441  }
442 
443  //============================================================================
444  inline bool MuonChannelDesign::rightInterSect(int channel, Amg::Vector2D& pos, bool uncapped /*= false*/) const {

◆ maxYSize()

double MuonGM::MuonChannelDesign::maxYSize ( ) const
inline

Definition at line 479 of file MuonChannelDesign.h.

◆ minYSize()

double MuonGM::MuonChannelDesign::minYSize ( ) const
inline

Definition at line 480 of file MuonChannelDesign.h.

◆ numberOfMissingBottomStrips()

int MuonGM::MuonChannelDesign::numberOfMissingBottomStrips ( ) const
inline

Returns the number of missing bottom strips.

Definition at line 477 of file MuonChannelDesign.h.

477 {return m_minYSize;}

◆ numberOfMissingTopStrips()

int MuonGM::MuonChannelDesign::numberOfMissingTopStrips ( ) const
inline

Returns the number of missing top strips.

Definition at line 476 of file MuonChannelDesign.h.

476 {return m_maxYSize;}

◆ passivatedHeight()

double MuonGM::MuonChannelDesign::passivatedHeight ( double  passivHeight,
bool  edge 
) const
inline

Passivation is applied parallel to.

Definition at line 513 of file MuonChannelDesign.h.

◆ passivatedLength()

double MuonGM::MuonChannelDesign::passivatedLength ( double  passivWidth,
bool  left 
) const
inline

top edge -> left edge bottom edge -> right edge a rectangle with height H parallel to the inclined edges is passivated

Definition at line 507 of file MuonChannelDesign.h.

510  {

◆ positionRelativeToStrip()

int MuonGM::MuonChannelDesign::positionRelativeToStrip ( const Amg::Vector2D lpos,
Amg::Vector2D rel_pos 
) const
inline

STRIPS ONLY.

Given a local position falling on strip #i, this function expresses it w.r.t. the center of the strip (intersection for stereo strips): relative x within [-0.5, 0.5] (*pitch), relative y within [-1, 1]. These coordinates can be fed to the NswAsBuilt::StripCalculator

Definition at line 282 of file MuonChannelDesign.h.

292  channelPosition(istrip, chan_pos);
293  chan_pos = rotation() * chan_pos;
294 
295  // strip edge in the local reference frame (note that the uncapped option is set to true)
296  Amg::Vector2D edge_pos{Amg::Vector2D::Zero()};
297  (lpos.y() > 0) ? rightInterSect(istrip, edge_pos, true) : leftInterSect(istrip, edge_pos, true);
298  edge_pos = rotation() * edge_pos;
299 
300  rel_pos[0] = (lpos - chan_pos).x() / channelWidth();
301  rel_pos[1] = (lpos - chan_pos).y() / std::abs( edge_pos.y() - chan_pos.y() );
302 
303  return istrip;
304  }
305 
306 
307  //============================================================================

◆ rightEdge()

bool MuonGM::MuonChannelDesign::rightEdge ( int  channel,
Amg::Vector2D pos 
) const
inline

STRIPS ONLY: Returns the right edge of the strip.

Definition at line 498 of file MuonChannelDesign.h.

◆ rightInterSect()

bool MuonGM::MuonChannelDesign::rightInterSect ( int  channel,
Amg::Vector2D pos,
bool  uncapped = false 
) const
inlineprivate

Returns the right edge of the strip.

Nominal channel position

Return immediately for a strip in the cutout region of QL3

We expect lambda to be positive

If the channel is a stereo channel && lamda is either smaller 0 or longer then the bottom edge, then it's a routed strip

Definition at line 447 of file MuonChannelDesign.h.

450  {
451  pos = Amg::Vector2D(chanPos.x(), 0.5*m_maxYSize);
452  return true;
453  }
454 
456  const std::optional<double> lambda =Amg::intersect<2>(chanPos, m_stereoDir, m_topRight, m_topEdge);
457  if (!lambda) return false;
460  if (!uncapped && m_hasStereo&& ( (*lambda) < 0 || (*lambda) > m_maxHorSize)) {
461  const Amg::Vector2D e_y{0., 1.};
462  const std::optional<double> top_line =Amg::intersect<2>(m_stereoDir.x() > 0. ? m_topRight: m_topLeft, e_y, chanPos, m_stereoDir);
463  if (top_line) {
464  pos = chanPos + (*top_line) * m_stereoDir;
465  return true;
466  }
467  }
468  pos = (m_topRight + (*lambda) * m_topEdge);
469  return true;
470  }
471 
472  //============================================================================

◆ setFirstPos()

void MuonGM::MuonChannelDesign::setFirstPos ( const double  pos)

Set the position of the first strip along the x-axis.

Definition at line 60 of file MuonChannelDesign.cxx.

60  {
62  }

◆ setStereoAngle()

void MuonGM::MuonChannelDesign::setStereoAngle ( double  sAngle)
private

calculate local stereo angle

Definition at line 15 of file MuonChannelDesign.cxx.

15  {
16  if (m_isDiamond) return; // forbid diamond shape with stereo strips
17  m_sAngle = sAngle;
18  m_hasStereo = (sAngle !=0.);
19  Eigen::Rotation2D rot{sAngle};
20  m_stereoDir = rot * m_stereoDir;
22  m_rotMat = Eigen::Rotation2D{-sAngle};
23  }

◆ stereoAngle()

double MuonGM::MuonChannelDesign::stereoAngle ( ) const
inline

returns the stereo angle

Definition at line 73 of file MuonChannelDesign.h.

75 {return m_isDiamond;}

◆ wireGroupNumber()

int MuonGM::MuonChannelDesign::wireGroupNumber ( const Amg::Vector2D pos) const
inline

calculate local wire group number, range 1=64 like identifiers. Returns -1 if out of range

Definition at line 229 of file MuonChannelDesign.h.

236  {-1};
237  if (wire_number <= firstPitch) {
238  grNumber = 1;
239  } else {
240  grNumber = (wire_number - 1 - firstPitch) / groupWidth + 2; // 20 wires per group,
241  // Case a hit is positionned after the last wire but inside the gas volume.
242  // Especially important for QL3. We still consider the digit active.
243  if (grNumber > nGroups && pos.x() < 0.5 * m_maxYSize) grNumber = nGroups;
244  }
245 
246  // If hit is in an inactive wire region of QL1/QS1, return 63 (invalid).
247  // This allows better tracking of hits.
248  if (wireCutout != 0. && pos.y() < 0.5 * m_xSize - wireCutout) return 63;
249  if (grNumber < 1 || grNumber > nGroups) return -1;
250 
251  return grNumber;
252  }
253 
254 
255  //============================================================================

◆ wireNumber()

int MuonGM::MuonChannelDesign::wireNumber ( const Amg::Vector2D pos) const
inline

calculate the sTGC wire number. The method can return a value outside the range [1, nch].

Definition at line 259 of file MuonChannelDesign.h.

259  {-1};
261  if ((pos.x() > -0.5 * m_maxYSize) && (pos.x() < firstPos())) { // before first wire
262  wire_number = 1;
263  } else {
264  wire_number = (pos.x() - firstPos()) / inputPitch + 1;
265  if (wire_number < 1 || wire_number > nch) {
266  MsgStream log(Athena::getMessageSvc(), "MuonChannelDesign");
267  if (log.level() <= MSG::DEBUG) {
268  log << MSG::DEBUG << "sTGC wire number out of range: wire number = " << wire_number << " local pos = (" << pos.x() << ", " << pos.y() << ")" << endmsg;
269  }
270  }
271  }
272  }
273 
274  return wire_number;
275  }
276 
277 
278  //============================================================================

◆ xSize()

double MuonGM::MuonChannelDesign::xSize ( ) const
inline

Definition at line 478 of file MuonChannelDesign.h.

478 {return m_firstPos;}

◆ yCutout()

double MuonGM::MuonChannelDesign::yCutout ( ) const
inline

Definition at line 75 of file MuonChannelDesign.h.

75 {return m_isDiamond;}

Member Data Documentation

◆ detType

DetType MuonGM::MuonChannelDesign::detType { DetType::Other }

Definition at line 33 of file MuonChannelDesign.h.

◆ firstPitch

double MuonGM::MuonChannelDesign::firstPitch {0.}

Definition at line 38 of file MuonChannelDesign.h.

◆ groupWidth

double MuonGM::MuonChannelDesign::groupWidth {0.}

Definition at line 39 of file MuonChannelDesign.h.

◆ inputLength

double MuonGM::MuonChannelDesign::inputLength {0.}

Definition at line 37 of file MuonChannelDesign.h.

◆ inputPitch

double MuonGM::MuonChannelDesign::inputPitch {0.}

Definition at line 35 of file MuonChannelDesign.h.

◆ inputWidth

double MuonGM::MuonChannelDesign::inputWidth {0.}

Definition at line 36 of file MuonChannelDesign.h.

◆ m_bottomEdge

Amg::Vector2D MuonGM::MuonChannelDesign::m_bottomEdge {Amg::Vector2D::Zero()}
private

Vector describing the left edge of the trapezoid.

Definition at line 164 of file MuonChannelDesign.h.

◆ m_bottomLeft

Amg::Vector2D MuonGM::MuonChannelDesign::m_bottomLeft {Amg::Vector2D::Zero()}
private

Bottom left point of the trapezoid.

Definition at line 166 of file MuonChannelDesign.h.

◆ m_bottomRight

Amg::Vector2D MuonGM::MuonChannelDesign::m_bottomRight {Amg::Vector2D::Zero()}
private

Bottom right point of the trapezoid.

Definition at line 168 of file MuonChannelDesign.h.

◆ m_firstPos

double MuonGM::MuonChannelDesign::m_firstPos {0.}
private

Position of the first measurement.

Definition at line 160 of file MuonChannelDesign.h.

◆ m_hasStereo

bool MuonGM::MuonChannelDesign::m_hasStereo {false}
private

Definition at line 151 of file MuonChannelDesign.h.

◆ m_isDiamond

bool MuonGM::MuonChannelDesign::m_isDiamond {false}
private

Definition at line 152 of file MuonChannelDesign.h.

◆ m_maxHorSize

double MuonGM::MuonChannelDesign::m_maxHorSize {0.}
private

Definition at line 176 of file MuonChannelDesign.h.

◆ m_maxYSize

double MuonGM::MuonChannelDesign::m_maxYSize {0.}
private

Definition at line 179 of file MuonChannelDesign.h.

◆ m_minYSize

double MuonGM::MuonChannelDesign::m_minYSize {0.}
private

Definition at line 178 of file MuonChannelDesign.h.

◆ m_sAngle

double MuonGM::MuonChannelDesign::m_sAngle {0.}
private

Definition at line 153 of file MuonChannelDesign.h.

◆ m_stereoDir

Amg::Vector2D MuonGM::MuonChannelDesign::m_stereoDir {0,1}
private

Direction of the strips.

Definition at line 156 of file MuonChannelDesign.h.

◆ m_stereoNormal

Amg::Vector2D MuonGM::MuonChannelDesign::m_stereoNormal {1.,0.}
private

Direction pointing to the next strips.

Definition at line 158 of file MuonChannelDesign.h.

◆ m_topEdge

Amg::Vector2D MuonGM::MuonChannelDesign::m_topEdge {Amg::Vector2D::Zero()}
private

Vector describing the right edge of the trapzoid.

Definition at line 162 of file MuonChannelDesign.h.

◆ m_topLeft

Amg::Vector2D MuonGM::MuonChannelDesign::m_topLeft {Amg::Vector2D::Zero()}
private

Top right point of the trapezoid.

Definition at line 170 of file MuonChannelDesign.h.

◆ m_topRight

Amg::Vector2D MuonGM::MuonChannelDesign::m_topRight {Amg::Vector2D::Zero()}
private

Bottom right point of the trapezoid.

Definition at line 172 of file MuonChannelDesign.h.

◆ m_xSize

double MuonGM::MuonChannelDesign::m_xSize {0.}
private

Definition at line 177 of file MuonChannelDesign.h.

◆ m_yCutout

double MuonGM::MuonChannelDesign::m_yCutout {0.}
private

Definition at line 154 of file MuonChannelDesign.h.

◆ nch

int MuonGM::MuonChannelDesign::nch {-1}

Definition at line 34 of file MuonChannelDesign.h.

◆ nGroups

double MuonGM::MuonChannelDesign::nGroups {0.}

Definition at line 40 of file MuonChannelDesign.h.

◆ nMissedBottomEta

int MuonGM::MuonChannelDesign::nMissedBottomEta {0}

Definition at line 44 of file MuonChannelDesign.h.

◆ nMissedBottomStereo

int MuonGM::MuonChannelDesign::nMissedBottomStereo {0}

Definition at line 46 of file MuonChannelDesign.h.

◆ nMissedTopEta

int MuonGM::MuonChannelDesign::nMissedTopEta {0}

Definition at line 43 of file MuonChannelDesign.h.

◆ nMissedTopStereo

int MuonGM::MuonChannelDesign::nMissedTopStereo {0}

Definition at line 45 of file MuonChannelDesign.h.

◆ thickness

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

Definition at line 42 of file MuonChannelDesign.h.

◆ totalStrips

int MuonGM::MuonChannelDesign::totalStrips {0}

Definition at line 47 of file MuonChannelDesign.h.

◆ type

ChannelType MuonGM::MuonChannelDesign::type { ChannelType::etaStrip }

Definition at line 32 of file MuonChannelDesign.h.

◆ wireCutout

double MuonGM::MuonChannelDesign::wireCutout {0.}

Definition at line 41 of file MuonChannelDesign.h.


The documentation for this struct was generated from the following files:
MuonGM::MuonChannelDesign::m_maxHorSize
double m_maxHorSize
Definition: MuonChannelDesign.h:176
MuonGM::MuonChannelDesign::inputPitch
double inputPitch
Definition: MuonChannelDesign.h:35
MuonGM::MuonChannelDesign::firstPos
double firstPos() const
Returns the position of the first strip along the x-axis.
Definition: MuonChannelDesign.h:481
MuonGM::MuonChannelDesign::m_bottomEdge
Amg::Vector2D m_bottomEdge
Vector describing the left edge of the trapezoid.
Definition: MuonChannelDesign.h:164
MuonGM::MuonChannelDesign::m_topLeft
Amg::Vector2D m_topLeft
Top right point of the trapezoid.
Definition: MuonChannelDesign.h:170
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
Trk::locX
@ locX
Definition: ParamDefs.h:43
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:44
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
MuonGM::MuonChannelDesign::groupWidth
double groupWidth
Definition: MuonChannelDesign.h:39
MuonGM::MuonChannelDesign::defineTrapezoid
void defineTrapezoid(double HalfShortY, double HalfLongY, double HalfHeight)
set the trapezoid dimensions
Definition: MuonChannelDesign.cxx:25
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
MuonGM::MuonChannelDesign::m_minYSize
double m_minYSize
Definition: MuonChannelDesign.h:178
MuonGM::MuonChannelDesign::firstPitch
double firstPitch
Definition: MuonChannelDesign.h:38
MuonGM::MuonChannelDesign::inputWidth
double inputWidth
Definition: MuonChannelDesign.h:36
MuonGM::MuonChannelDesign::m_stereoDir
Amg::Vector2D m_stereoDir
Direction of the strips.
Definition: MuonChannelDesign.h:156
MuonGM::MuonChannelDesign::numberOfMissingTopStrips
int numberOfMissingTopStrips() const
Returns the number of missing top strips.
Definition: MuonChannelDesign.h:476
MuonGM::MuonChannelDesign::wireCutout
double wireCutout
Definition: MuonChannelDesign.h:41
MuonGM::MuonChannelDesign::inputLength
double inputLength
Definition: MuonChannelDesign.h:37
MuonGM::MuonChannelDesign::m_topEdge
Amg::Vector2D m_topEdge
Vector describing the right edge of the trapzoid.
Definition: MuonChannelDesign.h:162
MuonGM::MuonChannelDesign::m_isDiamond
bool m_isDiamond
Definition: MuonChannelDesign.h:152
MuonGM::MuonChannelDesign::m_yCutout
double m_yCutout
Definition: MuonChannelDesign.h:154
x
#define x
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
MuonGM::MuonChannelDesign::m_topRight
Amg::Vector2D m_topRight
Bottom right point of the trapezoid.
Definition: MuonChannelDesign.h:172
MuonGM::MuonChannelDesign::geomCenter
bool geomCenter(int channel, Amg::Vector2D &pos) const
Returns the geometrical strip center.
Definition: MuonChannelDesign.h:411
MuonGM::MuonChannelDesign::ChannelType::phiStrip
@ phiStrip
MuonGM::MuonChannelDesign::DetType::MM
@ MM
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
xAOD::rotation
rotation
Definition: TrackSurface_v1.cxx:15
MuonGM::MuonChannelDesign::wireGroupNumber
int wireGroupNumber(const Amg::Vector2D &pos) const
calculate local wire group number, range 1=64 like identifiers. Returns -1 if out of range
Definition: MuonChannelDesign.h:229
MuonGM::MuonChannelDesign::m_sAngle
double m_sAngle
Definition: MuonChannelDesign.h:153
MuonGM::MuonChannelDesign::m_bottomRight
Amg::Vector2D m_bottomRight
Bottom right point of the trapezoid.
Definition: MuonChannelDesign.h:168
dot.dot
def dot(G, fn, nodesToHighlight=[])
Definition: dot.py:5
MuonGM::MuonChannelDesign::channelPosition
bool channelPosition(int channel, Amg::Vector2D &pos) const
calculate local channel position for a given channel number
Definition: MuonChannelDesign.h:311
MuonGM::MuonChannelDesign::nMissedTopStereo
int nMissedTopStereo
Definition: MuonChannelDesign.h:45
MuonGM::MuonChannelDesign::rightInterSect
bool rightInterSect(int channel, Amg::Vector2D &pos, bool uncapped=false) const
Returns the right edge of the strip.
Definition: MuonChannelDesign.h:447
MuonGM::MuonChannelDesign::leftInterSect
bool leftInterSect(int channel, Amg::Vector2D &pos, bool uncapped=false) const
Returns the intersection of the strip with the left edge of the trapezoid. Special cases:
Definition: MuonChannelDesign.h:419
MuonGM::MuonChannelDesign::totalStrips
int totalStrips
Definition: MuonChannelDesign.h:47
MuonGM::MuonChannelDesign::DetType::STGC
@ STGC
MuonGM::MuonChannelDesign::m_stereoNormal
Amg::Vector2D m_stereoNormal
Direction pointing to the next strips.
Definition: MuonChannelDesign.h:158
MuonGM::MuonChannelDesign::m_hasStereo
bool m_hasStereo
Definition: MuonChannelDesign.h:151
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
MuonGM::MuonChannelDesign::channelHalfLength
double channelHalfLength(int st, bool left) const
STRIPS ONLY: calculate channel length on the given side of the x axis (for MM stereo strips)
Definition: MuonChannelDesign.h:381
MuonGM::MuonChannelDesign::type
ChannelType type
Definition: MuonChannelDesign.h:32
y
#define y
MuonGM::MuonChannelDesign::detType
DetType detType
Definition: MuonChannelDesign.h:33
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:20
MuonGM::MuonChannelDesign::m_firstPos
double m_firstPos
Position of the first measurement.
Definition: MuonChannelDesign.h:160
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
MuonGM::MuonChannelDesign::nMissedTopEta
int nMissedTopEta
Definition: MuonChannelDesign.h:43
MuonGM::MuonChannelDesign::nch
int nch
Definition: MuonChannelDesign.h:34
MuonGM::MuonChannelDesign::nGroups
double nGroups
Definition: MuonChannelDesign.h:40
MuonGM::MuonChannelDesign::numberOfMissingBottomStrips
int numberOfMissingBottomStrips() const
Returns the number of missing bottom strips.
Definition: MuonChannelDesign.h:477
MuonGM::MuonChannelDesign::m_bottomLeft
Amg::Vector2D m_bottomLeft
Bottom left point of the trapezoid.
Definition: MuonChannelDesign.h:166
MuonGM::MuonChannelDesign::m_maxYSize
double m_maxYSize
Definition: MuonChannelDesign.h:179
MuonGM::MuonChannelDesign::channelWidth
double channelWidth() const
calculate local channel width
Definition: MuonChannelDesign.h:399
MuonGM::MuonChannelDesign::setStereoAngle
void setStereoAngle(double sAngle)
calculate local stereo angle
Definition: MuonChannelDesign.cxx:15
MuonGM::MuonChannelDesign::m_xSize
double m_xSize
Definition: MuonChannelDesign.h:177
MuonGM::MuonChannelDesign::thickness
double thickness
Definition: MuonChannelDesign.h:42
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32