![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
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 std::runtime_error(
50 Form(
"File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with nml=%d which is definitely out of range",
51 __FILE__, __LINE__,
m_nml));
52 if (m_nlay < 1 || m_nlay > 4)
53 throw std::runtime_error(
54 Form(
"File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with nlay=%d which is definitely out of range",
55 __FILE__, __LINE__,
m_nlay));
56 if (ntubesml0 < 1 || ntubesml0 > maxNTubesPerLayer)
57 throw std::runtime_error(Form(
58 "File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with ntubesml0=%d which is definitely out of range",
62 throw std::runtime_error(Form(
63 "File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with ntubesml1=%d 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 111 of file MdtChamberGeometry.cxx.
112 crossedTubes.reserve(50);
113 ResidualWithLine resLine{
line};
114 const LocVec2D& linepos =
line.position();
115 const LocVec2D& linedir =
line.direction();
116 double dxdy = std::abs(linedir.y()) > 0.0001 ? linedir.x() / linedir.y() : linedir.x() / 0.0001;
117 for (
unsigned int ml = 0; ml <
m_nml; ++ml) {
122 if (inMultilayer != -1 && inMultilayer != (
int)ml) {
continue; }
123 for (
unsigned int lay = 0; lay <
m_nlay; ++lay) {
125 double xfirsttube =
xPosTube(ml, lay, 0);
126 double xintersect = dxdy * (ylay - linepos.y()) + linepos.x();
127 double relpos = (xintersect - xfirsttube) /
m_tubeDist;
128 int ctube = (
int)relpos;
129 if (ctube < 0) ctube = 0;
132 if (inMultilayer != -1)
134 for (
int i = ctube - 1;
i >= 0; --
i) {
136 double res = resLine.residual(lp);
152 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
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