siscone is hosted by Hepforge, IPPP Durham

The SISCone Jet Algorithm

Version 3.0.6



SISCone 3.0.6
siscone::Csplit_merge Class Reference

Class used to split and merge jets. More...

#include <split_merge.h>

Inheritance diagram for siscone::Csplit_merge:
Collaboration diagram for siscone::Csplit_merge:

Classes

class  Cuser_scale_base
 base class for user-defined ordering of stable cones More...
 

Public Member Functions

 Csplit_merge ()
 default ctor More...
 
 ~Csplit_merge ()
 default dtor More...
 
int init (std::vector< Cmomentum > &_particles, std::vector< Cmomentum > *protocones, double R2, double ptmin=0.0)
 initialisation function More...
 
int init_particles (std::vector< Cmomentum > &_particles)
 initialisation function for particle list More...
 
int init_pleft ()
 build initial list of left particles More...
 
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. More...
 
int partial_clear ()
 partial clearance More...
 
int full_clear ()
 full clearance More...
 
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_baseuser_scale () const
 return the user-defined scale (NULL if none) More...
 
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 More...
 
int add_protocones (std::vector< Cmomentum > *protocones, double R2, double ptmin=0.0)
 add a list of protocones More...
 
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 More...
 
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. More...
 
int save_contents (FILE *flux)
 save final jets More...
 
int show ()
 show jets/candidates status More...
 

Public Attributes

int n
 number of particles More...
 
std::vector< Cmomentumparticles
 list of particles More...
 
std::vector< double > pt
 list of particles' pt More...
 
int n_left
 numer of particles that does not belong to any jet More...
 
std::vector< Cmomentump_remain
 list of particles remaining to deal with More...
 
std::vector< Cmomentump_uncol_hard
 list of particles remaining with collinear clustering More...
 
int n_pass
 index of the run More...
 
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< Cjetjets
 list of jets More...
 
int * indices
 maximal size array for indices works More...
 
int idx_size
 number of elements in indices1 More...
 
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...
 
Csplit_merge_ptcomparison ptcomparison
 member used for detailed comparisons of pt's More...
 
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_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. More...
 

Detailed Description

Class used to split and merge jets.

Definition at line 180 of file split_merge.h.

Constructor & Destructor Documentation

◆ Csplit_merge()

◆ ~Csplit_merge()

siscone::Csplit_merge::~Csplit_merge ( )

default dtor

Definition at line 254 of file split_merge.cpp.

References full_clear().

Member Function Documentation

◆ add_hardest_protocone_to_jets()

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

Parameters
protoconeslist of protocones (initial jet candidates)
R2cone radius (squared)
ptminminimal pT allowed for jets
Returns
0 on success, 1 on error

The list of remaining particles (and the uncollinear-hard ones) is updated.

Definition at line 571 of file split_merge.cpp.

References siscone::Cjet::contents, siscone::Cmomentum::eta, siscone::Cmomentum::index, siscone::Csplit_merge::Cuser_scale_base::is_larger(), jets, merge_collinear_and_remove_soft(), siscone::Cjet::n, n_left, n_pass, p_remain, siscone::Cmomentum::parent_index, particles, siscone::Cmomentum::perp2(), siscone::Cmomentum::phi, pt, siscone::Cjet::pt_tilde, ptcomparison, siscone::Cjet::range, siscone::Cjet::sm_var2, twopi, and siscone::Cjet::v.

Referenced by siscone::Csiscone::compute_jets_progressive_removal().

◆ add_protocones()

int siscone::Csplit_merge::add_protocones ( std::vector< Cmomentum > *  protocones,
double  R2,
double  ptmin = 0.0 
)

add a list of protocones

Parameters
protoconeslist of protocones (initial jet candidates)
R2cone radius (squared)
ptminminimal pT allowed for jets
Returns
0 on success, 1 on error

Definition at line 460 of file split_merge.cpp.

