4 #include "fastjet/PseudoJet.hh"
6 #include "fastjet/tools/Recluster.hh"
7 #include "fastjet/contrib/SoftDrop.hh"
8 #include "fastjet/JetDefinition.hh"
17 fastjet::PseudoJet
jet;
20 std::vector<float> lund_all_lnR;
21 std::vector<float> lund_all_lnkT;
22 std::vector<float> lund_all_z;
23 std::vector<float> lund_all_kt;
24 std::vector<float> lund_all_deltaR;
25 std::vector<int> lund_all_idp1;
26 std::vector<int> lund_all_idp2;
30 std::vector<std::vector<LundVariablesTool::Declustering>> v_LundValues;
32 std::vector<fastjet::PseudoJet> v_pj_constituents;
34 v_pj_constituents.clear();
39 TLorentzVector tlv_const;
40 tlv_const.SetPtEtaPhiE(constit->
pt() / 1.e3, constit->
eta(), constit->
phi(), constit->
e() / 1.e3);
42 v_pj_constituents.push_back(fastjet::PseudoJet(tlv_const.Px(), tlv_const.Py(), tlv_const.Pz(), tlv_const.E()));
52 std::vector<double> v_jj_pt;
53 std::vector<double> v_j1_pt;
54 std::vector<double> v_j2_pt;
55 std::vector<double> v_jj_kt;
58 for (
const auto & declust : v_LundValues.at(0)){
59 v_jj_pt.push_back( declust.jj.pt() );
60 v_j1_pt.push_back( declust.j1.pt() );
61 v_j2_pt.push_back( declust.j2.pt() );
62 v_jj_kt.push_back( declust.kt );
65 for (
int id=0;
id <
int(v_jj_pt.size());
id++) {
70 auto itp1 =
find(v_jj_pt.begin(), v_jj_pt.end(), v_j1_pt.at(
id));
71 auto itp2 =
find(v_jj_pt.begin(), v_jj_pt.end(), v_j2_pt.at(
id));
74 if (itp1 != v_jj_pt.end()) {
75 idp1 = itp1 - v_jj_pt.begin();
83 if (itp2 != v_jj_pt.end()) {
84 idp2 = itp2 - v_jj_pt.begin();
87 v_LundValues.at(0).at(
id).idp1 = idp1;
88 v_LundValues.at(0).at(
id).idp2 = idp2;
93 for (
const auto&
split : v_LundValues[0]) {
98 lund_all_z.push_back(
split.z);
99 lund_all_kt.push_back(
split.kt);
100 lund_all_deltaR.push_back(
split.delta_R);
101 lund_all_idp1.push_back(
split.idp1);
102 lund_all_idp2.push_back(
split.idp2);
130 std::vector<LundVariablesTool::Declustering>
result;
132 std::vector<fastjet::PseudoJet> v_pj = sorted_by_pt(cs.inclusive_jets());
134 fastjet::PseudoJet j = v_pj.at(0);
136 std::queue< fastjet::PseudoJet > jetStack;
139 while ( jetStack.size() > 0 ) {
140 fastjet::PseudoJet thisJ, pJLeft, pJRight;
141 thisJ = jetStack.front();
144 bool thisJHasParents = thisJ.has_parents(pJLeft, pJRight);
146 if (!thisJHasParents){
150 if (pJLeft.pt2() < pJRight.pt2()) {
152 fastjet::PseudoJet jTemp;
158 jetStack.push(pJLeft);
159 jetStack.push(pJRight);
165 declust.
j2 = pJRight;
168 declust.
pt = thisJ.pt();
169 declust.
m = thisJ.m();
172 declust.
pt1 = pJLeft.pt();
173 declust.
pt2 = pJRight.pt();
174 declust.
eta = pJRight.eta();
175 declust.
E = pJRight.E();
176 declust.
delta_R = pJLeft.delta_R(pJRight);
177 declust.
z = declust.
pt2 / (declust.
pt1 + declust.
pt2);
178 declust.
kt = pJRight.pt() * declust.
delta_R;
181 declust.
varphi = atan2(pJLeft.rap() - pJRight.rap(), pJLeft.delta_phi_to(pJRight));
182 result.push_back(declust);