28 #ifndef __SPLIT_MERGE_H__ 29 #define __SPLIT_MERGE_H__ 81 bool jets_pt_less(
const Cjet &j1,
const Cjet &j2);
91 enum Esplit_merge_scale {
102 std::string split_merge_scale_name(Esplit_merge_scale sms);
115 particles(0), split_merge_scale(SM_pttilde){};
119 return split_merge_scale_name(split_merge_scale);}
122 std::vector<double> *
pt;
125 bool operator()(
const Cjet &jet1,
const Cjet &jet2)
const;
164 typedef std::multiset<siscone::Cjet,Csplit_merge_ptcomparison>::iterator cjet_iterator;
167 typedef std::vector<siscone::Cjet>::iterator jet_iterator;
196 int init(std::vector<Cmomentum> &_particles, std::vector<Cmomentum> *protocones,
double R2,
double ptmin=0.0);
203 int init_particles(std::vector<Cmomentum> &_particles);
222 use_pt_weighted_splitting = _use_pt_weighted_splitting;
248 int merge_collinear_and_remove_soft();
257 int add_protocones(std::vector<Cmomentum> *protocones,
double R2,
double ptmin=0.0);
268 int perform(
double overlap_tshold,
double ptmin=0.0);
277 int save_contents(FILE *flux);
285 std::vector<double>
pt;
336 bool get_overlap(
const Cjet &j1,
const Cjet &j2,
double *
v);
350 bool split(cjet_iterator &it_j1, cjet_iterator &it_j2);
360 bool merge(cjet_iterator &it_j1, cjet_iterator &it_j2);
368 bool insert(
Cjet &jet);
380 std::auto_ptr<std::multiset<Cjet,Csplit_merge_ptcomparison> > candidates;
390 bool use_pt_weighted_splitting;
392 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES 393 std::set<Creference> cand_refs;
int n_left
numer of particles that does not belong to any jet
std::vector< Cmomentum > particles
list of particles
comparison of jets for split–merge ordering
double SM_var2_hardest_cut_off
stop split–merge when the SM_var of the hardest protojet is below this cut-off.
std::vector< Cjet > jets
list of jets
bool merge_identical_protocones
The following flag indicates that identical protocones are to be merged automatically each time aroun...
double stable_cone_soft_pt2_cutoff
pt cutoff for the particles to put in p_uncol_hard this is meant to allow removing soft particles in ...
int * indices
maximal size array for indices works
base class for dynamic coordinates management
std::vector< Cmomentum > p_remain
list of particles remaining to deal with
int pass
pass at which the jet has been found It starts at 0 (first pass), -1 means infinite rapidity ...
std::vector< double > pt
list of particles' pt
Csplit_merge_ptcomparison()
default ctor
Csplit_merge_ptcomparison ptcomparison
member used for detailed comparisons of pt's
std::vector< Cmomentum > p_uncol_hard
list of particles remaining with collinear clustering
double sm_var2
ordering variable used for ordering and overlap in the split–merge.
int idx_size
number of elements in indices1
class for holding a covering range in eta-phi
int set_pt_weighted_splitting(bool _use_pt_weighted_splitting)
use a pt-dependent boundary for splitting When called with true, the criterium for splitting two prot...
std::vector< Cmomentum > * particles
pointer to the list of particles
Class used to split and merge jets.
double pt_tilde
p-scheme pt
Esplit_merge_scale split_merge_scale
the following parameter controls the variable we're using for the split-merge process i...
std::string SM_scale_name() const
return the name corresponding to the SM scale variable
int n_pass
index of the run
Ceta_phi_range range
covered range in eta-phi
double most_ambiguous_split
minimal difference in squared distance between a particle and two overlapping protojets when doing a ...
std::vector< double > * pt
pointer to the pt of the particles
std::vector< int > contents
particle contents (list of indices)
int n
number of particles inside