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 | |
CSphsplit_merge () | |
default ctor | |
~CSphsplit_merge () | |
default dtor | |
int | init (std::vector< CSphmomentum > &_particles, std::vector< CSphmomentum > *protocones, double R2, double Emin=0.0) |
initialisation function More... | |
int | init_particles (std::vector< CSphmomentum > &_particles) |
initialisation function for particle list More... | |
int | init_pleft () |
build initial list of left particles | |
int | set_E_weighted_splitting (bool _use_E_weighted_splitting) |
use an energy-dependent boundary for splitting When called with true, the criterium for splitting two protojets will be to compare D1^2/kt1^2 vs. More... | |
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 More... | |
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 note that thins in only used for stable-cone detection so the parent_index field is unnecessary More... | |
int | add_protocones (std::vector< CSphmomentum > *protocones, double R2, double Emin=0.0) |
add a list of protocones More... | |
int | add_hardest_protocone_to_jets (std::vector< CSphmomentum > *protocones, double R2, double Emin=0.0) |
remove the hardest protocone and declare it a a jet More... | |
int | perform (double overlap_tshold, double Emin=0.0) |
really do the splitting and merging At the end, the vector jets is filled with the jets found. More... | |
int | save_contents (FILE *flux) |
save final jets More... | |
int | show () |
show jets/candidates status | |
Public Attributes | |
int | n |
number of particles | |
std::vector< CSphmomentum > | particles |
list of particles | |
std::vector< double > | particles_norm2 |
norm^2 of the particle (3-vect part) | |
int | n_left |
numer of particles that does not belong to any jet | |
std::vector< CSphmomentum > | p_remain |
list of particles remaining to deal with | |
std::vector< CSphmomentum > | 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. More... | |
std::vector< CSphjet > | 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. More... | |
CSphsplit_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. More... | |
double | stable_cone_soft_E2_cutoff |
Energy cutoff for the particles to put in p_uncol_hard this is meant to allow removing soft particles in the stable-cone search. More... | |
Class used to split and merge jets.
Definition at line 175 of file split_merge.h.
int siscone_spherical::CSphsplit_merge::add_hardest_protocone_to_jets | ( | std::vector< CSphmomentum > * | protocones, |
double | R2, | ||
double | Emin = 0.0 |
||
) |
remove the hardest protocone and declare it a a jet
protocones | list of protocones (initial jet candidates) |
R2 | cone radius (squared) |
Emin | minimal emergy allowed for jets |
The list of remaining particles (and the uncollinear-hard ones) is updated.
Definition at line 580 of file split_merge.cpp.
References siscone_spherical::CSph3vector::_phi, siscone_spherical::CSph3vector::_theta, siscone_spherical::CSph3vector::build_thetaphi(), siscone_spherical::CSphjet::contents, siscone_spherical::CSphmomentum::E, siscone_spherical::CSphjet::E_tilde, siscone_spherical::CSphmomentum::index, siscone_spherical::CSphjet::n, siscone_spherical::CSphmomentum::parent_index, siscone_spherical::CSphjet::range, siscone_spherical::CSphjet::sm_var2, and siscone_spherical::CSphjet::v.
int siscone_spherical::CSphsplit_merge::add_protocones | ( | std::vector< CSphmomentum > * | protocones, |
double | R2, | ||
double | Emin = 0.0 |
||
) |
add a list of protocones
protocones | list of protocones (initial jet candidates) |
R2 | cone radius (squared) |
Emin | minimal emergy allowed for jets |
Definition at line 462 of file split_merge.cpp.
References siscone_spherical::CSph3vector::_phi, siscone_spherical::CSph3vector::_theta, siscone_spherical::CSph3vector::build_thetaphi(), siscone_spherical::CSphjet::contents, siscone_spherical::CSphmomentum::index, siscone_spherical::CSphjet::n, siscone_spherical::CSphmomentum::parent_index, siscone_spherical::CSphtheta_phi_range::phi_range, siscone_spherical::CSphjet::range, siscone_spherical::CSphtheta_phi_range::theta_range, and siscone_spherical::CSphjet::v.
int siscone_spherical::CSphsplit_merge::init | ( | std::vector< CSphmomentum > & | _particles, |
std::vector< CSphmomentum > * | protocones, | ||
double | R2, | ||
double | Emin = 0.0 |
||
) |
initialisation function
_particles | list of particles |
protocones | list of protocones (initial jet candidates) |
R2 | cone radius (squared) |
Emin | minimal energy allowed for jets |
Definition at line 271 of file split_merge.cpp.
int siscone_spherical::CSphsplit_merge::init_particles | ( | std::vector< CSphmomentum > & | _particles | ) |
initialisation function for particle list
_particles | list of particles |
Definition at line 280 of file split_merge.cpp.
int siscone_spherical::CSphsplit_merge::merge_collinear_and_remove_soft | ( | ) |
build the list 'p_uncol_hard' from p_remain by clustering collinear particles note that thins in only used for stable-cone detection so the parent_index field is unnecessary
Note that soft particles are not removed here This is just a remnant from the trunk version
Definition at line 403 of file split_merge.cpp.
References EPSILON_COLLINEAR, and twopi.
int siscone_spherical::CSphsplit_merge::perform | ( | double | overlap_tshold, |
double | Emin = 0.0 |
||
) |
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 |
Emin | minimal energy allowed for jets |
Definition at line 715 of file split_merge.cpp.
int siscone_spherical::CSphsplit_merge::save_contents | ( | FILE * | flux | ) |
save final jets
flux | stream to save the jet contentss |
Definition at line 832 of file split_merge.cpp.
References siscone_spherical::CSphjet::contents, siscone_spherical::CSphmomentum::E, siscone_spherical::CSphjet::n, siscone_spherical::CSph3vector::px, siscone_spherical::CSph3vector::py, siscone_spherical::CSph3vector::pz, and siscone_spherical::CSphjet::v.
|
inline |
use an energy-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 221 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 275 of file split_merge.h.
bool siscone_spherical::CSphsplit_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 371 of file split_merge.h.
double siscone_spherical::CSphsplit_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 354 of file split_merge.h.
double siscone_spherical::CSphsplit_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 382 of file split_merge.h.
double siscone_spherical::CSphsplit_merge::stable_cone_soft_E2_cutoff |
Energy 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 391 of file split_merge.h.