ATLAS Offline Software
Loading...
Searching...
No Matches
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.
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 }
MsgStream & msg
Definition testRead.cxx:32

◆ 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 }
Scalar theta() const
theta method

◆ 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); }
DCVec tubesPassedByLine(const Line &line, int ml) const

◆ 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 }
std::vector< DriftCircle > DCVec
void stable_sort(DataModel_detail::iterator< DVL > beg, DataModel_detail::iterator< DVL > end)
Specialization of stable_sort for DataVector/List.

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

48{false};

The documentation for this class was generated from the following files: