ATLAS Offline Software
Loading...
Searching...
No Matches
JetSubStructureMomentToolsBase.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
7
10{
11 declareProperty("InputContainer",m_inputContainer = "");
12 declareProperty("Prefix", m_prefix = "");
13}
14
16
17 ATH_MSG_INFO("Initializing " << name());
18
19 if(!m_inputContainer.empty() && m_prefix.empty()) {
20 ATH_MSG_WARNING("No prefix defined, defaulting to " << m_inputContainer);
22 }
23
24 if(!m_prefix.empty() && m_prefix.find_last_of('_')+1 != m_prefix.size()) m_prefix += "_";
25
26 return StatusCode::SUCCESS;
27}
28
29
30bool JetSubStructureMomentToolsBase::SetupDecoration(fastjet::PseudoJet& pseudojet,const xAOD::Jet& jet, bool requireJetStructure) const {
31
32 bool decorate = true;
33
34 if (m_inputContainer.empty()) {
36 decorate = false;
37 else pseudojet = buildPseudoJet(jet, requireJetStructure);
38 }
39 else {
40 std::vector<const xAOD::IParticle*> AssociatedParticles;
41 if (!(jet.getAssociatedObjects(m_inputContainer,AssociatedParticles))){
42 ATH_MSG_WARNING("InputContainer " << m_inputContainer << " unknown. Exiting..");
43 decorate = false;
44 }
45 ATH_MSG_VERBOSE("Found " << AssociatedParticles.size() << " associated particles");
46 if(AssociatedParticles.empty()) decorate = false;
47 else pseudojet = buildPseudoJet(AssociatedParticles);
48 }
49
50 return decorate;
51}
52
53
54fastjet::PseudoJet JetSubStructureMomentToolsBase::buildPseudoJet (const xAOD::Jet & jet, bool requireJetStructure) const {
55 std::vector<fastjet::PseudoJet> constit_pseudojets = jet::JetConstituentFiller::constituentPseudoJets(jet,true,requireJetStructure);
56 return fastjet::join(constit_pseudojets);
57}
58
59fastjet::PseudoJet JetSubStructureMomentToolsBase::buildPseudoJet(const std::vector<const xAOD::IParticle*>& iparticles) const {
60 std::vector<fastjet::PseudoJet> pjs;
61 pjs.reserve(iparticles.size());
62 for (const auto *iparticle : iparticles)
63 pjs.emplace_back(iparticle->p4());
64 return fastjet::join(pjs);
65}
66
68 ATH_MSG_INFO("Properties for JetSubStructureMomentTool " << name());
69 ATH_MSG_INFO("InputContainer: " << m_inputContainer);
70 ATH_MSG_INFO("Prefix: " << m_prefix);
71}
72
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
JetModifierBase(const std::string &myname)
Ctor.
fastjet::PseudoJet buildPseudoJet(const xAOD::Jet &jet, bool requireJetStructure=false) const
JetSubStructureMomentToolsBase(const std::string &name)
bool SetupDecoration(fastjet::PseudoJet &pseudojet, const xAOD::Jet &jet, bool requireJetStructure=false) const
virtual void print() const
Print the state of the tool.
bool checkForConstituents(const xAOD::Jet &jet) const
StatusCode initialize()
Dummy implementation of the initialisation function.
static PseudoJetVector constituentPseudoJets(const xAOD::Jet &jet, bool ignoreGhosts=true, bool requireJetStructure=false)
Returns the jet's constituents as a vector of PseudoJet if ignoreGhosts==true, ghost constituents are...
Jet_v1 Jet
Definition of the current "jet version".