stablejet is hosted by Hepforge, IPPP Durham
StableJet
JetStability.h
1 #ifndef FastJetStability_JetStability_h
2 #define FastJetStability_JetStability_h
3 
4 #include "JetStabilityDefs.h"
5 #include "StabilityUserInfo.h"
6 #include "AbsSmearingAgent.h"
7 #include "ClusterAnalysis.h"
8 #include "PtPartitioningIndex.h"
9 #include "TransverseFuzzinessCalculator.h"
10 
11 #include "fastjet/ClusterSequence.hh"
12 #include "fastjet/JetDefinition.hh"
13 
14 namespace stab {
15 
21 class JetStability {
22 
23 public:
24 
27  inline JetStability ( const fastjet::JetDefinition *jetDef)
28  :m_jetDef(jetDef)
29  ,m_nCycles(100U)
30  ,m_fuzzyNjetCalc(1,0,0)
31  ,m_fuzzyPtSumCalc(0,1,0)
32  ,m_fuzzyNjetQuadCalc(1,0,1)
33  ,m_fuzzyPtSumQuadCalc(0,1,1)
34  { }
35 
37  inline void reset( const Event &parts, const StabilityEventInfo &info) {
38  m_parts = parts;
39  m_partsSize = parts.size();
40  m_info = info;
41  m_infoSize = info.size();
42 
43  assert( m_partsSize == m_infoSize );
44 
45  for ( unsigned d=0; d != m_nScan; d++ ) {
46  m_clusterAnalysis.clear();
47  }
48 
49  }
50 
53  void run(AbsSmearingAgent &);
54 
56  inline void setScan(const unsigned nScan, const double min, const double max)
57  {
58  m_nScan = nScan;
59  m_minDcut = min;
60  m_maxDcut = max;
61 
62  m_clusterAnalysis.resize(m_nScan);
63  m_pairwiseRandStability.resize(m_nScan);
64  m_pairwiseJaccardStability.resize(m_nScan);
65  m_pairwisePtMinMatchStability.resize(m_nScan);
66 
67  m_fuzzinessNJet.resize(m_nScan);
68  m_fuzzinessPt.resize(m_nScan);
69  m_fuzzinessNJetQ.resize(m_nScan);
70  m_fuzzinessPtQ.resize(m_nScan);
71 
72  const double dDistCut = (m_maxDcut-m_minDcut)/m_nScan;
73  for ( unsigned d=0; d != m_nScan; d++ ) {
74  const double dCut = m_minDcut+dDistCut*d;
75  m_clusterAnalysis[d] = ClusterAnalysis(dCut);
76  }
77  }
78 
80  inline void setNCycles(const unsigned nCycles) {
81  m_nCycles = nCycles;
82  }
83 
84  //--------------- accessor methods
91  inline const std::vector<std::vector<double> > & pairwiseRandStability() const
92  { return m_pairwiseRandStability; }
93 
94  inline const std::vector<std::vector<double> > & fuzzinessNJet() const
95  { return m_fuzzinessNJet; }
96 
98  inline const double scanMin() const { return m_minDcut; }
100  inline const double scanMax() const { return m_maxDcut; }
102  inline const unsigned nScan() const { return m_nScan; }
104  inline const unsigned nCycles() const { return m_nCycles; }
105 
106 
107 private:
108 
109  // -------------------- private member data ------------------------
110  // initial un-clustered event (no smearing)
111  Event m_parts;
112  unsigned m_partsSize;
113 
114  StabilityEventInfo m_info;
115  unsigned m_infoSize;
116 
118  double m_minDcut;
119  double m_maxDcut;
120  unsigned m_nScan;
121 
122  // FastJet Jet definition
123  const fastjet::JetDefinition *m_jetDef;
124 
125  // number of smearing cycles
126  unsigned m_nCycles;
127 
128  // ClusterAnalysis handles the stability calculations
129  // it has a length of m_nScan
130  std::vector<ClusterAnalysis> m_clusterAnalysis;
131 
132  // stability and fuzziness calculators
133  stab::BestPtMatchIndex m_ptMinMatchIndex;
134 
135  stab::TransverseFuzzinessCalculator m_fuzzyNjetCalc;
136  stab::TransverseFuzzinessCalculator m_fuzzyPtSumCalc;
137  stab::TransverseFuzzinessCalculator m_fuzzyNjetQuadCalc;
138  stab::TransverseFuzzinessCalculator m_fuzzyPtSumQuadCalc;
139 
140 
141  // accumulate the results of the cluser analysis
142  // each of these vectors also has legnth=m_nScan
143  std::vector<std::vector<double> > m_pairwiseRandStability;
144  std::vector<std::vector<double> > m_pairwiseJaccardStability;
145  std::vector<std::vector<double> > m_pairwisePtMinMatchStability;
146 
147  std::vector<std::vector<double> > m_fuzzinessNJet;
148  std::vector<std::vector<double> > m_fuzzinessPt;
149  std::vector<std::vector<double> > m_fuzzinessNJetQ; // added in quadrature
150  std::vector<std::vector<double> > m_fuzzinessPtQ; // added in quadrature
151 
152 };
153 
154 
155 } // end stab namespace
156 
157 
158 #endif
const unsigned nScan() const
get the scan parameters
Definition: JetStability.h:102
void setNCycles(const unsigned nCycles)
set the number of smearing cycles
Definition: JetStability.h:80
JetStability(const fastjet::JetDefinition *jetDef)
Definition: JetStability.h:27
const unsigned nCycles() const
get the scan parameters
Definition: JetStability.h:104
Implementation of Minimal Matching Distance stabiltiy index.
const double scanMax() const
get the scan parameters
Definition: JetStability.h:100
void reset(const Event &parts, const StabilityEventInfo &info)
reset/initialize
Definition: JetStability.h:37
const double scanMin() const
get the scan parameters
Definition: JetStability.h:98
void setScan(const unsigned nScan, const double min, const double max)
set the parameters to perform the distance cutoff scan
Definition: JetStability.h:56
const std::vector< std::vector< double > > & pairwiseRandStability() const
Definition: JetStability.h:91
void run(AbsSmearingAgent &)
Run the stability analysis.
Definition: JetStability.cc:12