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-2024 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
static
SG::ConstAuxElement::Decorator<char>
decSelection(
"SelectedByMuonRemovalCombination"
);
15
const
static
SG::ConstAccessor<ElementLink<xAOD::TauJetContainer>
> linkAcc(
"originalTauJet"
);
16
}
17
18
namespace
CP
19
{
20
21
StatusCode
TauCombineMuonRMTausAlg::initialize
()
22
{
23
ATH_MSG_INFO
(
"Initializing "
<<
name
() <<
"..."
);
24
ANA_CHECK
(
m_tauHandle
.initialize (
m_systematicsList
));
25
ANA_CHECK
(
m_MuonRMtauHandle
.initialize (
m_systematicsList
));
26
ANA_CHECK
(
m_outputTauHandle
.initialize (
m_systematicsList
));
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
) decSelection(*tau) =
false
;
41
for
(
const
xAOD::TauJet
* tau : *muonrm_taus) decSelection(*tau) =
false
;
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
xAOD::TauJetContainer
* outputTauCont =
new
xAOD::TauJetContainer
();
45
xAOD::TauJetAuxContainer
* outputTauContAux =
new
xAOD::TauJetAuxContainer
();
46
outputTauCont->setStore(outputTauContAux);
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
decSelection(*tau) =
true
;
53
xAOD::TauJet
* newTau =
new
xAOD::TauJet
();
54
newTau->makePrivateStore(*tau);
55
if
(
linkAcc
.isAvailable(*tau)){
56
auto
link =
linkAcc
(*tau);
57
setOriginalObjectLink
(**link, *newTau);
58
}
59
else
setOriginalObjectLink
(*tau, *newTau);
60
outputTauCont->
push_back
(newTau);
61
}
62
ANA_CHECK
(
evtStore
()->record (outputTauCont,
m_outputTauHandle
.getName (sys)));
63
ANA_CHECK
(
evtStore
()->record (outputTauContAux,
m_outputTauHandle
.getName (sys) +
"Aux."
));
64
65
}
66
return
StatusCode::SUCCESS;
67
}
68
}
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition
Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:324
IParticleHelpers.h
taus
static Double_t taus
Definition
LArPhysWaveHECTool.cxx:37
TauCombineMuonRMTausAlg.h
AthCommonAlgorithm< Gaudi::Algorithm >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
Definition
AthCommonDataStore.h:85
CP::TauCombineMuonRMTausAlg::m_MuonRMtauHandle
SysReadHandle< xAOD::TauJetContainer > m_MuonRMtauHandle
Definition
TauCombineMuonRMTausAlg.h:32
CP::TauCombineMuonRMTausAlg::m_systematicsList
SysListHandle m_systematicsList
Definition
TauCombineMuonRMTausAlg.h:27
CP::TauCombineMuonRMTausAlg::m_outputTauHandle
SysWriteHandle< xAOD::TauJetContainer > m_outputTauHandle
Definition
TauCombineMuonRMTausAlg.h:36
CP::TauCombineMuonRMTausAlg::m_tauHandle
SysReadHandle< xAOD::TauJetContainer > m_tauHandle
Definition
TauCombineMuonRMTausAlg.h:28
CP::TauCombineMuonRMTausAlg::initialize
StatusCode initialize() override
Definition
TauCombineMuonRMTausAlg.cxx:21
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
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
SG::ConstAuxElement::Decorator
SG::Decorator< T, ALLOC > Decorator
class to provide type-safe access to aux data.
Definition
AuxElement.h:135
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:473
xAOD::name
name
Definition
TriggerMenuJson_v1.cxx:29
xAOD::linkAcc
static const SG::AuxElement::Accessor< std::vector< ElementLink< EventInfoContainer_v1 > > > linkAcc("subEventLink")
xAOD::TauJet
TauJet_v3 TauJet
Definition of the current "tau version".
Definition
TauJet.h:17
xAOD::TauJetAuxContainer
TauJetAuxContainer_v3 TauJetAuxContainer
Definition of the current taujet auxiliary container.
Definition
TauJetAuxContainer.h:22
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::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