ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Algorithms
TauAnalysisAlgorithms
Root
TauCombineMuonRMTausAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
7
8
#include <
TauAnalysisAlgorithms/TauCombineMuonRMTausAlg.h
>
9
10
#include "
xAODBase/IParticleHelpers.h
"
11
12
// unnamed namespace for helpers
13
namespace
{
14
const
SG::ConstAccessor<ElementLink<xAOD::TauJetContainer>
> linkAcc(
"originalTauJet"
);
15
}
16
17
namespace
CP
18
{
19
20
StatusCode
TauCombineMuonRMTausAlg::initialize
()
21
{
22
ANA_CHECK
(
m_tauHandle
.initialize (
m_systematicsList
));
23
ANA_CHECK
(
m_MuonRMtauHandle
.initialize (
m_systematicsList
));
24
ANA_CHECK
(
m_outputTauHandle
.initialize (
m_systematicsList
));
25
ANA_CHECK
(
m_tauSelectionDecor
.initialize (
m_systematicsList
,
m_tauHandle
));
26
ANA_CHECK
(
m_MuonRMtauSelectionDecor
.initialize (
m_systematicsList
,
m_MuonRMtauHandle
));
27
ANA_CHECK
(
m_systematicsList
.initialize());
28
return
StatusCode::SUCCESS;
29
}
30
31
32
StatusCode
TauCombineMuonRMTausAlg::execute
(
const
EventContext& ctx)
33
{
34
for
(
const
auto
& sys :
m_systematicsList
.systematicsVector())
35
{
36
const
xAOD::TauJetContainer
*
taus
=
nullptr
;
37
const
xAOD::TauJetContainer
*muonrm_taus =
nullptr
;
38
ANA_CHECK
(
m_tauHandle
.retrieve (
taus
, sys, ctx));
39
ANA_CHECK
(
m_MuonRMtauHandle
.retrieve (muonrm_taus, sys, ctx));
40
for
(
const
xAOD::TauJet
* tau : *
taus
)
m_tauSelectionDecor
.set (*tau,
false
, sys);
41
for
(
const
xAOD::TauJet
* tau : *muonrm_taus)
m_MuonRMtauSelectionDecor
.set (*tau,
false
, sys);
42
std::vector<const xAOD::TauJet*> combined_taus_vec =
TauAnalysisTools::combineTauJetsWithMuonRM
(
taus
, muonrm_taus);
43
// !shallow copy seems to break the subsequent algorithms. Deep copy is needed.
44
auto
outputTauCont = std::make_unique<xAOD::TauJetContainer>();
45
auto
outputTauContAux = std::make_unique<xAOD::TauJetAuxContainer>();
46
outputTauCont->setStore(outputTauContAux.get());
47
for
(
const
xAOD::TauJet
* tau : combined_taus_vec){
48
if
(
linkAcc
.isAvailable(*tau) && !
linkAcc
(*tau).isValid()){
49
ATH_MSG_WARNING
(
"Invalid originalTauJet link for tau with pT="
<<tau->pt());
50
continue
;
51
}
52
// both decoration handles share the same decoration name, so
53
// either can be used for taus from either input container
54
m_tauSelectionDecor
.set (*tau,
true
, sys);
55
auto
newTau = std::make_unique<xAOD::TauJet>();
56
newTau->makePrivateStore(*tau);
57
if
(
linkAcc
.isAvailable(*tau)){
58
auto
link =
linkAcc
(*tau);
59
setOriginalObjectLink
(**link, *newTau);
60
}
61
else
setOriginalObjectLink
(*tau, *newTau);
62
outputTauCont->push_back(std::move(newTau));
63
}
64
ANA_CHECK
(
m_outputTauHandle
.record (std::move (outputTauCont), std::move (outputTauContAux), sys, ctx));
65
66
}
67
return
StatusCode::SUCCESS;
68
}
69
}
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x,...)
Definition
AthMsgStreamMacros.h:46
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:325
IParticleHelpers.h
taus
static Double_t taus
Definition
LArPhysWaveHECTool.cxx:37
TauCombineMuonRMTausAlg.h
CP::TauCombineMuonRMTausAlg::m_MuonRMtauHandle
SysReadHandle< xAOD::TauJetContainer > m_MuonRMtauHandle
Definition
TauCombineMuonRMTausAlg.h:34
CP::TauCombineMuonRMTausAlg::m_systematicsList
SysListHandle m_systematicsList
Definition
TauCombineMuonRMTausAlg.h:29
CP::TauCombineMuonRMTausAlg::m_MuonRMtauSelectionDecor
SysWriteDecorHandle< char > m_MuonRMtauSelectionDecor
Definition
TauCombineMuonRMTausAlg.h:46
CP::TauCombineMuonRMTausAlg::m_outputTauHandle
SysWriteHandle< xAOD::TauJetContainer, xAOD::TauJetAuxContainer > m_outputTauHandle
Definition
TauCombineMuonRMTausAlg.h:38
CP::TauCombineMuonRMTausAlg::m_tauSelectionDecor
SysWriteDecorHandle< char > m_tauSelectionDecor
Definition
TauCombineMuonRMTausAlg.h:42
CP::TauCombineMuonRMTausAlg::m_tauHandle
SysReadHandle< xAOD::TauJetContainer > m_tauHandle
Definition
TauCombineMuonRMTausAlg.h:30
CP::TauCombineMuonRMTausAlg::initialize
StatusCode initialize() override
Definition
TauCombineMuonRMTausAlg.cxx:20
EL::AnaAlgorithm::execute
virtual::StatusCode execute()
execute this algorithm
Definition
AnaAlgorithm.cxx:315
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition
ConstAccessor.h:55
CP
Select isolated Photons, Electrons and Muons.
Definition
Control/xAODRootAccess/xAODRootAccess/TEvent.h:27
TauAnalysisTools::combineTauJetsWithMuonRM
std::vector< const xAOD::TauJet * > combineTauJetsWithMuonRM(const xAOD::TauJetContainer *taus_std, const xAOD::TauJetContainer *taus_muonRM)
combine the standard taujets container with the muon removal container
Definition
PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:557
xAOD::TauJet
TauJet_v3 TauJet
Definition of the current "tau version".
Definition
TauJet.h:17
xAOD::setOriginalObjectLink
bool setOriginalObjectLink(const IParticle &original, IParticle ©)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
Definition
IParticleHelpers.cxx:30
xAOD::linkAcc
static const SG::Accessor< std::vector< ElementLink< EventInfoContainer_v1 > > > linkAcc("subEventLink")
xAOD::TauJetContainer
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
Definition
TauJetContainer.h:17
Generated on
for ATLAS Offline Software by
1.17.0