QJets.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <queue>
5 
6 namespace fastjet
7 {
8 class PseudoJet;
9 class ClusterSequence;
10 }
11 
17 namespace qjets
18 {
19 
20 struct jet_distance {
21  double dij;
22  int j1;
23  int j2;
24 };
25 
27 {
28 public:
30  bool operator()(const jet_distance& lhs, const jet_distance& rhs) const;
31 };
32 
33 class QJets
34 {
35 private:
36  double _zcut, _dcut_fctr, _exp_min, _exp_max, _rigidity, _dcut, _truncation_fctr;
37  bool _rand_seed_set;
38  unsigned _seed;
39  double Omega;
40  std::map<int, bool> _merged_jets;
41  std::priority_queue <jet_distance, std::vector<jet_distance>, JetDistanceCompare> _distances;
42 
43  double d_ij(fastjet::PseudoJet const& v1, fastjet::PseudoJet const& v2) const;
44  void ComputeDCut(fastjet::ClusterSequence& cs);
45 
46  double Rand();
47  bool Prune(jet_distance& jd, fastjet::ClusterSequence& cs);
48  bool JetsUnmerged(const jet_distance& jd) const;
49  bool JetUnmerged(int num) const;
50  void ComputeNewDistanceMeasures(fastjet::ClusterSequence& cs, unsigned new_jet);
51  void ComputeAllDistances(std::vector<fastjet::PseudoJet> const& inp);
52  double ComputeMinimumDistance();
53  double ComputeNormalization(double dmin);
54  jet_distance GetNextDistance();
55  bool Same(const jet_distance& lhs, const jet_distance& rhs);
56 
57 public:
58  QJets(double zcut, double dcut_fctr, double exp_min, double exp_max, double rigidity, double truncation_fctr);
59  void Cluster(fastjet::ClusterSequence& cs);
60  void SetRandSeed(unsigned seed); /* In case you want reproducible behavior */
61 };
62 
63 }
Definition: QJets.hh:33
JetDistanceCompare()
Definition: QJets.hh:29
int j1
Definition: QJets.hh:22
FastJet A software package for jet finding in pp and e+e− collisions.
Definition: ClusterSequence.hh:14
Definition: QJets.hh:26
Definition: QJets.hh:20
double dij
Definition: QJets.hh:21
int j2
Definition: QJets.hh:23
Qjets: A Non-Deterministic Approach to Tree-Based Jet Substructure
Definition: QJets.hh:17