ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigMonitoring
TrigIDR4Monitoring
src
OfflineTruthMatcher.h
Go to the documentation of this file.
1
12
13
14
#ifndef IDTPM2_OFFLINETRUTHMATCHER_H
15
#define IDTPM2_OFFLINETRUTHMATCHER_H
16
17
#include <iostream>
18
#include <cmath>
19
20
#include "
xAODTracking/TrackParticle.h
"
21
#include "
xAODTruth/TruthParticleContainer.h
"
22
23
#include "
xAODCore/AuxStoreAccessorMacros.h
"
24
#include "AthLinks/ElementLink.h"
25
26
#include "
TrigInDetAnalysis/TrackAssociator.h
"
27
#include "
TrigInDetAnalysisUtils/BestMatcher.h
"
28
29
namespace
IDTPM2
{
30
31
33
template
<
typename
T>
34
class
decorator
{
35
36
inline
static
const
SG::ConstAccessor<ElementLink<xAOD::TruthParticleContainer>
>
m_acc
= {
"truthParticleLink"
};
37
inline
static
const
SG::ConstAccessor<float>
m_probAcc
= {
"truthMatchProbability"
};
38
39
public
:
40
41
template
<
typename
Tp>
42
explicit
decorator
(
const
Tp
* t ) :
m_t
(t->template as<T>()) { }
43
44
explicit
operator
bool()
const
{
return
m_t
!=0; }
45
46
const
xAOD::TruthParticle
*
truthMatch
()
const
{
47
if
(
m_t
&&
m_acc
.isAvailable(*
m_t
) ) {
48
const
ElementLink<xAOD::TruthParticleContainer>
& link =
m_acc
(*
m_t
);
49
if
(link.isValid())
return
*link;
50
}
51
return
0;
52
}
53
54
double
discriminant
()
const
{
55
if
(
m_t
&&
m_probAcc
.isAvailable(*
m_t
) ) {
56
float
prob =
m_probAcc
(*
m_t
);
57
if
( prob )
return
std::log10(1.0/prob);
58
}
59
return
std::numeric_limits<double>::max();
60
}
61
62
private
:
63
64
const
T*
m_t
;
65
66
};
67
68
69
70
71
template
<
typename
T,
typename
R=T>
72
class
TOfflineTruthMatcher
:
public
BestMatcher
<T,R> {
73
74
public
:
75
76
TOfflineTruthMatcher
(
const
std::string& name,
double
d ) :
77
BestMatcher
<T,R>(name,
std
::log10(1.0/d)) {
78
}
79
80
virtual
~TOfflineTruthMatcher
() { }
81
82
virtual
std::unique_ptr<TIDA::Associator<T,R>>
uclone
()
const override
{
return
std::make_unique<TOfflineTruthMatcher<T,R>>(*this); }
83
84
virtual
double
distance
(
const
T*
t0
,
const
R* t1 )
const override
{
85
decorator<xAOD::TrackParticle>
tp(t1);
86
if
( tp && tp.
truthMatch
() ==
t0
->template as<xAOD::TruthParticle>() )
return
tp.
discriminant
();
87
return
std::numeric_limits<double>::max();
88
}
89
90
};
91
92
93
}
94
95
96
#endif
// IDTPM2_OFFLINETRUTHMATCHER_H
97
98
99
100
101
102
103
104
105
106
AuxStoreAccessorMacros.h
BestMatcher.h
truely generic template class of a best matching algorithm based on an efficient implementation of th...
TrackParticle.h
TruthParticleContainer.h
Tp
static Double_t Tp(Double_t *t, Double_t *par)
Definition
LArPhysWaveHECTool.cxx:354
t0
static Double_t t0
Definition
LArPhysWaveHECTool.cxx:38
TrackAssociator.h
BestMatcher< T, T >::BestMatcher
BestMatcher(const std::string &name, double d)
Definition
BestMatcher.h:61
ElementLink
ElementLink implementation for ROOT usage.
Definition
A/AthLinks/ElementLink.h:40
IDTPM2::TOfflineTruthMatcher::~TOfflineTruthMatcher
virtual ~TOfflineTruthMatcher()
Definition
OfflineTruthMatcher.h:80
IDTPM2::TOfflineTruthMatcher::distance
virtual double distance(const T *t0, const R *t1) const override
Definition
OfflineTruthMatcher.h:84
IDTPM2::TOfflineTruthMatcher::TOfflineTruthMatcher
TOfflineTruthMatcher(const std::string &name, double d)
Definition
OfflineTruthMatcher.h:76
IDTPM2::TOfflineTruthMatcher::uclone
virtual std::unique_ptr< TIDA::Associator< T, R > > uclone() const override
Definition
OfflineTruthMatcher.h:82
IDTPM2::decorator
decorates types with the truth match information
Definition
OfflineTruthMatcher.h:34
IDTPM2::decorator::decorator
decorator(const Tp *t)
Definition
OfflineTruthMatcher.h:42
IDTPM2::decorator::m_acc
static const SG::ConstAccessor< ElementLink< xAOD::TruthParticleContainer > > m_acc
Definition
OfflineTruthMatcher.h:36
IDTPM2::decorator::m_probAcc
static const SG::ConstAccessor< float > m_probAcc
Definition
OfflineTruthMatcher.h:37
IDTPM2::decorator::m_t
const T * m_t
Definition
OfflineTruthMatcher.h:64
IDTPM2::decorator::discriminant
double discriminant() const
Definition
OfflineTruthMatcher.h:54
IDTPM2::decorator::truthMatch
const xAOD::TruthParticle * truthMatch() const
Definition
OfflineTruthMatcher.h:46
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition
ConstAccessor.h:55
IDTPM2
emacs: this is -*- c++ -*-
Definition
OfflineTruthMatcher.h:29
std
STL namespace.
xAOD::TruthParticle
TruthParticle_v1 TruthParticle
Typedef to implementation.
Definition
Event/xAOD/xAODTruth/xAODTruth/TruthParticle.h:15
Generated on
for ATLAS Offline Software by
1.17.0