Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Static Public Member Functions | List of all members
Muon::MuonGetClosestParameters Class Reference

#include <MuonGetClosestParameters.h>

Collaboration diagram for Muon::MuonGetClosestParameters:

Static Public Member Functions

static double distance (const Trk::TrackParameters &pars, const Amg::Vector3D &pos)
 
static std::unique_ptr< Trk::TrackParametersclosestParameters (const Trk::Track &track, const Amg::Vector3D &pos, bool onlyUseMeasured=false)
 
static std::unique_ptr< Trk::TrackParametersclosestParameters (const Trk::Track &track, const Trk::Surface &surf, bool onlyUseMeasured=false)
 
static std::unique_ptr< Trk::TrackParametersclosestParameters (const Trk::Track &track, const Trk::TrackParameters &pars, bool onlyUseMeasured=false)
 

Detailed Description

Definition at line 14 of file MuonGetClosestParameters.h.

Member Function Documentation

◆ closestParameters() [1/3]

static std::unique_ptr<Trk::TrackParameters> Muon::MuonGetClosestParameters::closestParameters ( const Trk::Track track,
const Amg::Vector3D pos,
bool  onlyUseMeasured = false 
)
inlinestatic

Definition at line 19 of file MuonGetClosestParameters.h.

19  {
20  const DataVector<const Trk::TrackParameters>* pars = track.trackParameters();
21  if (!pars || pars->empty()) { return nullptr; }
22 
23  bool firstOk = onlyUseMeasured ? pars->front()->covariance() != nullptr : true;
24  bool lastOk = onlyUseMeasured ? pars->back()->covariance() != nullptr : true;
25 
26  const double distFront = distance(*pars->front(), pos);
27  if (distFront > 0. && firstOk) { return pars->front()->uniqueClone(); }
28 
29  const double distBack = distance(*pars->back(), pos);
30  if (distBack < 0. && lastOk) { return pars->back()->uniqueClone(); }
31 
32  bool startFront = std::abs(distFront) < distBack;
33 
34  const Trk::TrackParameters* result{nullptr}, *prevresult{nullptr};
35  if (startFront) {
36  double prevDist = distFront - 1.;
37  // loop over parameters, calculate distance
40  for (; it != it_end; ++it) {
41  if (onlyUseMeasured && !(*it)->covariance()) continue;
42 
43  double dist = distance(**it, pos);
44  // check whether dist flips sign, if this happens select either the current hit or the previous
45  if (dist > 0.) {
46  if (std::abs(dist) < std::abs(prevDist))
47  result = *it;
48  else if (it == pars->begin())
49  result = *it;
50  else
51  result = prevresult;
52  break;
53  }
54  prevDist = dist;
55  prevresult = *it;
56  }
57  } else {
58  double prevDist = distBack + 1.;
59  // loop over parameters, calculate distance
62  for (; it != it_end; ++it) {
63  if (onlyUseMeasured && !(*it)->covariance()) continue;
64 
65  const double dist = distance(**it, pos);
66  // check whether dist flips sign, if this happens select either the current hit or the previous
67  if (dist < 0.) {
68  if (std::abs(dist) < std::abs(prevDist))
69  result = *it;
70  else if (it == pars->rbegin())
71  result = *it;
72  else
73  result = prevresult;
74  break;
75  }
76  prevDist = dist;
77  prevresult = *it;
78  }
79  }
80 
81  return result ? result->uniqueClone() : nullptr;
82  }

◆ closestParameters() [2/3]

static std::unique_ptr<Trk::TrackParameters> Muon::MuonGetClosestParameters::closestParameters ( const Trk::Track track,
const Trk::Surface surf,
bool  onlyUseMeasured = false 
)
inlinestatic

Definition at line 84 of file MuonGetClosestParameters.h.

86  {
87  return closestParameters(track, surf.center(), onlyUseMeasured);
88  }

◆ closestParameters() [3/3]

static std::unique_ptr<Trk::TrackParameters> Muon::MuonGetClosestParameters::closestParameters ( const Trk::Track track,
const Trk::TrackParameters pars,
bool  onlyUseMeasured = false 
)
inlinestatic

Definition at line 90 of file MuonGetClosestParameters.h.

92  {
93  return closestParameters(track, pars.position(), onlyUseMeasured);
94  }

◆ distance()

static double Muon::MuonGetClosestParameters::distance ( const Trk::TrackParameters pars,
const Amg::Vector3D pos 
)
inlinestatic

Definition at line 16 of file MuonGetClosestParameters.h.

16  {
17  return (pars.position() - pos).dot(pars.momentum().unit());
18  }

The documentation for this class was generated from the following file:
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
get_generator_info.result
result
Definition: get_generator_info.py:21
Muon::MuonGetClosestParameters::closestParameters
static std::unique_ptr< Trk::TrackParameters > closestParameters(const Trk::Track &track, const Amg::Vector3D &pos, bool onlyUseMeasured=false)
Definition: MuonGetClosestParameters.h:19
skel.it
it
Definition: skel.GENtoEVGEN.py:407
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
Muon::MuonGetClosestParameters::distance
static double distance(const Trk::TrackParameters &pars, const Amg::Vector3D &pos)
Definition: MuonGetClosestParameters.h:16
Trk::ParametersBase
Definition: ParametersBase.h:55
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
DataVector::const_reverse_iterator
std::reverse_iterator< const_iterator > const_reverse_iterator
Standard const_reverse_iterator.
Definition: DataVector.h:846
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
xAOD::track
@ track
Definition: TrackingPrimitives.h:513