ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
DiTauRec
src
DiTauBuilder.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
DiTauRec/DiTauBuilder.h
"
6
#include "fastjet/PseudoJet.hh"
7
8
DiTauBuilder::DiTauBuilder
(
const
std::string& name, ISvcLocator* pSvcLocator ) :
9
AthReentrantAlgorithm
( name, pSvcLocator )
10
{
11
}
12
13
14
DiTauBuilder::~DiTauBuilder
() =
default
;
15
16
17
StatusCode
DiTauBuilder::initialize
() {
18
ATH_MSG_INFO
(
"Initializing "
<< name() <<
"..."
);
19
20
// no tools allocated
21
if
(
m_tools
.empty()) {
22
ATH_MSG_ERROR
(
"no tools given!"
);
23
return
StatusCode::FAILURE;
24
}
25
26
// list allocated tools
27
ATH_CHECK
(
m_tools
.retrieve() );
28
ToolHandleArray<DiTauToolBase>
::iterator
itT =
m_tools
.begin();
29
ToolHandleArray<DiTauToolBase>
::iterator
itTE =
m_tools
.end();
30
ATH_MSG_INFO
(
"List of tools in execution sequence:"
);
31
ATH_MSG_INFO
(
"------------------------------------"
);
32
33
unsigned
int
tool_count = 0;
34
35
for
(; itT != itTE; ++itT) {
36
if
(itT->retrieve().isFailure()) {
37
ATH_MSG_WARNING
(
"Cannot find tool named <"
<< *itT <<
">"
);
38
}
else
{
39
++tool_count;
40
ATH_MSG_INFO
((*itT)->type() <<
" - "
<< (*itT)->name());
41
}
42
}
43
ATH_MSG_INFO
(
" "
);
44
ATH_MSG_INFO
(
"------------------------------------"
);
45
46
if
(tool_count == 0) {
47
ATH_MSG_ERROR
(
"could not allocate any tool!"
);
48
return
StatusCode::FAILURE;
49
}
50
51
ATH_CHECK
(
m_diTauContainerName
.initialize() );
52
ATH_CHECK
(
m_seedJetName
.initialize() );
53
54
return
StatusCode::SUCCESS;
55
}
56
57
58
StatusCode
DiTauBuilder::finalize
() {
59
ATH_MSG_INFO
(
"Finalizing "
<< name() <<
"..."
);
60
61
return
StatusCode::SUCCESS;
62
}
63
64
65
StatusCode
DiTauBuilder::execute
(
const
EventContext& ctx)
const
{
66
ATH_MSG_DEBUG
(
"Executing "
<< name() <<
"..."
);
67
68
// preparing DiTau Candidate Container and storage in DiTauData
69
70
DiTauCandidateData
rDiTauData;
71
72
auto
pContainer = std::make_unique<xAOD::DiTauJetContainer>();
73
auto
pAuxContainer = std::make_unique<xAOD::DiTauJetAuxContainer>();
74
pContainer->setStore(pAuxContainer.get());
75
76
// set properties of DiTau Candidate
77
rDiTauData.
xAODDiTau
=
nullptr
;
78
rDiTauData.
xAODDiTauContainer
= pContainer.
get
();
79
rDiTauData.
diTauAuxContainer
= pAuxContainer.get();
80
rDiTauData.
seed
=
nullptr
;
81
rDiTauData.
seedContainer
=
nullptr
;
82
83
rDiTauData.
Rjet
=
m_Rjet
;
84
rDiTauData.
Rsubjet
=
m_Rsubjet
;
85
rDiTauData.
Rcore
=
m_Rcore
;
86
87
SG::WriteHandle<xAOD::DiTauJetContainer>
diTauContainerH (
m_diTauContainerName
, ctx);
88
ATH_CHECK
( diTauContainerH.
record
(std::move (pContainer),
89
std::move (pAuxContainer)) );
90
91
// retrieve di-tau seed jets and loop over seeds
92
93
SG::ReadHandle<xAOD::JetContainer>
pSeedContainer (
m_seedJetName
, ctx);
94
95
rDiTauData.
seedContainer
= pSeedContainer.
get
();
96
97
for
(
const
auto
* seed: *pSeedContainer) {
98
ATH_MSG_DEBUG
(
"Seed pt: "
<< seed->pt() <<
" eta: "
<< seed->eta());
99
100
// seed cuts
101
if
(std::abs(seed->pt()) <
m_minPt
)
continue
;
102
if
(std::abs(seed->eta()) >
m_maxEta
)
continue
;
103
104
// cuts passed
105
rDiTauData.
seed
= seed;
106
107
// create new di-tau candidate
108
rDiTauData.
xAODDiTau
=
new
xAOD::DiTauJet
();
109
rDiTauData.
xAODDiTauContainer
->
push_back
(rDiTauData.
xAODDiTau
);
110
111
// handle di-tau candidate
112
StatusCode
sc
= StatusCode::SUCCESS;
113
for
(
const
auto
& tool:
m_tools
) {
114
sc
= tool->execute(&rDiTauData, ctx);
115
if
(
sc
.isFailure())
break
;
116
}
117
118
if
(
sc
.isSuccess()) {
119
ATH_MSG_DEBUG
(
"all tools executed successfully. Di-Tau candidate registered."
);
120
}
121
else
{
122
ATH_MSG_DEBUG
(
"seed failed a di-tau criterion. Thrown away."
);
123
rDiTauData.
xAODDiTauContainer
->
pop_back
();
124
}
125
}
126
127
// // TODO: tool finalizers needed here
128
// sc = StatusCode::SUCCESS;
129
130
rDiTauData.
xAODDiTau
=
nullptr
;
131
132
ATH_MSG_DEBUG
(
"end execute()"
);
133
return
StatusCode::SUCCESS;
134
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
DiTauBuilder.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition
AthReentrantAlgorithm.h:74
iterator
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
DataVector::pop_back
void pop_back()
Remove the last element from the collection.
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
DiTauBuilder::m_diTauContainerName
SG::WriteHandleKey< xAOD::DiTauJetContainer > m_diTauContainerName
Definition
DiTauBuilder.h:32
DiTauBuilder::m_maxEta
Gaudi::Property< float > m_maxEta
Definition
DiTauBuilder.h:38
DiTauBuilder::~DiTauBuilder
virtual ~DiTauBuilder()
DiTauBuilder::m_seedJetName
SG::ReadHandleKey< xAOD::JetContainer > m_seedJetName
Definition
DiTauBuilder.h:35
DiTauBuilder::DiTauBuilder
DiTauBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Definition
DiTauBuilder.cxx:8
DiTauBuilder::finalize
virtual StatusCode finalize() override
Definition
DiTauBuilder.cxx:58
DiTauBuilder::m_Rsubjet
Gaudi::Property< float > m_Rsubjet
Definition
DiTauBuilder.h:40
DiTauBuilder::m_Rjet
Gaudi::Property< float > m_Rjet
Definition
DiTauBuilder.h:39
DiTauBuilder::m_minPt
Gaudi::Property< float > m_minPt
Definition
DiTauBuilder.h:37
DiTauBuilder::execute
virtual StatusCode execute(const EventContext &) const override
Definition
DiTauBuilder.cxx:65
DiTauBuilder::initialize
virtual StatusCode initialize() override
Definition
DiTauBuilder.cxx:17
DiTauBuilder::m_Rcore
Gaudi::Property< float > m_Rcore
Definition
DiTauBuilder.h:41
DiTauBuilder::m_tools
ToolHandleArray< DiTauToolBase > m_tools
Definition
DiTauBuilder.h:43
DiTauCandidateData
Definition
DiTauCandidateData.h:20
DiTauCandidateData::xAODDiTauContainer
xAOD::DiTauJetContainer * xAODDiTauContainer
Definition
DiTauCandidateData.h:23
DiTauCandidateData::seed
const xAOD::Jet * seed
Definition
DiTauCandidateData.h:26
DiTauCandidateData::Rjet
float Rjet
Definition
DiTauCandidateData.h:31
DiTauCandidateData::Rcore
float Rcore
Definition
DiTauCandidateData.h:33
DiTauCandidateData::xAODDiTau
xAOD::DiTauJet * xAODDiTau
Definition
DiTauCandidateData.h:22
DiTauCandidateData::diTauAuxContainer
xAOD::DiTauJetAuxContainer * diTauAuxContainer
Definition
DiTauCandidateData.h:24
DiTauCandidateData::seedContainer
const xAOD::JetContainer * seedContainer
Definition
DiTauCandidateData.h:27
DiTauCandidateData::Rsubjet
float Rsubjet
Definition
DiTauCandidateData.h:32
SG::ReadHandle
Definition
StoreGate/StoreGate/ReadHandle.h:67
SG::ReadHandle::get
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
xAOD::DiTauJet
DiTauJet_v1 DiTauJet
Definition of the current version.
Definition
DiTauJet.h:17
Generated on
for ATLAS Offline Software by
1.17.0