test
CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Qjets.h
Go to the documentation of this file.
1 #ifndef RecoJets_JetAlgorithms_QJets_h
2 #define RecoJets_JetAlgorithms_QJets_h
3 #include <queue>
4 #include <vector>
5 #include <list>
6 #include <algorithm>
7 #include "fastjet/JetDefinition.hh"
8 #include "fastjet/PseudoJet.hh"
9 #include "fastjet/ClusterSequence.hh"
14 #include "CLHEP/Random/RandomEngine.h"
15 
16 struct JetDistance{
17  double dij;
18  int j1;
19  int j2;
20 };
21 
23  public:
25  bool operator() (const JetDistance& lhs, const JetDistance&rhs) const {return lhs.dij > rhs.dij;};
26 };
27 
28 class Qjets{
29  private:
30  double omega;
32  unsigned int _seed;
34  std::map<int,bool> _merged_jets;
35  std::priority_queue <JetDistance, std::vector<JetDistance>, JetDistanceCompare> _distances;
36  CLHEP::HepRandomEngine* _rnEngine;
37 
38  double d_ij(const fastjet::PseudoJet& v1, const fastjet::PseudoJet& v2) const;
39  void computeDCut(fastjet::ClusterSequence & cs);
40 
41  double Rand();
42  bool Prune(JetDistance& jd,fastjet::ClusterSequence & cs);
43  bool JetsUnmerged(const JetDistance& jd) const;
44  bool JetUnmerged(int num) const;
45  void ComputeNewDistanceMeasures(fastjet::ClusterSequence & cs, unsigned int new_jet);
46  void ComputeAllDistances(const std::vector<fastjet::PseudoJet>& inp);
47  double ComputeMinimumDistance();
48  double ComputeNormalization(double dmin);
49  JetDistance GetNextDistance();
50  bool Same(const JetDistance& lhs, const JetDistance& rhs);
51 
52  public:
53  Qjets(double zcut, double dcut_fctr, double exp_min, double exp_max, double rigidity, double truncation_fctr, CLHEP::HepRandomEngine* rnEngine) : _rand_seed_set(false),
54  _zcut(zcut),
55  _dcut(-1.),
56  _dcut_fctr(dcut_fctr),
57  _exp_min(exp_min),
58  _exp_max(exp_max),
59  _rigidity(rigidity),
60  _truncation_fctr(truncation_fctr),
61  _rnEngine(rnEngine)
62  {};
63 
64  void Cluster(fastjet::ClusterSequence & cs);
65  void SetRandSeed(unsigned int seed); /* In case you want reproducible behavior */
66 };
67 
68 
70 public:
72  virtual ~QjetsBaseExtras() {}
73  virtual double weight() const {return _wij;}
74  friend class Qjets;
75 
76  protected:
77  double _wij;
78 };
79 
80 #endif
void ComputeNewDistanceMeasures(fastjet::ClusterSequence &cs, unsigned int new_jet)
Definition: Qjets.cc:147
void Cluster(fastjet::ClusterSequence &cs)
Definition: Qjets.cc:62
auto_ptr< ClusterSequence > cs
double _zcut
Definition: Qjets.h:33
double _wij
Definition: Qjets.h:77
JetDistanceCompare()
Definition: Qjets.h:24
bool JetUnmerged(int num) const
Definition: Qjets.cc:10
void SetRandSeed(unsigned int seed)
Definition: Qjets.cc:5
double _dcut
Definition: Qjets.h:33
double _dcut_fctr
Definition: Qjets.h:33
double dij
Definition: Qjets.h:17
double ComputeNormalization(double dmin)
QjetsBaseExtras()
Definition: Qjets.h:71
bool Prune(JetDistance &jd, fastjet::ClusterSequence &cs)
Definition: Qjets.cc:122
bool operator()(const JetDistance &lhs, const JetDistance &rhs) const
Definition: Qjets.h:25
int j2
Definition: Qjets.h:19
void computeDCut(fastjet::ClusterSequence &cs)
Definition: Qjets.cc:114
double _exp_max
Definition: Qjets.h:33
JetDistance GetNextDistance()
Definition: Qjets.cc:18
double omega
Definition: Qjets.h:30
double _exp_min
Definition: Qjets.h:33
unsigned int _seed
Definition: Qjets.h:32
bool _rand_seed_set
Definition: Qjets.h:31
double _truncation_fctr
Definition: Qjets.h:33
Definition: Qjets.h:28
Qjets(double zcut, double dcut_fctr, double exp_min, double exp_max, double rigidity, double truncation_fctr, CLHEP::HepRandomEngine *rnEngine)
Definition: Qjets.h:53
double _rigidity
Definition: Qjets.h:33
CLHEP::HepRandomEngine * _rnEngine
Definition: Qjets.h:36
double Rand()
Definition: Qjets.cc:168
double d_ij(const fastjet::PseudoJet &v1, const fastjet::PseudoJet &v2) const
Definition: Qjets.cc:159
double ComputeMinimumDistance()
void ComputeAllDistances(const std::vector< fastjet::PseudoJet > &inp)
Definition: Qjets.cc:132
std::priority_queue< JetDistance, std::vector< JetDistance >, JetDistanceCompare > _distances
Definition: Qjets.h:35
virtual ~QjetsBaseExtras()
Definition: Qjets.h:72
int j1
Definition: Qjets.h:18
std::map< int, bool > _merged_jets
Definition: Qjets.h:34
volatile std::atomic< bool > shutdown_flag false
bool Same(const JetDistance &lhs, const JetDistance &rhs)
virtual double weight() const
Definition: Qjets.h:73
bool JetsUnmerged(const JetDistance &jd) const
Definition: Qjets.cc:14