Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <MdtChamberGeometry.h>
|
| MdtChamberGeometry () |
|
| MdtChamberGeometry (const Identifier &id, const Muon::IMuonIdHelperSvc *idHelperSvc, unsigned int nml, unsigned int nlay, unsigned int ntubesml0, unsigned int ntubesml1, const LocVec2D &tube0ml0, const LocVec2D &tube0ml1, double tubeDist, double tubeStage, double layDist, double stationTheta) |
|
virtual | ~MdtChamberGeometry ()=default |
|
void | init () |
|
void | setGeometry (unsigned int nml, unsigned int nlay, unsigned int ntubesml0, unsigned int ntubesml1, const LocVec2D &tube0ml0, const LocVec2D &tube0ml1, double tubeDist, double tubeStage, double layDist, double stationTheta) |
|
unsigned int | nml () const |
|
unsigned int | nlay () const override |
|
unsigned int | ntubesml0 () const |
|
unsigned int | ntubesml1 () const |
|
const Identifier & | stationId () const override |
|
const LocVec2D & | firstTubeMl0 () const |
|
const LocVec2D & | firstTubeMl1 () const |
|
double | tubeDist () const |
|
double | tubeStage () const |
|
double | layerDist () const |
|
double | stationTheta () const override |
|
double | tubeRadius () const override |
|
LocVec2D | tubePosition (unsigned int ml, unsigned int lay, unsigned int tube) const override |
|
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...
|
|
void | tubesPassedByLine (const Line &line, int ml, DCVec &crossedTubes) const |
| methods taking reference to output vector to reduce memory usage More...
|
|
void | tubesPassedByLine (const Line &line, DCVec &crossedTubes) const |
|
void | isSecondMultiLayer (bool isSecond) |
| set that this is the second multi layer instead of the first, used in case the first ML is dead More...
|
|
bool | validGeometry () const override |
|
void | print (MsgStream &msg) const override |
|
bool | validId (unsigned int ml, unsigned int lay, unsigned int tube) const |
|
|
double | xPosTube (unsigned int ml, unsigned int lay, unsigned int tube) const |
|
double | yPosTube (unsigned int ml, unsigned int lay) const |
|
Definition at line 18 of file MdtChamberGeometry.h.
◆ MdtChamberGeometry() [1/2]
TrkDriftCircleMath::MdtChamberGeometry::MdtChamberGeometry |
( |
| ) |
|
◆ MdtChamberGeometry() [2/2]
TrkDriftCircleMath::MdtChamberGeometry::MdtChamberGeometry |
( |
const Identifier & |
id, |
|
|
const Muon::IMuonIdHelperSvc * |
idHelperSvc, |
|
|
unsigned int |
nml, |
|
|
unsigned int |
nlay, |
|
|
unsigned int |
ntubesml0, |
|
|
unsigned int |
ntubesml1, |
|
|
const LocVec2D & |
tube0ml0, |
|
|
const LocVec2D & |
tube0ml1, |
|
|
double |
tubeDist, |
|
|
double |
tubeStage, |
|
|
double |
layDist, |
|
|
double |
stationTheta |
|
) |
| |
◆ ~MdtChamberGeometry()
virtual TrkDriftCircleMath::MdtChamberGeometry::~MdtChamberGeometry |
( |
| ) |
|
|
virtualdefault |
◆ firstTubeMl0()
const LocVec2D& TrkDriftCircleMath::MdtChamberGeometry::firstTubeMl0 |
( |
| ) |
const |
|
inline |
◆ firstTubeMl1()
const LocVec2D& TrkDriftCircleMath::MdtChamberGeometry::firstTubeMl1 |
( |
| ) |
const |
|
inline |
◆ init()
void TrkDriftCircleMath::MdtChamberGeometry::init |
( |
| ) |
|
◆ isSecondMultiLayer()
void TrkDriftCircleMath::MdtChamberGeometry::isSecondMultiLayer |
( |
bool |
isSecond | ) |
|
|
inline |
set that this is the second multi layer instead of the first, used in case the first ML is dead
Definition at line 61 of file MdtChamberGeometry.h.
◆ layerDist()
double TrkDriftCircleMath::MdtChamberGeometry::layerDist |
( |
| ) |
const |
|
inline |
◆ nlay()
unsigned int TrkDriftCircleMath::MdtChamberGeometry::nlay |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ nml()
unsigned int TrkDriftCircleMath::MdtChamberGeometry::nml |
( |
| ) |
const |
|
inline |
◆ ntubesml0()
unsigned int TrkDriftCircleMath::MdtChamberGeometry::ntubesml0 |
( |
| ) |
const |
|
inline |
◆ ntubesml1()
unsigned int TrkDriftCircleMath::MdtChamberGeometry::ntubesml1 |
( |
| ) |
const |
|
inline |
◆ print()
void TrkDriftCircleMath::MdtChamberGeometry::print |
( |
MsgStream & |
msg | ) |
const |
|
overridevirtual |
◆ setGeometry()
void TrkDriftCircleMath::MdtChamberGeometry::setGeometry |
( |
unsigned int |
nml, |
|
|
unsigned int |
nlay, |
|
|
unsigned int |
ntubesml0, |
|
|
unsigned int |
ntubesml1, |
|
|
const LocVec2D & |
tube0ml0, |
|
|
const LocVec2D & |
tube0ml1, |
|
|
double |
tubeDist, |
|
|
double |
tubeStage, |
|
|
double |
layDist, |
|
|
double |
stationTheta |
|
) |
| |
Definition at line 33 of file MdtChamberGeometry.cxx.
48 if (m_nml < 1 || m_nml > 2)
49 THROW_EXCEPTION(
"MdtChamberGeometry::setGeometry() - got called with nml="<<
m_nml<<
" which is definitely out of range.");
50 if (m_nlay < 1 || m_nlay > 4)
51 THROW_EXCEPTION(
"MdtChamberGeometry::setGeometry() - got called with nlay="<<
m_nlay<<
" which is definitely out of range");
52 if (ntubesml0 < 1 || ntubesml0 > maxNTubesPerLayer)
53 THROW_EXCEPTION(
"MdtChamberGeometry::setGeometry() - got called with ntubesml0="<<
ntubesml0<<
" which is definitely out of range");
56 THROW_EXCEPTION(
"MdtChamberGeometry::setGeometry() - got called with ntubesml1="<<
ntubesml1<<
" which is definitely out of range");
◆ stationId()
const Identifier& TrkDriftCircleMath::MdtChamberGeometry::stationId |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ stationTheta()
double TrkDriftCircleMath::MdtChamberGeometry::stationTheta |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ tubeDist()
double TrkDriftCircleMath::MdtChamberGeometry::tubeDist |
( |
| ) |
const |
|
inline |
◆ tubePosition()
LocVec2D TrkDriftCircleMath::MdtChamberGeometry::tubePosition |
( |
unsigned int |
ml, |
|
|
unsigned int |
lay, |
|
|
unsigned int |
tube |
|
) |
| const |
|
overridevirtual |
◆ tubeRadius()
double TrkDriftCircleMath::MdtChamberGeometry::tubeRadius |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ tubesPassedByLine() [1/4]
DCVec TrkDriftCircleMath::MdtChamberGeometry::tubesPassedByLine |
( |
const Line & |
line | ) |
const |
|
inlineoverridevirtual |
◆ tubesPassedByLine() [2/4]
void TrkDriftCircleMath::MdtChamberGeometry::tubesPassedByLine |
( |
const Line & |
line, |
|
|
DCVec & |
crossedTubes |
|
) |
| const |
|
inline |
◆ tubesPassedByLine() [3/4]
DCVec TrkDriftCircleMath::MdtChamberGeometry::tubesPassedByLine |
( |
const Line & |
line, |
|
|
int |
ml |
|
) |
| const |
◆ tubesPassedByLine() [4/4]
void TrkDriftCircleMath::MdtChamberGeometry::tubesPassedByLine |
( |
const Line & |
line, |
|
|
int |
ml, |
|
|
DCVec & |
crossedTubes |
|
) |
| const |
methods taking reference to output vector to reduce memory usage
Definition at line 99 of file MdtChamberGeometry.cxx.
100 crossedTubes.reserve(50);
101 ResidualWithLine resLine{
line};
102 const LocVec2D& linepos =
line.position();
103 const LocVec2D& linedir =
line.direction();
104 double dxdy = std::abs(linedir.y()) > 0.0001 ? linedir.x() / linedir.y() : linedir.x() / 0.0001;
105 for (
unsigned int ml = 0; ml <
m_nml; ++ml) {
110 if (inMultilayer != -1 && inMultilayer != (
int)ml) {
continue; }
111 for (
unsigned int lay = 0; lay <
m_nlay; ++lay) {
113 double xfirsttube =
xPosTube(ml, lay, 0);
114 double xintersect = dxdy * (ylay - linepos.y()) + linepos.x();
115 double relpos = (xintersect - xfirsttube) /
m_tubeDist;
116 int ctube = (
int)relpos;
117 if (ctube < 0) ctube = 0;
120 if (inMultilayer != -1)
122 for (
int i = ctube - 1;
i >= 0; --
i) {
124 double res = resLine.residual(lp);
140 double res = resLine.residual(lp);
◆ tubeStage()
double TrkDriftCircleMath::MdtChamberGeometry::tubeStage |
( |
| ) |
const |
|
inline |
◆ validGeometry()
bool TrkDriftCircleMath::MdtChamberGeometry::validGeometry |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ validId()
bool TrkDriftCircleMath::MdtChamberGeometry::validId |
( |
unsigned int |
ml, |
|
|
unsigned int |
lay, |
|
|
unsigned int |
tube |
|
) |
| const |
◆ xPosTube()
double TrkDriftCircleMath::MdtChamberGeometry::xPosTube |
( |
unsigned int |
ml, |
|
|
unsigned int |
lay, |
|
|
unsigned int |
tube |
|
) |
| const |
|
inlineprivate |
◆ yPosTube()
double TrkDriftCircleMath::MdtChamberGeometry::yPosTube |
( |
unsigned int |
ml, |
|
|
unsigned int |
lay |
|
) |
| const |
|
private |
◆ m_firstTube
std::vector<LocVec2D> TrkDriftCircleMath::MdtChamberGeometry::m_firstTube {} |
|
private |
◆ m_id
Identifier TrkDriftCircleMath::MdtChamberGeometry::m_id {} |
|
private |
◆ m_isBarrel
bool TrkDriftCircleMath::MdtChamberGeometry::m_isBarrel {false} |
|
private |
◆ m_isSecondMultiLayer
bool TrkDriftCircleMath::MdtChamberGeometry::m_isSecondMultiLayer {false} |
|
private |
◆ m_layDist
double TrkDriftCircleMath::MdtChamberGeometry::m_layDist {0} |
|
private |
◆ m_nlay
unsigned int TrkDriftCircleMath::MdtChamberGeometry::m_nlay {0} |
|
private |
◆ m_nml
unsigned int TrkDriftCircleMath::MdtChamberGeometry::m_nml {0} |
|
private |
◆ m_ntubesml
std::vector<unsigned int> TrkDriftCircleMath::MdtChamberGeometry::m_ntubesml {} |
|
private |
◆ m_sMdt
bool TrkDriftCircleMath::MdtChamberGeometry::m_sMdt {false} |
|
private |
◆ m_stationTheta
double TrkDriftCircleMath::MdtChamberGeometry::m_stationTheta {0} |
|
private |
◆ m_tubeDist
double TrkDriftCircleMath::MdtChamberGeometry::m_tubeDist {0} |
|
private |
◆ m_tubeRad
double TrkDriftCircleMath::MdtChamberGeometry::m_tubeRad {0} |
|
private |
◆ m_tubeStage
double TrkDriftCircleMath::MdtChamberGeometry::m_tubeStage {0} |
|
private |
◆ m_validGeometry
bool TrkDriftCircleMath::MdtChamberGeometry::m_validGeometry {false} |
|
private |
◆ m_wasInit
std::vector<bool> TrkDriftCircleMath::MdtChamberGeometry::m_wasInit {} |
|
private |
The documentation for this class was generated from the following files:
void print(MsgStream &msg) const override
virtual bool issMdt(const Identifier &id) const =0
returns whether this is a sMDT Identifier or not
bool m_isSecondMultiLayer
double yPosTube(unsigned int ml, unsigned int lay) const
unsigned int ntubesml1() const
std::vector< unsigned int > m_ntubesml
IMessageSvc * getMessageSvc(bool quiet=false)
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.
std::vector< DriftCircle > DCVec
unsigned int ntubesml0() const
std::vector< LocVec2D > m_firstTube
std::pair< std::vector< unsigned int >, bool > res
double stationTheta() const override
std::vector< bool > m_wasInit
double xPosTube(unsigned int ml, unsigned int lay, unsigned int tube) const
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
bool isBarrel(const Identifier &id) const
#define THROW_EXCEPTION(MESSAGE)
void setGeometry(unsigned int nml, unsigned int nlay, unsigned int ntubesml0, unsigned int ntubesml1, const LocVec2D &tube0ml0, const LocVec2D &tube0ml1, double tubeDist, double tubeStage, double layDist, double stationTheta)
DCVec tubesPassedByLine(const Line &line, int ml) const
@ EmptyTube
drift time too large to be compatible with drift spectrum
LocVec2D tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const override
unsigned int nlay() const override
bool validId(unsigned int ml, unsigned int lay, unsigned int tube) const