ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetRecTools
TRT_DriftCircleOnTrackTool
src
TRT_DriftCircleOnTrackUniversalTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// Implementation file for class TRT_DriftCircleOnTrackUniversalTool
8
// (c) ATLAS Detector software
10
// AlgTool used for TRT_DriftCircleOnTrack object production
12
13
14
#include "
TRT_DriftCircleOnTrackTool/TRT_DriftCircleOnTrackUniversalTool.h
"
15
#include "
InDetRIO_OnTrack/TRT_DriftCircleOnTrack.h
"
16
18
// Constructor
20
21
InDet::TRT_DriftCircleOnTrackUniversalTool::TRT_DriftCircleOnTrackUniversalTool
22
(
const
std::string& ty,
const
std::string& na,
const
IInterface* pa)
23
:
AthAlgTool
(ty,na,pa)
24
{
25
declareInterface<IRIO_OnTrackCreator>(
this
);
26
}
27
29
// Destructor
31
32
InDet::TRT_DriftCircleOnTrackUniversalTool::~TRT_DriftCircleOnTrackUniversalTool
()=
default
;
33
35
// Initialisation
37
38
StatusCode
InDet::TRT_DriftCircleOnTrackUniversalTool::initialize
()
39
{
40
StatusCode
sc
= AlgTool::initialize();
41
42
if
(
m_riontrackTube
.retrieve().isFailure()){
43
msg
(MSG::FATAL) <<
"Failed to retrieve tool "
<<
m_riontrackTube
<<
endmsg
;
44
return
StatusCode::FAILURE;
45
}
46
47
if
(
m_riontrackDrift
.retrieve().isFailure()){
48
msg
(MSG::FATAL) <<
"Failed to retrieve tool "
<<
m_riontrackDrift
<<
endmsg
;
49
return
StatusCode::FAILURE;
50
}
51
52
return
sc
;
53
}
54
56
// Finalize
58
59
StatusCode
InDet::TRT_DriftCircleOnTrackUniversalTool::finalize
()
60
{
61
StatusCode
sc
= AlgTool::finalize();
return
sc
;
62
}
63
65
// Trk::TRT_DriftCircleOnTrack production
67
68
Trk::RIO_OnTrack
*
InDet::TRT_DriftCircleOnTrackUniversalTool::correct
69
(
const
Trk::PrepRawData
& rio,
const
Trk::TrackParameters
& TP,
const
EventContext& ctx)
const
70
{
71
const
InDet::TRT_DriftCircle
* DC =
dynamic_cast<
const
InDet::TRT_DriftCircle
*
>
(&rio);
72
if
(!DC)
return
nullptr
;
73
74
Trk::RIO_OnTrack
*rot=
nullptr
;
75
76
//now decide about tube or precision hit
77
78
double
error2 =
m_scalefactor
*DC->
localCovariance
()(
Trk::driftRadius
,
Trk::driftRadius
);
79
double
driftradius = DC->
localPosition
()[
Trk::driftRadius
];
80
double
distance2 = fabs(TP.parameters()[0])-driftradius; distance2 *= distance2;
81
82
83
if
(distance2 > error2){
84
//tube hit
85
rot=
m_riontrackTube
->correct(rio,TP,ctx);
86
}
else
{
87
//precision hit
88
rot=
m_riontrackDrift
->correct(rio,TP,ctx);
89
}
90
91
return
rot;
92
}
93
94
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
TRT_DriftCircleOnTrackUniversalTool.h
TRT_DriftCircleOnTrack.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition
AthCommonMsg.h:24
InDet::TRT_DriftCircleOnTrackUniversalTool::m_scalefactor
DoubleProperty m_scalefactor
Definition
TRT_DriftCircleOnTrackUniversalTool.h:58
InDet::TRT_DriftCircleOnTrackUniversalTool::m_riontrackTube
ToolHandle< Trk::IRIO_OnTrackCreator > m_riontrackTube
Definition
TRT_DriftCircleOnTrackUniversalTool.h:57
InDet::TRT_DriftCircleOnTrackUniversalTool::initialize
virtual StatusCode initialize() override
Definition
TRT_DriftCircleOnTrackUniversalTool.cxx:38
InDet::TRT_DriftCircleOnTrackUniversalTool::m_riontrackDrift
ToolHandle< Trk::IRIO_OnTrackCreator > m_riontrackDrift
Definition
TRT_DriftCircleOnTrackUniversalTool.h:55
InDet::TRT_DriftCircleOnTrackUniversalTool::TRT_DriftCircleOnTrackUniversalTool
TRT_DriftCircleOnTrackUniversalTool(const std::string &, const std::string &, const IInterface *)
Definition
TRT_DriftCircleOnTrackUniversalTool.cxx:22
InDet::TRT_DriftCircleOnTrackUniversalTool::finalize
virtual StatusCode finalize() override
Definition
TRT_DriftCircleOnTrackUniversalTool.cxx:59
InDet::TRT_DriftCircleOnTrackUniversalTool::correct
virtual Trk::RIO_OnTrack * correct(const Trk::PrepRawData &, const Trk::TrackParameters &, const EventContext &ctx=Gaudi::Hive::currentContext()) const override
abstract base method for the creation of RIO_OnTrack it takes a RIO (PrepRawData) and the given Track...
Definition
TRT_DriftCircleOnTrackUniversalTool.cxx:69
InDet::TRT_DriftCircleOnTrackUniversalTool::~TRT_DriftCircleOnTrackUniversalTool
virtual ~TRT_DriftCircleOnTrackUniversalTool()
InDet::TRT_DriftCircle
Definition
TRT_DriftCircle.h:32
Trk::PrepRawData
Definition
PrepRawData.h:62
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
Trk::PrepRawData::localCovariance
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
Trk::RIO_OnTrack
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Definition
RIO_OnTrack.h:70
Trk::driftRadius
@ driftRadius
trt, straws
Definition
ParamDefs.h:53
Trk::TrackParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters
Definition
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:27
Generated on
for ATLAS Offline Software by
1.17.0