ATLAS Offline Software
Loading...
Searching...
No Matches
SubjetFinder.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
6#include "fastjet/ClusterSequence.hh"
7#include "fastjet/JetDefinition.hh"
8#include <iostream>
9
10#include "fastjet/EECambridgePlugin.hh"
11
12using namespace std;
13using namespace JetSubStructureUtils;
14
15SubjetFinder::SubjetFinder(fastjet::JetAlgorithm fj_jetalg, float jet_radius, float pt_min, int exclusive_njets) :
16 m_fj_jetalg(fj_jetalg), m_jetrad(jet_radius), m_ptmin(pt_min), m_exclusivenjets(exclusive_njets)
17{
18}
19
20vector<fastjet::PseudoJet> SubjetFinder::result(const fastjet::PseudoJet &jet) const
21{
22 vector<fastjet::PseudoJet> constit_pseudojets = jet.constituents();
23 vector<fastjet::PseudoJet> subjets;
24 if(constit_pseudojets.empty()) {
25 cout << "Warning in SubjetFinder: jet has no constituents" << endl;
26 return subjets;
27 }
28
29 fastjet::ClusterSequence *clust_seq = nullptr;
30
31 if (m_fj_jetalg==fastjet::ee_kt_algorithm) {
32 fastjet::JetDefinition jet_def = fastjet::JetDefinition(fastjet::ee_kt_algorithm);
33 clust_seq = new fastjet::ClusterSequence(constit_pseudojets, jet_def);
34 }else if (m_fj_jetalg==fastjet::plugin_algorithm) {
35 fastjet::JetDefinition jet_def = fastjet::JetDefinition(new fastjet::EECambridgePlugin(m_jetrad));
36 clust_seq = new fastjet::ClusterSequence(constit_pseudojets, jet_def);
37 }else{
38 fastjet::JetDefinition jet_def = fastjet::JetDefinition(m_fj_jetalg, m_jetrad, fastjet::E_scheme, fastjet::Best);
39 clust_seq = new fastjet::ClusterSequence(constit_pseudojets, jet_def);
40 }
41
42 if(m_exclusivenjets < 0) { // Inclusive
43 subjets = fastjet::sorted_by_pt(clust_seq->inclusive_jets(m_ptmin));
44 }
45 else {
46 subjets = fastjet::sorted_by_pt(clust_seq->exclusive_jets_up_to(m_exclusivenjets));
47 }
48
49 if(subjets.empty()) {
50 delete clust_seq;
51 }
52 else {
53 clust_seq->delete_self_when_unused();
54 }
55
56 return subjets;
57}
SubjetFinder(fastjet::JetAlgorithm fj_jetalg=fastjet::kt_algorithm, float jet_radius=0.3, float pt_min=5000, int exclusive_njets=-1)
virtual std::vector< fastjet::PseudoJet > result(const fastjet::PseudoJet &jet) const
fastjet::JetAlgorithm m_fj_jetalg
STL namespace.