ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
AnalysisCommon
AssociationUtils
Root
TauLooseMuOverlapTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// System includes
6
#include <typeinfo>
7
8
// Framework includes
9
#include "
AthContainers/ConstDataVector.h
"
10
11
// Local includes
12
#include "
AssociationUtils/TauLooseMuOverlapTool.h
"
13
14
namespace
15
{
17
const
float
GeV
= 1
e3
;
18
}
19
20
namespace
ORUtils
21
{
22
23
//---------------------------------------------------------------------------
24
// Constructor
25
//---------------------------------------------------------------------------
26
TauLooseMuOverlapTool::TauLooseMuOverlapTool
(
const
std::string& name)
27
:
BaseOverlapTool
(name)
28
{
29
declareProperty
(
"DR"
,
m_maxDR
= 0.2,
30
"Delta-R cone for flagging overlaps"
);
31
declareProperty
(
"UseRapidity"
,
m_useRapidity
=
true
,
32
"Calculate delta-R using rapidity"
);
33
declareProperty
(
"MinMuonPt"
,
m_minMuPt
= 2.*
GeV
,
34
"Minimum muon PT for rejecting taus"
);
35
declareProperty
(
"MinTauPtCombinedMuon"
,
m_minTauPtMuComb
= 50.*
GeV
,
36
"Tau PT threshold to compare to combined muons only"
);
37
}
38
39
//---------------------------------------------------------------------------
40
// Initialize
41
//---------------------------------------------------------------------------
42
StatusCode
TauLooseMuOverlapTool::initializeDerived
()
43
{
44
45
// Initialize the dR matcher
46
m_dRMatcher
= std::make_unique<DeltaRMatcher> (
m_maxDR
,
m_useRapidity
);
47
ATH_CHECK
(
m_dRMatcher
->setObjectTypes (
xAODType::ObjectType::Tau
,
xAODType::ObjectType::Muon
));
48
addSubtool(*
m_dRMatcher
);
49
50
return
StatusCode::SUCCESS;
51
}
52
53
//---------------------------------------------------------------------------
54
// Identify overlaps
55
//---------------------------------------------------------------------------
56
StatusCode
TauLooseMuOverlapTool::
57
findOverlaps
(
columnar::Particle1Range
cont1,
58
columnar::Particle2Range
cont2,
59
columnar::EventContextId
/*eventContext*/
)
const
60
{
61
// Check the container types
62
ATH_CHECK
(
checkForXAODContainer<xAOD::TauJetContainer>
(cont1,
"First container arg is not of type TauJetContainer!"
) );
63
ATH_CHECK
(
checkForXAODContainer<xAOD::MuonContainer>
(cont2,
"Second container arg is not of type MuonContainer!"
) );
64
65
ATH_CHECK
(
internalFindOverlaps
(cont1, cont2) );
66
return
StatusCode::SUCCESS;
67
}
68
69
//---------------------------------------------------------------------------
70
// Identify overlaps
71
//---------------------------------------------------------------------------
72
StatusCode
TauLooseMuOverlapTool::
73
internalFindOverlaps
(
columnar::Particle1Range
taus
,
74
columnar::Particle2Range
muons)
const
75
{
76
ATH_MSG_DEBUG
(
"Removing taus from loose muons"
);
77
auto
& acc = *
m_accessors
;
78
79
// Initialize output decorations if necessary
80
initializeDecorations
(
taus
);
81
initializeDecorations
(muons);
82
83
// Loop over loose surviving muons
84
for
(
auto
muon : muons){
85
86
// It's not obvious that I should be skipping objects that were
87
// flagged as overlap. Perhaps this deserves more thought/study.
88
if
(
isRejectedObject
(muon))
continue
;
89
if
(muon(acc.m_muPtAcc) <
m_minMuPt
)
continue
;
90
bool
isCombined = (muon(acc.m_muonTypeAcc) == xAOD::Muon::MuonType::Combined);
91
92
// Loop over surviving taus
93
for
(
auto
tau :
taus
){
94
if
(!
isSurvivingObject
(tau))
continue
;
95
96
// High-PT taus are only compared to combined muons
97
if
((tau(acc.m_tauPtAcc) >
m_minTauPtMuComb
) && !isCombined)
continue
;
98
99
// Test for overlap
100
if
(
m_dRMatcher
->objectsMatch(muon, tau)){
101
ATH_CHECK
(
handleOverlap
(tau, muon) );
102
}
103
}
104
}
105
106
return
StatusCode::SUCCESS;
107
}
108
109
}
// namespace ORUtils
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
taus
static Double_t taus
Definition
LArPhysWaveHECTool.cxx:37
GeV
#define GeV
Definition
PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
TauLooseMuOverlapTool.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
ORUtils::BaseOverlapTool::initializeDecorations
void initializeDecorations(columnar::Particle1Range container) const
Definition
BaseOverlapTool.h:142
ORUtils::BaseOverlapTool::BaseOverlapTool
BaseOverlapTool(const std::string &name)
Create proper constructor for Athena.
Definition
BaseOverlapTool.cxx:14
ORUtils::BaseOverlapTool::handleOverlap
StatusCode handleOverlap(const columnar::ObjectId< CI1, CM > &testParticle, const columnar::ObjectId< CI2, CM > &refParticle) const
Common helper method to handle an overlap result.
Definition
BaseOverlapTool.h:178
ORUtils::BaseOverlapTool::isRejectedObject
bool isRejectedObject(columnar::Particle1Id obj) const
Definition
BaseOverlapTool.h:154
ORUtils::BaseOverlapTool::isSurvivingObject
bool isSurvivingObject(columnar::Particle1Id obj) const
Definition
BaseOverlapTool.h:150
ORUtils::BaseOverlapTool::checkForXAODContainer
StatusCode checkForXAODContainer(columnar::ObjectRange< CI, CM > cont, std::string_view message) const
check whether the container is of the right type
Definition
BaseOverlapTool.h:83
ORUtils::TauLooseMuOverlapTool::m_useRapidity
bool m_useRapidity
Calculate delta-R using rapidity.
Definition
TauLooseMuOverlapTool.h:74
ORUtils::TauLooseMuOverlapTool::internalFindOverlaps
virtual StatusCode internalFindOverlaps(columnar::Particle1Range taus, columnar::Particle2Range muons) const
Identify overlapping taus and loose muons.
Definition
TauLooseMuOverlapTool.cxx:73
ORUtils::TauLooseMuOverlapTool::m_minTauPtMuComb
float m_minTauPtMuComb
Tau PT threshold to compare to combined muons only.
Definition
TauLooseMuOverlapTool.h:79
ORUtils::TauLooseMuOverlapTool::m_accessors
std::unique_ptr< Accessors > m_accessors
Definition
TauLooseMuOverlapTool.h:89
ORUtils::TauLooseMuOverlapTool::findOverlaps
virtual StatusCode findOverlaps(columnar::Particle1Range cont1, columnar::Particle2Range cont2, columnar::EventContextId eventContext) const override
Identify overlapping taus and loose muons.
Definition
TauLooseMuOverlapTool.cxx:57
ORUtils::TauLooseMuOverlapTool::m_dRMatcher
std::unique_ptr< DeltaRMatcher > m_dRMatcher
Delta-R matcher.
Definition
TauLooseMuOverlapTool.h:96
ORUtils::TauLooseMuOverlapTool::TauLooseMuOverlapTool
TauLooseMuOverlapTool(const std::string &name)
Create proper constructor for Athena.
Definition
TauLooseMuOverlapTool.cxx:26
ORUtils::TauLooseMuOverlapTool::m_maxDR
float m_maxDR
Maximum dR for objects flagged as overlap.
Definition
TauLooseMuOverlapTool.h:72
ORUtils::TauLooseMuOverlapTool::m_minMuPt
float m_minMuPt
Minimum muon PT to reject a tau.
Definition
TauLooseMuOverlapTool.h:77
ORUtils::TauLooseMuOverlapTool::initializeDerived
virtual StatusCode initializeDerived() override
Initialize the tool.
Definition
TauLooseMuOverlapTool.cxx:42
CheckAppliedSFs.e3
e3
Definition
CheckAppliedSFs.py:264
ORUtils
Definition
AltMuJetOverlapTool.h:30
columnar::EventContextId
ObjectId< EventContextDef > EventContextId
Definition
ContainerId.h:212
columnar::Particle2Range
ObjectRange< Particle2Def > Particle2Range
Definition
ParticleDef.h:50
columnar::Particle1Range
ObjectRange< Particle1Def > Particle1Range
Definition
ParticleDef.h:44
xAODType::Muon
@ Muon
The object is a muon.
Definition
ObjectType.h:48
xAODType::Tau
@ Tau
The object is a tau (jet).
Definition
ObjectType.h:49
Generated on
for ATLAS Offline Software by
1.17.0