ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkTools
TrkAmbiguityProcessor
src
AmbiguityProcessorUtility.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
AmbiguityProcessorUtility.h
"
6
#include "
AthContainers/DataVector.h
"
7
#include "
TrkTrack/TrackStateOnSurface.h
"
8
#include "
TrkEventPrimitives/FitQuality.h
"
9
#include "
TrkTrack/TrackInfo.h
"
10
#include "
TrkTrack/Track.h
"
11
12
13
namespace
AmbiguityProcessor
{
14
TrackFilterCategory
15
categoriseTrack
(
const
Trk::Track
& track,
const
Trk::TrackScore
& score,
const
bool
dropDuplicates,
const
AssociationTool
& associate,
AssociationMap
&
map
,
DuplicationCheckSet
&
set
){
16
if
(score == 0)
return
TrackFilterCategory::ScoreIsZero
;
17
if
(dropDuplicates){
18
if
(
const
auto
& [p, uniqueTrack] =
set
.insert(associate->getPrdsOnTrack(
map
, track)); not uniqueTrack)
return
TrackFilterCategory::TrackIsDuplicate
;
19
}
20
return
TrackFilterCategory::TrackAccepted
;
21
}
22
//
23
float
24
calculateFitQuality
(
const
Trk::Track
& track){
25
float
result{0.0};
26
if
(
const
auto
*
const
quality=track.fitQuality(); quality and quality->numberDoF()>0 ){
27
result = quality->chiSquared()/quality->numberDoF();
28
}
29
return
result;
30
}
31
//
32
std::unique_ptr<Trk::Track>
33
createNewFitQualityTrack
(
const
Trk::Track
& track){
34
double
reXi2 = 0.;
35
int
nDF = 0;
36
const
Trk::TrackStates
* tsos = track.trackStateOnSurfaces();
37
auto
vecTsos = std::make_unique<Trk::TrackStates>();
38
// loop over TSOS, copy TSOS and push into vector
39
Trk::TrackStates::const_iterator
iTsos = tsos->
begin
();
40
Trk::TrackStates::const_iterator
iTsosEnd = tsos->
end
();
41
for
( ; iTsos != iTsosEnd ; ++iTsos) {
42
const
Trk::TrackStateOnSurface
* newTsos =
new
Trk::TrackStateOnSurface
(**iTsos);
43
vecTsos->push_back(newTsos);
44
if
((*iTsos)->type(
Trk::TrackStateOnSurface::Measurement
)){
//Get the chi2 and number of hits
45
if
((*iTsos)->fitQualityOnSurface()) {
46
reXi2 += (*iTsos)->fitQualityOnSurface().chiSquared();
47
nDF += (*iTsos)->fitQualityOnSurface().numberDoF();
48
}
49
}
50
}
51
auto
fq = std::make_unique<Trk::FitQuality>(reXi2,nDF-5);
52
Trk::TrackInfo
info;
53
info.addPatternRecoAndProperties(track.info());
54
Trk::TrackInfo
newInfo;
55
newInfo.
setPatternRecognitionInfo
(
Trk::TrackInfo::SimpleAmbiguityProcessorTool
);
56
info.addPatternReco(newInfo);
57
return
std::make_unique<Trk::Track>(info, std::move(vecTsos), std::move(fq));
58
}
59
//
60
int
getUid
() {
61
static
std::atomic<std::uint32_t> uid { 0 };
62
return
++uid;
63
}
64
65
}
AmbiguityProcessorUtility.h
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
FitQuality.h
TrackStateOnSurface.h
TrackInfo.h
Track.h
DataVector< const Trk::TrackStateOnSurface >::const_iterator
DataModel_detail::const_iterator< DataVector > const_iterator
Definition
DataVector.h:838
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Trk::TrackInfo
Contains information about the 'fitter' of this track.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:32
Trk::TrackInfo::setPatternRecognitionInfo
void setPatternRecognitionInfo(const TrackPatternRecoInfo &patternReco)
Method setting the pattern recognition algorithm.
Trk::TrackInfo::SimpleAmbiguityProcessorTool
@ SimpleAmbiguityProcessorTool
Added because of compilation problems.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:156
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition
TrackStateOnSurface.h:71
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition
TrackStateOnSurface.h:101
Trk::Track
The ATLAS Track class.
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
map
STL class.
set
STL class.
AmbiguityProcessor
Definition
AmbiguityProcessorUtility.cxx:13
AmbiguityProcessor::AssociationMap
Trk::PRDtoTrackMap AssociationMap
Definition
AmbiguityProcessorUtility.h:26
AmbiguityProcessor::DuplicationCheckSet
std::set< std::vector< const Trk::PrepRawData * > > DuplicationCheckSet
Definition
AmbiguityProcessorUtility.h:27
AmbiguityProcessor::TrackFilterCategory
TrackFilterCategory
Definition
AmbiguityProcessorUtility.h:24
AmbiguityProcessor::TrackAccepted
@ TrackAccepted
Definition
AmbiguityProcessorUtility.h:24
AmbiguityProcessor::TrackIsDuplicate
@ TrackIsDuplicate
Definition
AmbiguityProcessorUtility.h:24
AmbiguityProcessor::ScoreIsZero
@ ScoreIsZero
Definition
AmbiguityProcessorUtility.h:24
AmbiguityProcessor::categoriseTrack
TrackFilterCategory categoriseTrack(const Trk::Track &track, const Trk::TrackScore &score, const bool dropDuplicates, const AssociationTool &associate, AssociationMap &map, DuplicationCheckSet &set)
Definition
AmbiguityProcessorUtility.cxx:15
AmbiguityProcessor::getUid
int getUid()
Definition
AmbiguityProcessorUtility.cxx:60
AmbiguityProcessor::calculateFitQuality
float calculateFitQuality(const Trk::Track &track)
Definition
AmbiguityProcessorUtility.cxx:24
AmbiguityProcessor::AssociationTool
ToolHandle< Trk::IPRDtoTrackMapTool > AssociationTool
Definition
AmbiguityProcessorUtility.h:25
AmbiguityProcessor::createNewFitQualityTrack
std::unique_ptr< Trk::Track > createNewFitQualityTrack(const Trk::Track &track)
Definition
AmbiguityProcessorUtility.cxx:33
Trk::TrackScore
float TrackScore
Definition
TrackScore.h:10
Trk::TrackStates
DataVector< const Trk::TrackStateOnSurface > TrackStates
Definition
Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:30
Generated on
for ATLAS Offline Software by
1.17.0