ATLAS Offline Software
Loading...
Searching...
No Matches
PFMatchDistance.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5/*
6 * PFMatchDistance.h
7 *
8 * Created on: 28.03.2014
9 * Author: tlodd
10 */
11
12#ifndef PFMATCHDISTANCE_H_
13#define PFMATCHDISTANCE_H_
14
16
17namespace PFMatch {
18
19class EtaPhi;
21
22/* Distance calculator classes */
23
27class EtaPhiSqDistanceCalculator: public DistanceCalculator<EtaPhi, EtaPhi> {
28public:
31
32 virtual double distanceBetween(const EtaPhi& position1, const EtaPhi& position2) const;
33};
34
38class EtaPhiSqSignificanceCalculator: public DistanceCalculator<EtaPhi, EtaPhiWithVariance> {
39public:
42
43 virtual double distanceBetween(const EtaPhi& position1, const EtaPhiWithVariance& position2) const;
44};
45
46
47/* Distance calculator factory */
48
53public:
54 static std::unique_ptr<IDistanceProvider> Get(const std::string& distanceType, std::unique_ptr<IPositionProvider> trackPosition,
55 std::unique_ptr<IPositionProvider> clusterPosition) {
56 if (distanceType == "EtaPhiSquareDistance") {
57 return std::make_unique<DistanceProvider<EtaPhi, EtaPhi> >(std::move(trackPosition), std::move(clusterPosition), std::make_unique<EtaPhiSqDistanceCalculator>());
58 } else if (distanceType == "EtaPhiSquareSignificance") {
59 return std::make_unique<DistanceProvider<EtaPhi, EtaPhiWithVariance> >(std::move(trackPosition), std::move(clusterPosition), std::make_unique<EtaPhiSqSignificanceCalculator>());
60 } else {
61 std::cerr << "DistanceFactory\tERROR\tInvalid distance type: \"" << distanceType << "\"" << std::endl;
62 assert(false);
63 return 0;
64 }
65 }
66};
67
68}
69
70#endif /* PFMATCHDISTANCE_H_ */
Factory to create IDistanceProvider of the type requested.
static std::unique_ptr< IDistanceProvider > Get(const std::string &distanceType, std::unique_ptr< IPositionProvider > trackPosition, std::unique_ptr< IPositionProvider > clusterPosition)
virtual double distanceBetween(const EtaPhi &position1, const EtaPhi &position2) const
virtual double distanceBetween(const EtaPhi &position1, const EtaPhiWithVariance &position2) const