ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetRecTools
InDetTrackScoringTools
src
InDetCosmicScoringTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
InDetTrackScoringTools/InDetCosmicScoringTool.h
"
6
#include "
TrkTrack/Track.h
"
7
#include "
TrkTrackSummary/TrackSummary.h
"
8
#include "
TrkEventPrimitives/FitQuality.h
"
9
#include "
TrkParameters/TrackParameters.h
"
10
#include "
InDetRIO_OnTrack/TRT_DriftCircleOnTrack.h
"
11
#include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
12
#include <vector>
13
14
//---------------------------------------------------------------------------------------------------------------------
15
16
InDet::InDetCosmicScoringTool::InDetCosmicScoringTool
(
const
std::string& t,
17
const
std::string& n,
18
const
IInterface* p ) :
19
AthAlgTool
(t,n,p)
20
{
21
declareInterface<Trk::ITrackScoringTool>(
this
);
22
}
23
24
bool
InDet::InDetCosmicScoringTool::passBasicSelections
(
const
Trk::Track
& track )
const
25
{
26
const
Trk::TrackParameters
* parm = track.trackParameters()->front();
27
if
(std::abs(parm->parameters()[
Trk::z0
]) >
m_maxZImp
) {
28
ATH_MSG_DEBUG
(
"Track Z impact > "
<<
m_maxZImp
<<
", reject it"
);
29
return
false
;
30
}
31
return
true
;
32
}
33
34
Trk::TrackScore
InDet::InDetCosmicScoringTool::score
(
const
Trk::Track
& track,
bool
/*checkBasicSel*/
)
const
35
{
36
if
(!track.trackSummary()) {
37
ATH_MSG_FATAL
(
"Track without a summary"
);
38
}
39
ATH_MSG_VERBOSE
(
"Track has TrackSummary "
<< *track.trackSummary() );
40
Trk::TrackScore
score
=
Trk::TrackScore
(
simpleScore
(track, *track.trackSummary()) );
41
ATH_MSG_DEBUG
(
"Track has Score: "
<<
score
);
42
return
score
;
43
}
44
45
//---------------------------------------------------------------------------------------------------------------------
46
47
Trk::TrackScore
InDet::InDetCosmicScoringTool::simpleScore
(
const
Trk::Track
& track,
const
Trk::TrackSummary
& trackSummary )
const
48
{
49
50
if
(
msgLvl
(MSG::VERBOSE))
msg
(MSG::VERBOSE) <<
"Summary for track: "
<< trackSummary <<
endmsg
;
51
52
if
(!track.fitQuality()){
53
msg
(MSG::WARNING) <<
"No fit quality! Track info="
<< track.info().dumpInfo() <<
endmsg
;
54
return
Trk::TrackScore
(track.measurementsOnTrack()->size());
55
}
56
else
{
57
int
pixelhits = trackSummary.
get
(
Trk::numberOfPixelHits
);
58
int
scthits = trackSummary.
get
(
Trk::numberOfSCTHits
);
59
int
trthits = trackSummary.
get
(
Trk::numberOfTRTHits
);
60
61
int
nWeightedClusters = 2 * pixelhits + scthits;
62
63
if
(
msgLvl
(MSG::VERBOSE))
msg
(MSG::VERBOSE) <<
"pixelhits: "
<< pixelhits <<
"; scthits: "
<< scthits
64
<<
"; trthits: "
<< trthits <<
"; nWeightedClusters: "
<< nWeightedClusters <<
endmsg
;
65
66
if
((nWeightedClusters >=
m_nWeightedClustersMin
) and (trthits >=
m_minTRTHits
)){
67
// calculate track score only if min number of hits
68
int
tubehits=0;
69
for
(
const
auto
*i : *track.measurementsOnTrack()){
70
if
(
dynamic_cast<
const
InDet::TRT_DriftCircleOnTrack
*
>
(i)){
71
double
error
=sqrt(i->localCovariance()(0,0));
72
if
(
error
>1) tubehits++;
73
74
75
}
76
}
77
int
hitscore = 0;
78
if
(
m_nWeightedClustersMin
> 0) hitscore = 10 * nWeightedClusters + trthits;
79
else
hitscore = 10 * (pixelhits + scthits) + trthits;
80
81
double
fitscore = 0;
82
if
(track.fitQuality()->numberDoF() > 0) fitscore = 0.0001*track.fitQuality()->chiSquared()
83
/ track.fitQuality()->numberDoF();
84
85
if
(
msgLvl
(MSG::VERBOSE))
msg
(MSG::VERBOSE) <<
"track score: "
<< hitscore - 0.25*tubehits - fitscore <<
endmsg
;
86
return
Trk::TrackScore
(hitscore - 0.25*tubehits - fitscore);
87
88
}
89
else
return
Trk::TrackScore
( 0 );
90
}
91
}
92
93
//---------------------------------------------------------------------------------------------------------------------
94
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
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
InDetCosmicScoringTool.h
TRT_DriftCircleOnTrack.h
TrackParameters.h
TrackSummary.h
Track.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition
AthCommonMsg.h:30
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition
AthCommonMsg.h:24
InDet::InDetCosmicScoringTool::passBasicSelections
virtual bool passBasicSelections(const Trk::Track &) const override
check track selections independent from TrackSummary
Definition
InDetCosmicScoringTool.cxx:24
InDet::InDetCosmicScoringTool::m_maxZImp
DoubleProperty m_maxZImp
Definition
InDetCosmicScoringTool.h:51
InDet::InDetCosmicScoringTool::m_nWeightedClustersMin
IntegerProperty m_nWeightedClustersMin
Definition
InDetCosmicScoringTool.h:47
InDet::InDetCosmicScoringTool::m_minTRTHits
IntegerProperty m_minTRTHits
Definition
InDetCosmicScoringTool.h:48
InDet::InDetCosmicScoringTool::simpleScore
virtual Trk::TrackScore simpleScore(const Trk::Track &track, const Trk::TrackSummary &trackSum) const override
create a score based on how good the passed TrackSummary is
Definition
InDetCosmicScoringTool.cxx:47
InDet::InDetCosmicScoringTool::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
InDetCosmicScoringTool.cxx:34
InDet::InDetCosmicScoringTool::InDetCosmicScoringTool
InDetCosmicScoringTool(const std::string &, const std::string &, const IInterface *)
Definition
InDetCosmicScoringTool.cxx:16
InDet::TRT_DriftCircleOnTrack
Represents 'corrected' measurements from the TRT (for example, corrected for wire sag).
Definition
TRT_DriftCircleOnTrack.h:53
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
Trk::TrackScore
float TrackScore
Definition
TrackScore.h:10
Trk::z0
@ z0
Definition
ParamDefs.h:64
Trk::TrackParameters
ParametersBase< TrackParametersDim, Charged > TrackParameters
Definition
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:27
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition
Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
error
Definition
IImpactPoint3dEstimator.h:72
Generated on
for ATLAS Offline Software by
1.17.0