10 Qjets::Qjets(
double zcut,
double dcut_fctr,
double exp_min,
double exp_max,
double rigidity,
double truncation_fctr)
14 m_dcut_fctr(dcut_fctr),
18 m_truncation_fctr(truncation_fctr)
35 vector< pair<jet_distance, double> > popped_distances;
53 popped_distances.emplace_back(dist,
weight);
61 if (!popped_distances.empty()) {
62 const double inv_norm =
norm == 0 ? 1 : 1. /
norm;
63 for(vector<pair<jet_distance, double> >::
iterator it = popped_distances.begin();
it != popped_distances.end(); ++
it){
64 tot_weight += (*it).second * inv_norm;
65 if(tot_weight >=
rand){
73 for(vector<pair<jet_distance, double> >::reverse_iterator
it = popped_distances.rbegin();
it != popped_distances.rend(); ++
it)
95 cs.plugin_record_ij_recombination(jd.
j1, jd.
j2, 1., new_jet);
99 double j1pt = cs.jets()[jd.
j1].perp();
100 double j2pt = cs.jets()[jd.
j2].perp();
104 cs.plugin_record_iB_recombination(jd.
j2, 1.);
108 cs.plugin_record_iB_recombination(jd.
j1, 1.);
115 [[maybe_unused]]
int num_merged_final(0);
117 for(
unsigned int i = 0 ;
i < cs.jets().
size();
i++)
120 cs.plugin_record_iB_recombination(
i,1.);
123 assert(num_merged_final < 2);
128 fastjet::PseudoJet
sum(0.,0.,0.,0.);
129 for(vector<fastjet::PseudoJet>::const_iterator
it = cs.jets().begin();
it != cs.jets().end(); ++
it)
135 double pt1 = cs.jets()[jd.
j1].perp();
136 double pt2 = cs.jets()[jd.
j2].perp();
137 fastjet::PseudoJet sum_jet = cs.jets()[jd.
j1]+cs.jets()[jd.
j2];
138 double sum_pt = sum_jet.perp();
139 double z =
min(pt1,pt2)/sum_pt;
140 double d = sqrt(cs.jets()[jd.
j1].plain_distance(cs.jets()[jd.
j2]));
145 for(
unsigned int i = 0 ;
i < inp.size()-1;
i++){
147 for(
unsigned int j =
i+1 ; j < inp.size(); j++){
152 jd.dij =
d_ij(inp[
i],inp[j]);
161 for(
unsigned int i = 0;
i < cs.jets().
size();
i++)
166 jd.dij =
d_ij(cs.jets()[jd.j1], cs.jets()[jd.j2]);
171 double Qjets::d_ij(
const fastjet::PseudoJet& v1,
const fastjet::PseudoJet&
v2)
const{
172 double p1 = v1.perp();
173 double p2 =
v2.perp();
175 assert(!std::isnan(ret));