ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
TrkDriftCircleMath::MdtMultiChamberGeometry Class Reference

#include <MdtMultiChamberGeometry.h>

Inheritance diagram for TrkDriftCircleMath::MdtMultiChamberGeometry:
Collaboration diagram for TrkDriftCircleMath::MdtMultiChamberGeometry:

Public Member Functions

 MdtMultiChamberGeometry ()
 
 MdtMultiChamberGeometry (const std::vector< MdtChamberGeometry > &chambers)
 
virtual ~MdtMultiChamberGeometry ()
 
DCVec tubesPassedByLine (const Line &line, int ml) const
 
DCVec tubesPassedByLine (const Line &line) const override
 Retrieves the vector of drift circles traveresed by the line. More...
 
unsigned int nlay () const override
 
LocVec2D tubePosition (unsigned int ml, unsigned int lay, unsigned int tube) const override
 
bool validGeometry () const override
 
void print (MsgStream &msg) const override
 
virtual double tubeRadius () const override
 
double stationTheta () const override
 
const IdentifierstationId () const override
 
unsigned int nChambers () const
 

Private Attributes

std::vector< MdtChamberGeometrym_chambers
 
bool m_validGeometry {false}
 

Detailed Description

Definition at line 18 of file MdtMultiChamberGeometry.h.

Constructor & Destructor Documentation

◆ MdtMultiChamberGeometry() [1/2]

TrkDriftCircleMath::MdtMultiChamberGeometry::MdtMultiChamberGeometry ( )

◆ MdtMultiChamberGeometry() [2/2]

TrkDriftCircleMath::MdtMultiChamberGeometry::MdtMultiChamberGeometry ( const std::vector< MdtChamberGeometry > &  chambers)

Definition at line 15 of file MdtMultiChamberGeometry.cxx.

15  : m_chambers(chambers) {
16  m_validGeometry = std::find_if(m_chambers.begin(), m_chambers.end(),
17  [](const MdtChamberGeometry& geo) { return !geo.validGeometry(); }) == m_chambers.end();
18  }

◆ ~MdtMultiChamberGeometry()

TrkDriftCircleMath::MdtMultiChamberGeometry::~MdtMultiChamberGeometry ( )
virtualdefault

Member Function Documentation

◆ nChambers()

unsigned int TrkDriftCircleMath::MdtMultiChamberGeometry::nChambers ( ) const
inline

Definition at line 44 of file MdtMultiChamberGeometry.h.

44 { return m_chambers.size(); }

◆ nlay()

unsigned int TrkDriftCircleMath::MdtMultiChamberGeometry::nlay ( ) const
overridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 40 of file MdtMultiChamberGeometry.cxx.

40 { return m_chambers.empty() ? 0 : m_chambers[0].nlay(); }

◆ print()

void TrkDriftCircleMath::MdtMultiChamberGeometry::print ( MsgStream &  msg) const
overridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 36 of file MdtMultiChamberGeometry.cxx.

36  {
37  for (const MdtChamberGeometry& it : m_chambers) { it.print(msg); }
38  }

◆ stationId()

const Identifier& TrkDriftCircleMath::MdtMultiChamberGeometry::stationId ( ) const
inlineoverridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 42 of file MdtMultiChamberGeometry.h.

42 { return m_chambers[0].stationId(); }

◆ stationTheta()

double TrkDriftCircleMath::MdtMultiChamberGeometry::stationTheta ( ) const
inlineoverridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 51 of file MdtMultiChamberGeometry.h.

51  {
52  double theta = 0.;
53  if (m_chambers.empty() || !m_validGeometry) return 0.;
54 
55  for (const MdtChamberGeometry& chit : m_chambers) theta += chit.stationTheta();
56  return theta / m_chambers.size();
57  }

◆ tubePosition()

LocVec2D TrkDriftCircleMath::MdtMultiChamberGeometry::tubePosition ( unsigned int  ml,
unsigned int  lay,
unsigned int  tube 
) const
overridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 42 of file MdtMultiChamberGeometry.cxx.

42  {
43  std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin();
44  if (it->validId(ml, lay, tube))
45  return it->tubePosition(ml, lay, tube);
46  else
47  return it->tubePosition(1, 0, 0);
48  }

◆ tubeRadius()

double TrkDriftCircleMath::MdtMultiChamberGeometry::tubeRadius ( ) const
inlineoverridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 59 of file MdtMultiChamberGeometry.h.

59  {
60  if (m_chambers.empty()) return 14.6;
61  return m_chambers.front().tubeRadius();
62  }

◆ tubesPassedByLine() [1/2]

DCVec TrkDriftCircleMath::MdtMultiChamberGeometry::tubesPassedByLine ( const Line line) const
inlineoverridevirtual

Retrieves the vector of drift circles traveresed by the line.

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 28 of file MdtMultiChamberGeometry.h.

28 { return tubesPassedByLine(line, -1); }

◆ tubesPassedByLine() [2/2]

DCVec TrkDriftCircleMath::MdtMultiChamberGeometry::tubesPassedByLine ( const Line line,
int  ml 
) const

Definition at line 21 of file MdtMultiChamberGeometry.cxx.

21  {
22  DCVec crossedTubes;
23  crossedTubes.reserve(60);
24  if (!m_validGeometry) {
25  std::cout << " >>>>> invalid geometry <<<<< " << std::endl;
26  return crossedTubes;
27  }
28 
29  for (const MdtChamberGeometry& it : m_chambers) { it.tubesPassedByLine(line, ml, crossedTubes); }
30 
31  std::stable_sort(crossedTubes.begin(), crossedTubes.end(), SortDcsByY());
32 
33  return crossedTubes;
34  }

◆ validGeometry()

bool TrkDriftCircleMath::MdtMultiChamberGeometry::validGeometry ( ) const
inlineoverridevirtual

Implements TrkDriftCircleMath::ChamberGeometry.

Definition at line 34 of file MdtMultiChamberGeometry.h.

34 { return m_validGeometry; }

Member Data Documentation

◆ m_chambers

std::vector<MdtChamberGeometry> TrkDriftCircleMath::MdtMultiChamberGeometry::m_chambers
private

Definition at line 47 of file MdtMultiChamberGeometry.h.

◆ m_validGeometry

bool TrkDriftCircleMath::MdtMultiChamberGeometry::m_validGeometry {false}
private

Definition at line 48 of file MdtMultiChamberGeometry.h.


The documentation for this class was generated from the following files:
checkFileSG.line
line
Definition: checkFileSG.py:75
TrkDriftCircleMath::MdtMultiChamberGeometry::m_chambers
std::vector< MdtChamberGeometry > m_chambers
Definition: MdtMultiChamberGeometry.h:47
TrkDriftCircleMath::MdtMultiChamberGeometry::tubesPassedByLine
DCVec tubesPassedByLine(const Line &line, int ml) const
Definition: MdtMultiChamberGeometry.cxx:21
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
skel.it
it
Definition: skel.GENtoEVGEN.py:423
std::stable_sort
void stable_sort(std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, std::reverse_iterator< DataModel_detail::iterator< DVL > > end, Compare comp)
Specialization of stable_sort for DataVector/List.
Definition: DVL_algorithms.h:711
TrkDriftCircleMath::DCVec
std::vector< DriftCircle > DCVec
Definition: DriftCircle.h:117
TrkDriftCircleMath::MdtMultiChamberGeometry::m_validGeometry
bool m_validGeometry
Definition: MdtMultiChamberGeometry.h:48
LArCellConditions.geo
bool geo
Definition: LArCellConditions.py:46
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
calibdata.tube
tube
Definition: calibdata.py:31