ATLAS Offline Software
Loading...
Searching...
No Matches
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
10#include "TrkTrack/Track.h"
11
12
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 }
21 }
22 //
23 float
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>
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
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;
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}
An STL vector of pointers that by default owns its pointed-to elements.
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Contains information about the 'fitter' of this track.
void setPatternRecognitionInfo(const TrackPatternRecoInfo &patternReco)
Method setting the pattern recognition algorithm.
@ SimpleAmbiguityProcessorTool
Added because of compilation problems.
represents the track state (measurement, material, fit parameters and quality) at a surface.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
STL class.
STL class.
Trk::PRDtoTrackMap AssociationMap
std::set< std::vector< const Trk::PrepRawData * > > DuplicationCheckSet
TrackFilterCategory categoriseTrack(const Trk::Track &track, const Trk::TrackScore &score, const bool dropDuplicates, const AssociationTool &associate, AssociationMap &map, DuplicationCheckSet &set)
float calculateFitQuality(const Trk::Track &track)
ToolHandle< Trk::IPRDtoTrackMapTool > AssociationTool
std::unique_ptr< Trk::Track > createNewFitQualityTrack(const Trk::Track &track)
float TrackScore
Definition TrackScore.h:10
DataVector< const Trk::TrackStateOnSurface > TrackStates