ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonReconstruction
MuonTrackMakers
MuonTrackMakerTools
MuonTrackFinderTools
src
MuonTrackScoringTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
MuonTrackScoringTool.h
"
6
7
#include <cassert>
8
9
#include "
TrkDetElementBase/TrkDetElementBase.h
"
10
#include "
TrkEventPrimitives/FitQuality.h
"
11
#include "
TrkRIO_OnTrack/RIO_OnTrack.h
"
12
#include "
TrkTrack/Track.h
"
13
#include "
TrkTrackSummary/TrackSummary.h
"
14
15
namespace
Muon
{
16
17
MuonTrackScoringTool::MuonTrackScoringTool
(
const
std::string& t,
const
std::string& n,
const
IInterface* p) :
18
AthAlgTool
(t, n, p),
m_summaryTypeScore
(
Trk
::numberOfTrackSummaryTypes) {
19
declareInterface<Trk::ITrackScoringTool>(
this
);
20
21
// set some test values
22
m_summaryTypeScore
[
Trk::numberOfPixelHits
] = 20;
23
m_summaryTypeScore
[
Trk::numberOfPixelHoles
] = -10;
// a hole is bad
24
25
m_summaryTypeScore
[
Trk::numberOfInnermostPixelLayerHits
] = 10;
// addition for being b-layer
26
27
m_summaryTypeScore
[
Trk::numberOfGangedPixels
] = -5;
// decrease for being ganged
28
29
m_summaryTypeScore
[
Trk::numberOfSCTHits
] = 10;
// half of a pixel, since only 1dim
30
m_summaryTypeScore
[
Trk::numberOfSCTHoles
] = -5;
// a hole is bad !
31
32
m_summaryTypeScore
[
Trk::numberOfTRTHits
] = 2;
// 5 straws ~ 1 SCT
33
m_summaryTypeScore
[
Trk::numberOfTRTHighThresholdHits
] = 1;
// addition for being TR
34
m_summaryTypeScore
[
Trk::numberOfOutliersOnTrack
] = -2;
// an outlier might happen
35
36
// scoring for Muons is missing
37
m_summaryTypeScore
[
Trk::numberOfMdtHits
] = 5;
38
m_summaryTypeScore
[
Trk::numberOfTgcPhiHits
] = 5;
39
m_summaryTypeScore
[
Trk::numberOfTgcEtaHits
] = 5;
40
m_summaryTypeScore
[
Trk::numberOfCscPhiHits
] = 5;
41
m_summaryTypeScore
[
Trk::numberOfCscEtaHits
] = 5;
42
m_summaryTypeScore
[
Trk::numberOfRpcPhiHits
] = 5;
43
m_summaryTypeScore
[
Trk::numberOfRpcEtaHits
] = 5;
44
// New Small Wheel
45
m_summaryTypeScore
[
Trk::numberOfStgcPhiHits
] = 5;
46
m_summaryTypeScore
[
Trk::numberOfStgcEtaHits
] = 5;
47
m_summaryTypeScore
[
Trk::numberOfMmHits
] = 5;
48
}
49
50
StatusCode
MuonTrackScoringTool::initialize
() {
51
ATH_CHECK
(
m_trkSummaryTool
.retrieve());
52
ATH_MSG_DEBUG
(
"Retrieved tool "
<<
m_trkSummaryTool
);
53
54
return
StatusCode::SUCCESS;
55
}
56
57
Trk::TrackScore
MuonTrackScoringTool::score
(
const
Trk::Track
& track,
bool
/*checkBasicSel*/
)
const
{
58
Trk::TrackScore
score
;
59
const
Trk::TrackSummary
* summary = track.trackSummary();
60
if
(summary) {
61
score
=
simpleScore
(track, *summary);
62
}
else
{
63
// This is potentially slow, so might need revisiting.
64
std::unique_ptr<Trk::TrackSummary> tmpSummary =
65
m_trkSummaryTool
->summaryNoHoleSearch(Gaudi::Hive::currentContext(), track);
66
score
=
simpleScore
(track, *tmpSummary);
67
}
68
return
score
;
69
}
70
71
Trk::TrackScore
MuonTrackScoringTool::simpleScore
(
const
Trk::Track
& track,
const
Trk::TrackSummary
& trackSummary)
const
{
72
// --- reject bad tracks
73
if
(track.fitQuality() && track.fitQuality()->numberDoF() < 0) {
74
ATH_MSG_VERBOSE
(
"numberDoF < 0, reject it"
);
75
return
Trk::TrackScore
(0);
76
}
77
78
ATH_MSG_DEBUG
(
m_printer
->print(track));
79
80
// --- now start scoring
81
Trk::TrackScore
score
(200);
// score of 100 per track
82
83
// --- prob(chi2,NDF), protect for chi2<0
84
if
(track.fitQuality() !=
nullptr
&& track.fitQuality()->chiSquared() > 0 && track.fitQuality()->numberDoF() > 0) {
85
score
+= 5 * track.fitQuality()->numberDoF() - track.fitQuality()->chiSquared();
86
}
87
88
// --- summary score analysis
89
for
(
int
i = 0; i <
Trk::numberOfTrackSummaryTypes
; ++i) {
90
int
value = trackSummary.
get
(
static_cast<
Trk::SummaryType
>
(i));
91
// value is -1 if undefined.
92
if
(value > 0) {
93
score
+=
m_summaryTypeScore
[i] * value;
94
ATH_MSG_VERBOSE
(
"\tType ["
<< i <<
"], value \t= "
<< value <<
"], score \t="
<<
score
);
95
}
96
}
97
if
(
score
== 0)
98
score
=
99
0.000001;
// since 0 is the bad track score; you'd have to get very unlucky to get a score of exactly 0 but it can happen
100
ATH_MSG_DEBUG
(
" Track Score "
<<
score
);
101
102
return
score
;
103
}
104
}
// namespace Muon
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
FitQuality.h
MuonTrackScoringTool.h
RIO_OnTrack.h
TrackSummary.h
Track.h
TrkDetElementBase.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
Muon::MuonTrackScoringTool::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
Definition
MuonTrackScoringTool.h:43
Muon::MuonTrackScoringTool::m_trkSummaryTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trkSummaryTool
Definition
MuonTrackScoringTool.h:42
Muon::MuonTrackScoringTool::MuonTrackScoringTool
MuonTrackScoringTool(const std::string &, const std::string &, const IInterface *)
Definition
MuonTrackScoringTool.cxx:17
Muon::MuonTrackScoringTool::simpleScore
virtual Trk::TrackScore simpleScore(const Trk::Track &track, const Trk::TrackSummary &trackSummary) const override
create a score based on how good the passed TrackSummary is
Definition
MuonTrackScoringTool.cxx:71
Muon::MuonTrackScoringTool::m_summaryTypeScore
std::vector< Trk::TrackScore > m_summaryTypeScore
holds the scores assigned to each Trk::SummaryType from the track's Trk::TrackSummary
Definition
MuonTrackScoringTool.h:47
Muon::MuonTrackScoringTool::score
virtual Trk::TrackScore score(const Trk::Track &track, bool checkBasicSel) const override
create a score based on how good the passed track is
Definition
MuonTrackScoringTool.cxx:57
Muon::MuonTrackScoringTool::initialize
virtual StatusCode initialize() override
Definition
MuonTrackScoringTool.cxx:50
Trk::TrackSummary
A summary of the information contained by a track.
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:287
Trk::TrackSummary::get
int get(const SummaryType &type) const
returns the summary information for the passed SummaryType.
Trk::Track
The ATLAS Track class.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition
TrackSystemController.h:46
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::TrackScore
float TrackScore
Definition
TrackScore.h:10
Trk::SummaryType
SummaryType
enumerates the different types of information stored in Summary.
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:45
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
Trk::numberOfTgcPhiHits
@ numberOfTgcPhiHits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:105
Trk::numberOfGangedPixels
@ numberOfGangedPixels
number of Ganged Pixels flagged as fakes
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:61
Trk::numberOfTgcEtaHits
@ numberOfTgcEtaHits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:106
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
Trk::numberOfRpcEtaHits
@ numberOfRpcEtaHits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:110
Trk::numberOfCscEtaHits
@ numberOfCscEtaHits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:108
Trk::numberOfTrackSummaryTypes
@ numberOfTrackSummaryTypes
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:189
Trk::numberOfMmHits
@ numberOfMmHits
number of TGC Eta measurements missing from the track
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:132
Trk::numberOfStgcEtaHits
@ numberOfStgcEtaHits
number of TGC Eta measurements missing from the track
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:128
Trk::numberOfCscPhiHits
@ numberOfCscPhiHits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:107
Trk::numberOfRpcPhiHits
@ numberOfRpcPhiHits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:109
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
Trk::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:53
Trk::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:87
Trk::numberOfMdtHits
@ numberOfMdtHits
number of mdt hits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:103
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
Trk::numberOfStgcPhiHits
@ numberOfStgcPhiHits
number of TGC Phi measurements missing from the track
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:130
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
Trk::numberOfOutliersOnTrack
@ numberOfOutliersOnTrack
100 times the standard deviation of the chi2 from the surfaces
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:148
Generated on
for ATLAS Offline Software by
1.17.0