FastJet
3.1.3
|
Help solve closest pair problems with generic interparticle and beam distance. More...
#include <fastjet/NNH.hh>
Public Member Functions | |
NNH (const std::vector< PseudoJet > &jets) | |
constructor with an initial set of jets (which will be assigned indices 0 ... More... | |
NNH (const std::vector< PseudoJet > &jets, I *info) | |
void | start (const std::vector< PseudoJet > &jets) |
double | dij_min (int &iA, int &iB) |
return the dij_min and indices iA, iB, for the corresponding jets. More... | |
void | remove_jet (int iA) |
remove the jet pointed to by index iA | |
void | merge_jets (int iA, int iB, const PseudoJet &jet, int jet_index) |
merge the jets pointed to by indices A and B and replace them with jet, assigning it an index jet_index. More... | |
~NNH () | |
a destructor | |
Public Member Functions inherited from fastjet::NNHInfo< I > | |
NNHInfo (I *info) | |
template<class NNBJ > | |
void | init_jet (NNBJ *briefjet, const fastjet::PseudoJet &jet, int index) |
Help solve closest pair problems with generic interparticle and beam distance.
Class to help solve closest pair problems with generic interparticle distances and a beam distance, using Anderberg's Nearest Neighbour Heuristic.
It is templated with a BJ (brief jet) class — BJ should basically cache the minimal amount of information that is needed to efficiently calculate interparticle distances and particle-beam distances.
This class can be used with or without an extra "Information" template, i.e. NNB<BJ> or NNH<BJ,I>
For the NNH<BJ> version of the class to function, BJ must provide three member functions
For the NNH<BJ,I> version to function, the BJ::init(...) member must accept an extra argument
where info might be a pointer to a class that contains, e.g., information about R, or other parameters of the jet algorithm
For an example of how the NNH<BJ> class is used, see the Jade (and EECambridge) plugins
NB: the NNH algorithm is expected N^2, but has a worst case of N^3. Many QCD problems tend to place one closer to the N^3 end of the spectrum than one would like. There is scope for further progress (cf Eppstein, Cardinal & Eppstein), nevertheless the current class is already significantly faster than standard N^3 implementations.
Implementation note: this class derives from NNHInfo, which deals with storing any global information that is needed during the clustering
|
inline |
double fastjet::NNH< BJ, I >::dij_min | ( | int & | iA, |
int & | iB | ||
) |
void fastjet::NNH< BJ, I >::merge_jets | ( | int | iA, |
int | iB, | ||
const PseudoJet & | jet, | ||
int | jet_index | ||
) |