30 #ifndef __SPH_SPLIT_MERGE_H__
31 #define __SPH_SPLIT_MERGE_H__
42 namespace siscone_spherical{
101 enum Esplit_merge_scale {
107 std::string split_merge_scale_name(Esplit_merge_scale sms);
159 typedef std::multiset<siscone_spherical::CSphjet,CSphsplit_merge_ptcomparison>::iterator cjet_iterator;
162 typedef std::vector<siscone_spherical::CSphjet>::iterator jet_iterator;
191 int init(std::vector<CSphmomentum> &_particles, std::vector<CSphmomentum> *protocones,
double R2,
double Emin=0.0);
217 use_E_weighted_splitting = _use_E_weighted_splitting;
254 int add_protocones(std::vector<CSphmomentum> *protocones,
double R2,
double Emin=0.0);
265 int perform(
double overlap_tshold,
double Emin=0.0);
333 bool get_overlap(
const CSphjet &j1,
const CSphjet &j2,
double *v);
347 bool split(cjet_iterator &it_j1, cjet_iterator &it_j2);
357 bool merge(cjet_iterator &it_j1, cjet_iterator &it_j2);
376 void compute_Etilde(
CSphjet &j);
380 std::auto_ptr<std::multiset<CSphjet,CSphsplit_merge_ptcomparison> > candidates;
390 bool use_E_weighted_splitting;
392 #ifdef ALLOW_MERGE_IDENTICAL_PROTOCONES
394 std::set<siscone::Creference> cand_refs;