ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
DiTauRec
src
SubjetBuilder.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
DiTauRec/SubjetBuilder.h
"
6
7
// fastjet includes
8
#include "fastjet/ClusterSequenceArea.hh"
9
#include "fastjet/AreaDefinition.hh"
10
11
SubjetBuilder::SubjetBuilder
(
const
std::string&
type
,
12
const
std::string& name,
13
const
IInterface * parent) :
14
DiTauToolBase
(
type
, name, parent)
15
{
16
declareInterface<DiTauToolBase > (
this
);
17
}
18
19
20
SubjetBuilder::~SubjetBuilder
() =
default
;
21
22
23
StatusCode
SubjetBuilder::initialize
() {
24
25
return
StatusCode::SUCCESS;
26
}
27
28
29
StatusCode
SubjetBuilder::execute
(
DiTauCandidateData
* data,
30
const
EventContext&
/*ctx*/
)
const
{
31
32
ATH_MSG_DEBUG
(
"subjet builder executing..."
);
33
34
// get seed jet
35
xAOD::DiTauJet
* pDiTau = data->xAODDiTau;
36
37
if
(pDiTau ==
nullptr
) {
38
ATH_MSG_ERROR
(
"no di-tau candidate given"
);
39
return
StatusCode::FAILURE;
40
}
41
42
const
xAOD::Jet
* pSeed = data->seed;
43
if
(!pSeed) {
44
ATH_MSG_WARNING
(
"no seed given. Di-Tau can not be reconstructed."
);
45
return
StatusCode::FAILURE;
46
}
47
48
// retrieve seed jet clusters
49
50
using namespace
fastjet
;
51
const
xAOD::JetConstituentVector
vConst = pSeed->
getConstituents
();
52
53
if
(vConst.
empty
()) {
54
ATH_MSG_WARNING
(
"cluster constituents could not be retrieved from seed jet"
);
55
return
StatusCode::FAILURE;
56
}
57
58
std::vector<PseudoJet> vpjClusters;
59
60
for
(
const
auto
*cl: vConst) {
61
62
TLorentzVector temp_p4;
63
temp_p4.SetPtEtaPhiM(cl->pt(), cl->eta(), cl->phi(), cl->m());
64
PseudoJet c( temp_p4.Px(), temp_p4.Py(), temp_p4.Pz(), temp_p4.E());
65
66
vpjClusters.push_back(c);
67
}
68
69
// reconstruct subjets
70
71
// Jet and area definitions
72
JetDefinition jd = JetDefinition(antikt_algorithm,
m_Rsubjet
);
73
AreaDefinition area_def(active_area_explicit_ghosts,GhostedAreaSpec(SelectorAbsRapMax(
m_maxEta
)));
74
ClusterSequenceArea cs(vpjClusters, jd, area_def);
75
76
// store (pt-sorted) subjets
77
std::vector<PseudoJet> vSubjets = sorted_by_pt( cs.inclusive_jets(
m_ptmin
) );
78
if
(vSubjets.size()<=1) {
79
ATH_MSG_DEBUG
(
"Found less than 2 subjets. Reject ditau candidate"
);
80
return
StatusCode::FAILURE;
81
}
82
83
ATH_MSG_DEBUG
(
"found "
<< vSubjets.size() <<
" subjets"
);
84
if
(this->msgLevel() <= MSG::DEBUG){
85
for
(
const
auto
& subjet: vSubjets) {
86
ATH_MSG_DEBUG
(
"pt: "
<< subjet.pt() <<
" eta: "
<< subjet.eta() <<
" phi: "
<< subjet.phi());
87
}
88
}
89
90
data->subjets = vSubjets;
91
92
vSubjets.clear();
93
94
return
StatusCode::SUCCESS;
95
}
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
SubjetBuilder.h
DiTauCandidateData
Definition
DiTauCandidateData.h:20
DiTauToolBase::DiTauToolBase
DiTauToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition
DiTauToolBase.cxx:14
SubjetBuilder::execute
virtual StatusCode execute(DiTauCandidateData *data, const EventContext &ctx) const override
Execute - called for each Ditau candidate.
Definition
SubjetBuilder.cxx:29
SubjetBuilder::m_ptmin
Gaudi::Property< float > m_ptmin
Definition
SubjetBuilder.h:39
SubjetBuilder::m_maxEta
Gaudi::Property< float > m_maxEta
Definition
SubjetBuilder.h:37
SubjetBuilder::SubjetBuilder
SubjetBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
Definition
SubjetBuilder.cxx:11
SubjetBuilder::~SubjetBuilder
virtual ~SubjetBuilder()
Destructor.
SubjetBuilder::initialize
virtual StatusCode initialize() override
Tool initializer.
Definition
SubjetBuilder.cxx:23
SubjetBuilder::m_Rsubjet
Gaudi::Property< float > m_Rsubjet
Definition
SubjetBuilder.h:38
xAOD::JetConstituentVector
A vector of jet constituents at the scale used during jet finding.
Definition
JetConstituentVector.h:117
xAOD::JetConstituentVector::empty
bool empty() const
true if vector is empty()
Definition
JetConstituentVector.cxx:101
xAOD::Jet_v1::getConstituents
JetConstituentVector getConstituents() const
Return a vector of consituents. The object behaves like vector<const IParticle*>. See JetConstituentV...
Definition
Jet_v1.cxx:149
fastjet
Definition
FastJetLinkBase.h:22
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition
Event/xAOD/xAODJet/xAODJet/Jet.h:17
xAOD::DiTauJet
DiTauJet_v1 DiTauJet
Definition of the current version.
Definition
DiTauJet.h:17
type
Generated on
for ATLAS Offline Software by
1.17.0