SISCone 3.0.5
|
Class used to split and merge jets. More...
#include <split_merge.h>
Classes | |
class | Cuser_scale_base |
base class for user-defined ordering of stable cones More... | |
Public Member Functions | |
Csplit_merge () | |
default ctor | |
~Csplit_merge () | |
default dtor | |
int | init (std::vector< Cmomentum > &_particles, std::vector< Cmomentum > *protocones, double R2, double ptmin=0.0) |
initialisation function | |
int | init_particles (std::vector< Cmomentum > &_particles) |
initialisation function for particle list | |
int | init_pleft () |
build initial list of left particles | |
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 protojets will be to compare D1^2/kt1^2 vs. | |
int | partial_clear () |
partial clearance | |
int | full_clear () |
full clearance | |
void | set_user_scale (const Cuser_scale_base *user_scale_in) |
associate a user-defined scale to order the stable cones | |
const Cuser_scale_base * | user_scale () const |
return the user-defined scale (NULL if none) | |
int | merge_collinear_and_remove_soft () |
build the list 'p_uncol_hard' from p_remain by clustering collinear particles and removing particles softer than stable_cone_soft_pt2_cutoff note that thins in only used for stable-cone detection so the parent_index field is unnecessary | |
int | add_protocones (std::vector< Cmomentum > *protocones, double R2, double ptmin=0.0) |
add a list of protocones | |
int | add_hardest_protocone_to_jets (std::vector< Cmomentum > *protocones, double R2, double ptmin=0.0) |
remove the hardest protocone and declare it a jet | |
int | perform (double overlap_tshold, double ptmin=0.0) |
really do the splitting and merging At the end, the vector jets is filled with the jets found. | |
int | save_contents (FILE *flux) |
save final jets | |
int | show () |
show jets/candidates status | |
Public Attributes | |
int | n |
number of particles | |
std::vector< Cmomentum > | particles |
list of particles | |
std::vector< double > | pt |
list of particles' pt | |
int | n_left |
numer of particles that does not belong to any jet | |
std::vector< Cmomentum > | p_remain |
list of particles remaining to deal with | |
std::vector< Cmomentum > | p_uncol_hard |
list of particles remaining with collinear clustering | |
int | n_pass |
index of the run | |
double | most_ambiguous_split |
minimal difference in squared distance between a particle and two overlapping protojets when doing a split (useful when testing approx. | |
std::vector< Cjet > | jets |
list of jets | |
int * | indices |
maximal size array for indices works | |
int | idx_size |
number of elements in indices1 | |
bool | merge_identical_protocones |
The following flag indicates that identical protocones are to be merged automatically each time around the split-merge loop and before anything else happens. | |
Csplit_merge_ptcomparison | ptcomparison |
member used for detailed comparisons of pt's | |
double | SM_var2_hardest_cut_off |
stop split–merge or progressive-removal when the squared SM_var of the hardest protojet is below this cut-off. | |
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 the stable-cone search. | |
Class used to split and merge jets.
Definition at line 180 of file split_merge.h.
siscone::Csplit_merge::Csplit_merge | ( | ) |
default ctor
Definition at line 226 of file split_merge.cpp.
References indices, merge_identical_protocones, siscone::Csplit_merge_ptcomparison::particles, particles, siscone::Csplit_merge_ptcomparison::pt, pt, ptcomparison, SM_var2_hardest_cut_off, and stable_cone_soft_pt2_cutoff.
siscone::Csplit_merge::~Csplit_merge | ( | ) |
int siscone::Csplit_merge::add_hardest_protocone_to_jets | ( | std::vector< Cmomentum > * | protocones, |
double | R2, | ||
double | ptmin = 0.0 |
||
) |
remove the hardest protocone and declare it a jet
protocones | list of protocones (initial jet candidates) |
R2 | cone radius (squared) |
ptmin | minimal pT allowed for jets |
The list of remaining particles (and the uncollinear-hard ones) is updated.
Definition at line 571 of file split_merge.cpp.
References siscone::Cmomentum::eta, siscone::Cmomentum::index, jets, merge_collinear_and_remove_soft(), n_left, n_pass, p_remain, siscone::Cmomentum::parent_index, particles, siscone::Cmomentum::phi, pt, ptcomparison, and twopi.
Referenced by siscone::Csiscone::compute_jets_progressive_removal().
int siscone::Csplit_merge::add_protocones | ( | std::vector< Cmomentum > * | protocones, |
double | R2, | ||
double | ptmin = 0.0 |
||
) |
add a list of protocones
protocones | list of protocones (initial jet candidates) |
R2 | cone radius (squared) |
ptmin | minimal pT allowed for jets |
Definition at line 460 of file split_merge.cpp.
References siscone::Cmomentum::eta, siscone::Cmomentum::index, merge_collinear_and_remove_soft(), n_left, n_pass, p_remain, siscone::Cmomentum::parent_index, particles, siscone::Cmomentum::phi, pt, and twopi.
Referenced by siscone::Csiscone::compute_jets(), init(), and siscone::Csiscone::recompute_jets().
int siscone::Csplit_merge::full_clear | ( | ) |
full clearance
Definition at line 389 of file split_merge.cpp.
References indices, partial_clear(), and particles.
Referenced by init_particles(), and ~Csplit_merge().
int siscone::Csplit_merge::init | ( | std::vector< Cmomentum > & | _particles, |
std::vector< Cmomentum > * | protocones, | ||
double | R2, | ||
double | ptmin = 0.0 |
||
) |
initialisation function
_particles | list of particles |
protocones | list of protocones (initial jet candidates) |
R2 | cone radius (squared) |
ptmin | minimal pT allowed for jets |
Definition at line 265 of file split_merge.cpp.
References add_protocones().
initialisation function for particle list
_particles | list of particles |
Definition at line 274 of file split_merge.cpp.
References full_clear(), indices, init_pleft(), n, siscone::Csplit_merge_ptcomparison::particles, particles, siscone::Csplit_merge_ptcomparison::pt, pt, and ptcomparison.
Referenced by siscone::Csiscone::compute_jets(), and siscone::Csiscone::compute_jets_progressive_removal().
int siscone::Csplit_merge::init_pleft | ( | ) |
build initial list of left particles
for the Ceta_phi_range static member!
for the Ceta_phi_range static member!
Definition at line 303 of file split_merge.cpp.
References merge_collinear_and_remove_soft(), n, n_left, n_pass, p_remain, and particles.
Referenced by init_particles(), and siscone::Csiscone::recompute_jets().
int siscone::Csplit_merge::merge_collinear_and_remove_soft | ( | ) |
build the list 'p_uncol_hard' from p_remain by clustering collinear particles and removing particles softer than stable_cone_soft_pt2_cutoff note that thins in only used for stable-cone detection so the parent_index field is unnecessary
Definition at line 406 of file split_merge.cpp.
References EPSILON_COLLINEAR, n_left, p_remain, p_uncol_hard, stable_cone_soft_pt2_cutoff, and twopi.
Referenced by add_hardest_protocone_to_jets(), add_protocones(), and init_pleft().
int siscone::Csplit_merge::partial_clear | ( | ) |
partial clearance
Definition at line 364 of file split_merge.cpp.
References jets, merge_identical_protocones, most_ambiguous_split, p_remain, and ptcomparison.
Referenced by siscone::Csiscone::compute_jets(), siscone::Csiscone::compute_jets_progressive_removal(), full_clear(), and siscone::Csiscone::recompute_jets().
really do the splitting and merging At the end, the vector jets is filled with the jets found.
the 'contents' field of each jets contains the indices of the particles included in that jet.
overlap_tshold | threshold for splitting/merging transition |
ptmin | minimal pT allowed for jets |
Definition at line 716 of file split_merge.cpp.
References jets, particles, show(), and SM_var2_hardest_cut_off.
Referenced by siscone::Csiscone::compute_jets(), and siscone::Csiscone::recompute_jets().
save final jets
flux | stream to save the jet contentss |
Definition at line 829 of file split_merge.cpp.
use a pt-dependent boundary for splitting When called with true, the criterium for splitting two protojets will be to compare D1^2/kt1^2 vs.
D2^2/kt2^2, the (anti-)kt-weighted distance instead of the plain distance D1^2 vs. D2^2. This can be set in order to produce more circular hard jets, with the same underlying philosophy as for the anti-kt algorithm. We thus expect a behaviour closer to the IterativeCone one. By default, we use the standard D1^2 vs. D2^2 comparison and this function is not called.
Definition at line 226 of file split_merge.h.
|
inline |
associate a user-defined scale to order the stable cones
Note that this is only used in "progressive-removal mode", e.g. in add_hardest_protocone_to_jets().
Definition at line 280 of file split_merge.h.
int siscone::Csplit_merge::show | ( | ) |
show jets/candidates status
Definition at line 859 of file split_merge.cpp.
References siscone::Cjet::contents, siscone::Cmomentum::E, jets, siscone::Cjet::n, siscone::Cmomentum::px, siscone::Cmomentum::py, siscone::Cmomentum::pz, and siscone::Cjet::v.
Referenced by perform().
|
inline |
return the user-defined scale (NULL if none)
Definition at line 285 of file split_merge.h.
int siscone::Csplit_merge::idx_size |
number of elements in indices1
Definition at line 364 of file split_merge.h.
int* siscone::Csplit_merge::indices |
maximal size array for indices works
Definition at line 363 of file split_merge.h.
Referenced by Csplit_merge(), full_clear(), and init_particles().
std::vector<Cjet> siscone::Csplit_merge::jets |
list of jets
Definition at line 360 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), siscone::Carea::compute_active_areas(), siscone::Carea::compute_areas(), siscone::Csiscone::compute_jets_progressive_removal(), siscone::Carea::compute_passive_areas(), partial_clear(), perform(), save_contents(), and show().
bool siscone::Csplit_merge::merge_identical_protocones |
The following flag indicates that identical protocones are to be merged automatically each time around the split-merge loop and before anything else happens.
This flag is only effective if ALLOW_MERGE_IDENTICAL_PROTOCONES is set in 'defines.h' Note that this lead to infrared-unsafety so it is disabled by default
Definition at line 374 of file split_merge.h.
Referenced by Csplit_merge(), and partial_clear().
double siscone::Csplit_merge::most_ambiguous_split |
minimal difference in squared distance between a particle and two overlapping protojets when doing a split (useful when testing approx.
collinear safety)
Definition at line 357 of file split_merge.h.
Referenced by partial_clear().
int siscone::Csplit_merge::n |
number of particles
Definition at line 346 of file split_merge.h.
Referenced by siscone::Carea::compute_active_areas(), siscone::Carea::compute_areas(), siscone::Carea::compute_passive_areas(), init_particles(), and init_pleft().
int siscone::Csplit_merge::n_left |
numer of particles that does not belong to any jet
Definition at line 349 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), add_protocones(), siscone::Csiscone::compute_jets(), siscone::Csiscone::compute_jets_progressive_removal(), init_pleft(), and merge_collinear_and_remove_soft().
int siscone::Csplit_merge::n_pass |
index of the run
Definition at line 352 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), add_protocones(), and init_pleft().
std::vector<Cmomentum> siscone::Csplit_merge::p_remain |
list of particles remaining to deal with
Definition at line 350 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), add_protocones(), init_pleft(), merge_collinear_and_remove_soft(), and partial_clear().
std::vector<Cmomentum> siscone::Csplit_merge::p_uncol_hard |
list of particles remaining with collinear clustering
Definition at line 351 of file split_merge.h.
Referenced by siscone::Csiscone::compute_jets(), siscone::Csiscone::compute_jets_progressive_removal(), and merge_collinear_and_remove_soft().
std::vector<Cmomentum> siscone::Csplit_merge::particles |
list of particles
Definition at line 347 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), add_protocones(), Csplit_merge(), full_clear(), init_particles(), init_pleft(), perform(), and save_contents().
std::vector<double> siscone::Csplit_merge::pt |
list of particles' pt
Definition at line 348 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), add_protocones(), Csplit_merge(), and init_particles().
Csplit_merge_ptcomparison siscone::Csplit_merge::ptcomparison |
member used for detailed comparisons of pt's
Definition at line 377 of file split_merge.h.
Referenced by add_hardest_protocone_to_jets(), siscone::Csiscone::compute_jets(), siscone::Csiscone::compute_jets_progressive_removal(), Csplit_merge(), init_particles(), partial_clear(), and siscone::Csiscone::recompute_jets().
double siscone::Csplit_merge::SM_var2_hardest_cut_off |
stop split–merge or progressive-removal when the squared SM_var of the hardest protojet is below this cut-off.
Note that this is a signed square (ie SM_var*|SM_var|) to be able to handle negative values.
Note that the cut-off is set on the variable squared.
Definition at line 385 of file split_merge.h.
Referenced by siscone::Carea::compute_active_areas(), siscone::Carea::compute_areas(), Csplit_merge(), and perform().
double siscone::Csplit_merge::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 the stable-cone search.
This is not collinear-safe so you should not use this variable unless you really know what you are doing Note that the cut-off is set on the variable squared.
Definition at line 394 of file split_merge.h.
Referenced by siscone::Carea::compute_passive_areas(), Csplit_merge(), and merge_collinear_and_remove_soft().