References siscone::Cjet::contents, siscone::Cmomentum::eta, siscone::Cmomentum::index, merge_collinear_and_remove_soft(), siscone::Cjet::n, n_left, n_pass, p_remain, siscone::Cmomentum::parent_index, particles, siscone::Cmomentum::phi, pt, siscone::Cjet::pt_tilde, siscone::Cjet::range, twopi, and siscone::Cjet::v.

Referenced by siscone::Csiscone::compute_jets(), init(), and siscone::Csiscone::recompute_jets().

◆ full_clear()

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().

◆ init()

int siscone::Csplit_merge::init ( std::vector< Cmomentum > &  _particles,
std::vector< Cmomentum > *  protocones,
double  R2,
double  ptmin = 0.0 
)

initialisation function

Parameters
_particleslist of particles
protoconeslist of protocones (initial jet candidates)
R2cone radius (squared)
ptminminimal pT allowed for jets
Returns
0 on success, 1 on error

Definition at line 265 of file split_merge.cpp.

References add_protocones().

◆ init_particles()

int siscone::Csplit_merge::init_particles ( std::vector< Cmomentum > &  _particles)

initialisation function for particle list

Parameters
_particleslist of particles
Returns
0 on success, 1 on error

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().

◆ init_pleft()

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 siscone::Ceta_phi_range::eta_max, siscone::Ceta_phi_range::eta_min, merge_collinear_and_remove_soft(), n, n_left, n_pass, p_remain, and particles.

Referenced by init_particles(), and siscone::Csiscone::recompute_jets().

◆ merge_collinear_and_remove_soft()

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().

◆ partial_clear()

◆ perform()

int siscone::Csplit_merge::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.

the 'contents' field of each jets contains the indices of the particles included in that jet.

Parameters
overlap_tsholdthreshold for splitting/merging transition
ptminminimal pT allowed for jets
Returns
the number of jets is returned

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_contents()

int siscone::Csplit_merge::save_contents ( FILE *  flux)

save final jets

Parameters
fluxstream to save the jet contentss

Definition at line 829 of file split_merge.cpp.

References siscone::Cmomentum::build_etaphi(), siscone::Cjet::contents, siscone::Cmomentum::eta, jets, siscone::Cjet::n, particles, siscone::Cmomentum::perp(), siscone::Cmomentum::phi, and siscone::Cjet::v.

◆ set_pt_weighted_splitting()

int siscone::Csplit_merge::set_pt_weighted_splitting ( bool  _use_pt_weighted_splitting)
inline

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.

◆ set_user_scale()

void siscone::Csplit_merge::set_user_scale ( const Cuser_scale_base user_scale_in)
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.

◆ show()

int siscone::Csplit_merge::show ( )

◆ user_scale()

const Cuser_scale_base * siscone::Csplit_merge::user_scale ( ) const
inline

return the user-defined scale (NULL if none)

Definition at line 285 of file split_merge.h.

Member Data Documentation

◆ idx_size

int siscone::Csplit_merge::idx_size

number of elements in indices1

Definition at line 364 of file split_merge.h.

◆ indices

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().

◆ jets

◆ merge_identical_protocones

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().

◆ most_ambiguous_split

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().

◆ n

int siscone::Csplit_merge::n

◆ n_left

int siscone::Csplit_merge::n_left

◆ n_pass

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().

◆ p_remain

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().

◆ p_uncol_hard

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().

◆ particles

std::vector<Cmomentum> siscone::Csplit_merge::particles

◆ pt

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().

◆ ptcomparison

◆ SM_var2_hardest_cut_off

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().

◆ stable_cone_soft_pt2_cutoff

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().


The documentation for this class was generated from the following files:

The SISCone project has been developed by Gavin Salam and Gregory Soyez
Documentation generated on Tue Jun 20 2023 18:08:37 for SISCone by  Doxygen 1.9.4