ATLAS Offline Software
Loading...
Searching...
No Matches
HGTD::StraightLineTOFcorrectionTool Class Reference

#include <StraightLineTOFcorrectionTool.h>

Inheritance diagram for HGTD::StraightLineTOFcorrectionTool:
Collaboration diagram for HGTD::StraightLineTOFcorrectionTool:

Public Member Functions

 StraightLineTOFcorrectionTool (const std::string &, const std::string &, const IInterface *)
virtual StatusCode initialize () override final
virtual std::pair< float, float > correctTimeAndResolution (const Trk::Track &track, const HGTD_Cluster &cluster, const float time_of_arrival, const float time_of_arrival_err) const override final

Private Attributes

const HGTD_DetectorManagerm_hgtd_det_mgr {nullptr}

Detailed Description

Definition at line 33 of file StraightLineTOFcorrectionTool.h.

Constructor & Destructor Documentation

◆ StraightLineTOFcorrectionTool()

HGTD::StraightLineTOFcorrectionTool::StraightLineTOFcorrectionTool ( const std::string & t,
const std::string & n,
const IInterface * p )

Definition at line 18 of file StraightLineTOFcorrectionTool.cxx.

20 : base_class(t, n, p) {}

Member Function Documentation

◆ correctTimeAndResolution()

std::pair< float, float > HGTD::StraightLineTOFcorrectionTool::correctTimeAndResolution ( const Trk::Track & track,
const HGTD_Cluster & cluster,
const float time_of_arrival,
const float time_of_arrival_err ) const
finaloverridevirtual

Definition at line 32 of file StraightLineTOFcorrectionTool.cxx.

34 {
35
36 ATH_MSG_DEBUG("Correcting input time: " << time_of_arrival);
37
38 // FIXME: This should work with 'globalPosition' of the cluster alone, but no
39 // det element set during P->T conversion!
40 const InDetDD::HGTD_DetectorElement* det_el =
41 m_hgtd_det_mgr->getDetectorElement(cluster.identify());
42
43 // get the distance between the track origin and the hit position
44 const Trk::Perigee* perigee = track.perigeeParameters();
45 Amg::Vector3D glob_hit_pos = det_el->globalPosition(cluster.localPosition());
46
47 float dx = glob_hit_pos.x() - perigee->position().x();
48 float dy = glob_hit_pos.y() - perigee->position().y();
49 float dz = glob_hit_pos.z() - perigee->position().z();
50
51 // compute TOF between origin and hit position
52 // FIXME define 1/c somewhere as constexpr?
53 // FIXME since this is an approximation anyway, can we use a fast sqrt?
54 float tof = std::sqrt(dx * dx + dy * dy + dz * dz) / Gaudi::Units::c_light;
55 float corrected_toa = time_of_arrival - tof;
56
57 ATH_MSG_DEBUG("Corrected time: " << corrected_toa);
58
59 // TODO
60 // the intrinsic resolution on the time of arrival needs to be combined
61 // with the impact parameter resolution and the spatial resolution of the
62 // cluster. no large impact is expected though
63
64 return {corrected_toa, time_of_arrival_err};
65}
#define ATH_MSG_DEBUG(x)
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
const Amg::Vector3D & position() const
Access method for the position.
const Amg::Vector2D & localPosition() const
return the local position reference
Identifier identify() const
return the identifier
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee

◆ initialize()

StatusCode HGTD::StraightLineTOFcorrectionTool::initialize ( )
finaloverridevirtual

Definition at line 22 of file StraightLineTOFcorrectionTool.cxx.

22 {
23
24 ATH_CHECK(AlgTool::initialize());
25
27
28 return StatusCode::SUCCESS;
29}
#define ATH_CHECK
Evaluate an expression and check for errors.
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

Member Data Documentation

◆ m_hgtd_det_mgr

const HGTD_DetectorManager* HGTD::StraightLineTOFcorrectionTool::m_hgtd_det_mgr {nullptr}
private

Definition at line 48 of file StraightLineTOFcorrectionTool.h.

48{nullptr};

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