 |
DAS
3.0
Das Analysis System
|
#include <fjcore.hh>
|
| ClusterSequence () |
|
template<class L > |
| ClusterSequence (const std::vector< L > &pseudojets, const JetDefinition &jet_def, const bool &writeout_combinations=false) |
|
| ClusterSequence (const ClusterSequence &cs) |
|
ClusterSequence & | operator= (const ClusterSequence &cs) |
|
virtual | ~ClusterSequence () |
|
std::vector< PseudoJet > | inclusive_jets (const double ptmin=0.0) const |
|
int | n_exclusive_jets (const double dcut) const |
|
std::vector< PseudoJet > | exclusive_jets (const double dcut) const |
|
std::vector< PseudoJet > | exclusive_jets (const int njets) const |
|
std::vector< PseudoJet > | exclusive_jets_up_to (const int njets) const |
|
double | exclusive_dmerge (const int njets) const |
|
double | exclusive_dmerge_max (const int njets) const |
|
double | exclusive_ymerge (int njets) const |
|
double | exclusive_ymerge_max (int njets) const |
|
int | n_exclusive_jets_ycut (double ycut) const |
|
std::vector< PseudoJet > | exclusive_jets_ycut (double ycut) const |
|
std::vector< PseudoJet > | exclusive_subjets (const PseudoJet &jet, const double dcut) const |
|
int | n_exclusive_subjets (const PseudoJet &jet, const double dcut) const |
|
std::vector< PseudoJet > | exclusive_subjets (const PseudoJet &jet, int nsub) const |
|
std::vector< PseudoJet > | exclusive_subjets_up_to (const PseudoJet &jet, int nsub) const |
|
double | exclusive_subdmerge (const PseudoJet &jet, int nsub) const |
|
double | exclusive_subdmerge_max (const PseudoJet &jet, int nsub) const |
|
double | Q () const |
|
double | Q2 () const |
|
bool | object_in_jet (const PseudoJet &object, const PseudoJet &jet) const |
|
bool | has_parents (const PseudoJet &jet, PseudoJet &parent1, PseudoJet &parent2) const |
|
bool | has_child (const PseudoJet &jet, PseudoJet &child) const |
|
bool | has_child (const PseudoJet &jet, const PseudoJet *&childp) const |
|
bool | has_partner (const PseudoJet &jet, PseudoJet &partner) const |
|
std::vector< PseudoJet > | constituents (const PseudoJet &jet) const |
|
void | print_jets_for_root (const std::vector< PseudoJet > &jets, std::ostream &ostr=std::cout) const |
|
void | print_jets_for_root (const std::vector< PseudoJet > &jets, const std::string &filename, const std::string &comment="") const |
|
void | add_constituents (const PseudoJet &jet, std::vector< PseudoJet > &subjet_vector) const |
|
Strategy | strategy_used () const |
|
std::string | strategy_string () const |
|
std::string | strategy_string (Strategy strategy_in) const |
|
const JetDefinition & | jet_def () const |
|
void | delete_self_when_unused () |
|
bool | will_delete_self_when_unused () const |
|
void | signal_imminent_self_deletion () const |
|
double | jet_scale_for_algorithm (const PseudoJet &jet) const |
|
void | plugin_record_ij_recombination (int jet_i, int jet_j, double dij, int &newjet_k) |
|
void | plugin_record_ij_recombination (int jet_i, int jet_j, double dij, const PseudoJet &newjet, int &newjet_k) |
|
void | plugin_record_iB_recombination (int jet_i, double diB) |
|
void | plugin_associate_extras (Extras *extras_in) |
|
bool | plugin_activated () const |
|
const Extras * | extras () const |
|
template<class GBJ > |
void | plugin_simple_N2_cluster () |
|
const std::vector< PseudoJet > & | jets () const |
|
const std::vector< history_element > & | history () const |
|
unsigned int | n_particles () const |
|
std::vector< int > | particle_jet_indices (const std::vector< PseudoJet > &) const |
|
std::vector< int > | unique_history_order () const |
|
std::vector< PseudoJet > | unclustered_particles () const |
|
std::vector< PseudoJet > | childless_pseudojets () const |
|
bool | contains (const PseudoJet &object) const |
|
void | transfer_from_sequence (const ClusterSequence &from_seq, const FunctionOfPseudoJet< PseudoJet > *action_on_jets=0) |
|
const SharedPtr< PseudoJetStructureBase > & | structure_shared_ptr () const |
|
template<class BJ > |
FJCORE_BEGIN_NAMESPACE void | _simple_N2_cluster () |
|
template<> |
void | _bj_set_jetinfo (EEBriefJet *const jetA, const int _jets_index) const |
|
template<> |
double | _bj_dist (const EEBriefJet *const jeta, const EEBriefJet *const jetb) const |
|
|
void | _really_dumb_cluster () |
|
void | _delaunay_cluster () |
|
template<class BJ > |
void | _simple_N2_cluster () |
|
void | _tiled_N2_cluster () |
|
void | _faster_tiled_N2_cluster () |
|
void | _minheap_faster_tiled_N2_cluster () |
|
void | _CP2DChan_cluster () |
|
void | _CP2DChan_cluster_2pi2R () |
|
void | _CP2DChan_cluster_2piMultD () |
|
void | _CP2DChan_limited_cluster (double D) |
|
void | _do_Cambridge_inclusive_jets () |
|
void | _fast_NsqrtN_cluster () |
|
void | _add_step_to_history (const int parent1, const int parent2, const int jetp_index, const double dij) |
|
void | _extract_tree_children (int pos, std::valarray< bool > &, const std::valarray< int > &, std::vector< int > &) const |
|
void | _extract_tree_parents (int pos, std::valarray< bool > &, const std::valarray< int > &, std::vector< int > &) const |
|
void | _add_ktdistance_to_map (const int ii, DistMap &DijMap, const DynamicNearestNeighbours *DNN) |
|
template<class J > |
void | _bj_set_jetinfo (J *const jet, const int _jets_index) const |
|
void | _bj_remove_from_tiles (TiledJet *const jet) const |
|
template<class J > |
double | _bj_dist (const J *const jeta, const J *const jetb) const |
|
template<class J > |
double | _bj_diJ (const J *const jeta) const |
|
template<class J > |
J * | _bj_of_hindex (const int hist_index, J *const head, J *const tail) const |
|
template<class J > |
void | _bj_set_NN_nocross (J *const jeta, J *const head, const J *const tail) const |
|
template<class J > |
void | _bj_set_NN_crosscheck (J *const jeta, J *const head, const J *const tail) const |
|
int | _tile_index (int ieta, int iphi) const |
|
int | _tile_index (const double eta, const double phi) const |
|
void | _tj_set_jetinfo (TiledJet *const jet, const int _jets_index) |
|
void | _bj_remove_from_tiles (TiledJet *const jet) |
|
void | _initialise_tiles () |
|
void | _print_tiles (TiledJet *briefjets) const |
|
void | _add_neighbours_to_tile_union (const int tile_index, std::vector< int > &tile_union, int &n_near_tiles) const |
|
void | _add_untagged_neighbours_to_tile_union (const int tile_index, std::vector< int > &tile_union, int &n_near_tiles) |
|
void | _simple_N2_cluster_BriefJet () |
|
void | _simple_N2_cluster_EEBriefJet () |
|
◆ DijEntry
◆ DistMap
◆ StructureType
◆ TwoVertices
◆ JetType
Enumerator |
---|
Invalid | |
InexistentParent | |
BeamJet | |
◆ ClusterSequence() [1/3]
◆ ClusterSequence() [2/3]
◆ ClusterSequence() [3/3]
◆ ~ClusterSequence()
1415 assert(csi != NULL);
◆ _add_ktdistance_to_map()
2553 if (DeltaR2 > 1.0) {
2559 double dij = DeltaR2 * kt2i;
◆ _add_neighbours_to_tile_union()
void _add_neighbours_to_tile_union |
( |
const int |
tile_index, |
|
|
std::vector< int > & |
tile_union, |
|
|
int & |
n_near_tiles |
|
) |
| const |
|
private |
2844 for (
Tile *
const * near_tile =
_tiles[tile_index].begin_tiles;
2845 near_tile !=
_tiles[tile_index].end_tiles; near_tile++){
2846 tile_union[n_near_tiles] = *near_tile - &
_tiles[0];
◆ _add_step_to_history()
void _add_step_to_history |
( |
const int |
parent1, |
|
|
const int |
parent2, |
|
|
const int |
jetp_index, |
|
|
const double |
dij |
|
) |
| |
|
private |
2138 history_element element;
2139 element.parent1 = parent1;
2140 element.parent2 = parent2;
2141 element.jetp_index = jetp_index;
2144 element.max_dij_so_far = max(dij,
_history[
_history.size()-1].max_dij_so_far);
2146 int local_step =
_history.size()-1;
2147 assert(parent1 >= 0);
2149 throw InternalError(
"trying to recomine an object that has previsously been recombined");
2151 _history[parent1].child = local_step;
2154 throw InternalError(
"trying to recomine an object that has previsously been recombined");
2156 _history[parent2].child = local_step;
2159 assert(jetp_index >= 0);
2160 _jets[jetp_index].set_cluster_hist_index(local_step);
2164 cout << local_step <<
": "
2165 << parent1 <<
" with " << parent2
2166 <<
"; y = "<< dij<<endl;
◆ _add_untagged_neighbours_to_tile_union()
void _add_untagged_neighbours_to_tile_union |
( |
const int |
tile_index, |
|
|
std::vector< int > & |
tile_union, |
|
|
int & |
n_near_tiles |
|
) |
| |
|
inlineprivate |
2853 for (
Tile ** near_tile =
_tiles[tile_index].begin_tiles;
2854 near_tile !=
_tiles[tile_index].end_tiles; near_tile++){
2855 if (! (*near_tile)->tagged) {
2856 (*near_tile)->tagged =
true;
2857 tile_union[n_near_tiles] = *near_tile - &
_tiles[0];
◆ _best_strategy()
1677 int N =
_jets.size();
1678 double bounded_R = max(
_Rparam, 0.1);
1679 if (N <= 30 || N <= 39.0/(bounded_R + 0.6)) {
1682 const static _Parabola N_Tiled_to_MHT_lowR (-45.4947,54.3528,44.6283);
1683 const static _Parabola L_MHT_to_MHTLazy9_lowR (0.677807,-1.05006,10.6994);
1684 const static _Parabola L_MHTLazy9_to_MHTLazy25_akt_lowR(0.169967,-0.512589,12.1572);
1685 const static _Parabola L_MHTLazy9_to_MHTLazy25_kt_lowR (0.16237,-0.484612,12.3373);
1686 const static _Parabola L_MHTLazy9_to_MHTLazy25_cam_lowR = L_MHTLazy9_to_MHTLazy25_kt_lowR;
1687 const static _Parabola L_MHTLazy25_to_NlnN_akt_lowR (0.0472051,-0.22043,15.9196);
1688 const static _Parabola L_MHTLazy25_to_NlnN_kt_lowR (0.118609,-0.326811,14.8287);
1689 const static _Parabola L_MHTLazy25_to_NlnN_cam_lowR (0.10119,-0.295748,14.3924);
1690 const static _Line L_Tiled_to_MHTLazy9_medR (-1.31304,7.29621);
1691 const static _Parabola L_MHTLazy9_to_MHTLazy25_akt_medR = L_MHTLazy9_to_MHTLazy25_akt_lowR;
1692 const static _Parabola L_MHTLazy9_to_MHTLazy25_kt_medR = L_MHTLazy9_to_MHTLazy25_kt_lowR;
1693 const static _Parabola L_MHTLazy9_to_MHTLazy25_cam_medR = L_MHTLazy9_to_MHTLazy25_cam_lowR;
1694 const static _Parabola L_MHTLazy25_to_NlnN_akt_medR = L_MHTLazy25_to_NlnN_akt_lowR;
1695 const static _Parabola L_MHTLazy25_to_NlnN_kt_medR = L_MHTLazy25_to_NlnN_kt_lowR;
1696 const static _Parabola L_MHTLazy25_to_NlnN_cam_medR = L_MHTLazy25_to_NlnN_cam_lowR;
1697 const static double N_Plain_to_MHTLazy9_largeR = 75;
1698 const static double N_MHTLazy9_to_MHTLazy25_akt_largeR = 700;
1699 const static double N_MHTLazy9_to_MHTLazy25_kt_largeR = 1000;
1700 const static double N_MHTLazy9_to_MHTLazy25_cam_largeR = 1000;
1701 const static double N_MHTLazy25_to_NlnN_akt_largeR = 100000;
1702 const static double N_MHTLazy25_to_NlnN_kt_largeR = 40000;
1703 const static double N_MHTLazy25_to_NlnN_cam_largeR = 15000;
1714 if (bounded_R < 0.65) {
1715 if (N < N_Tiled_to_MHT_lowR(bounded_R))
return N2Tiled;
1716 double logN = log(
double(N));
1717 if (logN < L_MHT_to_MHTLazy9_lowR(bounded_R))
return N2MinHeapTiled;
1720 if (logN < L_MHTLazy9_to_MHTLazy25_akt_lowR(bounded_R))
return N2MHTLazy9;
1721 else if (logN < L_MHTLazy25_to_NlnN_akt_lowR(bounded_R))
return N2MHTLazy25;
1724 if (logN < L_MHTLazy9_to_MHTLazy25_kt_lowR(bounded_R))
return N2MHTLazy9;
1725 else if (logN < L_MHTLazy25_to_NlnN_kt_lowR(bounded_R))
return N2MHTLazy25;
1728 if (logN < L_MHTLazy9_to_MHTLazy25_cam_lowR(bounded_R))
return N2MHTLazy9;
1729 else if (logN < L_MHTLazy25_to_NlnN_cam_lowR(bounded_R))
return N2MHTLazy25;
1733 }
else if (bounded_R < 0.5*
pi) {
1734 double logN = log(
double(N));
1735 if (logN < L_Tiled_to_MHTLazy9_medR(bounded_R))
return N2Tiled;
1738 if (logN < L_MHTLazy9_to_MHTLazy25_akt_medR(bounded_R))
return N2MHTLazy9;
1739 else if (logN < L_MHTLazy25_to_NlnN_akt_medR(bounded_R))
return N2MHTLazy25;
1742 if (logN < L_MHTLazy9_to_MHTLazy25_kt_medR(bounded_R))
return N2MHTLazy9;
1743 else if (logN < L_MHTLazy25_to_NlnN_kt_medR(bounded_R))
return N2MHTLazy25;
1746 if (logN < L_MHTLazy9_to_MHTLazy25_cam_medR(bounded_R))
return N2MHTLazy9;
1747 else if (logN < L_MHTLazy25_to_NlnN_cam_medR(bounded_R))
return N2MHTLazy25;
1752 if (N < N_Plain_to_MHTLazy9_largeR)
return N2Plain;
1755 if (N < N_MHTLazy9_to_MHTLazy25_akt_largeR)
return N2MHTLazy9;
1756 else if (N < N_MHTLazy25_to_NlnN_akt_largeR)
return N2MHTLazy25;
1759 if (N < N_MHTLazy9_to_MHTLazy25_kt_largeR)
return N2MHTLazy9;
1760 else if (N < N_MHTLazy25_to_NlnN_kt_largeR)
return N2MHTLazy25;
1763 if (N < N_MHTLazy9_to_MHTLazy25_cam_largeR)
return N2MHTLazy9;
1764 else if (N < N_MHTLazy25_to_NlnN_cam_largeR)
return N2MHTLazy25;
1769 assert(0 &&
"Code should never reach here");
◆ _bj_diJ()
double _bj_diJ |
( |
const J *const |
jeta | ) |
const |
|
inlineprivate |
1720 double kt2 = jet->kt2;
1721 if (jet->NN != NULL) {
if (jet->NN->kt2 < kt2) {kt2 = jet->NN->kt2;}}
1722 return jet->NN_dist * kt2;
◆ _bj_dist() [1/2]
2655 - jeta->nz*jetb->nz;
◆ _bj_dist() [2/2]
double _bj_dist |
( |
const J *const |
jeta, |
|
|
const J *const |
jetb |
|
) |
| const |
|
inlineprivate |
1709 #ifndef FJCORE_NEW_DELTA_PHI
1710 double dphi = std::abs(jetA->phi - jetB->phi);
1711 double deta = (jetA->eta - jetB->eta);
1712 if (dphi >
pi) {dphi =
twopi - dphi;}
1714 double dphi =
pi-std::abs(
pi-std::abs(jetA->phi - jetB->phi));
1715 double deta = (jetA->eta - jetB->eta);
1717 return dphi*dphi + deta*deta;
◆ _bj_of_hindex()
J* _bj_of_hindex |
( |
const int |
hist_index, |
|
|
J *const |
head, |
|
|
J *const |
tail |
|
) |
| const |
|
inlineprivate |
1611 for(res = head; res<tail; res++) {
1612 if (
_jets[res->_jets_index].cluster_hist_index() == hist_index) {
break;}
◆ _bj_remove_from_tiles() [1/2]
void _bj_remove_from_tiles |
( |
TiledJet *const |
jet | ) |
|
|
private |
2757 if (jet->
next != NULL) {
◆ _bj_remove_from_tiles() [2/2]
void _bj_remove_from_tiles |
( |
TiledJet *const |
jet | ) |
const |
|
private |
◆ _bj_set_jetinfo() [1/2]
void _bj_set_jetinfo |
( |
EEBriefJet *const |
jetA, |
|
|
const int |
_jets_index |
|
) |
| const |
|
inline |
2619 double E =
_jets[_jets_index].E();
2627 if (
p <= 0 && scale < 1e-300) scale = 1e-300;
2628 scale = pow(scale,
p);
2631 throw Error(
"Unrecognised jet algorithm");
2634 double norm =
_jets[_jets_index].modp2();
2636 norm = 1.0/sqrt(norm);
2637 jetA->nx = norm *
_jets[_jets_index].px();
2638 jetA->ny = norm *
_jets[_jets_index].py();
2639 jetA->nz = norm *
_jets[_jets_index].pz();
2645 jetA->_jets_index = _jets_index;
2646 jetA->NN_dist =
_R2;
◆ _bj_set_jetinfo() [2/2]
void _bj_set_jetinfo |
( |
J *const |
jet, |
|
|
const int |
_jets_index |
|
) |
| const |
|
inlineprivate |
1700 jetA->eta =
_jets[_jets_index].rap();
1701 jetA->phi =
_jets[_jets_index].phi_02pi();
1703 jetA->_jets_index = _jets_index;
1704 jetA->NN_dist =
_R2;
◆ _bj_set_NN_crosscheck()
void _bj_set_NN_crosscheck |
( |
J *const |
jeta, |
|
|
J *const |
head, |
|
|
const J *const |
tail |
|
) |
| const |
|
inlineprivate |
1751 double NN_dist =
_R2;
1753 for (J * jetB = head; jetB != tail; jetB++) {
1755 if (dist < NN_dist) {
1759 if (dist < jetB->NN_dist) {
1760 jetB->NN_dist = dist;
1765 jet->NN_dist = NN_dist;
◆ _bj_set_NN_nocross()
void _bj_set_NN_nocross |
( |
J *const |
jeta, |
|
|
J *const |
head, |
|
|
const J *const |
tail |
|
) |
| const |
|
inlineprivate |
1726 double NN_dist =
_R2;
1729 for (J * jetB = head; jetB != jet; jetB++) {
1731 if (dist < NN_dist) {
1738 for (J * jetB = jet+1; jetB != tail; jetB++) {
1740 if (dist < NN_dist) {
1747 jet->NN_dist = NN_dist;
◆ _CP2DChan_cluster()
void _CP2DChan_cluster |
( |
| ) |
|
|
private |
2382 unsigned int n =
_jets.size();
2383 vector<MirrorInfo> coordIDs(2*n);
2384 vector<int> jetIDs(2*n);
2385 vector<Coord2D> coords(2*n);
2386 double minrap = numeric_limits<double>::max();
2387 double maxrap = -minrap;
2388 int coord_index = 0;
2389 for (
unsigned i = 0; i < n; i++) {
2393 coordIDs[i].orig = coord_index;
2394 coordIDs[i].mirror = coord_index+1;
2397 jetIDs[coord_index] = i;
2398 jetIDs[coord_index+1] = i;
2399 minrap = min(coords[coord_index].x,minrap);
2400 maxrap = max(coords[coord_index].x,maxrap);
2404 for (
unsigned i = n; i < 2*n; i++) {coordIDs[i].orig =
Invalid;}
2405 coords.resize(coord_index);
2406 Coord2D left_edge(minrap-1.0, 0.0);
2409 vector<Coord2D> new_points(2);
2410 vector<unsigned int> cIDs_to_remove(4);
2411 vector<unsigned int> new_cIDs(2);
2413 unsigned int cID1, cID2;
2415 cp.closest_pair(cID1,cID2,distance2);
2417 if (distance2 > 1.0) {
break;}
2418 int jet_i = jetIDs[cID1];
2419 int jet_j = jetIDs[cID2];
2420 assert (jet_i != jet_j);
2423 cIDs_to_remove[0] = coordIDs[jet_i].orig;
2424 cIDs_to_remove[1] = coordIDs[jet_i].mirror;
2425 cIDs_to_remove[2] = coordIDs[jet_j].orig;
2426 cIDs_to_remove[3] = coordIDs[jet_j].mirror;
2429 new_cIDs[0] = cp.replace(cIDs_to_remove[0], cIDs_to_remove[2], new_points[0]);
2430 new_cIDs[1] = cp.replace(cIDs_to_remove[1], cIDs_to_remove[3], new_points[1]);
2431 coordIDs[jet_i].orig =
Invalid;
2432 coordIDs[jet_j].orig =
Invalid;
2433 coordIDs[newjet_k] =
MirrorInfo(new_cIDs[0], new_cIDs[1]);
2434 jetIDs[new_cIDs[0]] = newjet_k;
2435 jetIDs[new_cIDs[1]] = newjet_k;
2437 if (n == 1) {
break;}
◆ _CP2DChan_cluster_2pi2R()
void _CP2DChan_cluster_2pi2R |
( |
| ) |
|
|
private |
◆ _CP2DChan_cluster_2piMultD()
void _CP2DChan_cluster_2piMultD |
( |
| ) |
|
|
private |
◆ _CP2DChan_limited_cluster()
void _CP2DChan_limited_cluster |
( |
double |
D | ) |
|
|
private |
2302 vector<MirrorInfo> coordIDs(2*n);
2303 vector<int> jetIDs(2*n);
2304 vector<Coord2D> coords(2*n);
2305 double Dlim4mirror = min(Dlim,
pi);
2306 double minrap = numeric_limits<double>::max();
2307 double maxrap = -minrap;
2308 int coord_index = -1;
2310 for (
unsigned jet_i = 0; jet_i <
_jets.size(); jet_i++) {
2312 (
_jets[jet_i].E() == abs(
_jets[jet_i].pz()) &&
2313 _jets[jet_i].perp2() == 0.0)
2316 coordIDs[jet_i].orig = ++coord_index;
2318 jetIDs[coord_index] = jet_i;
2319 minrap = min(coords[coord_index].x,minrap);
2320 maxrap = max(coords[coord_index].x,maxrap);
2321 Coord2D mirror_point(coords[coord_index]);
2323 coordIDs[jet_i].mirror = ++coord_index;
2324 coords[coord_index] = mirror_point;
2325 jetIDs[coord_index] = jet_i;
2327 coordIDs[jet_i].mirror =
Invalid;
2330 coords.resize(coord_index+1);
2331 Coord2D left_edge(minrap-1.0, -3.15);
2332 Coord2D right_edge(maxrap+1.0, 9.45);
2334 vector<Coord2D> new_points(2);
2335 vector<unsigned int> cIDs_to_remove(4);
2336 vector<unsigned int> new_cIDs(2);
2338 unsigned int cID1, cID2;
2340 cp.closest_pair(cID1,cID2,distance2);
2341 if (distance2 > Dlim*Dlim) {
break;}
2343 int jet_i = jetIDs[cID1];
2344 int jet_j = jetIDs[cID2];
2345 assert (jet_i != jet_j);
2348 if (--n_active == 1) {
break;}
2349 cIDs_to_remove.resize(0);
2350 cIDs_to_remove.push_back(coordIDs[jet_i].orig);
2351 cIDs_to_remove.push_back(coordIDs[jet_j].orig);
2352 if (coordIDs[jet_i].mirror !=
Invalid)
2353 cIDs_to_remove.push_back(coordIDs[jet_i].mirror);
2354 if (coordIDs[jet_j].mirror !=
Invalid)
2355 cIDs_to_remove.push_back(coordIDs[jet_j].mirror);
2357 new_points.resize(0);
2358 new_points.push_back(new_point);
2359 if (
make_mirror(new_point, Dlim4mirror)) new_points.push_back(new_point);
2360 cp.replace_many(cIDs_to_remove, new_points, new_cIDs);
2361 coordIDs[newjet_k].orig = new_cIDs[0];
2362 jetIDs[new_cIDs[0]] = newjet_k;
2363 if (new_cIDs.size() == 2) {
2364 coordIDs[newjet_k].mirror = new_cIDs[1];
2365 jetIDs[new_cIDs[1]] = newjet_k;
2366 }
else {coordIDs[newjet_k].mirror =
Invalid;}
◆ _decant_options()
void _decant_options |
( |
const JetDefinition & |
jet_def, |
|
|
const bool & |
writeout_combinations |
|
) |
| |
|
protected |
◆ _decant_options_partial()
void _decant_options_partial |
( |
| ) |
|
|
protected |
◆ _delaunay_cluster()
void _delaunay_cluster |
( |
| ) |
|
|
private |
2464 int n =
_jets.size();
2465 vector<EtaPhi> points(n);
2466 for (
int i = 0; i < n; i++) {
2468 points[i].sanitize();
2472 #ifndef __FJCORE_DROP_CGAL // strategy = NlnN* are not supported if we drop CGAL...
2477 DNN.
reset(
new Dnn3piCylinder(points,ignore_nearest_is_mirror,
verbose));
2479 DNN.
reset(
new Dnn2piCylinder(points,ignore_nearest_is_mirror,
verbose));
2484 err <<
"ERROR: Requested strategy "<<
strategy_string()<<
" but it is not"<<endl;
2485 err <<
" supported because FastJet was compiled without CGAL"<<endl;
2486 throw Error(err.str());
2488 #endif // __FJCORE_DROP_CGAL
2493 for (
int ii = 0; ii < n; ii++) {
2496 for (
int i=0;i<n;i++) {
2501 bool recombine_with_beam;
2503 SmallestDij = DijMap.begin()->first;
2504 SmallestDijPair = DijMap.begin()->second;
2505 jet_i = SmallestDijPair.first;
2506 jet_j = SmallestDijPair.second;
2507 if (
verbose) cout <<
"CS_Delaunay found recombination candidate: " << jet_i <<
" " << jet_j <<
" " << SmallestDij << endl;
2508 DijMap.erase(DijMap.begin());
2509 recombine_with_beam = (jet_j ==
BeamJet);
2510 if (!recombine_with_beam) {Valid2 = DNN->
Valid(jet_j);}
2511 else {Valid2 =
true;}
2512 if (
verbose) cout <<
"CS_Delaunay validities i & j: " << DNN->
Valid(jet_i) <<
" " << Valid2 << endl;
2513 }
while ( !DNN->
Valid(jet_i) || !Valid2);
2514 if (! recombine_with_beam) {
2516 if (
verbose) cout <<
"CS_Delaunay call _do_ij_recomb: " << jet_i <<
" " << jet_j <<
" " << SmallestDij << endl;
2519 newpoint.sanitize();
2520 points.push_back(newpoint);
2522 if (
verbose) cout <<
"CS_Delaunay call _do_iB_recomb: " << jet_i <<
" " << SmallestDij << endl;
2525 if (i == n-1) {
break;}
2526 vector<int> updated_neighbours;
2527 if (! recombine_with_beam) {
2530 points[points.size()-1], point3,
2531 updated_neighbours);
2532 if (
static_cast<unsigned int> (point3) != points.size()-1) {
2533 throw Error(
"INTERNAL ERROR: point3 != points.size()-1");}
2537 vector<int>::iterator it = updated_neighbours.begin();
2538 for (; it != updated_neighbours.end(); ++it) {
◆ _do_Cambridge_inclusive_jets()
void _do_Cambridge_inclusive_jets |
( |
| ) |
|
|
private |
2443 for (
unsigned int hist_i = 0; hist_i < n; hist_i++) {
◆ _do_iB_recombination_step()
void _do_iB_recombination_step |
( |
const int |
jet_i, |
|
|
const double |
diB |
|
) |
| |
|
protected |
◆ _do_ij_recombination_step()
void _do_ij_recombination_step |
( |
const int |
jet_i, |
|
|
const int |
jet_j, |
|
|
const double |
dij, |
|
|
int & |
newjet_k |
|
) |
| |
|
protected |
2249 _jets.push_back(newjet);
2250 newjet_k =
_jets.size()-1;
2252 _jets[newjet_k].set_cluster_hist_index(newstep_k);
2253 int hist_i =
_jets[jet_i].cluster_hist_index();
2254 int hist_j =
_jets[jet_j].cluster_hist_index();
◆ _extract_tree_children()
void _extract_tree_children |
( |
int |
pos, |
|
|
std::valarray< bool > & |
extracted, |
|
|
const std::valarray< int > & |
lowest_constituent, |
|
|
std::vector< int > & |
unique_tree |
|
) |
| const |
|
private |
2195 if (!extracted[position]) {
2198 int child =
_history[position].child;
◆ _extract_tree_parents()
void _extract_tree_parents |
( |
int |
pos, |
|
|
std::valarray< bool > & |
extracted, |
|
|
const std::valarray< int > & |
lowest_constituent, |
|
|
std::vector< int > & |
unique_tree |
|
) |
| const |
|
private |
2228 if (!extracted[position]) {
2229 int parent1 =
_history[position].parent1;
2230 int parent2 =
_history[position].parent2;
2231 if (parent1 >= 0 && parent2 >= 0) {
2232 if (lowest_constituent[parent1] > lowest_constituent[parent2])
2235 if (parent1 >= 0 && !extracted[parent1])
2237 if (parent2 >= 0 && !extracted[parent2])
2239 unique_tree.push_back(position);
2240 extracted[position] =
true;
◆ _fast_NsqrtN_cluster()
void _fast_NsqrtN_cluster |
( |
| ) |
|
|
private |
◆ _faster_tiled_N2_cluster()
void _faster_tiled_N2_cluster |
( |
| ) |
|
|
private |
3018 int n =
_jets.size();
3020 TiledJet * jetA = briefjets, * jetB;
3024 for (
int i = 0; i< n; i++) {
3029 vector<Tile>::const_iterator tile;
3030 for (tile =
_tiles.begin(); tile !=
_tiles.end(); tile++) {
3031 for (jetA = tile->head; jetA != NULL; jetA = jetA->
next) {
3032 for (jetB = tile->head; jetB != jetA; jetB = jetB->next) {
3034 if (dist < jetA->NN_dist) {jetA->
NN_dist = dist; jetA->
NN = jetB;}
3035 if (dist < jetB->NN_dist) {jetB->
NN_dist = dist; jetB->NN = jetA;}
3038 for (
Tile ** RTile = tile->RH_tiles; RTile != tile->end_tiles; RTile++) {
3039 for (jetA = tile->head; jetA != NULL; jetA = jetA->
next) {
3040 for (jetB = (*RTile)->head; jetB != NULL; jetB = jetB->next) {
3042 if (dist < jetA->NN_dist) {jetA->
NN_dist = dist; jetA->
NN = jetB;}
3043 if (dist < jetB->NN_dist) {jetB->
NN_dist = dist; jetB->NN = jetA;}
3048 struct diJ_plus_link {
3052 diJ_plus_link * diJ =
new diJ_plus_link[n];
3054 for (
int i = 0; i < n; i++) {
3060 int history_location = n-1;
3062 diJ_plus_link * best, *stop;
3063 double diJ_min = diJ[0].diJ;
3066 for (diJ_plus_link * here = diJ+1; here != stop; here++) {
3067 if (here->diJ < diJ_min) {best = here; diJ_min = here->diJ;}
3074 if (jetA < jetB) {
std::swap(jetA,jetB);}
3085 int n_near_tiles = 0;
3087 tile_union, n_near_tiles);
3091 tile_union,n_near_tiles);
3096 tile_union,n_near_tiles);
3100 diJ[n].jet->diJ_posn = jetA->diJ_posn;
3101 diJ[jetA->diJ_posn] = diJ[n];
3102 for (
int itile = 0; itile < n_near_tiles; itile++) {
3103 Tile * tile_ptr = &
_tiles[tile_union[itile]];
3104 tile_ptr->
tagged =
false;
3107 if (jetI->NN == jetA || (jetI->NN == jetB && jetB != NULL)) {
3108 jetI->NN_dist =
_R2;
3112 near_tile != tile_ptr->
end_tiles; near_tile++) {
3114 for (
TiledJet * jetJ = (*near_tile)->head;
3115 jetJ != NULL; jetJ = jetJ->
next) {
3117 if (dist < jetI->NN_dist && jetJ != jetI) {
3118 jetI->NN_dist = dist; jetI->NN = jetJ;
3122 diJ[jetI->diJ_posn].diJ =
_bj_diJ(jetI);
3129 if (dist < jetI->NN_dist) {
3131 jetI->NN_dist = dist;
3133 diJ[jetI->diJ_posn].diJ =
_bj_diJ(jetI);
3136 if (dist < jetB->NN_dist) {
3138 jetB->NN_dist = dist;
3144 if (jetB != NULL) {diJ[jetB->diJ_posn].diJ =
_bj_diJ(jetB);}
◆ _fill_initial_history()
void _fill_initial_history |
( |
| ) |
|
|
protected |
1599 for (
int i = 0; i < static_cast<int>(
_jets.size()) ; i++) {
1600 history_element element;
1604 element.jetp_index = i;
1606 element.max_dij_so_far = 0.0;
1609 _jets[i].set_cluster_hist_index(i);
◆ _initialise_and_run()
void _initialise_and_run |
( |
const JetDefinition & |
jet_def, |
|
|
const bool & |
writeout_combinations |
|
) |
| |
|
protected |
◆ _initialise_and_run_no_decant()
void _initialise_and_run_no_decant |
( |
| ) |
|
|
protected |
1462 throw Error(
"A ClusterSequence cannot be created with an uninitialised JetDefinition");
1466 #ifdef __FJCORE_DROP_CGAL
1468 #endif // __FJCORE_DROP_CGAL
1470 int N =
_jets.size();
1471 if (min(1.0,max(0.1,
_Rparam)*3.3)*N <= 30) {
1475 #ifndef __FJCORE_DROP_CGAL
1477 || N > 35000/pow(
_Rparam,1.15)) {
1479 #endif // __FJCORE_DROP_CGAL
1480 }
else if (N <= 450) {
1492 #ifdef __FJCORE_DROP_CGAL
1502 <<
" because the former is not supported for R = " <<
_Rparam
1529 throw Error(
"N2MHTLazy9AntiKtSeparateGhosts strategy not supported with FJCORE");
1546 err <<
"Unrecognised value for strategy: "<<
_strategy;
1547 throw Error(err.str());
◆ _initialise_tiles()
void _initialise_tiles |
( |
| ) |
|
|
private |
2762 double default_size = max(0.1,
_Rparam);
2786 for (
int idphi = -1; idphi <=+1; idphi++) {
2797 for (
int idphi = -1; idphi <= +1; idphi++) {
◆ _minheap_faster_tiled_N2_cluster()
void _minheap_faster_tiled_N2_cluster |
( |
| ) |
|
|
private |
3151 int n =
_jets.size();
3153 TiledJet * jetA = briefjets, * jetB;
3157 for (
int i = 0; i< n; i++) {
3162 vector<Tile>::const_iterator tile;
3163 for (tile =
_tiles.begin(); tile !=
_tiles.end(); tile++) {
3164 for (jetA = tile->head; jetA != NULL; jetA = jetA->
next) {
3165 for (jetB = tile->head; jetB != jetA; jetB = jetB->next) {
3167 if (dist < jetA->NN_dist) {jetA->
NN_dist = dist; jetA->
NN = jetB;}
3168 if (dist < jetB->NN_dist) {jetB->
NN_dist = dist; jetB->NN = jetA;}
3171 for (
Tile ** RTile = tile->RH_tiles; RTile != tile->end_tiles; RTile++) {
3172 for (jetA = tile->head; jetA != NULL; jetA = jetA->
next) {
3173 for (jetB = (*RTile)->head; jetB != NULL; jetB = jetB->next) {
3175 if (dist < jetA->NN_dist) {jetA->
NN_dist = dist; jetA->
NN = jetB;}
3176 if (dist < jetB->NN_dist) {jetB->
NN_dist = dist; jetB->NN = jetA;}
3181 vector<double> diJs(n);
3182 for (
int i = 0; i < n; i++) {
3183 diJs[i] =
_bj_diJ(&briefjets[i]);
3187 vector<TiledJet *> jets_for_minheap;
3188 jets_for_minheap.reserve(n);
3189 int history_location = n-1;
3191 double diJ_min = minheap.minval() *
_invR2;
3192 jetA = head + minheap.minloc();
3196 if (jetA < jetB) {
std::swap(jetA,jetB);}
3207 minheap.remove(jetA-head);
3208 int n_near_tiles = 0;
3210 tile_union, n_near_tiles);
3214 tile_union,n_near_tiles);
3226 tile_union,n_near_tiles);
3228 jetB->label_minheap_update_needed();
3229 jets_for_minheap.push_back(jetB);
3231 for (
int itile = 0; itile < n_near_tiles; itile++) {
3232 Tile * tile_ptr = &
_tiles[tile_union[itile]];
3233 tile_ptr->
tagged =
false;
3236 if (jetI->NN == jetA || (jetI->NN == jetB && jetB != NULL)) {
3237 jetI->NN_dist =
_R2;
3240 if (!jetI->minheap_update_needed()) {
3241 jetI->label_minheap_update_needed();
3242 jets_for_minheap.push_back(jetI);}
3245 near_tile != tile_ptr->
end_tiles; near_tile++) {
3247 for (
TiledJet * jetJ = (*near_tile)->head;
3248 jetJ != NULL; jetJ = jetJ->
next) {
3250 if (dist < jetI->NN_dist && jetJ != jetI) {
3251 jetI->NN_dist = dist; jetI->NN = jetJ;
3261 if (dist < jetI->NN_dist) {
3263 jetI->NN_dist = dist;
3266 if (!jetI->minheap_update_needed()) {
3267 jetI->label_minheap_update_needed();
3268 jets_for_minheap.push_back(jetI);}
3271 if (dist < jetB->NN_dist) {
3273 jetB->NN_dist = dist;
3279 while (jets_for_minheap.size() > 0) {
3280 TiledJet * jetI = jets_for_minheap.back();
3281 jets_for_minheap.pop_back();
3282 minheap.update(jetI-head,
_bj_diJ(jetI));
◆ _print_tiles()
void _print_tiles |
( |
TiledJet * |
briefjets | ) |
const |
|
private |
2830 for (vector<Tile>::const_iterator tile =
_tiles.begin();
2831 tile <
_tiles.end(); tile++) {
2832 cout <<
"Tile " << tile -
_tiles.begin()<<
" = ";
2834 for (
TiledJet * jetI = tile->head; jetI != NULL; jetI = jetI->
next) {
2835 list.push_back(jetI-briefjets);
2837 sort(list.begin(),list.end());
2838 for (
unsigned int i = 0; i < list.size(); i++) {cout <<
" "<<list[i];}
◆ _really_dumb_cluster()
void _really_dumb_cluster |
( |
| ) |
|
|
private |
2573 vector<PseudoJet *> jetsp(
_jets.size());
2574 vector<int> indices(
_jets.size());
2575 for (
size_t i = 0; i<
_jets.size(); i++) {
2576 jetsp[i] = &
_jets[i];
2579 for (
int n = jetsp.size(); n > 0; n--) {
2583 for (
int i = 0; i < n; i++) {
2586 ymin = yiB; ii = i; jj = -2;}
2588 for (
int i = 0; i < n-1; i++) {
2589 for (
int j = i+1; j < n; j++) {
2593 * jetsp[i]->plain_distance(*jetsp[j])*
_invR2;
2594 if (y <
ymin) {
ymin = y; ii = i; jj = j;}
2597 int newn = 2*jetsp.size() - n;
2602 jetsp[ii] = &
_jets[nn];
2603 jetsp[jj] = jetsp[n-1];
2605 indices[jj] = indices[n-1];
2608 jetsp[ii] = jetsp[n-1];
2609 indices[ii] = indices[n-1];
◆ _set_structure_shared_ptr()
void _set_structure_shared_ptr |
( |
PseudoJet & |
j | ) |
|
|
protected |
◆ _simple_N2_cluster() [1/2]
96 BJ * briefjets =
new BJ[n];
97 BJ * jetA = briefjets, * jetB;
98 for (
int i = 0; i< n; i++) {
103 BJ * head = briefjets;
104 for (jetA = head + 1; jetA != tail; jetA++) {
107 double * diJ =
new double[n];
109 for (
int i = 0; i < n; i++) {
113 int history_location = n-1;
114 while (tail != head) {
115 double diJ_min = diJ[0];
117 for (
int i = 1; i < n; i++) {
118 if (diJ[i] < diJ_min) {diJ_min_jet = i; diJ_min = diJ[i];}
121 jetA = & briefjets[diJ_min_jet];
122 jetB =
static_cast<BJ *
>(jetA->NN);
134 diJ[jetA - head] = diJ[tail-head];
135 for (BJ * jetI = head; jetI != tail; jetI++) {
136 if (jetI->NN == jetA || jetI->NN == jetB) {
138 diJ[jetI-head] =
_bj_diJ(jetI);
142 if (dist < jetI->NN_dist) {
144 jetI->NN_dist = dist;
146 diJ[jetI-head] =
_bj_diJ(jetI);
149 if (dist < jetB->NN_dist) {
151 jetB->NN_dist = dist;
155 if (jetI->NN == tail) {jetI->NN = jetA;}
157 if (jetB != NULL) {diJ[jetB-head] =
_bj_diJ(jetB);}
◆ _simple_N2_cluster() [2/2]
void _simple_N2_cluster |
( |
| ) |
|
|
private |
◆ _simple_N2_cluster_BriefJet()
void _simple_N2_cluster_BriefJet |
( |
| ) |
|
|
private |
2660 _simple_N2_cluster<BriefJet>();
◆ _simple_N2_cluster_EEBriefJet()
void _simple_N2_cluster_EEBriefJet |
( |
| ) |
|
|
private |
2663 _simple_N2_cluster<EEBriefJet>();
◆ _tile_index() [1/2]
int _tile_index |
( |
const double |
eta, |
|
|
const double |
phi |
|
) |
| const |
|
private |
◆ _tile_index() [2/2]
int _tile_index |
( |
int |
ieta, |
|
|
int |
iphi |
|
) |
| const |
|
inlineprivate |
◆ _tiled_N2_cluster()
void _tiled_N2_cluster |
( |
| ) |
|
|
private |
2864 int n =
_jets.size();
2866 TiledJet * jetA = briefjets, * jetB;
2870 for (
int i = 0; i< n; i++) {
2876 vector<Tile>::const_iterator tile;
2877 for (tile =
_tiles.begin(); tile !=
_tiles.end(); tile++) {
2878 for (jetA = tile->head; jetA != NULL; jetA = jetA->
next) {
2879 for (jetB = tile->head; jetB != jetA; jetB = jetB->next) {
2881 if (dist < jetA->NN_dist) {jetA->
NN_dist = dist; jetA->
NN = jetB;}
2882 if (dist < jetB->NN_dist) {jetB->
NN_dist = dist; jetB->NN = jetA;}
2885 for (
Tile ** RTile = tile->RH_tiles; RTile != tile->end_tiles; RTile++) {
2886 for (jetA = tile->head; jetA != NULL; jetA = jetA->
next) {
2887 for (jetB = (*RTile)->head; jetB != NULL; jetB = jetB->next) {
2889 if (dist < jetA->NN_dist) {jetA->
NN_dist = dist; jetA->
NN = jetB;}
2890 if (dist < jetB->NN_dist) {jetB->
NN_dist = dist; jetB->NN = jetA;}
2895 double * diJ =
new double[n];
2897 for (
int i = 0; i < n; i++) {
2901 int history_location = n-1;
2902 while (tail != head) {
2903 double diJ_min = diJ[0];
2904 int diJ_min_jet = 0;
2905 for (
int i = 1; i < n; i++) {
2906 if (diJ[i] < diJ_min) {diJ_min_jet = i; diJ_min = diJ[i];}
2909 jetA = & briefjets[diJ_min_jet];
2913 if (jetA < jetB) {
std::swap(jetA,jetB);}
2924 int n_near_tiles = 0;
2927 bool sort_it =
false;
2939 sort(tile_union.begin(), tile_union.begin()+n_near_tiles);
2942 for (
int i = 1; i < n_near_tiles; i++) {
2943 if (tile_union[i] != tile_union[nnn-1]) {
2944 tile_union[nnn] = tile_union[i];
2955 diJ[jetA - head] = diJ[tail-head];
2963 for (
int itile = 0; itile < n_near_tiles; itile++) {
2964 Tile * tile_ptr = &
_tiles[tile_union[itile]];
2967 if (jetI->NN == jetA || (jetI->NN == jetB && jetB != NULL)) {
2968 jetI->NN_dist =
_R2;
2972 near_tile != tile_ptr->
end_tiles; near_tile++) {
2974 for (
TiledJet * jetJ = (*near_tile)->head;
2975 jetJ != NULL; jetJ = jetJ->
next) {
2977 if (dist < jetI->NN_dist && jetJ != jetI) {
2978 jetI->NN_dist = dist; jetI->NN = jetJ;
2982 diJ[jetI-head] =
_bj_diJ(jetI);
2988 if (dist < jetI->NN_dist) {
2990 jetI->NN_dist = dist;
2992 diJ[jetI-head] =
_bj_diJ(jetI);
2995 if (dist < jetB->NN_dist) {
2997 jetB->NN_dist = dist;
3003 if (jetB != NULL) {diJ[jetB-head] =
_bj_diJ(jetB);}
3006 for (
TiledJet * jetJ = (*near_tile)->head;
3007 jetJ != NULL; jetJ = jetJ->
next) {
3008 if (jetJ->NN == tail) {jetJ->NN = jetA;}
3011 if (jetB != NULL) {diJ[jetB-head] =
_bj_diJ(jetB);}
◆ _tj_set_jetinfo()
void _tj_set_jetinfo |
( |
TiledJet *const |
jet, |
|
|
const int |
_jets_index |
|
) |
| |
|
inlineprivate |
2821 _bj_set_jetinfo<>(jet, _jets_index);
◆ _transfer_input_jets()
void _transfer_input_jets |
( |
const std::vector< L > & |
pseudojets | ) |
|
|
protected |
1658 _jets.reserve(pseudojets.size()*2);
1659 for (
unsigned int i = 0; i < pseudojets.size(); i++) {
1660 _jets.push_back(pseudojets[i]);}
◆ _update_structure_use_count()
void _update_structure_use_count |
( |
| ) |
|
|
protected |
◆ add_constituents()
void add_constituents |
( |
const PseudoJet & |
jet, |
|
|
std::vector< PseudoJet > & |
subjet_vector |
|
) |
| const |
2126 subjet_vector.push_back(
_jets[i]);
◆ childless_pseudojets()
vector< PseudoJet > childless_pseudojets |
( |
| ) |
const |
2210 vector<PseudoJet> unclustered;
2211 for (
unsigned i = 0; i <
_history.size() ; i++) {
◆ constituents()
2076 vector<PseudoJet> subjets;
◆ contains()
bool contains |
( |
const PseudoJet & |
object | ) |
const |
2218 return jet.cluster_hist_index() >= 0
2219 && jet.cluster_hist_index() < int(
_history.size())
2220 && jet.has_valid_cluster_sequence()
2221 && jet.associated_cluster_sequence() ==
this;
◆ delete_self_when_unused()
void delete_self_when_unused |
( |
| ) |
|
2273 if (new_count <= 0) {
2274 throw Error(
"delete_self_when_unused may only be called if at least one object outside the CS (e.g. a jet) is already associated with the CS");
◆ exclusive_dmerge()
double exclusive_dmerge |
( |
const int |
njets | ) |
const |
◆ exclusive_dmerge_max()
double exclusive_dmerge_max |
( |
const int |
njets | ) |
const |
◆ exclusive_jets() [1/2]
vector< PseudoJet > exclusive_jets |
( |
const double |
dcut | ) |
const |
◆ exclusive_jets() [2/2]
vector< PseudoJet > exclusive_jets |
( |
const int |
njets | ) |
const |
1875 err <<
"Requested " << njets <<
" exclusive jets, but there were only "
1877 throw Error(err.str());
◆ exclusive_jets_up_to()
vector< PseudoJet > exclusive_jets_up_to |
( |
const int |
njets | ) |
const |
1890 _exclusive_warnings.
warn(
"dcut and exclusive jets for jet-finders other than kt, C/A or genkt with p>=0 should be interpreted with care.");
1896 err <<
"2*_initial_n != _history.size() -- this endangers internal assumptions!\n";
1897 throw Error(err.str());
1899 vector<PseudoJet> jets_local;
1900 for (
unsigned int i = stop_point; i <
_history.size(); i++) {
1902 if (parent1 < stop_point) {
1906 if (parent2 < stop_point && parent2 > 0) {
1910 if (
int(jets_local.size()) != min(
_initial_n, njets)) {
1912 err <<
"ClusterSequence::exclusive_jets: size of returned vector ("
1913 <<jets_local.size()<<
") does not coincide with requested number of jets ("
1915 throw Error(err.str());
◆ exclusive_jets_ycut()
std::vector<PseudoJet> exclusive_jets_ycut |
( |
double |
ycut | ) |
const |
|
inline |
◆ exclusive_subdmerge()
double exclusive_subdmerge |
( |
const PseudoJet & |
jet, |
|
|
int |
nsub |
|
) |
| const |
1973 set<const history_element*> subhist;
1975 set<const history_element*>::iterator highest = subhist.end();
1977 return (*highest)->dij;
◆ exclusive_subdmerge_max()
double exclusive_subdmerge_max |
( |
const PseudoJet & |
jet, |
|
|
int |
nsub |
|
) |
| const |
1980 set<const history_element*> subhist;
1982 set<const history_element*>::iterator highest = subhist.end();
1984 return (*highest)->max_dij_so_far;
◆ exclusive_subjets() [1/2]
std::vector< PseudoJet > exclusive_subjets |
( |
const PseudoJet & |
jet, |
|
|
const double |
dcut |
|
) |
| const |
1931 set<const history_element*> subhist;
1933 vector<PseudoJet> subjets;
1934 subjets.reserve(subhist.size());
1935 for (set<const history_element*>::iterator elem = subhist.begin();
1936 elem != subhist.end(); elem++) {
1937 subjets.push_back(
_jets[(*elem)->jetp_index]);
◆ exclusive_subjets() [2/2]
1950 if (
int(subjets.size()) < nsub) {
1952 err <<
"Requested " << nsub <<
" exclusive subjets, but there were only "
1953 << subjets.size() <<
" particles in the jet";
1954 throw Error(err.str());
◆ exclusive_subjets_up_to()
std::vector< PseudoJet > exclusive_subjets_up_to |
( |
const PseudoJet & |
jet, |
|
|
int |
nsub |
|
) |
| const |
1960 set<const history_element*> subhist;
1961 vector<PseudoJet> subjets;
1962 if (nsub < 0)
throw Error(
"Requested a negative number of subjets. This is nonsensical.");
1963 if (nsub == 0)
return subjets;
1965 subjets.reserve(subhist.size());
1966 for (set<const history_element*>::iterator elem = subhist.begin();
1967 elem != subhist.end(); elem++) {
1968 subjets.push_back(
_jets[(*elem)->jetp_index]);
◆ exclusive_ymerge()
double exclusive_ymerge |
( |
int |
njets | ) |
const |
|
inline |
◆ exclusive_ymerge_max()
double exclusive_ymerge_max |
( |
int |
njets | ) |
const |
|
inline |
◆ extras()
const Extras* extras |
( |
| ) |
const |
|
inline |
◆ fastjet_banner_stream()
static std::ostream* fastjet_banner_stream |
( |
| ) |
|
|
inlinestatic |
◆ get_subhist_set()
void get_subhist_set |
( |
std::set< const history_element * > & |
subhist, |
|
|
const PseudoJet & |
jet, |
|
|
double |
dcut, |
|
|
int |
maxjet |
|
) |
| const |
|
protected |
1994 set<const history_element*>::iterator highest = subhist.end();
1995 assert (highest != subhist.begin());
1997 const history_element* elem = *highest;
1998 if (njet == maxjet)
break;
1999 if (elem->parent1 < 0)
break;
2000 if (elem->max_dij_so_far <= dcut)
break;
2001 subhist.erase(highest);
2002 subhist.insert(&(
_history[elem->parent1]));
2003 subhist.insert(&(
_history[elem->parent2]));
◆ has_child() [1/2]
2051 if (hist.child >= 0 &&
_history[hist.child].jetp_index >= 0) {
◆ has_child() [2/2]
◆ has_parents()
2025 assert ((hist.parent1 >= 0 && hist.parent2 >= 0) ||
2026 (hist.parent1 < 0 && hist.parent2 < 0));
2027 if (hist.parent1 < 0) {
◆ has_partner()
2062 if (hist.child >= 0 &&
_history[hist.child].parent2 >= 0) {
2063 const history_element & child_hist =
_history[hist.child];
◆ history()
◆ inclusive_jets()
vector< PseudoJet > inclusive_jets |
( |
const double |
ptmin = 0.0 | ) |
const |
1823 vector<PseudoJet> jets_local;
1826 if (
_history[i].max_dij_so_far < dcut) {
break;}
1838 if (jet.
perp2() >= dcut) {jets_local.push_back(jet);}
1851 if (jet.
perp2() >= dcut) {jets_local.push_back(jet);}
1855 }
else {
throw Error(
"cs::inclusive_jets(...): Unrecognized jet algorithm");}
◆ jet_def()
◆ jet_scale_for_algorithm()
double jet_scale_for_algorithm |
( |
const PseudoJet & |
jet | ) |
const |
1661 double kt2=jet.
kt2();
1662 return kt2 > 1e-300 ? 1.0/kt2 : 1e300;
1664 double kt2 = jet.
kt2();
1666 if (
p <= 0 && kt2 < 1e-300) kt2 = 1e-300;
1669 double kt2 = jet.
kt2();
1671 if (kt2 < lim*lim && kt2 != 0.0) {
1673 }
else {
return 1.0;}
1674 }
else {
throw Error(
"Unrecognised jet algorithm");}
◆ jets()
const std::vector< PseudoJet > & jets |
( |
| ) |
const |
|
inline |
◆ n_exclusive_jets()
int n_exclusive_jets |
( |
const double |
dcut | ) |
const |
1861 if (
_history[i].max_dij_so_far <= dcut) {
break;}
1864 int stop_point = i + 1;
◆ n_exclusive_jets_ycut()
int n_exclusive_jets_ycut |
( |
double |
ycut | ) |
const |
|
inline |
◆ n_exclusive_subjets()
int n_exclusive_subjets |
( |
const PseudoJet & |
jet, |
|
|
const double |
dcut |
|
) |
| const |
1943 set<const history_element*> subhist;
1945 return subhist.size();
◆ n_particles()
unsigned int n_particles |
( |
| ) |
const |
|
inline |
◆ object_in_jet()
2010 const PseudoJet * this_object = &object;
2015 }
else if (
has_child(*this_object, childp)) {
2016 this_object = childp;
◆ operator=()
◆ particle_jet_indices()
vector< int > particle_jet_indices |
( |
const std::vector< PseudoJet > & |
jets_in | ) |
const |
2108 for (
unsigned ipart = 0; ipart <
n_particles(); ipart++)
2109 indices[ipart] = -1;
2110 for (
unsigned ijet = 0; ijet < jets_in.size(); ijet++) {
2111 vector<PseudoJet> jet_constituents(
constituents(jets_in[ijet]));
2112 for (
unsigned ip = 0; ip < jet_constituents.size(); ip++) {
2113 unsigned iclust = jet_constituents[ip].cluster_hist_index();
2114 unsigned ipart =
history()[iclust].jetp_index;
2115 indices[ipart] = ijet;
◆ plugin_activated()
bool plugin_activated |
( |
| ) |
const |
|
inline |
◆ plugin_associate_extras()
void plugin_associate_extras |
( |
Extras * |
extras_in | ) |
|
|
inline |
◆ plugin_record_iB_recombination()
void plugin_record_iB_recombination |
( |
int |
jet_i, |
|
|
double |
diB |
|
) |
| |
|
inline |
◆ plugin_record_ij_recombination() [1/2]
void plugin_record_ij_recombination |
( |
int |
jet_i, |
|
|
int |
jet_j, |
|
|
double |
dij, |
|
|
const PseudoJet & |
newjet, |
|
|
int & |
newjet_k |
|
) |
| |
1815 int tmp_index =
_jets[newjet_k].cluster_hist_index();
1816 _jets[newjet_k] = newjet;
1817 _jets[newjet_k].set_cluster_hist_index(tmp_index);
◆ plugin_record_ij_recombination() [2/2]
void plugin_record_ij_recombination |
( |
int |
jet_i, |
|
|
int |
jet_j, |
|
|
double |
dij, |
|
|
int & |
newjet_k |
|
) |
| |
|
inline |
◆ plugin_simple_N2_cluster()
void plugin_simple_N2_cluster |
( |
| ) |
|
|
inline |
1474 _simple_N2_cluster<GBJ>();
◆ print_banner()
1560 (*ostr) <<
"#--------------------------------------------------------------------------\n";
1561 (*ostr) <<
"# FastJet release " <<
fastjet_version <<
" [fjcore]" << endl;
1562 (*ostr) <<
"# M. Cacciari, G.P. Salam and G. Soyez \n";
1563 (*ostr) <<
"# A software package for jet finding and analysis at colliders \n";
1564 (*ostr) <<
"# http://fastjet.fr \n";
1566 (*ostr) <<
"# Please cite EPJC72(2012)1896 [arXiv:1111.6097] if you use this package\n";
1567 (*ostr) <<
"# for scientific work and optionally PLB641(2006)57 [hep-ph/0512210]. \n";
1569 (*ostr) <<
"# FastJet is provided without warranty under the terms of the GNU GPLv2.\n";
1570 (*ostr) <<
"# It uses T. Chan's closest pair algorithm, S. Fortune's Voronoi code";
1571 #ifndef __FJCORE_DROP_CGAL
1572 (*ostr) <<
",\n# CGAL ";
1575 #endif // __FJCORE_DROP_CGAL
1576 (*ostr) <<
"and 3rd party plugin jet algorithms. See COPYING file for details.\n";
1577 (*ostr) <<
"#--------------------------------------------------------------------------\n";
◆ print_jets_for_root() [1/2]
void print_jets_for_root |
( |
const std::vector< PseudoJet > & |
jets, |
|
|
const std::string & |
filename, |
|
|
const std::string & |
comment = "" |
|
) |
| const |
2101 std::ofstream ostr(filename.c_str());
2102 if (comment !=
"") ostr <<
"# " << comment << endl;
◆ print_jets_for_root() [2/2]
void print_jets_for_root |
( |
const std::vector< PseudoJet > & |
jets, |
|
|
std::ostream & |
ostr = std::cout |
|
) |
| const |
2082 for (
unsigned i = 0; i < jets_in.size(); i++) {
2084 << jets_in[i].px() <<
" "
2085 << jets_in[i].py() <<
" "
2086 << jets_in[i].pz() <<
" "
2087 << jets_in[i].E() << endl;
2089 for (
unsigned j = 0; j < cst.size() ; j++) {
2090 ostr <<
" " << j <<
" "
2091 << cst[j].rap() <<
" "
2092 << cst[j].phi() <<
" "
2093 << cst[j].perp() << endl;
2095 ostr <<
"#END" << endl;
◆ Q()
◆ Q2()
◆ set_fastjet_banner_stream()
static void set_fastjet_banner_stream |
( |
std::ostream * |
ostr | ) |
|
|
inlinestatic |
◆ signal_imminent_self_deletion()
void signal_imminent_self_deletion |
( |
| ) |
const |
◆ strategy_string() [1/2]
std::string strategy_string |
( |
| ) |
const |
|
inline |
◆ strategy_string() [2/2]
string strategy_string |
( |
Strategy |
strategy_in | ) |
const |
1618 switch(strategy_in) {
1620 strategy =
"NlnN";
break;
1622 strategy =
"NlnN3pi";
break;
1624 strategy =
"NlnN4pi";
break;
1626 strategy =
"N2Plain";
break;
1628 strategy =
"N2Tiled";
break;
1630 strategy =
"N2MinHeapTiled";
break;
1632 strategy =
"N2PoorTiled";
break;
1634 strategy =
"N2MHTLazy9";
break;
1636 strategy =
"N2MHTLazy9Alt";
break;
1638 strategy =
"N2MHTLazy25";
break;
1640 strategy =
"N2MHTLazy9AntiKtSeparateGhosts";
break;
1642 strategy =
"N3Dumb";
break;
1644 strategy =
"NlnNCam4pi";
break;
1646 strategy =
"NlnNCam2pi2R";
break;
1648 strategy =
"NlnNCam";
break;
1650 strategy =
"plugin strategy";
break;
1652 strategy =
"Unrecognized";
◆ strategy_used()
◆ structure_shared_ptr()
◆ transfer_from_sequence()
1782 throw(
Error(
"cannot use CS::transfer_from_sequence after a call to delete_self_when_unused()"));
1801 assert(csi != NULL);
1806 for (
unsigned int i=0; i<
_jets.size(); i++){
1807 _jets[i].set_cluster_hist_index(from_seq.
_jets[i].cluster_hist_index());
◆ unclustered_particles()
vector< PseudoJet > unclustered_particles |
( |
| ) |
const |
2202 vector<PseudoJet> unclustered;
◆ unique_history_order()
vector< int > unique_history_order |
( |
| ) |
const |
2170 valarray<int> lowest_constituent(
_history.size());
2172 lowest_constituent = hist_n;
2173 for (
int i = 0; i < hist_n; i++) {
2174 lowest_constituent[i] = min(lowest_constituent[i],i);
2176 = min(lowest_constituent[
_history[i].child],lowest_constituent[i]);
2178 valarray<bool> extracted(
_history.size()); extracted =
false;
2179 vector<int> unique_tree;
2180 unique_tree.reserve(
_history.size());
2182 if (!extracted[i]) {
2183 unique_tree.push_back(i);
2184 extracted[i] =
true;
◆ will_delete_self_when_unused()
bool will_delete_self_when_unused |
( |
| ) |
const |
|
inline |
◆ _changed_strategy_warning
◆ _deletes_self_when_unused
bool _deletes_self_when_unused |
|
mutableprotected |
◆ _exclusive_warnings
◆ _extras
◆ _fastjet_banner_ostr
std::ostream * _fastjet_banner_ostr = &cout |
|
staticprivate |
◆ _first_time
◆ _history
◆ _initial_n
◆ _invR2
◆ _jet_algorithm
◆ _jet_def
◆ _jets
◆ _n_tiles_phi
◆ _plugin_activated
◆ _Qtot
◆ _R2
◆ _Rparam
◆ _strategy
◆ _structure_shared_ptr
◆ _structure_use_count_after_construction
int _structure_use_count_after_construction |
|
protected |
◆ _tile_size_eta
◆ _tile_size_phi
◆ _tiles
◆ _tiles_eta_max
◆ _tiles_eta_min
◆ _tiles_ieta_max
◆ _tiles_ieta_min
◆ _writeout_combinations
bool _writeout_combinations |
|
protected |
◆ n_tile_neighbours
const int n_tile_neighbours = 9 |
|
staticprivate |
The documentation for this class was generated from the following files:
- /builds/cms-analysis/general/DasAnalysisSystem/Core/Installer/Core/JetObservables/interface/fjcore.hh
- /builds/cms-analysis/general/DasAnalysisSystem/Core/Installer/Core/JetObservables/src/fjcore.cc
@ genkt_algorithm
Definition: fjcore.hh:1041
void add_constituents(const PseudoJet &jet, std::vector< PseudoJet > &subjet_vector) const
Definition: fjcore.cc:2120
int cluster_hist_index() const
Definition: fjcore.hh:704
@ NlnNCam2pi2R
Definition: fjcore.hh:1032
Definition: fjcore.cc:829
Definition: fjcore.hh:294
double phi
Definition: fjcore.cc:831
double _tiles_eta_min
Definition: fjcore.hh:1630
@ plugin_strategy
Definition: fjcore.hh:1035
double extra_param() const
Definition: fjcore.hh:1150
void warn(const char *warning)
Definition: fjcore.hh:432
void _tj_set_jetinfo(TiledJet *const jet, const int _jets_index)
Definition: fjcore.cc:2819
bool contains(const PseudoJet &object) const
Definition: fjcore.cc:2217
void _set_structure_shared_ptr(PseudoJet &j)
Definition: fjcore.cc:2264
void _decant_options_partial()
Definition: fjcore.cc:1587
static bool verbose
Definition: Step.h:40
void _bj_set_NN_crosscheck(J *const jeta, J *const head, const J *const tail) const
Definition: fjcore.hh:1749
void _add_neighbours_to_tile_union(const int tile_index, std::vector< int > &tile_union, int &n_near_tiles) const
Definition: fjcore.cc:2842
@ ee_kt_algorithm
Definition: fjcore.hh:1044
@ Invalid
Definition: fjcore.hh:1490
@ InexistentParent
Definition: fjcore.hh:1490
void _initialise_tiles()
Definition: fjcore.cc:2761
double _R2
Definition: fjcore.hh:1547
void _tiled_N2_cluster()
Definition: fjcore.cc:2862
double _tiles_eta_max
Definition: fjcore.hh:1630
const Recombiner * recombiner() const
Definition: fjcore.hh:1157
void _really_dumb_cluster()
Definition: fjcore.cc:2572
Definition: fjcore.cc:647
double NN_dist
Definition: fjcore.hh:1593
FJCORE_BEGIN_NAMESPACE const char * fastjet_version
Definition: fjcore.cc:88
FJCORE_BEGIN_NAMESPACE const double pi
Definition: fjcore.hh:191
Definition: fjcore.cc:840
@ NlnN4pi
Definition: fjcore.hh:1030
std::vector< PseudoJet > exclusive_jets_up_to(const int njets) const
Definition: fjcore.cc:1881
p
Definition: Ntupliser_cfg.py:174
std::pair< double, TwoVertices > DijEntry
Definition: fjcore.hh:1578
@ N2Plain
Definition: fjcore.hh:1025
void transfer_from_sequence(const ClusterSequence &from_seq, const FunctionOfPseudoJet< PseudoJet > *action_on_jets=0)
Definition: fjcore.cc:1779
bool will_delete_self_when_unused() const
Definition: fjcore.hh:1439
void _do_ij_recombination_step(const int jet_i, const int jet_j, const double dij, int &newjet_k)
Definition: fjcore.cc:2243
SharedPtr< PseudoJetStructureBase > _structure_shared_ptr
Definition: fjcore.hh:1551
double _tile_size_eta
Definition: fjcore.hh:1631
void label_minheap_update_done()
Definition: fjcore.cc:836
@ kt_algorithm
Definition: fjcore.hh:1038
int n_exclusive_jets_ycut(double ycut) const
Definition: fjcore.hh:1403
void _CP2DChan_limited_cluster(double D)
Definition: fjcore.cc:2300
static const double ymin
Definition: binnings.h:48
double Q2() const
Definition: fjcore.hh:1419
void _bj_set_NN_nocross(J *const jeta, J *const head, const J *const tail) const
Definition: fjcore.hh:1724
std::vector< Tile > _tiles
Definition: fjcore.hh:1629
bool make_mirror(Coord2D &point, double Dlim)
Definition: fjcore.cc:2293
TileFnPair * RH_tiles
Definition: fjcore.cc:846
Strategy _best_strategy() const
Definition: fjcore.cc:1676
@ undefined_jet_algorithm
Definition: fjcore.hh:1047
virtual void set_associated_cs(const ClusterSequence *new_cs)
Definition: fjcore.hh:1347
double NN_dist
Definition: fjcore.cc:831
void _decant_options(const JetDefinition &jet_def, const bool &writeout_combinations)
Definition: fjcore.cc:1580
TiledJet * next
Definition: fjcore.hh:1594
TiledJet * previous
Definition: fjcore.hh:1594
virtual void run_clustering(ClusterSequence &) const =0
double exclusive_dmerge(const int njets) const
Definition: fjcore.cc:1919
std::vector< history_element > _history
Definition: fjcore.hh:1542
static bool _first_time
Definition: fjcore.hh:1583
int _jets_index
Definition: fjcore.cc:833
@ N3Dumb
Definition: fjcore.hh:1026
void _CP2DChan_cluster_2pi2R()
Definition: fjcore.cc:2369
void _bj_set_jetinfo(J *const jet, const int _jets_index) const
Definition: fjcore.hh:1698
@ antikt_algorithm
Definition: fjcore.hh:1040
std::vector< PseudoJet > _jets
Definition: fjcore.hh:1541
TiledJet * next
Definition: fjcore.cc:832
bool tagged
Definition: fjcore.cc:849
void _delaunay_cluster()
Definition: fjcore.cc:2463
virtual void preprocess(PseudoJet &) const
Definition: fjcore.hh:1171
int tile_index
Definition: fjcore.cc:833
@ NlnN3pi
Definition: fjcore.hh:1029
virtual bool exclusive_sequence_meaningful() const
Definition: fjcore.hh:1199
JetAlgorithm _jet_algorithm
Definition: fjcore.hh:1550
TileFnPair * surrounding_tiles
Definition: fjcore.cc:845
double perp2() const
Definition: fjcore.hh:566
static const int n_tile_neighbours
Definition: fjcore.hh:1620
int _initial_n
Definition: fjcore.hh:1546
void _add_step_to_history(const int parent1, const int parent2, const int jetp_index, const double dij)
Definition: fjcore.cc:2134
static LimitedWarning _changed_strategy_warning
Definition: fjcore.hh:1585
bool has_child(const PseudoJet &jet, PseudoJet &child) const
Definition: fjcore.cc:2038
bool _plugin_activated
Definition: fjcore.hh:1555
void _do_Cambridge_inclusive_jets()
Definition: fjcore.cc:2441
double kt2() const
Definition: fjcore.hh:569
@ N2MHTLazy9
Definition: fjcore.hh:1019
double _bj_dist(const J *const jeta, const J *const jetb) const
Definition: fjcore.hh:1707
std::pair< int, int > TwoVertices
Definition: fjcore.hh:1577
TiledJet * head
Definition: fjcore.cc:848
void _add_ktdistance_to_map(const int ii, DistMap &DijMap, const DynamicNearestNeighbours *DNN)
Definition: fjcore.cc:2544
@ NlnN
Definition: fjcore.hh:1028
@ N2MHTLazy9AntiKtSeparateGhosts
Definition: fjcore.hh:1018
void plugin_record_ij_recombination(int jet_i, int jet_j, double dij, int &newjet_k)
Definition: fjcore.hh:1442
JetAlgorithm jet_algorithm() const
Definition: fjcore.hh:1147
T * get() const
Definition: fjcore.hh:342
TileFnPair * end_tiles
Definition: fjcore.cc:847
TiledJet * previous
Definition: fjcore.cc:832
Definition: fjcore.cc:675
bool plugin_activated() const
Definition: fjcore.hh:1470
int _n_tiles_phi
Definition: fjcore.hh:1632
Definition: fjcore.hh:1333
void _transfer_input_jets(const std::vector< L > &pseudojets)
Definition: fjcore.hh:1656
void _initialise_and_run_no_decant()
Definition: fjcore.cc:1433
void set_count(const long &count)
Definition: fjcore.hh:364
void _update_structure_use_count()
Definition: fjcore.cc:2268
Definition: fjcore.cc:2287
JetDefinition _jet_def
Definition: fjcore.hh:1511
int _tiles_ieta_min
Definition: fjcore.hh:1632
double _invR2
Definition: fjcore.hh:1547
void _faster_tiled_N2_cluster()
Definition: fjcore.cc:3016
std::string strategy_string() const
Definition: fjcore.hh:1435
double _tile_size_phi
Definition: fjcore.hh:1631
void swap(SharedPtr< T > &a, SharedPtr< T > &b)
Definition: fjcore.hh:412
@ plugin_algorithm
Definition: fjcore.hh:1046
static const double ptmin
Definition: binnings.h:46
void RemovePoint(const int index, std::vector< int > &indices_of_updated_neighbours)
Definition: fjcore.cc:195
virtual bool Valid(const int index) const =0
Definition: fjcore.hh:535
void _add_untagged_neighbours_to_tile_union(const int tile_index, std::vector< int > &tile_union, int &n_near_tiles)
Definition: fjcore.cc:2850
@ NlnNCam4pi
Definition: fjcore.hh:1031
int _tile_index(int ieta, int iphi) const
Definition: fjcore.hh:1633
Definition: fjcore.cc:891
std::vector< PseudoJet > exclusive_jets(const double dcut) const
Definition: fjcore.cc:1868
static LimitedWarning _exclusive_warnings
Definition: fjcore.hh:1584
double exclusive_dmerge_max(const int njets) const
Definition: fjcore.cc:1924
std::vector< PseudoJet > exclusive_subjets_up_to(const PseudoJet &jet, int nsub) const
Definition: fjcore.cc:1959
int n_exclusive_jets(const double dcut) const
Definition: fjcore.cc:1858
int _structure_use_count_after_construction
Definition: fjcore.hh:1552
JetAlgorithm
Definition: fjcore.hh:1037
@ N2MHTLazy25
Definition: fjcore.hh:1020
void set_structure_shared_ptr(const SharedPtr< PseudoJetStructureBase > &structure)
Definition: fjcore.cc:3981
double R() const
Definition: fjcore.hh:1149
virtual int NearestNeighbourIndex(const int ii) const =0
void _do_iB_recombination_step(const int jet_i, const double diB)
Definition: fjcore.cc:2258
double jet_scale_for_algorithm(const PseudoJet &jet) const
Definition: fjcore.cc:1656
Definition: fjcore.hh:462
@ BeamJet
Definition: fjcore.hh:1490
std::multimap< double, TwoVertices > DistMap
Definition: fjcore.hh:1579
void _simple_N2_cluster_EEBriefJet()
Definition: fjcore.cc:2662
void reset()
Definition: fjcore.hh:308
@ cambridge_algorithm
Definition: fjcore.hh:1039
@ ee_genkt_algorithm
Definition: fjcore.hh:1045
static void print_banner()
Definition: fjcore.cc:1555
std::vector< PseudoJet > constituents(const PseudoJet &jet) const
Definition: fjcore.cc:2075
virtual double NearestNeighbourDistance(const int ii) const =0
void RemoveCombinedAddCombination(const int index1, const int index2, const EtaPhi &newpoint, int &index3, std::vector< int > &indices_of_updated_neighbours)
Definition: fjcore.cc:204
void print_jets_for_root(const std::vector< PseudoJet > &jets, std::ostream &ostr=std::cout) const
Definition: fjcore.cc:2080
double _bj_diJ(const J *const jeta) const
Definition: fjcore.hh:1719
void _bj_remove_from_tiles(TiledJet *const jet) const
@ NlnNCam
Definition: fjcore.hh:1033
const std::vector< history_element > & history() const
Definition: fjcore.hh:1676
TiledJet * NN
Definition: fjcore.cc:832
const double twopi
Definition: fjcore.hh:192
void _CP2DChan_cluster_2piMultD()
Definition: fjcore.cc:2374
@ N2Tiled
Definition: fjcore.hh:1023
@ N2MHTLazy9Alt
Definition: fjcore.hh:1021
unsigned int n_particles() const
Definition: fjcore.hh:1679
@ N2MinHeapTiled
Definition: fjcore.hh:1022
int _tiles_ieta_max
Definition: fjcore.hh:1632
Definition: fjcore.cc:978
double eta
Definition: fjcore.cc:831
double _Rparam
Definition: fjcore.hh:1547
virtual void recombine(const PseudoJet &pa, const PseudoJet &pb, PseudoJet &pab) const =0
const JetDefinition & jet_def() const
Definition: fjcore.hh:1437
void _simple_N2_cluster_BriefJet()
Definition: fjcore.cc:2659
TileFnPair begin_tiles[n_tile_neighbours]
Definition: fjcore.cc:844
void get_subhist_set(std::set< const history_element * > &subhist, const PseudoJet &jet, double dcut, int maxjet) const
Definition: fjcore.cc:1986
Strategy strategy() const
Definition: fjcore.hh:1151
Definition: fjcore.cc:1151
static std::ostream * _fastjet_banner_ostr
Definition: fjcore.hh:1509
@ N2PoorTiled
Definition: fjcore.hh:1024
Definition: fjcore.hh:483
bool _writeout_combinations
Definition: fjcore.hh:1545
void _minheap_faster_tiled_N2_cluster()
Definition: fjcore.cc:3149
double _Qtot
Definition: fjcore.hh:1548
const Plugin * plugin() const
Definition: fjcore.hh:1145
void _extract_tree_children(int pos, std::valarray< bool > &, const std::valarray< int > &, std::vector< int > &) const
Definition: fjcore.cc:2190
SharedPtr< Extras > _extras
Definition: fjcore.hh:1556
eta
DeepAK8/ParticleNet tagging.
Definition: jmarExample.py:19
Strategy _strategy
Definition: fjcore.hh:1549
long use_count() const
Definition: fjcore.hh:349
Definition: fjcore.cc:1065
void _CP2DChan_cluster()
Definition: fjcore.cc:2380
@ cambridge_for_passive_algorithm
Definition: fjcore.hh:1042
Definition: fjcore.cc:172
Definition: fjcore.cc:732
bool _deletes_self_when_unused
Definition: fjcore.hh:1553
void _extract_tree_parents(int pos, std::valarray< bool > &, const std::valarray< int > &, std::vector< int > &) const
Definition: fjcore.cc:2223
@ Best
Definition: fjcore.hh:1027
@ BestFJ30
Definition: fjcore.hh:1034
void _fill_initial_history()
Definition: fjcore.cc:1595