DAS  3.0
Das Analysis System
fjcore.hh
Go to the documentation of this file.
1 // fjcore -- extracted from FastJet v3.3.2 (http://fastjet.fr)
2 //
3 // fjcore constitutes a digest of the main FastJet functionality.
4 // The files fjcore.hh and fjcore.cc are meant to provide easy access to these
5 // core functions, in the form of single files and without the need of a full
6 // FastJet installation:
7 //
8 // g++ main.cc fjcore.cc
9 //
10 // with main.cc including fjcore.hh.
11 //
12 // A fortran interface, fjcorefortran.cc, is also provided. See the example
13 // and the Makefile for instructions.
14 //
15 // The results are expected to be identical to those obtained by linking to
16 // the full FastJet distribution.
17 //
18 // NOTE THAT, IN ORDER TO MAKE IT POSSIBLE FOR FJCORE AND THE FULL FASTJET
19 // TO COEXIST, THE FORMER USES THE "fjcore" NAMESPACE INSTEAD OF "fastjet".
20 //
21 // In particular, fjcore provides:
22 //
23 // - access to all native pp and ee algorithms, kt, anti-kt, C/A.
24 // For C/A, the NlnN method is available, while anti-kt and kt
25 // are limited to the N^2 one (still the fastest for N < 100k particles)
26 // - access to selectors, for implementing cuts and selections
27 // - access to all functionalities related to pseudojets (e.g. a jet's
28 // structure or user-defined information)
29 //
30 // Instead, it does NOT provide:
31 //
32 // - jet areas functionality
33 // - background estimation
34 // - access to other algorithms via plugins
35 // - interface to CGAL
36 // - fastjet tools, e.g. filters, taggers
37 //
38 // If these functionalities are needed, the full FastJet installation must be
39 // used. The code will be fully compatible, with the sole replacement of the
40 // header files and of the fjcore namespace with the fastjet one.
41 //
42 // fjcore.hh and fjcore.cc are not meant to be human-readable.
43 // For documentation, see the full FastJet manual and doxygen at http://fastjet.fr
44 //
45 // Like FastJet, fjcore is released under the terms of the GNU General Public
46 // License version 2 (GPLv2). If you use this code as part of work towards a
47 // scientific publication, whether directly or contained within another program
48 // (e.g. Delphes, MadGraph, SpartyJet, Rivet, LHC collaboration software frameworks,
49 // etc.), you should include a citation to
50 //
51 // EPJC72(2012)1896 [arXiv:1111.6097] (FastJet User Manual)
52 // and, optionally, Phys.Lett.B641 (2006) 57 [arXiv:hep-ph/0512210]
53 //
54 //FJSTARTHEADER
55 // $Id$
56 //
57 // Copyright (c) 2005-2018, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
58 //
59 //----------------------------------------------------------------------
60 // This file is part of FastJet (fjcore).
61 //
62 // FastJet is free software; you can redistribute it and/or modify
63 // it under the terms of the GNU General Public License as published by
64 // the Free Software Foundation; either version 2 of the License, or
65 // (at your option) any later version.
66 //
67 // The algorithms that underlie FastJet have required considerable
68 // development. They are described in the original FastJet paper,
69 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
70 // FastJet as part of work towards a scientific publication, please
71 // quote the version you use and include a citation to the manual and
72 // optionally also to hep-ph/0512210.
73 //
74 // FastJet is distributed in the hope that it will be useful,
75 // but WITHOUT ANY WARRANTY; without even the implied warranty of
76 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
77 // GNU General Public License for more details.
78 //
79 // You should have received a copy of the GNU General Public License
80 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.
81 //----------------------------------------------------------------------
82 //FJENDHEADER
83 #ifndef __FJCORE_HH__
84 #define __FJCORE_HH__
85 #define __FJCORE__ // remove all the non-core code (a safekeeper)
86 #define __FJCORE_DROP_CGAL // disable CGAL support
87 #ifndef _INCLUDE_FJCORE_CONFIG_AUTO_H
88 #define _INCLUDE_FJCORE_CONFIG_AUTO_H 1
89 #ifndef FJCORE_HAVE_CXX14_DEPRECATED
90 #endif
91 #ifndef FJCORE_HAVE_DLFCN_H
92 # define FJCORE_HAVE_DLFCN_H 1
93 #endif
94 #ifndef FJCORE_HAVE_EXECINFO_H
95 #endif
96 #ifndef FJCORE_HAVE_EXPLICIT_FOR_OPERATORS
97 #endif
98 #ifndef FJCORE_HAVE_GNUCXX_DEPRECATED
99 #endif
100 #ifndef FJCORE_HAVE_INTTYPES_H
101 # define FJCORE_HAVE_INTTYPES_H 1
102 #endif
103 #ifndef FJCORE_HAVE_LIBM
104 # define FJCORE_HAVE_LIBM 1
105 #endif
106 #ifndef FJCORE_HAVE_MEMORY_H
107 # define FJCORE_HAVE_MEMORY_H 1
108 #endif
109 #ifndef FJCORE_HAVE_OVERRIDE
110 #endif
111 #ifndef FJCORE_HAVE_STDINT_H
112 # define FJCORE_HAVE_STDINT_H 1
113 #endif
114 #ifndef FJCORE_HAVE_STDLIB_H
115 # define FJCORE_HAVE_STDLIB_H 1
116 #endif
117 #ifndef FJCORE_HAVE_STRINGS_H
118 # define FJCORE_HAVE_STRINGS_H 1
119 #endif
120 #ifndef FJCORE_HAVE_STRING_H
121 # define FJCORE_HAVE_STRING_H 1
122 #endif
123 #ifndef FJCORE_HAVE_SYS_STAT_H
124 # define FJCORE_HAVE_SYS_STAT_H 1
125 #endif
126 #ifndef FJCORE_HAVE_SYS_TYPES_H
127 # define FJCORE_HAVE_SYS_TYPES_H 1
128 #endif
129 #ifndef FJCORE_HAVE_UNISTD_H
130 # define FJCORE_HAVE_UNISTD_H 1
131 #endif
132 #ifndef FJCORE_LT_OBJDIR
133 # define FJCORE_LT_OBJDIR ".libs/"
134 #endif
135 #ifndef FJCORE_PACKAGE
136 # define FJCORE_PACKAGE "fastjet"
137 #endif
138 #ifndef FJCORE_PACKAGE_BUGREPORT
139 # define FJCORE_PACKAGE_BUGREPORT ""
140 #endif
141 #ifndef FJCORE_PACKAGE_NAME
142 # define FJCORE_PACKAGE_NAME "FastJet"
143 #endif
144 #ifndef FJCORE_PACKAGE_STRING
145 # define FJCORE_PACKAGE_STRING "FastJet 3.3.2"
146 #endif
147 #ifndef FJCORE_PACKAGE_TARNAME
148 # define FJCORE_PACKAGE_TARNAME "fastjet"
149 #endif
150 #ifndef FJCORE_PACKAGE_URL
151 # define FJCORE_PACKAGE_URL ""
152 #endif
153 #ifndef FJCORE_PACKAGE_VERSION
154 # define FJCORE_PACKAGE_VERSION "3.3.2"
155 #endif
156 #ifndef FJCORE_STDC_HEADERS
157 # define FJCORE_STDC_HEADERS 1
158 #endif
159 #ifndef FJCORE_VERSION
160 # define FJCORE_VERSION "3.3.2"
161 #endif
162 #ifndef FJCORE_VERSION_MAJOR
163 # define FJCORE_VERSION_MAJOR 3
164 #endif
165 #ifndef FJCORE_VERSION_MINOR
166 # define FJCORE_VERSION_MINOR 3
167 #endif
168 #ifndef FJCORE_VERSION_NUMBER
169 # define FJCORE_VERSION_NUMBER 30302
170 #endif
171 #ifndef FJCORE_VERSION_PATCHLEVEL
172 # define FJCORE_VERSION_PATCHLEVEL 2
173 #endif
174 #endif
175 #ifndef __FJCORE_CONFIG_H__
176 #define __FJCORE_CONFIG_H__
177 #endif // __FJCORE_CONFIG_H__
178 #ifndef __FJCORE_FASTJET_BASE_HH__
179 #define __FJCORE_FASTJET_BASE_HH__
180 #define FJCORE_BEGIN_NAMESPACE namespace fjcore {
181 #define FJCORE_END_NAMESPACE }
182 #ifdef FJCORE_HAVE_OVERRIDE
183 # define FJCORE_OVERRIDE override
184 #else
185 # define FJCORE_OVERRIDE
186 #endif
187 #endif // __FJCORE_FASTJET_BASE_HH__
188 #ifndef __FJCORE_NUMCONSTS__
189 #define __FJCORE_NUMCONSTS__
190 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
191 const double pi = 3.141592653589793238462643383279502884197;
192 const double twopi = 6.283185307179586476925286766559005768394;
193 const double pisq = 9.869604401089358618834490999876151135314;
194 const double zeta2 = 1.644934066848226436472415166646025189219;
195 const double zeta3 = 1.202056903159594285399738161511449990765;
196 const double eulergamma = 0.577215664901532860606512090082402431042;
197 const double ln2 = 0.693147180559945309417232121458176568076;
199 #endif // __FJCORE_NUMCONSTS__
200 #ifndef __FJCORE_INTERNAL_IS_BASE_HH__
201 #define __FJCORE_INTERNAL_IS_BASE_HH__
203 template<typename T, T _t>
205  static const T value = _t;
206  typedef T value_type;
208 };
209 template<typename T, T _t>
213 typedef char (&__yes_type)[1]; //< the yes type
214 typedef char (&__no_type) [2]; //< the no type
215 template<typename B, typename D>
217 #if !((_MSC_VER !=0 ) && (_MSC_VER == 1310)) // MSVC 7.1
218  template <typename T>
219  static __yes_type check_sig(D const volatile *, T);
220 #else
221  static __yes_type check_sig(D const volatile *, long);
222 #endif
223  static __no_type check_sig(B const volatile *, int);
224 };
225 template<typename B, typename D>
227 #if ((_MSC_FULL_VER != 0) && (_MSC_FULL_VER >= 140050000))
228 #pragma warning(push)
229 #pragma warning(disable:6334)
230 #endif
231  struct Host{
232 #if !((_MSC_VER !=0 ) && (_MSC_VER == 1310))
233  operator B const volatile *() const;
234 #else
235  operator B const volatile * const&() const;
236 #endif
237  operator D const volatile *();
238  };
239  static const bool value = ((sizeof(B)!=0) &&
240  (sizeof(D)!=0) &&
241  (sizeof(__inheritance_helper<B,D>::check_sig(Host(), 0)) == sizeof(__yes_type)));
242 #if ((_MSC_FULL_VER != 0) && (_MSC_FULL_VER >= 140050000))
243 #pragma warning(pop)
244 #endif
245 };
246 template<class B, class D>
248  return IsBaseAndDerived<B,D>::value ? (B*)(d) : 0;
249 }
251 #endif // __IS_BASE_OF_HH__
252 #ifndef __FJCORE_FJCORE_DEPRECATED_HH__
253 #define __FJCORE_FJCORE_DEPRECATED_HH__
254 #ifndef SWIG
255 #if defined(FJCORE_HAVE_CXX14_DEPRECATED) and (!defined(__FJCORE__))
256 # define FJCORE_DEPRECATED [[deprecated]]
257 # define FJCORE_DEPRECATED_MSG(message) [[deprecated(message)]]
258 #elif defined(FJCORE_HAVE_GNUCXX_DEPRECATED)
259 # define FJCORE_DEPRECATED __attribute__((__deprecated__))
260 # define FJCORE_DEPRECATED_MSG(message) __attribute__((__deprecated__))
261 #else
262 # define FJCORE_DEPRECATED
263 # define FJCORE_DEPRECATED_MSG(message)
264 #endif
265 #else // SIWG
266 # define FJCORE_DEPRECATED
267 # define FJCORE_DEPRECATED_MSG(message)
268 #endif // SWIG
269 #endif // __FJCORE_FJCORE_DEPRECATED_HH__
270 #ifndef __FJCORE_SHARED_PTR_HH__
271 #define __FJCORE_SHARED_PTR_HH__
272 #include <cstdlib> // for NULL!!!
273 #ifdef __FJCORE_USETR1SHAREDPTR
274 #include <tr1/memory>
275 #endif // __FJCORE_USETR1SHAREDPTR
276 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
277 #ifdef __FJCORE_USETR1SHAREDPTR
278 template<class T>
279 class SharedPtr : public std::tr1::shared_ptr<T> {
280 public:
281  SharedPtr() : std::tr1::shared_ptr<T>() {}
282  SharedPtr(T * t) : std::tr1::shared_ptr<T>(t) {}
283  SharedPtr(const SharedPtr<T> & t) : std::tr1::shared_ptr<T>(t) {}
284  #ifdef FJCORE_HAVE_EXPLICIT_FOR_OPERATORS
285  explicit
286  #endif
287  inline operator bool() const {return (this->get()!=NULL);}
288  T* operator ()() const{
289  return this->get(); // automatically returns NULL when out-of-scope
290  }
291 };
292 #else // __FJCORE_USETR1SHAREDPTR
293 template<class T>
294 class SharedPtr{
295 public:
296  class __SharedCountingPtr;
297  SharedPtr() : _ptr(NULL){}
298  template<class Y> explicit SharedPtr(Y* ptr){
299  _ptr = new __SharedCountingPtr(ptr);
300  }
301  SharedPtr(SharedPtr const & share) : _ptr(share._get_container()){
302  if (_ptr!=NULL) ++(*_ptr);
303  }
305  if (_ptr==NULL) return;
306  _decrease_count();
307  }
308  void reset(){
309  SharedPtr().swap(*this);
310  }
311  template<class Y> void reset(Y * ptr){
312  SharedPtr(ptr).swap(*this);
313  }
314  template<class Y> void reset(SharedPtr<Y> const & share){
315  if (_ptr!=NULL){
316  if (_ptr == share._get_container()) return;
317  _decrease_count();
318  }
319  _ptr = share._get_container(); // Note: automatically set it to NULL if share is empty
320  if (_ptr!=NULL) ++(*_ptr);
321  }
322  SharedPtr& operator=(SharedPtr const & share){
323  reset(share);
324  return *this;
325  }
326  template<class Y> SharedPtr& operator=(SharedPtr<Y> const & share){
327  reset(share);
328  return *this;
329  }
330  FJCORE_DEPRECATED_MSG("Use SharedPtr<T>::get() instead")
331  T* operator ()() const{
332  if (_ptr==NULL) return NULL;
333  return _ptr->get(); // automatically returns NULL when out-of-scope
334  }
335  inline T& operator*() const{
336  return *(_ptr->get());
337  }
338  inline T* operator->() const{
339  if (_ptr==NULL) return NULL;
340  return _ptr->get();
341  }
342  inline T* get() const{
343  if (_ptr==NULL) return NULL;
344  return _ptr->get();
345  }
346  inline bool unique() const{
347  return (use_count()==1);
348  }
349  inline long use_count() const{
350  if (_ptr==NULL) return 0;
351  return _ptr->use_count(); // automatically returns NULL when out-of-scope
352  }
353  #ifdef FJCORE_HAVE_EXPLICIT_FOR_OPERATORS
354  explicit
355  #endif
356  inline operator bool() const{
357  return (get()!=NULL);
358  }
359  inline void swap(SharedPtr & share){
360  __SharedCountingPtr* share_container = share._ptr;
361  share._ptr = _ptr;
362  _ptr = share_container;
363  }
364  void set_count(const long & count){
365  if (_ptr==NULL) return;
366  _ptr->set_count(count);
367  }
369  public:
371  template<class Y> explicit __SharedCountingPtr(Y* ptr) : _ptr(ptr), _count(1){}
373  if (_ptr!=NULL){ delete _ptr;}
374  }
375  inline T* get() const {return _ptr;}
376  inline long use_count() const {return _count;}
377  inline long operator++(){return ++_count;}
378  inline long operator--(){return --_count;}
379  inline long operator++(int){return _count++;}
380  inline long operator--(int){return _count--;}
381  void set_count(const long & count){
382  _count = count;
383  }
384  private:
385  T *_ptr;
386  long _count;
387  };
388 private:
389  inline __SharedCountingPtr* _get_container() const{
390  return _ptr;
391  }
393  (*_ptr)--;
394  if (_ptr->use_count()==0)
395  delete _ptr; // that automatically deletes the object itself
396  }
397  __SharedCountingPtr *_ptr;
398 };
399 template<class T,class U>
400 inline bool operator==(SharedPtr<T> const & t, SharedPtr<U> const & u){
401  return t.get() == u.get();
402 }
403 template<class T,class U>
404 inline bool operator!=(SharedPtr<T> const & t, SharedPtr<U> const & u){
405  return t.get() != u.get();
406 }
407 template<class T,class U>
408 inline bool operator<(SharedPtr<T> const & t, SharedPtr<U> const & u){
409  return t.get() < u.get();
410 }
411 template<class T>
412 inline void swap(SharedPtr<T> & a, SharedPtr<T> & b){
413  return a.swap(b);
414 }
415 template<class T>
416 inline T* get_pointer(SharedPtr<T> const & t){
417  return t.get();
418 }
419 #endif // __FJCORE_USETR1SHAREDPTR
420 FJCORE_END_NAMESPACE // defined in fastjet/internal/base.hh
421 #endif // __FJCORE_SHARED_PTR_HH__
422 #ifndef __FJCORE_LIMITEDWARNING_HH__
423 #define __FJCORE_LIMITEDWARNING_HH__
424 #include <iostream>
425 #include <string>
426 #include <list>
429 public:
431  LimitedWarning(int max_warn_in) : _max_warn(max_warn_in), _n_warn_so_far(0), _this_warning_summary(0) {}
432  void warn(const char * warning) {warn(warning, _default_ostr);}
433  void warn(const std::string & warning) {warn(warning.c_str(), _default_ostr);}
434  void warn(const char * warning, std::ostream * ostr);
435  void warn(const std::string & warning, std::ostream * ostr) {warn(warning.c_str(), ostr);}
436  static void set_default_stream(std::ostream * ostr) {
437  _default_ostr = ostr;
438  }
439  static void set_default_max_warn(int max_warn) {
441  }
442  int max_warn() const {return _max_warn;}
443  int n_warn_so_far() const {return _n_warn_so_far;}
444  static std::string summary();
445 private:
447  static int _max_warn_default;
448  static std::ostream * _default_ostr;
449  typedef std::pair<std::string, unsigned int> Summary;
450  static std::list< Summary > _global_warnings_summary;
452 };
454 #endif // __FJCORE_LIMITEDWARNING_HH__
455 #ifndef __FJCORE_ERROR_HH__
456 #define __FJCORE_ERROR_HH__
457 #include<iostream>
458 #include<string>
459 #if (!defined(FJCORE_HAVE_EXECINFO_H)) || defined(__FJCORE__)
460 #endif
461 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
462 class Error {
463 public:
464  Error() {}
465  Error(const std::string & message);
466  virtual ~Error() {}
467  std::string message() const {return _message;}
468  std::string description() const {return message();}
469  static void set_print_errors(bool print_errors) {_print_errors = print_errors;}
470  static void set_print_backtrace(bool enabled);
471  static void set_default_stream(std::ostream * ostr) {
472  _default_ostr = ostr;
473  }
474 private:
475  std::string _message;
476  static bool _print_errors;
477  static bool _print_backtrace;
478  static std::ostream * _default_ostr;
479 #if (!defined(FJCORE_HAVE_EXECINFO_H)) || defined(__FJCORE__)
481 #endif
482 };
483 class InternalError : public Error{
484 public:
485  InternalError(const std::string & message_in) : Error(std::string("*** CRITICAL INTERNAL FASTJET ERROR *** CONTACT THE AUTHORS *** ") + message_in){ }
486 };
488 #endif // __FJCORE_ERROR_HH__
489 #ifndef __FJCORE_PSEUDOJET_STRUCTURE_BASE_HH__
490 #define __FJCORE_PSEUDOJET_STRUCTURE_BASE_HH__
491 #include <vector>
492 #include <string>
493 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
494 class PseudoJet;
495 class ClusterSequence;
497 public:
500  virtual std::string description() const{ return "PseudoJet with an unknown structure"; }
501  virtual bool has_associated_cluster_sequence() const { return false;}
502  virtual const ClusterSequence* associated_cluster_sequence() const;
503  virtual bool has_valid_cluster_sequence() const {return false;}
504  virtual const ClusterSequence * validated_cs() const;
505  virtual bool has_partner(const PseudoJet &reference, PseudoJet &partner) const;
506  virtual bool has_child(const PseudoJet &reference, PseudoJet &child) const;
507  virtual bool has_parents(const PseudoJet &reference, PseudoJet &parent1, PseudoJet &parent2) const;
508  virtual bool object_in_jet(const PseudoJet &reference, const PseudoJet &jet) const;
509  virtual bool has_constituents() const {return false;}
510  virtual std::vector<PseudoJet> constituents(const PseudoJet &reference) const;
511  virtual bool has_exclusive_subjets() const {return false;}
512  virtual std::vector<PseudoJet> exclusive_subjets(const PseudoJet &reference, const double & dcut) const;
513  virtual int n_exclusive_subjets(const PseudoJet &reference, const double & dcut) const;
514  virtual std::vector<PseudoJet> exclusive_subjets_up_to (const PseudoJet &reference, int nsub) const;
515  virtual double exclusive_subdmerge(const PseudoJet &reference, int nsub) const;
516  virtual double exclusive_subdmerge_max(const PseudoJet &reference, int nsub) const;
517  virtual bool has_pieces(const PseudoJet & /* reference */) const {
518  return false;}
519  virtual std::vector<PseudoJet> pieces(const PseudoJet & /* reference */
520  ) const;
521 };
523 #endif // __FJCORE_PSEUDOJET_STRUCTURE_BASE_HH__
524 #ifndef __FJCORE_PSEUDOJET_HH__
525 #define __FJCORE_PSEUDOJET_HH__
526 #include<valarray>
527 #include<vector>
528 #include<cassert>
529 #include<cmath>
530 #include<iostream>
531 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
532 const double MaxRap = 1e5;
533 const double pseudojet_invalid_phi = -100.0;
534 const double pseudojet_invalid_rap = -1e200;
535 class PseudoJet {
536  public:
537  PseudoJet() : _px(0), _py(0), _pz(0), _E(0) {_finish_init(); _reset_indices();}
538  PseudoJet(const double px, const double py, const double pz, const double E);
539  #ifndef SWIG
540  template <class L> PseudoJet(const L & some_four_vector);
541  #endif
542  PseudoJet(bool /* dummy */) {}
543  virtual ~PseudoJet(){};
544  inline double E() const {return _E;}
545  inline double e() const {return _E;} // like CLHEP
546  inline double px() const {return _px;}
547  inline double py() const {return _py;}
548  inline double pz() const {return _pz;}
549  inline double phi() const {return phi_02pi();}
550  inline double phi_std() const {
552  return _phi > pi ? _phi-twopi : _phi;}
553  inline double phi_02pi() const {
555  return _phi;
556  }
557  inline double rap() const {
559  return _rap;
560  }
561  inline double rapidity() const {return rap();} // like CLHEP
562  double pseudorapidity() const;
563  double eta() const {return pseudorapidity();}
564  inline double pt2() const {return _kt2;}
565  inline double pt() const {return sqrt(_kt2);}
566  inline double perp2() const {return _kt2;} // like CLHEP
567  inline double perp() const {return sqrt(_kt2);} // like CLHEP
568  inline double CorrPt() const {return sqrt(_kt2);}
569  inline double kt2() const {return _kt2;} // for bkwds compatibility
570  inline double m2() const {return (_E+_pz)*(_E-_pz)-_kt2;}
571  inline double m() const;
572  inline double mperp2() const {return (_E+_pz)*(_E-_pz);}
573  inline double mperp() const {return sqrt(std::abs(mperp2()));}
574  inline double mt2() const {return (_E+_pz)*(_E-_pz);}
575  inline double mt() const {return sqrt(std::abs(mperp2()));}
576  inline double modp2() const {return _kt2+_pz*_pz;}
577  inline double modp() const {return sqrt(_kt2+_pz*_pz);}
578  inline double Et() const {return (_kt2==0) ? 0.0 : _E/sqrt(1.0+_pz*_pz/_kt2);}
579  inline double Et2() const {return (_kt2==0) ? 0.0 : _E*_E/(1.0+_pz*_pz/_kt2);}
580  inline double cos_theta() const {
581  return std::min(1.0, std::max(-1.0, _pz/sqrt(modp2())));
582  }
583  inline double theta() const { return acos(cos_theta()); }
584  double operator () (int i) const ;
585  inline double operator [] (int i) const { return (*this)(i); }; // this too
586  double kt_distance(const PseudoJet & other) const;
587  double plain_distance(const PseudoJet & other) const;
588  inline double squared_distance(const PseudoJet & other) const {
589  return plain_distance(other);}
590  inline double delta_R(const PseudoJet & other) const {
591  return sqrt(squared_distance(other));
592  }
593  double delta_phi_to(const PseudoJet & other) const;
594  inline double beam_distance() const {return _kt2;}
595  std::valarray<double> four_mom() const;
596  enum { X=0, Y=1, Z=2, T=3, NUM_COORDINATES=4, SIZE=NUM_COORDINATES };
597  PseudoJet & boost(const PseudoJet & prest);
598  PseudoJet & unboost(const PseudoJet & prest);
599  PseudoJet & operator*=(double);
600  PseudoJet & operator/=(double);
601  PseudoJet & operator+=(const PseudoJet &);
602  PseudoJet & operator-=(const PseudoJet &);
603  inline void reset(double px, double py, double pz, double E);
604  inline void reset(const PseudoJet & psjet) {
605  (*this) = psjet;
606  }
607 #ifndef SWIG
608  template <class L> inline void reset(const L & some_four_vector) {
609  const PseudoJet * pj = fjcore::cast_if_derived<const PseudoJet>(&some_four_vector);
610  if (pj){
611  (*this) = *pj;
612  } else {
613  reset(some_four_vector[0], some_four_vector[1],
614  some_four_vector[2], some_four_vector[3]);
615  }
616  }
617 #endif // SWIG
618  inline void reset_PtYPhiM(double pt_in, double y_in, double phi_in, double m_in=0.0) {
619  reset_momentum_PtYPhiM(pt_in, y_in, phi_in, m_in);
620  _reset_indices();
621  }
622  inline void reset_momentum(double px, double py, double pz, double E);
623  inline void reset_momentum(const PseudoJet & pj);
624  void reset_momentum_PtYPhiM(double pt, double y, double phi, double m=0.0);
625  template <class L> inline void reset_momentum(const L & some_four_vector) {
626  reset_momentum(some_four_vector[0], some_four_vector[1],
627  some_four_vector[2], some_four_vector[3]);
628  }
629  void set_cached_rap_phi(double rap, double phi);
630  inline int user_index() const {return _user_index;}
631  inline void set_user_index(const int index) {_user_index = index;}
633  public:
635  virtual ~UserInfoBase(){};
636  };
637  class InexistentUserInfo : public Error {
638  public:
640  };
641  void set_user_info(UserInfoBase * user_info_in) {
642  _user_info.reset(user_info_in);
643  }
644  template<class L>
645  const L & user_info() const{
646  if (_user_info.get() == 0) throw InexistentUserInfo();
647  return dynamic_cast<const L &>(* _user_info.get());
648  }
649  bool has_user_info() const{
650  return _user_info.get();
651  }
652  template<class L>
653  bool has_user_info() const{
654  return _user_info.get() && dynamic_cast<const L *>(_user_info.get());
655  }
656  const UserInfoBase * user_info_ptr() const{
657  return _user_info.get();
658  }
660  return _user_info;
661  }
663  return _user_info;
664  }
665  std::string description() const;
666  bool has_associated_cluster_sequence() const;
668  bool has_valid_cluster_sequence() const;
669  bool has_valid_cs() const {return has_valid_cluster_sequence();}
673  return validated_cs();
674  }
675  const ClusterSequence * validated_cs() const;
677  bool has_structure() const;
678  const PseudoJetStructureBase* structure_ptr() const;
682  template<typename StructureType>
683  const StructureType & structure() const;
684  template<typename TransformerType>
685  bool has_structure_of() const;
686  template<typename TransformerType>
687  const typename TransformerType::StructureType & structure_of() const;
688  virtual bool has_partner(PseudoJet &partner) const;
689  virtual bool has_child(PseudoJet &child) const;
690  virtual bool has_parents(PseudoJet &parent1, PseudoJet &parent2) const;
691  virtual bool contains(const PseudoJet &constituent) const;
692  virtual bool is_inside(const PseudoJet &jet) const;
693  virtual bool has_constituents() const;
694  virtual std::vector<PseudoJet> constituents() const;
695  virtual bool has_exclusive_subjets() const;
696  std::vector<PseudoJet> exclusive_subjets (const double dcut) const;
697  int n_exclusive_subjets(const double dcut) const;
698  std::vector<PseudoJet> exclusive_subjets (int nsub) const;
699  std::vector<PseudoJet> exclusive_subjets_up_to (int nsub) const;
700  double exclusive_subdmerge(int nsub) const;
701  double exclusive_subdmerge_max(int nsub) const;
702  virtual bool has_pieces() const;
703  virtual std::vector<PseudoJet> pieces() const;
704  inline int cluster_hist_index() const {return _cluster_hist_index;}
705  inline void set_cluster_hist_index(const int index) {_cluster_hist_index = index;}
706  inline int cluster_sequence_history_index() const {
707  return cluster_hist_index();}
708  inline void set_cluster_sequence_history_index(const int index) {
709  set_cluster_hist_index(index);}
710  protected:
713  private:
714  double _px,_py,_pz,_E;
715  mutable double _phi, _rap;
716  double _kt2;
718  void _finish_init();
719  void _reset_indices();
720  inline void _ensure_valid_rap_phi() const {
722  }
723  void _set_rap_phi() const;
724  friend PseudoJet operator*(double, const PseudoJet &);
725 };
726 PseudoJet operator+(const PseudoJet &, const PseudoJet &);
727 PseudoJet operator-(const PseudoJet &, const PseudoJet &);
728 PseudoJet operator*(double, const PseudoJet &);
729 PseudoJet operator*(const PseudoJet &, double);
730 PseudoJet operator/(const PseudoJet &, double);
731 bool operator==(const PseudoJet &, const PseudoJet &);
732 inline bool operator!=(const PseudoJet & a, const PseudoJet & b) {return !(a==b);}
733 bool operator==(const PseudoJet & jet, const double val);
734 inline bool operator==(const double val, const PseudoJet & jet) {return jet == val;}
735 inline bool operator!=(const PseudoJet & a, const double val) {return !(a==val);}
736 inline bool operator!=( const double val, const PseudoJet & a) {return !(a==val);}
737 inline double dot_product(const PseudoJet & a, const PseudoJet & b) {
738  return a.E()*b.E() - a.px()*b.px() - a.py()*b.py() - a.pz()*b.pz();
739 }
740 inline double cos_theta(const PseudoJet & a, const PseudoJet & b) {
741  double dot_3d = a.px()*b.px() + a.py()*b.py() + a.pz()*b.pz();
742  return std::min(1.0, std::max(-1.0, dot_3d/sqrt(a.modp2()*b.modp2())));
743 }
744 inline double theta(const PseudoJet & a, const PseudoJet & b) {
745  return acos(cos_theta(a,b));
746 }
747 bool have_same_momentum(const PseudoJet &, const PseudoJet &);
748 PseudoJet PtYPhiM(double pt, double y, double phi, double m = 0.0);
749 std::vector<PseudoJet> sorted_by_pt(const std::vector<PseudoJet> & jets);
750 std::vector<PseudoJet> sorted_by_rapidity(const std::vector<PseudoJet> & jets);
751 std::vector<PseudoJet> sorted_by_E(const std::vector<PseudoJet> & jets);
752 std::vector<PseudoJet> sorted_by_pz(const std::vector<PseudoJet> & jets);
753 void sort_indices(std::vector<int> & indices,
754  const std::vector<double> & values);
755 template<class T> std::vector<T> objects_sorted_by_values(const std::vector<T> & objects,
756  const std::vector<double> & values) {
757  if (objects.size() != values.size()){
758  throw Error("fjcore::objects_sorted_by_values(...): the size of the 'objects' vector must match the size of the 'values' vector");
759  }
760  std::vector<int> indices(values.size());
761  for (size_t i = 0; i < indices.size(); i++) {indices[i] = i;}
762  sort_indices(indices, values);
763  std::vector<T> objects_sorted(objects.size());
764  for (size_t i = 0; i < indices.size(); i++) {
765  objects_sorted[i] = objects[indices[i]];
766  }
767  return objects_sorted;
768 }
770 public:
771  inline IndexedSortHelper (const std::vector<double> * reference_values) {
772  _ref_values = reference_values;
773  };
774  inline int operator() (const int i1, const int i2) const {
775  return (*_ref_values)[i1] < (*_ref_values)[i2];
776  };
777 private:
778  const std::vector<double> * _ref_values;
779 };
780 #ifndef SWIG
781 template <class L> inline PseudoJet::PseudoJet(const L & some_four_vector) {
782  reset(some_four_vector);
783 }
784 #endif
787  set_user_index(-1);
788  _structure.reset();
789  _user_info.reset();
790 }
791 inline double PseudoJet::m() const {
792  double mm = m2();
793  return mm < 0.0 ? -std::sqrt(-mm) : std::sqrt(mm);
794 }
795 inline void PseudoJet::reset(double px_in, double py_in, double pz_in, double E_in) {
796  _px = px_in;
797  _py = py_in;
798  _pz = pz_in;
799  _E = E_in;
800  _finish_init();
801  _reset_indices();
802 }
803 inline void PseudoJet::reset_momentum(double px_in, double py_in, double pz_in, double E_in) {
804  _px = px_in;
805  _py = py_in;
806  _pz = pz_in;
807  _E = E_in;
808  _finish_init();
809 }
810 inline void PseudoJet::reset_momentum(const PseudoJet & pj) {
811  _px = pj._px ;
812  _py = pj._py ;
813  _pz = pj._pz ;
814  _E = pj._E ;
815  _phi = pj._phi;
816  _rap = pj._rap;
817  _kt2 = pj._kt2;
818 }
819 template<typename StructureType>
820 const StructureType & PseudoJet::structure() const{
821  return dynamic_cast<const StructureType &>(* validated_structure_ptr());
822 }
823 template<typename TransformerType>
825  if (!_structure) return false;
826  return dynamic_cast<const typename TransformerType::StructureType *>(_structure.get()) != 0;
827 }
828 template<typename TransformerType>
829 const typename TransformerType::StructureType & PseudoJet::structure_of() const{
830  if (!_structure)
831  throw Error("Trying to access the structure of a PseudoJet without an associated structure");
832  return dynamic_cast<const typename TransformerType::StructureType &>(*_structure);
833 }
834 PseudoJet join(const std::vector<PseudoJet> & pieces);
835 PseudoJet join(const PseudoJet & j1);
836 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2);
837 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3);
838 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3, const PseudoJet & j4);
840 #endif // __FJCORE_PSEUDOJET_HH__
841 #ifndef __FJCORE_FUNCTION_OF_PSEUDOJET_HH__
842 #define __FJCORE_FUNCTION_OF_PSEUDOJET_HH__
844 template<typename TOut>
846 public:
849  virtual std::string description() const{ return "";}
850  virtual TOut result(const PseudoJet &pj) const = 0;
851  TOut operator()(const PseudoJet &pj) const { return result(pj);}
852  std::vector<TOut> operator()(const std::vector<PseudoJet> &pjs) const {
853  std::vector<TOut> res(pjs.size());
854  for (unsigned int i=0; i<pjs.size(); i++)
855  res[i] = result(pjs[i]);
856  return res;
857  }
858 };
860 #endif // __FJCORE_FUNCTION_OF_PSEUDOJET_HH__
861 #ifndef __FJCORE_SELECTOR_HH__
862 #define __FJCORE_SELECTOR_HH__
863 #include <limits>
864 #include <cmath>
865 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
866 class Selector;
868 public:
869  virtual ~SelectorWorker() {}
870  virtual bool pass(const PseudoJet & jet) const = 0;
871  virtual void terminator(std::vector<const PseudoJet *> & jets) const {
872  for (unsigned i = 0; i < jets.size(); i++) {
873  if (jets[i] && !pass(*jets[i])) jets[i] = NULL;
874  }
875  }
876  virtual bool applies_jet_by_jet() const {return true;}
877  virtual std::string description() const {return "missing description";}
878  virtual bool takes_reference() const { return false;}
879  virtual void set_reference(const PseudoJet & /*reference*/){
880  throw Error("set_reference(...) cannot be used for a selector worker that does not take a reference");
881  }
882  virtual SelectorWorker* copy(){
883  throw Error("this SelectorWorker has nothing to copy");
884  }
885  virtual void get_rapidity_extent(double & rapmin, double & rapmax) const {
886  rapmax = std::numeric_limits<double>::infinity();
887  rapmin = -rapmax;
888  }
889  virtual bool is_geometric() const { return false;}
890  virtual bool has_finite_area() const;
891  virtual bool has_known_area() const { return false;}
892  virtual double known_area() const{
893  throw Error("this selector has no computable area");
894  }
895 };
896 class Selector{
897 public:
898  Selector() {}
899  Selector(SelectorWorker * worker_in) {_worker.reset(worker_in);}
900  virtual ~Selector(){}
901  bool pass(const PseudoJet & jet) const {
903  throw Error("Cannot apply this selector to an individual jet");
904  }
905  return _worker->pass(jet);
906  }
907  bool operator()(const PseudoJet & jet) const {
908  return pass(jet);
909  }
910  unsigned int count(const std::vector<PseudoJet> & jets) const;
911  PseudoJet sum(const std::vector<PseudoJet> & jets) const;
912  double scalar_pt_sum(const std::vector<PseudoJet> & jets) const;
913  void sift(const std::vector<PseudoJet> & jets,
914  std::vector<PseudoJet> & jets_that_pass,
915  std::vector<PseudoJet> & jets_that_fail) const;
916  bool applies_jet_by_jet() const {
918  }
919  std::vector<PseudoJet> operator()(const std::vector<PseudoJet> & jets) const;
920  virtual void nullify_non_selected(std::vector<const PseudoJet *> & jets) const {
922  }
923  void get_rapidity_extent(double &rapmin, double &rapmax) const {
924  return validated_worker()->get_rapidity_extent(rapmin, rapmax);
925  }
926  std::string description() const {
927  return validated_worker()->description();
928  }
929  bool is_geometric() const{
930  return validated_worker()->is_geometric();
931  }
932  bool has_finite_area() const{
933  return validated_worker()->has_finite_area();
934  }
935  const SharedPtr<SelectorWorker> & worker() const {return _worker;}
937  const SelectorWorker* worker_ptr = _worker.get();
938  if (worker_ptr == 0) throw InvalidWorker();
939  return worker_ptr;
940  }
941  bool takes_reference() const {
942  return validated_worker()->takes_reference();
943  }
944  const Selector & set_reference(const PseudoJet &reference){
945  if (! validated_worker()->takes_reference()){
946  return *this;
947  }
949  _worker->set_reference(reference);
950  return *this;
951  }
952  class InvalidWorker : public Error {
953  public:
954  InvalidWorker() : Error("Attempt to use Selector with no valid underlying worker") {}
955  };
956  class InvalidArea : public Error {
957  public:
958  InvalidArea() : Error("Attempt to obtain area from Selector for which this is not meaningful") {}
959  };
960  Selector & operator &=(const Selector & b);
961  Selector & operator |=(const Selector & b);
962 protected:
964  if (_worker.unique()) return;
966  }
967 private:
969 };
971 Selector operator!(const Selector & s);
972 Selector operator ||(const Selector & s1, const Selector & s2);
973 Selector operator&&(const Selector & s1, const Selector & s2);
974 Selector operator*(const Selector & s1, const Selector & s2);
975 Selector SelectorPtMin(double ptmin);
976 Selector SelectorPtMax(double ptmax);
977 Selector SelectorPtRange(double ptmin, double ptmax);
978 Selector SelectorEtMin(double Etmin);
979 Selector SelectorEtMax(double Etmax);
980 Selector SelectorEtRange(double Etmin, double Etmax);
981 Selector SelectorEMin(double Emin);
982 Selector SelectorEMax(double Emax);
983 Selector SelectorERange(double Emin, double Emax);
984 Selector SelectorMassMin(double Mmin);
985 Selector SelectorMassMax(double Mmax);
986 Selector SelectorMassRange(double Mmin, double Mmax);
987 Selector SelectorRapMin(double rapmin);
988 Selector SelectorRapMax(double rapmax);
989 Selector SelectorRapRange(double rapmin, double rapmax);
990 Selector SelectorAbsRapMin(double absrapmin);
991 Selector SelectorAbsRapMax(double absrapmax);
992 Selector SelectorAbsRapRange(double absrapmin, double absrapmax);
993 Selector SelectorEtaMin(double etamin);
994 Selector SelectorEtaMax(double etamax);
995 Selector SelectorEtaRange(double etamin, double etamax);
996 Selector SelectorAbsEtaMin(double absetamin);
997 Selector SelectorAbsEtaMax(double absetamax);
998 Selector SelectorAbsEtaRange(double absetamin, double absetamax);
999 Selector SelectorPhiRange(double phimin, double phimax);
1000 Selector SelectorRapPhiRange(double rapmin, double rapmax, double phimin, double phimax);
1001 Selector SelectorNHardest(unsigned int n);
1002 Selector SelectorCircle(const double radius);
1003 Selector SelectorDoughnut(const double radius_in, const double radius_out);
1004 Selector SelectorStrip(const double half_width);
1005 Selector SelectorRectangle(const double half_rap_width, const double half_phi_width);
1006 Selector SelectorPtFractionMin(double fraction);
1008 FJCORE_END_NAMESPACE // defined in fastjet/internal/base.hh
1009 #endif // __FJCORE_SELECTOR_HH__
1010 #ifndef __FJCORE_JETDEFINITION_HH__
1011 #define __FJCORE_JETDEFINITION_HH__
1012 #include<cassert>
1013 #include<string>
1014 #include<memory>
1015 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
1016 std::string fastjet_version_string();
1017 enum Strategy {
1023  N2Tiled = -3,
1025  N2Plain = -1,
1026  N3Dumb = 0,
1027  Best = 1,
1028  NlnN = 2,
1029  NlnN3pi = 3,
1030  NlnN4pi = 4,
1033  NlnNCam = 12, // 2piMultD
1034  BestFJ30 = 21,
1035  plugin_strategy = 999
1036 };
1048 };
1062  external_scheme = 99
1063 };
1064 class ClusterSequence;
1066 public:
1067  class Plugin;
1068  class Recombiner;
1069  JetDefinition(JetAlgorithm jet_algorithm_in,
1070  double R_in,
1071  RecombinationScheme recomb_scheme_in = E_scheme,
1072  Strategy strategy_in = Best) {
1073  *this = JetDefinition(jet_algorithm_in, R_in, recomb_scheme_in, strategy_in, 1);
1074  }
1075  JetDefinition(JetAlgorithm jet_algorithm_in,
1076  RecombinationScheme recomb_scheme_in = E_scheme,
1077  Strategy strategy_in = Best) {
1078  double dummyR = 0.0;
1079  *this = JetDefinition(jet_algorithm_in, dummyR, recomb_scheme_in, strategy_in, 0);
1080  }
1081  JetDefinition(JetAlgorithm jet_algorithm_in,
1082  double R_in,
1083  double xtra_param_in,
1084  RecombinationScheme recomb_scheme_in = E_scheme,
1085  Strategy strategy_in = Best) {
1086  *this = JetDefinition(jet_algorithm_in, R_in, recomb_scheme_in, strategy_in, 2);
1087  set_extra_param(xtra_param_in);
1088  }
1089  JetDefinition(JetAlgorithm jet_algorithm_in,
1090  double R_in,
1091  const Recombiner * recombiner_in,
1092  Strategy strategy_in = Best) {
1093  *this = JetDefinition(jet_algorithm_in, R_in, external_scheme, strategy_in);
1094  _recombiner = recombiner_in;
1095  }
1096  JetDefinition(JetAlgorithm jet_algorithm_in,
1097  const Recombiner * recombiner_in,
1098  Strategy strategy_in = Best) {
1099  *this = JetDefinition(jet_algorithm_in, external_scheme, strategy_in);
1100  _recombiner = recombiner_in;
1101  }
1102  JetDefinition(JetAlgorithm jet_algorithm_in,
1103  double R_in,
1104  double xtra_param_in,
1105  const Recombiner * recombiner_in,
1106  Strategy strategy_in = Best) {
1107  *this = JetDefinition(jet_algorithm_in, R_in, xtra_param_in, external_scheme, strategy_in);
1108  _recombiner = recombiner_in;
1109  }
1111  *this = JetDefinition(undefined_jet_algorithm, 1.0);
1112  }
1113  JetDefinition(const Plugin * plugin_in) {
1114  _plugin = plugin_in;
1116  _Rparam = _plugin->R();
1117  _extra_param = 0.0; // a dummy value to keep static code checkers happy
1120  }
1121  JetDefinition(JetAlgorithm jet_algorithm_in,
1122  double R_in,
1123  RecombinationScheme recomb_scheme_in,
1124  Strategy strategy_in,
1125  int nparameters_in);
1126  FJCORE_DEPRECATED_MSG("This argument ordering is deprecated. Use JetDefinition(alg, R, strategy, scheme[, n_parameters]) instead")
1127  JetDefinition(JetAlgorithm jet_algorithm_in,
1128  double R_in,
1129  Strategy strategy_in,
1130  RecombinationScheme recomb_scheme_in = E_scheme,
1131  int nparameters_in = 1){
1132  (*this) = JetDefinition(jet_algorithm_in,R_in,recomb_scheme_in,strategy_in,nparameters_in);
1133  }
1134  template <class L>
1135  std::vector<PseudoJet> operator()(const std::vector<L> & particles) const;
1136  static const double max_allowable_R; //= 1000.0;
1138  void set_recombiner(const Recombiner * recomb) {
1139  if (_shared_recombiner) _shared_recombiner.reset(recomb);
1140  _recombiner = recomb;
1142  }
1143  void set_recombiner(const JetDefinition &other_jet_def);
1145  const Plugin * plugin() const {return _plugin;};
1149  double R () const {return _Rparam ;}
1150  double extra_param () const {return _extra_param ;}
1151  Strategy strategy () const {return _strategy ;}
1153  return _default_recombiner.scheme();}
1156  void set_extra_param(double xtra_param) {_extra_param = xtra_param;}
1157  const Recombiner * recombiner() const {
1158  return _recombiner == 0 ? & _default_recombiner : _recombiner;}
1159  bool has_same_recombiner(const JetDefinition &other_jd) const;
1160  bool is_spherical() const;
1161  std::string description() const;
1162  std::string description_no_recombiner() const;
1163  static std::string algorithm_description(const JetAlgorithm jet_alg);
1164  static unsigned int n_parameters_for_algorithm(const JetAlgorithm jet_alg);
1165 public:
1166  class Recombiner {
1167  public:
1168  virtual std::string description() const = 0;
1169  virtual void recombine(const PseudoJet & pa, const PseudoJet & pb,
1170  PseudoJet & pab) const = 0;
1171  virtual void preprocess(PseudoJet & ) const {};
1172  virtual ~Recombiner() {};
1173  inline void plus_equal(PseudoJet & pa, const PseudoJet & pb) const {
1174  PseudoJet pres;
1175  recombine(pa,pb,pres);
1176  pa = pres;
1177  }
1178  };
1180  public:
1182  _recomb_scheme(recomb_scheme) {}
1183  virtual std::string description() const FJCORE_OVERRIDE;
1184  virtual void recombine(const PseudoJet & pa, const PseudoJet & pb,
1185  PseudoJet & pab) const FJCORE_OVERRIDE;
1186  virtual void preprocess(PseudoJet & p) const FJCORE_OVERRIDE;
1188  private:
1190  };
1191  class Plugin{
1192  public:
1193  virtual std::string description() const = 0;
1194  virtual void run_clustering(ClusterSequence &) const = 0;
1195  virtual double R() const = 0;
1196  virtual bool supports_ghosted_passive_areas() const {return false;}
1197  virtual void set_ghost_separation_scale(double scale) const;
1198  virtual double ghost_separation_scale() const {return 0.0;}
1199  virtual bool exclusive_sequence_meaningful() const {return false;}
1200  virtual bool is_spherical() const {return false;}
1201  virtual ~Plugin() {};
1202  };
1203 private:
1205  double _Rparam;
1206  double _extra_param ;
1208  const Plugin * _plugin;
1213 };
1214 PseudoJet join(const std::vector<PseudoJet> & pieces, const JetDefinition::Recombiner & recombiner);
1215 PseudoJet join(const PseudoJet & j1,
1216  const JetDefinition::Recombiner & recombiner);
1217 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2,
1218  const JetDefinition::Recombiner & recombiner);
1219 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3,
1220  const JetDefinition::Recombiner & recombiner);
1221 PseudoJet join(const PseudoJet & j1, const PseudoJet & j2, const PseudoJet & j3, const PseudoJet & j4,
1222  const JetDefinition::Recombiner & recombiner);
1224 #endif // __FJCORE_JETDEFINITION_HH__
1225 #ifndef __FJCORE_COMPOSITEJET_STRUCTURE_HH__
1226 #define __FJCORE_COMPOSITEJET_STRUCTURE_HH__
1227 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
1229 public:
1231  CompositeJetStructure(const std::vector<PseudoJet> & initial_pieces,
1232  const JetDefinition::Recombiner * recombiner = 0);
1235  };
1236  virtual std::string description() const FJCORE_OVERRIDE;
1237  virtual bool has_constituents() const FJCORE_OVERRIDE;
1238  virtual std::vector<PseudoJet> constituents(const PseudoJet &jet) const FJCORE_OVERRIDE;
1239  virtual bool has_pieces(const PseudoJet & /*jet*/) const FJCORE_OVERRIDE {return true;}
1240  virtual std::vector<PseudoJet> pieces(const PseudoJet &jet) const FJCORE_OVERRIDE;
1241 protected:
1242  std::vector<PseudoJet> _pieces;
1244 };
1245 template<typename T> PseudoJet join(const std::vector<PseudoJet> & pieces){
1246  PseudoJet result(0.0,0.0,0.0,0.0);
1247  for (unsigned int i=0; i<pieces.size(); i++){
1248  const PseudoJet it = pieces[i];
1249  result += it;
1250  }
1251  T *cj_struct = new T(pieces);
1253  return result;
1254 }
1255 template<typename T> PseudoJet join(const PseudoJet & j1){
1256  return join<T>(std::vector<PseudoJet>(1,j1));
1257 }
1258 template<typename T> PseudoJet join(const PseudoJet & j1, const PseudoJet & j2){
1259  std::vector<PseudoJet> pieces;
1260  pieces.push_back(j1);
1261  pieces.push_back(j2);
1262  return join<T>(pieces);
1263 }
1264 template<typename T> PseudoJet join(const PseudoJet & j1, const PseudoJet & j2,
1265  const PseudoJet & j3){
1266  std::vector<PseudoJet> pieces;
1267  pieces.push_back(j1);
1268  pieces.push_back(j2);
1269  pieces.push_back(j3);
1270  return join<T>(pieces);
1271 }
1272 template<typename T> PseudoJet join(const PseudoJet & j1, const PseudoJet & j2,
1273  const PseudoJet & j3, const PseudoJet & j4){
1274  std::vector<PseudoJet> pieces;
1275  pieces.push_back(j1);
1276  pieces.push_back(j2);
1277  pieces.push_back(j3);
1278  pieces.push_back(j4);
1279  return join<T>(pieces);
1280 }
1281 template<typename T> PseudoJet join(const std::vector<PseudoJet> & pieces,
1282  const JetDefinition::Recombiner & recombiner){
1283  PseudoJet result;
1284  if (pieces.size()>0){
1285  result = pieces[0];
1286  for (unsigned int i=1; i<pieces.size(); i++){
1287  recombiner.plus_equal(result, pieces[i]);
1288  }
1289  }
1290  T *cj_struct = new T(pieces, &recombiner);
1292  return result;
1293 }
1294 template<typename T> PseudoJet join(const PseudoJet & j1,
1295  const JetDefinition::Recombiner & recombiner){
1296  return join<T>(std::vector<PseudoJet>(1,j1), recombiner);
1297 }
1298 template<typename T> PseudoJet join(const PseudoJet & j1, const PseudoJet & j2,
1299  const JetDefinition::Recombiner & recombiner){
1300  std::vector<PseudoJet> pieces;
1301  pieces.reserve(2);
1302  pieces.push_back(j1);
1303  pieces.push_back(j2);
1304  return join<T>(pieces, recombiner);
1305 }
1306 template<typename T> PseudoJet join(const PseudoJet & j1, const PseudoJet & j2,
1307  const PseudoJet & j3,
1308  const JetDefinition::Recombiner & recombiner){
1309  std::vector<PseudoJet> pieces;
1310  pieces.reserve(3);
1311  pieces.push_back(j1);
1312  pieces.push_back(j2);
1313  pieces.push_back(j3);
1314  return join<T>(pieces, recombiner);
1315 }
1316 template<typename T> PseudoJet join(const PseudoJet & j1, const PseudoJet & j2,
1317  const PseudoJet & j3, const PseudoJet & j4,
1318  const JetDefinition::Recombiner & recombiner){
1319  std::vector<PseudoJet> pieces;
1320  pieces.reserve(4);
1321  pieces.push_back(j1);
1322  pieces.push_back(j2);
1323  pieces.push_back(j3);
1324  pieces.push_back(j4);
1325  return join<T>(pieces, recombiner);
1326 }
1327 FJCORE_END_NAMESPACE // defined in fastjet/internal/base.hh
1328 #endif // __FJCORE_MERGEDJET_STRUCTURE_HH__
1329 #ifndef __FJCORE_CLUSTER_SEQUENCE_STRUCTURE_HH__
1330 #define __FJCORE_CLUSTER_SEQUENCE_STRUCTURE_HH__
1331 #include <vector>
1332 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
1334 public:
1337  set_associated_cs(cs);
1338  };
1339  virtual ~ClusterSequenceStructure();
1340  virtual std::string description() const FJCORE_OVERRIDE{
1341  return "PseudoJet with an associated ClusterSequence";
1342  }
1343  virtual bool has_associated_cluster_sequence() const FJCORE_OVERRIDE{ return true;}
1345  virtual bool has_valid_cluster_sequence() const FJCORE_OVERRIDE;
1346  virtual const ClusterSequence * validated_cs() const FJCORE_OVERRIDE;
1347  virtual void set_associated_cs(const ClusterSequence * new_cs){
1348  _associated_cs = new_cs;
1349  }
1350  virtual bool has_partner(const PseudoJet &reference, PseudoJet &partner) const FJCORE_OVERRIDE;
1351  virtual bool has_child(const PseudoJet &reference, PseudoJet &child) const FJCORE_OVERRIDE;
1352  virtual bool has_parents(const PseudoJet &reference, PseudoJet &parent1, PseudoJet &parent2) const FJCORE_OVERRIDE;
1353  virtual bool object_in_jet(const PseudoJet &reference, const PseudoJet &jet) const FJCORE_OVERRIDE;
1354  virtual bool has_constituents() const FJCORE_OVERRIDE;
1355  virtual std::vector<PseudoJet> constituents(const PseudoJet &reference) const FJCORE_OVERRIDE;
1356  virtual bool has_exclusive_subjets() const FJCORE_OVERRIDE;
1357  virtual std::vector<PseudoJet> exclusive_subjets(const PseudoJet &reference, const double & dcut) const FJCORE_OVERRIDE;
1358  virtual int n_exclusive_subjets(const PseudoJet &reference, const double & dcut) const FJCORE_OVERRIDE;
1359  virtual std::vector<PseudoJet> exclusive_subjets_up_to (const PseudoJet &reference, int nsub) const FJCORE_OVERRIDE;
1360  virtual double exclusive_subdmerge(const PseudoJet &reference, int nsub) const FJCORE_OVERRIDE;
1361  virtual double exclusive_subdmerge_max(const PseudoJet &reference, int nsub) const FJCORE_OVERRIDE;
1362  virtual bool has_pieces(const PseudoJet &reference) const FJCORE_OVERRIDE;
1363  virtual std::vector<PseudoJet> pieces(const PseudoJet &reference) const FJCORE_OVERRIDE;
1364 protected:
1366 };
1368 #endif // __FJCORE_CLUSTER_SEQUENCE_STRUCTURE_HH__
1369 #ifndef __FJCORE_CLUSTERSEQUENCE_HH__
1370 #define __FJCORE_CLUSTERSEQUENCE_HH__
1371 #include<vector>
1372 #include<map>
1373 #include<memory>
1374 #include<cassert>
1375 #include<iostream>
1376 #include<string>
1377 #include<set>
1378 #include<cmath> // needed to get double std::abs(double)
1379 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
1383  public:
1384  ClusterSequence () : _deletes_self_when_unused(false) {}
1385  template<class L> ClusterSequence (
1386  const std::vector<L> & pseudojets,
1387  const JetDefinition & jet_def,
1388  const bool & writeout_combinations = false);
1389  ClusterSequence (const ClusterSequence & cs) : _deletes_self_when_unused(false) {
1390  transfer_from_sequence(cs);
1391  }
1392  ClusterSequence & operator=(const ClusterSequence & cs);
1393  virtual ~ClusterSequence (); //{}
1394  std::vector<PseudoJet> inclusive_jets (const double ptmin = 0.0) const;
1395  int n_exclusive_jets (const double dcut) const;
1396  std::vector<PseudoJet> exclusive_jets (const double dcut) const;
1397  std::vector<PseudoJet> exclusive_jets (const int njets) const;
1398  std::vector<PseudoJet> exclusive_jets_up_to (const int njets) const;
1399  double exclusive_dmerge (const int njets) const;
1400  double exclusive_dmerge_max (const int njets) const;
1401  double exclusive_ymerge (int njets) const {return exclusive_dmerge(njets) / Q2();}
1402  double exclusive_ymerge_max (int njets) const {return exclusive_dmerge_max(njets)/Q2();}
1403  int n_exclusive_jets_ycut (double ycut) const {return n_exclusive_jets(ycut*Q2());}
1404  std::vector<PseudoJet> exclusive_jets_ycut (double ycut) const {
1405  int njets = n_exclusive_jets_ycut(ycut);
1406  return exclusive_jets(njets);
1407  }
1408  std::vector<PseudoJet> exclusive_subjets (const PseudoJet & jet,
1409  const double dcut) const;
1410  int n_exclusive_subjets(const PseudoJet & jet,
1411  const double dcut) const;
1412  std::vector<PseudoJet> exclusive_subjets (const PseudoJet & jet,
1413  int nsub) const;
1414  std::vector<PseudoJet> exclusive_subjets_up_to (const PseudoJet & jet,
1415  int nsub) const;
1416  double exclusive_subdmerge(const PseudoJet & jet, int nsub) const;
1417  double exclusive_subdmerge_max(const PseudoJet & jet, int nsub) const;
1418  double Q() const {return _Qtot;}
1419  double Q2() const {return _Qtot*_Qtot;}
1420  bool object_in_jet(const PseudoJet & object, const PseudoJet & jet) const;
1421  bool has_parents(const PseudoJet & jet, PseudoJet & parent1,
1422  PseudoJet & parent2) const;
1423  bool has_child(const PseudoJet & jet, PseudoJet & child) const;
1424  bool has_child(const PseudoJet & jet, const PseudoJet * & childp) const;
1425  bool has_partner(const PseudoJet & jet, PseudoJet & partner) const;
1426  std::vector<PseudoJet> constituents (const PseudoJet & jet) const;
1427  void print_jets_for_root(const std::vector<PseudoJet> & jets,
1428  std::ostream & ostr = std::cout) const;
1429  void print_jets_for_root(const std::vector<PseudoJet> & jets,
1430  const std::string & filename,
1431  const std::string & comment = "") const;
1432  void add_constituents (const PseudoJet & jet,
1433  std::vector<PseudoJet> & subjet_vector) const;
1434  inline Strategy strategy_used () const {return _strategy;}
1435  std::string strategy_string () const {return strategy_string(_strategy);}
1436  std::string strategy_string (Strategy strategy_in) const;
1437  const JetDefinition & jet_def() const {return _jet_def;}
1438  void delete_self_when_unused();
1439  bool will_delete_self_when_unused() const {return _deletes_self_when_unused;}
1440  void signal_imminent_self_deletion() const;
1441  double jet_scale_for_algorithm(const PseudoJet & jet) const;
1442  void plugin_record_ij_recombination(int jet_i, int jet_j, double dij,
1443  int & newjet_k) {
1444  assert(plugin_activated());
1445  _do_ij_recombination_step(jet_i, jet_j, dij, newjet_k);
1446  }
1447  void plugin_record_ij_recombination(int jet_i, int jet_j, double dij,
1448  const PseudoJet & newjet,
1449  int & newjet_k);
1450  void plugin_record_iB_recombination(int jet_i, double diB) {
1451  assert(plugin_activated());
1452  _do_iB_recombination_step(jet_i, diB);
1453  }
1454  class Extras {
1455  public:
1456  virtual ~Extras() {}
1457  virtual std::string description() const {return "This is a dummy extras class that contains no extra information! Derive from it if you want to use it to provide extra information from a plugin jet finder";}
1458  };
1459  inline void plugin_associate_extras(Extras * extras_in) {
1460  _extras.reset(extras_in);
1461  }
1462 #ifndef SWIG
1463 #ifdef FJCORE_HAVE_AUTO_PTR_INTERFACE
1464  FJCORE_DEPRECATED_MSG("Please use ClusterSequence::plugin_associate_extras(Extras * extras_in)) instead")
1465  inline void plugin_associate_extras(std::auto_ptr<Extras> extras_in){
1466  _extras.reset(extras_in.release());
1467  }
1468 #endif
1469 #endif //SWIG
1470  inline bool plugin_activated() const {return _plugin_activated;}
1471  const Extras * extras() const {return _extras.get();}
1472  template<class GBJ> void plugin_simple_N2_cluster () {
1473  assert(plugin_activated());
1474  _simple_N2_cluster<GBJ>();
1475  }
1476 public:
1478  int parent1;
1479  int parent2;
1480  int child;
1481  int jetp_index;
1485  double dij;
1486  double max_dij_so_far;
1488  };
1490  enum JetType {Invalid=-3, InexistentParent = -2, BeamJet = -1};
1491  const std::vector<PseudoJet> & jets() const;
1492  const std::vector<history_element> & history() const;
1493  unsigned int n_particles() const;
1494  std::vector<int> particle_jet_indices(const std::vector<PseudoJet> &) const;
1495  std::vector<int> unique_history_order() const;
1496  std::vector<PseudoJet> unclustered_particles() const;
1497  std::vector<PseudoJet> childless_pseudojets() const;
1498  bool contains(const PseudoJet & object) const;
1499  void transfer_from_sequence(const ClusterSequence & from_seq,
1500  const FunctionOfPseudoJet<PseudoJet> * action_on_jets = 0);
1502  return _structure_shared_ptr;
1503  }
1505  static void print_banner();
1506  static void set_fastjet_banner_stream(std::ostream * ostr) {_fastjet_banner_ostr = ostr;}
1507  static std::ostream * fastjet_banner_stream() {return _fastjet_banner_ostr;}
1508 private:
1509  static std::ostream * _fastjet_banner_ostr;
1510 protected:
1512  template<class L> void _transfer_input_jets(
1513  const std::vector<L> & pseudojets);
1514  void _initialise_and_run (const JetDefinition & jet_def,
1515  const bool & writeout_combinations);
1516  void _initialise_and_run_no_decant();
1517  void _decant_options(const JetDefinition & jet_def,
1518  const bool & writeout_combinations);
1519  void _decant_options_partial();
1520  void _fill_initial_history();
1521  void _do_ij_recombination_step(const int jet_i, const int jet_j,
1522  const double dij, int & newjet_k);
1523  void _do_iB_recombination_step(const int jet_i, const double diB);
1524  void _set_structure_shared_ptr(PseudoJet & j);
1525  void _update_structure_use_count();
1526  Strategy _best_strategy() const;
1527  class _Parabola {
1528  public:
1529  _Parabola(double a, double b, double c) : _a(a), _b(b), _c(c) {}
1530  inline double operator()(const double R) const {return _c*(_a*R*R + _b*R + 1);}
1531  private:
1532  double _a, _b, _c;
1533  };
1534  class _Line {
1535  public:
1536  _Line(double a, double b) : _a(a), _b(b) {}
1537  inline double operator()(const double R) const {return _a*R + _b;}
1538  private:
1539  double _a, _b;
1540  };
1541  std::vector<PseudoJet> _jets;
1542  std::vector<history_element> _history;
1543  void get_subhist_set(std::set<const history_element*> & subhist,
1544  const PseudoJet & jet, double dcut, int maxjet) const;
1547  double _Rparam, _R2, _invR2;
1548  double _Qtot;
1551  SharedPtr<PseudoJetStructureBase> _structure_shared_ptr; //< will actually be of type ClusterSequenceStructure
1552  int _structure_use_count_after_construction; //< info of use when CS handles its own memory
1554  private:
1556  SharedPtr<Extras> _extras; // things the plugin might want to add
1557  void _really_dumb_cluster ();
1558  void _delaunay_cluster ();
1559  template<class BJ> void _simple_N2_cluster ();
1560  void _tiled_N2_cluster ();
1561  void _faster_tiled_N2_cluster ();
1562  void _minheap_faster_tiled_N2_cluster();
1563  void _CP2DChan_cluster();
1564  void _CP2DChan_cluster_2pi2R ();
1565  void _CP2DChan_cluster_2piMultD ();
1566  void _CP2DChan_limited_cluster(double D);
1567  void _do_Cambridge_inclusive_jets();
1569  void _add_step_to_history( //const int step_number,
1570  const int parent1,
1571  const int parent2, const int jetp_index,
1572  const double dij);
1573  void _extract_tree_children(int pos, std::valarray<bool> &,
1574  const std::valarray<int> &, std::vector<int> &) const;
1575  void _extract_tree_parents (int pos, std::valarray<bool> &,
1576  const std::valarray<int> &, std::vector<int> &) const;
1577  typedef std::pair<int,int> TwoVertices;
1578  typedef std::pair<double,TwoVertices> DijEntry;
1579  typedef std::multimap<double,TwoVertices> DistMap;
1580  void _add_ktdistance_to_map(const int ii,
1581  DistMap & DijMap,
1582  const DynamicNearestNeighbours * DNN);
1583  static bool _first_time;
1586  struct BriefJet {
1587  double eta, phi, kt2, NN_dist;
1590  };
1591  class TiledJet {
1592  public:
1593  double eta, phi, kt2, NN_dist;
1594  TiledJet * NN, *previous, * next;
1595  int _jets_index, tile_index, diJ_posn;
1596  inline void label_minheap_update_needed() {diJ_posn = 1;}
1597  inline void label_minheap_update_done() {diJ_posn = 0;}
1598  inline bool minheap_update_needed() const {return diJ_posn==1;}
1599  };
1600  template <class J> void _bj_set_jetinfo( J * const jet,
1601  const int _jets_index) const;
1602  void _bj_remove_from_tiles( TiledJet * const jet) const;
1603  template <class J> double _bj_dist(const J * const jeta,
1604  const J * const jetb) const;
1605  template <class J> double _bj_diJ(const J * const jeta) const;
1606  template <class J> inline J * _bj_of_hindex(
1607  const int hist_index,
1608  J * const head, J * const tail)
1609  const {
1610  J * res;
1611  for(res = head; res<tail; res++) {
1612  if (_jets[res->_jets_index].cluster_hist_index() == hist_index) {break;}
1613  }
1614  return res;
1615  }
1616  template <class J> void _bj_set_NN_nocross(J * const jeta,
1617  J * const head, const J * const tail) const;
1618  template <class J> void _bj_set_NN_crosscheck(J * const jeta,
1619  J * const head, const J * const tail) const;
1620  static const int n_tile_neighbours = 9;
1621  struct Tile {
1622  Tile * begin_tiles[n_tile_neighbours];
1627  bool tagged;
1628  };
1629  std::vector<Tile> _tiles;
1630  double _tiles_eta_min, _tiles_eta_max;
1631  double _tile_size_eta, _tile_size_phi;
1632  int _n_tiles_phi,_tiles_ieta_min,_tiles_ieta_max;
1633  inline int _tile_index (int ieta, int iphi) const {
1634  return (ieta-_tiles_ieta_min)*_n_tiles_phi
1635  + (iphi+_n_tiles_phi) % _n_tiles_phi;
1636  }
1637  int _tile_index(const double eta, const double phi) const;
1638  void _tj_set_jetinfo ( TiledJet * const jet, const int _jets_index);
1639  void _bj_remove_from_tiles(TiledJet * const jet);
1640  void _initialise_tiles();
1641  void _print_tiles(TiledJet * briefjets ) const;
1642  void _add_neighbours_to_tile_union(const int tile_index,
1643  std::vector<int> & tile_union, int & n_near_tiles) const;
1644  void _add_untagged_neighbours_to_tile_union(const int tile_index,
1645  std::vector<int> & tile_union, int & n_near_tiles);
1646  struct EEBriefJet {
1647  double NN_dist; // obligatorily present
1648  double kt2; // obligatorily present == E^2 in general
1649  EEBriefJet * NN; // must be present too
1650  int _jets_index; // must also be present!
1651  double nx, ny, nz; // our internal storage for fast distance calcs
1652  };
1653  void _simple_N2_cluster_BriefJet();
1654  void _simple_N2_cluster_EEBriefJet();
1655 };
1657  const std::vector<L> & pseudojets) {
1658  _jets.reserve(pseudojets.size()*2);
1659  for (unsigned int i = 0; i < pseudojets.size(); i++) {
1660  _jets.push_back(pseudojets[i]);}
1661 }
1663  const std::vector<L> & pseudojets,
1664  const JetDefinition & jet_def_in,
1665  const bool & writeout_combinations) :
1666  _jet_def(jet_def_in), _writeout_combinations(writeout_combinations),
1667  _structure_shared_ptr(new ClusterSequenceStructure(this))
1668 {
1669  _transfer_input_jets(pseudojets);
1672 }
1673 inline const std::vector<PseudoJet> & ClusterSequence::jets () const {
1674  return _jets;
1675 }
1676 inline const std::vector<ClusterSequence::history_element> & ClusterSequence::history () const {
1677  return _history;
1678 }
1679 inline unsigned int ClusterSequence::n_particles() const {return _initial_n;}
1680 #ifndef __CINT__
1681 template<class L>
1682 std::vector<PseudoJet> JetDefinition::operator()(const std::vector<L> & particles) const {
1683  ClusterSequence * cs = new ClusterSequence(particles, *this);
1684  std::vector<PseudoJet> jets;
1685  if (is_spherical()) {
1686  jets = sorted_by_E(cs->inclusive_jets());
1687  } else {
1688  jets = sorted_by_pt(cs->inclusive_jets());
1689  }
1690  if (jets.size() != 0) {
1692  } else {
1693  delete cs;
1694  }
1695  return jets;
1696 }
1697 #endif // __CINT__
1698 template <class J> inline void ClusterSequence::_bj_set_jetinfo(
1699  J * const jetA, const int _jets_index) const {
1700  jetA->eta = _jets[_jets_index].rap();
1701  jetA->phi = _jets[_jets_index].phi_02pi();
1702  jetA->kt2 = jet_scale_for_algorithm(_jets[_jets_index]);
1703  jetA->_jets_index = _jets_index;
1704  jetA->NN_dist = _R2;
1705  jetA->NN = NULL;
1706 }
1707 template <class J> inline double ClusterSequence::_bj_dist(
1708  const J * const jetA, const J * const jetB) const {
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;}
1713 #else
1714  double dphi = pi-std::abs(pi-std::abs(jetA->phi - jetB->phi));
1715  double deta = (jetA->eta - jetB->eta);
1716 #endif
1717  return dphi*dphi + deta*deta;
1718 }
1719 template <class J> inline double ClusterSequence::_bj_diJ(const J * const jet) const {
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;
1723 }
1724 template <class J> inline void ClusterSequence::_bj_set_NN_nocross(
1725  J * const jet, J * const head, const J * const tail) const {
1726  double NN_dist = _R2;
1727  J * NN = NULL;
1728  if (head < jet) {
1729  for (J * jetB = head; jetB != jet; jetB++) {
1730  double dist = _bj_dist(jet,jetB);
1731  if (dist < NN_dist) {
1732  NN_dist = dist;
1733  NN = jetB;
1734  }
1735  }
1736  }
1737  if (tail > jet) {
1738  for (J * jetB = jet+1; jetB != tail; jetB++) {
1739  double dist = _bj_dist(jet,jetB);
1740  if (dist < NN_dist) {
1741  NN_dist = dist;
1742  NN = jetB;
1743  }
1744  }
1745  }
1746  jet->NN = NN;
1747  jet->NN_dist = NN_dist;
1748 }
1749 template <class J> inline void ClusterSequence::_bj_set_NN_crosscheck(J * const jet,
1750  J * const head, const J * const tail) const {
1751  double NN_dist = _R2;
1752  J * NN = NULL;
1753  for (J * jetB = head; jetB != tail; jetB++) {
1754  double dist = _bj_dist(jet,jetB);
1755  if (dist < NN_dist) {
1756  NN_dist = dist;
1757  NN = jetB;
1758  }
1759  if (dist < jetB->NN_dist) {
1760  jetB->NN_dist = dist;
1761  jetB->NN = jet;
1762  }
1763  }
1764  jet->NN = NN;
1765  jet->NN_dist = NN_dist;
1766 }
1768 #endif // __FJCORE_CLUSTERSEQUENCE_HH__
1769 #ifndef __FJCORE_NNBASE_HH__
1770 #define __FJCORE_NNBASE_HH__
1771 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
1772 class _NoInfo {};
1773 template<class I> class NNInfo {
1774 public:
1775  NNInfo() : _info(NULL) {}
1776  NNInfo(I * info) : _info(info) {}
1777  template<class BJ> void init_jet(BJ * briefjet, const fjcore::PseudoJet & jet, int index) { briefjet->init(jet, index, _info);}
1778 private:
1779  I * _info;
1780 };
1781 template<> class NNInfo<_NoInfo> {
1782 public:
1783  NNInfo() {}
1785  template<class BJ> void init_jet(BJ * briefjet, const fjcore::PseudoJet & jet, int index) { briefjet->init(jet, index);}
1786 };
1787 template<class I = _NoInfo> class NNBase : public NNInfo<I> {
1788 public:
1789  NNBase() {}
1790  NNBase(I * info) : NNInfo<I>(info) {}
1791  virtual void start(const std::vector<PseudoJet> & jets) = 0;
1792  virtual double dij_min(int & iA, int & iB) = 0;
1793  virtual void remove_jet(int iA) = 0;
1794  virtual void merge_jets(int iA, int iB, const PseudoJet & jet, int jet_index) = 0;
1795  virtual ~NNBase() {};
1796 };
1797 FJCORE_END_NAMESPACE // defined in fastjet/internal/base.hh
1798 #endif // __FJCORE_NNBASE_HH__
1799 #ifndef __FJCORE_NNH_HH__
1800 #define __FJCORE_NNH_HH__
1801 FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
1802 template<class BJ, class I = _NoInfo> class NNH : public NNBase<I> {
1803 public:
1804  NNH(const std::vector<PseudoJet> & jets) : NNBase<I>() {start(jets);}
1805  NNH(const std::vector<PseudoJet> & jets, I * info) : NNBase<I>(info) {start(jets);}
1806  void start(const std::vector<PseudoJet> & jets);
1807  double dij_min(int & iA, int & iB);
1808  void remove_jet(int iA);
1809  void merge_jets(int iA, int iB, const PseudoJet & jet, int jet_index);
1810  ~NNH() {
1811  delete[] briefjets;
1812  }
1813 private:
1814  class NNBJ; // forward declaration
1815  void set_NN_crosscheck(NNBJ * jet, NNBJ * begin, NNBJ * end);
1816  void set_NN_nocross (NNBJ * jet, NNBJ * begin, NNBJ * end);
1819  int n;
1820  std::vector<NNBJ *> where_is;
1821  class NNBJ : public BJ {
1822  public:
1823  void init(const PseudoJet & jet, int index_in) {
1824  BJ::init(jet);
1825  other_init(index_in);
1826  }
1827  void init(const PseudoJet & jet, int index_in, I * info) {
1828  BJ::init(jet, info);
1829  other_init(index_in);
1830  }
1831  void other_init(int index_in) {
1832  _index = index_in;
1833  NN_dist = BJ::beam_distance();
1834  NN = NULL;
1835  }
1836  int index() const {return _index;}
1837  double NN_dist;
1839  private:
1840  int _index;
1841  };
1842 };
1843 template<class BJ, class I> void NNH<BJ,I>::start(const std::vector<PseudoJet> & jets) {
1844  n = jets.size();
1845  briefjets = new NNBJ[n];
1846  where_is.resize(2*n);
1847  NNBJ * jetA = briefjets;
1848  for (int i = 0; i< n; i++) {
1849  this->init_jet(jetA, jets[i], i);
1850  where_is[i] = jetA;
1851  jetA++; // move on to next entry of briefjets
1852  }
1853  tail = jetA; // a semaphore for the end of briefjets
1854  head = briefjets; // a nicer way of naming start
1855  for (jetA = head + 1; jetA != tail; jetA++) {
1856  set_NN_crosscheck(jetA, head, jetA);
1857  }
1858 }
1859 template<class BJ, class I> double NNH<BJ,I>::dij_min(int & iA, int & iB) {
1860  double diJ_min = briefjets[0].NN_dist;
1861  int diJ_min_jet = 0;
1862  for (int i = 1; i < n; i++) {
1863  if (briefjets[i].NN_dist < diJ_min) {
1864  diJ_min_jet = i;
1865  diJ_min = briefjets[i].NN_dist;
1866  }
1867  }
1868  NNBJ * jetA = & briefjets[diJ_min_jet];
1869  iA = jetA->index();
1870  iB = jetA->NN ? jetA->NN->index() : -1;
1871  return diJ_min;
1872 }
1873 template<class BJ, class I> void NNH<BJ,I>::remove_jet(int iA) {
1874  NNBJ * jetA = where_is[iA];
1875  tail--; n--;
1876  *jetA = *tail;
1877  where_is[jetA->index()] = jetA;
1878  for (NNBJ * jetI = head; jetI != tail; jetI++) {
1879  if (jetI->NN == jetA) set_NN_nocross(jetI, head, tail);
1880  if (jetI->NN == tail) {jetI->NN = jetA;}
1881  }
1882 }
1883 template<class BJ, class I> void NNH<BJ,I>::merge_jets(int iA, int iB,
1884  const PseudoJet & jet, int index) {
1885  NNBJ * jetA = where_is[iA];
1886  NNBJ * jetB = where_is[iB];
1887  if (jetA < jetB) std::swap(jetA,jetB);
1888  this->init_jet(jetB, jet, index);
1889  if (index >= int(where_is.size())) where_is.resize(2*index);
1890  where_is[jetB->index()] = jetB;
1891  tail--; n--;
1892  *jetA = *tail;
1893  where_is[jetA->index()] = jetA;
1894  for (NNBJ * jetI = head; jetI != tail; jetI++) {
1895  if (jetI->NN == jetA || jetI->NN == jetB) {
1896  set_NN_nocross(jetI, head, tail);
1897  }
1898  double dist = jetI->distance(jetB);
1899  if (dist < jetI->NN_dist) {
1900  if (jetI != jetB) {
1901  jetI->NN_dist = dist;
1902  jetI->NN = jetB;
1903  }
1904  }
1905  if (dist < jetB->NN_dist) {
1906  if (jetI != jetB) {
1907  jetB->NN_dist = dist;
1908  jetB->NN = jetI;
1909  }
1910  }
1911  if (jetI->NN == tail) {jetI->NN = jetA;}
1912  }
1913 }
1914 template <class BJ, class I> void NNH<BJ,I>::set_NN_crosscheck(NNBJ * jet,
1915  NNBJ * begin, NNBJ * end) {
1916  double NN_dist = jet->beam_distance();
1917  NNBJ * NN = NULL;
1918  for (NNBJ * jetB = begin; jetB != end; jetB++) {
1919  double dist = jet->distance(jetB);
1920  if (dist < NN_dist) {
1921  NN_dist = dist;
1922  NN = jetB;
1923  }
1924  if (dist < jetB->NN_dist) {
1925  jetB->NN_dist = dist;
1926  jetB->NN = jet;
1927  }
1928  }
1929  jet->NN = NN;
1930  jet->NN_dist = NN_dist;
1931 }
1932 template <class BJ, class I> void NNH<BJ,I>::set_NN_nocross(
1933  NNBJ * jet, NNBJ * begin, NNBJ * end) {
1934  double NN_dist = jet->beam_distance();
1935  NNBJ * NN = NULL;
1936  if (begin < jet) {
1937  for (NNBJ * jetB = begin; jetB != jet; jetB++) {
1938  double dist = jet->distance(jetB);
1939  if (dist < NN_dist) {
1940  NN_dist = dist;
1941  NN = jetB;
1942  }
1943  }
1944  }
1945  if (end > jet) {
1946  for (NNBJ * jetB = jet+1; jetB != end; jetB++) {
1947  double dist = jet->distance (jetB);
1948  if (dist < NN_dist) {
1949  NN_dist = dist;
1950  NN = jetB;
1951  }
1952  }
1953  }
1954  jet->NN = NN;
1955  jet->NN_dist = NN_dist;
1956 }
1957 FJCORE_END_NAMESPACE // defined in fastjet/internal/base.hh
1958 #endif // __FJCORE_NNH_HH__
1959 #endif
1960 
IsBaseAndDerived::Host
Definition: fjcore.hh:231
genkt_algorithm
@ genkt_algorithm
Definition: fjcore.hh:1041
NNH::tail
NNBJ * tail
Definition: fjcore.hh:1818
SelectorPtMin
Selector SelectorPtMin(double ptmin)
select objects with pt >= ptmin
Definition: fjcore.cc:4520
PseudoJet::cluster_hist_index
int cluster_hist_index() const
Definition: fjcore.hh:704
ClusterSequence::plugin_associate_extras
void plugin_associate_extras(Extras *extras_in)
Definition: fjcore.hh:1459
LimitedWarning::warn
void warn(const std::string &warning, std::ostream *ostr)
Definition: fjcore.hh:435
PseudoJetStructureBase::has_associated_cluster_sequence
virtual bool has_associated_cluster_sequence() const
Definition: fjcore.hh:501
PseudoJet::_set_rap_phi
void _set_rap_phi() const
Definition: fjcore.cc:3759
JetDefinition::Recombiner
Definition: fjcore.hh:1166
LimitedWarning
Definition: fjcore.hh:428
ClusterSequence::TiledJet::label_minheap_update_needed
void label_minheap_update_needed()
Definition: fjcore.hh:1596
SharedPtr::__SharedCountingPtr::_count
long _count
the number of references
Definition: fjcore.hh:386
PseudoJet::constituents
virtual std::vector< PseudoJet > constituents() const
Definition: fjcore.cc:4019
NNH::remove_jet
void remove_jet(int iA)
Definition: fjcore.hh:1873
sorted_by_pz
std::vector< PseudoJet > sorted_by_pz(const std::vector< PseudoJet > &jets)
Definition: fjcore.cc:4078
sorted_by_rapidity
std::vector< PseudoJet > sorted_by_rapidity(const std::vector< PseudoJet > &jets)
Definition: fjcore.cc:4068
SelectorWorker::description
virtual std::string description() const
Definition: fjcore.hh:877
NlnNCam2pi2R
@ NlnNCam2pi2R
Definition: fjcore.hh:1032
PseudoJet::exclusive_subdmerge
double exclusive_subdmerge(int nsub) const
Definition: fjcore.cc:4044
PseudoJet::operator[]
double operator[](int i) const
Definition: fjcore.hh:585
JetDefinition::operator()
std::vector< PseudoJet > operator()(const std::vector< L > &particles) const
Definition: fjcore.hh:1682
TiledJet
Definition: fjcore.cc:829
ClusterSequence::set_fastjet_banner_stream
static void set_fastjet_banner_stream(std::ostream *ostr)
Definition: fjcore.hh:1506
JetDefinition::_default_recombiner
DefaultRecombiner _default_recombiner
Definition: fjcore.hh:1210
operator!=
bool operator!=(SharedPtr< T > const &t, SharedPtr< U > const &u)
Definition: fjcore.hh:404
ClusterSequence::Tile::RH_tiles
Tile ** RH_tiles
Definition: fjcore.hh:1624
Selector
Definition: fjcore.hh:896
JetDefinition::DefaultRecombiner::scheme
RecombinationScheme scheme() const
Definition: fjcore.hh:1187
SelectorIdentity
Selector SelectorIdentity()
Definition: fjcore.cc:4291
CompositeJetStructure::pieces
virtual std::vector< PseudoJet > pieces(const PseudoJet &jet) const FJCORE_OVERRIDE
Definition: fjcore.cc:3317
PseudoJet::PseudoJet
PseudoJet(bool)
Definition: fjcore.hh:542
JetDefinition::DefaultRecombiner::DefaultRecombiner
DefaultRecombiner(RecombinationScheme recomb_scheme=E_scheme)
Definition: fjcore.hh:1181
SharedPtr
Definition: fjcore.hh:294
MaxRap
FJCORE_BEGIN_NAMESPACE const double MaxRap
Definition: fjcore.hh:532
ClusterSequence::_tiles_eta_min
double _tiles_eta_min
Definition: fjcore.hh:1630
ClusterSequence::BriefJet::phi
double phi
Definition: fjcore.hh:1587
plugin_strategy
@ plugin_strategy
Definition: fjcore.hh:1035
JetDefinition::Plugin::description
virtual std::string description() const =0
JetDefinition::extra_param
double extra_param() const
Definition: fjcore.hh:1150
jmarExample.pt
pt
Definition: jmarExample.py:19
LimitedWarning::warn
void warn(const char *warning)
Definition: fjcore.hh:432
JetDefinition::Plugin::set_ghost_separation_scale
virtual void set_ghost_separation_scale(double scale) const
Definition: fjcore.cc:3606
ln2
const double ln2
Definition: fjcore.hh:197
objects_sorted_by_values
std::vector< T > objects_sorted_by_values(const std::vector< T > &objects, const std::vector< double > &values)
Definition: fjcore.hh:755
LimitedWarning::set_default_max_warn
static void set_default_max_warn(int max_warn)
Definition: fjcore.hh:439
Selector::Selector
Selector(SelectorWorker *worker_in)
Definition: fjcore.hh:899
JetDefinition::delete_recombiner_when_unused
void delete_recombiner_when_unused()
Definition: fjcore.cc:3476
PseudoJet::Et2
double Et2() const
Definition: fjcore.hh:579
PseudoJet::InexistentUserInfo
Definition: fjcore.hh:637
SharedPtr::__SharedCountingPtr::operator--
long operator--(int)
Definition: fjcore.hh:380
NNH::start
void start(const std::vector< PseudoJet > &jets)
Definition: fjcore.hh:1843
PseudoJet::set_cluster_hist_index
void set_cluster_hist_index(const int index)
Definition: fjcore.hh:705
PseudoJet::has_user_info
bool has_user_info() const
Definition: fjcore.hh:649
NNInfo::init_jet
void init_jet(BJ *briefjet, const fjcore::PseudoJet &jet, int index)
Definition: fjcore.hh:1777
SelectorEtaRange
Selector SelectorEtaRange(double etamin, double etamax)
select objects with etamin <= eta <= etamax
Definition: fjcore.cc:4672
PseudoJet::structure_non_const_ptr
PseudoJetStructureBase * structure_non_const_ptr()
Definition: fjcore.cc:3990
Selector::set_reference
const Selector & set_reference(const PseudoJet &reference)
Definition: fjcore.hh:944
ClusterSequence::_decant_options_partial
void _decant_options_partial()
Definition: fjcore.cc:1587
ClusterSequence::_bj_set_NN_crosscheck
void _bj_set_NN_crosscheck(J *const jeta, J *const head, const J *const tail) const
Definition: fjcore.hh:1749
LimitedWarning::max_warn
int max_warn() const
Definition: fjcore.hh:442
PseudoJet::has_constituents
virtual bool has_constituents() const
Definition: fjcore.cc:4016
FunctionOfPseudoJet::description
virtual std::string description() const
Definition: fjcore.hh:849
PseudoJet::UserInfoBase::~UserInfoBase
virtual ~UserInfoBase()
Definition: fjcore.hh:635
ClusterSequenceStructure::exclusive_subdmerge
virtual double exclusive_subdmerge(const PseudoJet &reference, int nsub) const FJCORE_OVERRIDE
Definition: fjcore.cc:2724
Selector::applies_jet_by_jet
bool applies_jet_by_jet() const
Definition: fjcore.hh:916
NNBase::start
virtual void start(const std::vector< PseudoJet > &jets)=0
ee_kt_algorithm
@ ee_kt_algorithm
Definition: fjcore.hh:1044
PseudoJet::has_associated_cluster_sequence
bool has_associated_cluster_sequence() const
Definition: fjcore.cc:3968
Selector::InvalidArea
Definition: fjcore.hh:956
JetDefinition::JetDefinition
JetDefinition(JetAlgorithm jet_algorithm_in, RecombinationScheme recomb_scheme_in=E_scheme, Strategy strategy_in=Best)
Definition: fjcore.hh:1075
ClusterSequence::_simple_N2_cluster
void _simple_N2_cluster()
IndexedSortHelper::IndexedSortHelper
IndexedSortHelper(const std::vector< double > *reference_values)
Definition: fjcore.hh:771
JetDefinition::max_allowable_R
static const double max_allowable_R
Definition: fjcore.hh:1136
SharedPtr::_decrease_count
void _decrease_count()
Definition: fjcore.hh:392
SelectorCircle
Selector SelectorCircle(const double radius)
Definition: fjcore.cc:4808
PseudoJet::reset_momentum
void reset_momentum(double px, double py, double pz, double E)
Definition: fjcore.hh:803
SelectorEMin
Selector SelectorEMin(double Emin)
select objects with E >= Emin
Definition: fjcore.cc:4550
Selector::description
std::string description() const
Definition: fjcore.hh:926
operator/
PseudoJet operator/(const PseudoJet &, double)
Definition: fjcore.cc:3830
ClusterSequence::Tile::surrounding_tiles
Tile ** surrounding_tiles
Definition: fjcore.hh:1623
PseudoJetStructureBase::has_partner
virtual bool has_partner(const PseudoJet &reference, PseudoJet &partner) const
Definition: fjcore.cc:4127
ClusterSequence::_Parabola::_Parabola
_Parabola(double a, double b, double c)
Definition: fjcore.hh:1529
JetDefinition::JetDefinition
JetDefinition(JetAlgorithm jet_algorithm_in, double R_in, RecombinationScheme recomb_scheme_in=E_scheme, Strategy strategy_in=Best)
Definition: fjcore.hh:1069
CompositeJetStructure::~CompositeJetStructure
virtual ~CompositeJetStructure()
Definition: fjcore.hh:1233
NNH::NNBJ::NN
NNBJ * NN
Definition: fjcore.hh:1838
ClusterSequence::TiledJet::minheap_update_needed
bool minheap_update_needed() const
Definition: fjcore.hh:1598
PseudoJet::_px
double _px
Definition: fjcore.hh:714
ClusterSequence::_R2
double _R2
Definition: fjcore.hh:1547
FJCORE_BEGIN_NAMESPACE
#define FJCORE_BEGIN_NAMESPACE
Definition: fjcore.hh:180
theta
double theta(const PseudoJet &a, const PseudoJet &b)
Definition: fjcore.hh:744
zeta3
const double zeta3
Definition: fjcore.hh:195
ClusterSequence::Extras::~Extras
virtual ~Extras()
Definition: fjcore.hh:1456
JetDefinition::JetDefinition
JetDefinition(const Plugin *plugin_in)
Definition: fjcore.hh:1113
get_pointer
T * get_pointer(SharedPtr< T > const &t)
Definition: fjcore.hh:416
JetDefinition::recombiner
const Recombiner * recombiner() const
Definition: fjcore.hh:1157
pisq
const double pisq
Definition: fjcore.hh:193
PseudoJet::py
double py() const
Definition: fjcore.hh:547
Selector::nullify_non_selected
virtual void nullify_non_selected(std::vector< const PseudoJet * > &jets) const
Definition: fjcore.hh:920
eulergamma
const double eulergamma
Definition: fjcore.hh:196
__inheritance_helper::check_sig
static __no_type check_sig(B const volatile *, int)
operator+
PseudoJet operator+(const PseudoJet &, const PseudoJet &)
Definition: fjcore.cc:3809
PseudoJet::cos_theta
double cos_theta() const
Definition: fjcore.hh:580
PseudoJet::operator/=
PseudoJet & operator/=(double)
Definition: fjcore.cc:3842
SelectorWorker::is_geometric
virtual bool is_geometric() const
Definition: fjcore.hh:889
Error::Error
Error()
Definition: fjcore.hh:464
Selector::operator|=
Selector & operator|=(const Selector &b)
Definition: fjcore.cc:4945
PseudoJet::_user_index
int _user_index
Definition: fjcore.hh:717
ClusterSequence::EEBriefJet::NN
EEBriefJet * NN
Definition: fjcore.hh:1649
SelectorEMax
Selector SelectorEMax(double Emax)
select objects with E <= Emax
Definition: fjcore.cc:4553
PseudoJet::mperp2
double mperp2() const
Definition: fjcore.hh:572
ClusterSequence::history_element::parent1
int parent1
Definition: fjcore.hh:1478
ClusterSequenceStructure::ClusterSequenceStructure
ClusterSequenceStructure(const ClusterSequence *cs)
Definition: fjcore.hh:1336
PseudoJet::user_index
int user_index() const
Definition: fjcore.hh:630
PseudoJetStructureBase::validated_cs
virtual const ClusterSequence * validated_cs() const
Definition: fjcore.cc:4124
ClusterSequence::_fast_NsqrtN_cluster
void _fast_NsqrtN_cluster()
CompositeJetStructure::has_constituents
virtual bool has_constituents() const FJCORE_OVERRIDE
Definition: fjcore.cc:3302
PseudoJet::operator*=
PseudoJet & operator*=(double)
Definition: fjcore.cc:3833
__inheritance_helper
Definition: fjcore.hh:216
FJCORE_OVERRIDE
#define FJCORE_OVERRIDE
Definition: fjcore.hh:185
SharedPtr::reset
void reset(Y *ptr)
Definition: fjcore.hh:311
SharedPtr::operator*
T & operator*() const
Definition: fjcore.hh:335
ClusterSequenceStructure::has_associated_cluster_sequence
virtual bool has_associated_cluster_sequence() const FJCORE_OVERRIDE
Definition: fjcore.hh:1343
SharedPtr::operator=
SharedPtr & operator=(SharedPtr const &share)
Definition: fjcore.hh:322
PseudoJetStructureBase::has_parents
virtual bool has_parents(const PseudoJet &reference, PseudoJet &parent1, PseudoJet &parent2) const
Definition: fjcore.cc:4133
JetDefinition::JetDefinition
JetDefinition()
Definition: fjcore.hh:1110
pi
FJCORE_BEGIN_NAMESPACE const double pi
Definition: fjcore.hh:191
PseudoJet::_rap
double _rap
Definition: fjcore.hh:715
SharedPtr::unique
bool unique() const
Definition: fjcore.hh:346
Selector::sift
void sift(const std::vector< PseudoJet > &jets, std::vector< PseudoJet > &jets_that_pass, std::vector< PseudoJet > &jets_that_fail) const
Definition: fjcore.cc:4242
Error::_print_errors
static bool _print_errors
do we print anything?
Definition: fjcore.hh:476
PseudoJet::contains
virtual bool contains(const PseudoJet &constituent) const
Definition: fjcore.cc:4010
JetDefinition::JetDefinition
JetDefinition(JetAlgorithm jet_algorithm_in, double R_in, const Recombiner *recombiner_in, Strategy strategy_in=Best)
Definition: fjcore.hh:1089
LimitedWarning::summary
static std::string summary()
Definition: fjcore.cc:3677
NlnN4pi
@ NlnN4pi
Definition: fjcore.hh:1030
SharedPtr::__SharedCountingPtr::set_count
void set_count(const long &count)
Definition: fjcore.hh:381
ClusterSequence::BriefJet::NN
BriefJet * NN
Definition: fjcore.hh:1588
PseudoJet::has_valid_cluster_sequence
bool has_valid_cluster_sequence() const
Definition: fjcore.cc:3975
ClusterSequence::Extras::description
virtual std::string description() const
Definition: fjcore.hh:1457
integral_type
Definition: fjcore.hh:204
PseudoJet::cluster_sequence_history_index
int cluster_sequence_history_index() const
Definition: fjcore.hh:706
LimitedWarning::Summary
std::pair< std::string, unsigned int > Summary
Definition: fjcore.hh:449
Ntupliser_cfg.p
p
Definition: Ntupliser_cfg.py:174
operator||
Selector operator||(const Selector &s1, const Selector &s2)
Definition: fjcore.cc:4425
NNInfo< _NoInfo >::NNInfo
NNInfo(_NoInfo *)
Definition: fjcore.hh:1784
ClusterSequence::DijEntry
std::pair< double, TwoVertices > DijEntry
Definition: fjcore.hh:1578
NNBase
Definition: fjcore.hh:1787
ClusterSequence
Definition: fjcore.hh:1382
SharedPtr::__SharedCountingPtr::operator++
long operator++(int)
Definition: fjcore.hh:379
ClusterSequenceStructure::~ClusterSequenceStructure
virtual ~ClusterSequenceStructure()
Definition: fjcore.cc:2669
N2Plain
@ N2Plain
Definition: fjcore.hh:1025
CompositeJetStructure
Definition: fjcore.hh:1228
B
< SOURCE_DIR >< SOURCE_SUBDIR > B
Definition: Core-cfgcmd.txt:1
ClusterSequence::will_delete_self_when_unused
bool will_delete_self_when_unused() const
Definition: fjcore.hh:1439
PseudoJet::phi_02pi
double phi_02pi() const
Definition: fjcore.hh:553
SelectorRapRange
Selector SelectorRapRange(double rapmin, double rapmax)
select objects with rapmin <= rap <= rapmax
Definition: fjcore.cc:4617
ClusterSequence::_structure_shared_ptr
SharedPtr< PseudoJetStructureBase > _structure_shared_ptr
Definition: fjcore.hh:1551
PseudoJet::structure_of
const TransformerType::StructureType & structure_of() const
Definition: fjcore.hh:829
PseudoJet::_user_info
SharedPtr< UserInfoBase > _user_info
Definition: fjcore.hh:712
SharedPtr::swap
void swap(SharedPtr &share)
Definition: fjcore.hh:359
ClusterSequenceStructure::exclusive_subdmerge_max
virtual double exclusive_subdmerge_max(const PseudoJet &reference, int nsub) const FJCORE_OVERRIDE
Definition: fjcore.cc:2727
JetDefinition::Recombiner::plus_equal
void plus_equal(PseudoJet &pa, const PseudoJet &pb) const
Definition: fjcore.hh:1173
Selector::InvalidArea::InvalidArea
InvalidArea()
Definition: fjcore.hh:958
Selector::InvalidWorker::InvalidWorker
InvalidWorker()
Definition: fjcore.hh:954
ClusterSequence::_bj_of_hindex
J * _bj_of_hindex(const int hist_index, J *const head, J *const tail) const
Definition: fjcore.hh:1606
ClusterSequenceStructure::constituents
virtual std::vector< PseudoJet > constituents(const PseudoJet &reference) const FJCORE_OVERRIDE
Definition: fjcore.cc:2707
PseudoJet::is_inside
virtual bool is_inside(const PseudoJet &jet) const
Definition: fjcore.cc:4013
kt_algorithm
@ kt_algorithm
Definition: fjcore.hh:1038
ClusterSequenceStructure::has_pieces
virtual bool has_pieces(const PseudoJet &reference) const FJCORE_OVERRIDE
Definition: fjcore.cc:2730
PseudoJet::four_mom
std::valarray< double > four_mom() const
Definition: fjcore.cc:3777
true_type
integral_type< bool, true > true_type
the bool 'true' value promoted to a type
Definition: fjcore.hh:211
SelectorWorker::get_rapidity_extent
virtual void get_rapidity_extent(double &rapmin, double &rapmax) const
Definition: fjcore.hh:885
LimitedWarning::_max_warn_default
static int _max_warn_default
Definition: fjcore.hh:447
PseudoJet::mperp
double mperp() const
Definition: fjcore.hh:573
ClusterSequence::n_exclusive_jets_ycut
int n_exclusive_jets_ycut(double ycut) const
Definition: fjcore.hh:1403
PseudoJet::perp
double perp() const
Definition: fjcore.hh:567
Selector::count
unsigned int count(const std::vector< PseudoJet > &jets) const
Definition: fjcore.cc:4185
PseudoJet::structure_shared_ptr
const SharedPtr< PseudoJetStructureBase > & structure_shared_ptr() const
Definition: fjcore.cc:3998
SelectorEtaMax
Selector SelectorEtaMax(double etamax)
select objects with eta <= etamax
Definition: fjcore.cc:4669
ClusterSequence::EEBriefJet::kt2
double kt2
Definition: fjcore.hh:1648
ClusterSequence::TiledJet::label_minheap_update_done
void label_minheap_update_done()
Definition: fjcore.hh:1597
SelectorWorker::known_area
virtual double known_area() const
Definition: fjcore.hh:892
SelectorAbsRapMax
Selector SelectorAbsRapMax(double absrapmax)
select objects with |rap| <= absrapmax
Definition: fjcore.cc:4654
ClusterSequence::_Line::operator()
double operator()(const double R) const
Definition: fjcore.hh:1537
JetDefinition::DefaultRecombiner::_recomb_scheme
RecombinationScheme _recomb_scheme
Definition: fjcore.hh:1189
CompositeJetStructure::has_pieces
virtual bool has_pieces(const PseudoJet &) const FJCORE_OVERRIDE
Definition: fjcore.hh:1239
SelectorWorker::takes_reference
virtual bool takes_reference() const
Definition: fjcore.hh:878
ClusterSequence::EEBriefJet
Definition: fjcore.hh:1646
LimitedWarning::n_warn_so_far
int n_warn_so_far() const
Definition: fjcore.hh:443
ClusterSequence::ClusterSequence
ClusterSequence(const ClusterSequence &cs)
Definition: fjcore.hh:1389
PseudoJet::plain_distance
double plain_distance(const PseudoJet &other) const
Definition: fjcore.cc:3951
PseudoJet::~PseudoJet
virtual ~PseudoJet()
Definition: fjcore.hh:543
PseudoJet::_ensure_valid_rap_phi
void _ensure_valid_rap_phi() const
Definition: fjcore.hh:720
ClusterSequence::Q2
double Q2() const
Definition: fjcore.hh:1419
NNH::NNBJ::index
int index() const
Definition: fjcore.hh:1836
SharedPtr::operator()
T * operator()() const
Definition: fjcore.hh:331
NNInfo::NNInfo
NNInfo()
Definition: fjcore.hh:1775
PseudoJet::beam_distance
double beam_distance() const
Definition: fjcore.hh:594
JetDefinition::_strategy
Strategy _strategy
Definition: fjcore.hh:1207
integral_type::value
static const T value
the value (only member carrying info)
Definition: fjcore.hh:205
PseudoJet::set_user_info
void set_user_info(UserInfoBase *user_info_in)
Definition: fjcore.hh:641
ClusterSequence::plugin_simple_N2_cluster
void plugin_simple_N2_cluster()
Definition: fjcore.hh:1472
ClusterSequence::_bj_set_NN_nocross
void _bj_set_NN_nocross(J *const jeta, J *const head, const J *const tail) const
Definition: fjcore.hh:1724
ClusterSequence::_tiles
std::vector< Tile > _tiles
Definition: fjcore.hh:1629
PseudoJet::mt2
double mt2() const
Definition: fjcore.hh:574
SharedPtr::_ptr
__SharedCountingPtr * _ptr
Definition: fjcore.hh:397
Selector::takes_reference
bool takes_reference() const
Definition: fjcore.hh:941
ClusterSequenceStructure::has_partner
virtual bool has_partner(const PseudoJet &reference, PseudoJet &partner) const FJCORE_OVERRIDE
Definition: fjcore.cc:2687
IsBaseAndDerived
Definition: fjcore.hh:226
PseudoJet::delta_phi_to
double delta_phi_to(const PseudoJet &other) const
Definition: fjcore.cc:3957
Selector::pass
bool pass(const PseudoJet &jet) const
Definition: fjcore.hh:901
JetDefinition::_extra_param
double _extra_param
parameter whose meaning varies according to context
Definition: fjcore.hh:1206
JetDefinition::description_no_recombiner
std::string description_no_recombiner() const
Definition: fjcore.cc:3407
Selector::worker
const SharedPtr< SelectorWorker > & worker() const
Definition: fjcore.hh:935
SelectorPhiRange
Selector SelectorPhiRange(double phimin, double phimax)
select objects with phimin <= phi <= phimax
Definition: fjcore.cc:4716
PseudoJetStructureBase::PseudoJetStructureBase
PseudoJetStructureBase()
Definition: fjcore.hh:498
NNH::set_NN_crosscheck
void set_NN_crosscheck(NNBJ *jet, NNBJ *begin, NNBJ *end)
Definition: fjcore.hh:1914
Strategy
Strategy
Definition: fjcore.hh:1017
SelectorAbsRapRange
Selector SelectorAbsRapRange(double absrapmin, double absrapmax)
select objects with absrapmin <= |rap| <= absrapmax
Definition: fjcore.cc:4657
NNH
Definition: fjcore.hh:1802
ClusterSequence::_Parabola
Definition: fjcore.hh:1527
undefined_jet_algorithm
@ undefined_jet_algorithm
Definition: fjcore.hh:1047
PseudoJetStructureBase::exclusive_subdmerge_max
virtual double exclusive_subdmerge_max(const PseudoJet &reference, int nsub) const
Definition: fjcore.cc:4154
PseudoJetStructureBase::object_in_jet
virtual bool object_in_jet(const PseudoJet &reference, const PseudoJet &jet) const
Definition: fjcore.cc:4136
NNH::NNBJ
Definition: fjcore.hh:1821
Error::_message
std::string _message
error message
Definition: fjcore.hh:475
cos_theta
double cos_theta(const PseudoJet &a, const PseudoJet &b)
Definition: fjcore.hh:740
pseudojet_invalid_phi
const double pseudojet_invalid_phi
Definition: fjcore.hh:533
ClusterSequenceStructure::set_associated_cs
virtual void set_associated_cs(const ClusterSequence *new_cs)
Definition: fjcore.hh:1347
PseudoJetStructureBase::description
virtual std::string description() const
Definition: fjcore.hh:500
PseudoJet::phi
double phi() const
Definition: fjcore.hh:549
JetDefinition::set_recombiner
void set_recombiner(const Recombiner *recomb)
Definition: fjcore.hh:1138
ClusterSequence::Tile::tagged
bool tagged
Definition: fjcore.hh:1627
PseudoJet::n_exclusive_subjets
int n_exclusive_subjets(const double dcut) const
Definition: fjcore.cc:4028
SelectorEtMax
Selector SelectorEtMax(double Etmax)
select objects with Et <= Etmax
Definition: fjcore.cc:4538
PseudoJet::PseudoJet
PseudoJet()
Definition: fjcore.hh:537
Selector::is_geometric
bool is_geometric() const
Definition: fjcore.hh:929
SharedPtr::__SharedCountingPtr::~__SharedCountingPtr
~__SharedCountingPtr()
Definition: fjcore.hh:372
SharedPtr::operator=
SharedPtr & operator=(SharedPtr< Y > const &share)
Definition: fjcore.hh:326
operator*
PseudoJet operator*(double, const PseudoJet &)
Definition: fjcore.cc:3821
ClusterSequence::TiledJet::previous
TiledJet * previous
Definition: fjcore.hh:1594
ClusterSequence::exclusive_jets_ycut
std::vector< PseudoJet > exclusive_jets_ycut(double ycut) const
Definition: fjcore.hh:1404
JetDefinition::Plugin::run_clustering
virtual void run_clustering(ClusterSequence &) const =0
PseudoJet::user_info
const L & user_info() const
Definition: fjcore.hh:645
PseudoJet::_kt2
double _kt2
Definition: fjcore.hh:716
zeta2
const double zeta2
Definition: fjcore.hh:194
ClusterSequence::_history
std::vector< history_element > _history
Definition: fjcore.hh:1542
ClusterSequence::EEBriefJet::NN_dist
double NN_dist
Definition: fjcore.hh:1647
PseudoJetStructureBase::associated_cluster_sequence
virtual const ClusterSequence * associated_cluster_sequence() const
Definition: fjcore.cc:4121
ClusterSequence::plugin_record_iB_recombination
void plugin_record_iB_recombination(int jet_i, double diB)
Definition: fjcore.hh:1450
ClusterSequence::_first_time
static bool _first_time
Definition: fjcore.hh:1583
operator==
bool operator==(SharedPtr< T > const &t, SharedPtr< U > const &u)
Definition: fjcore.hh:400
PseudoJetStructureBase::pieces
virtual std::vector< PseudoJet > pieces(const PseudoJet &) const
Definition: fjcore.cc:4157
sorted_by_pt
std::vector< PseudoJet > sorted_by_pt(const std::vector< PseudoJet > &jets)
Definition: fjcore.cc:4063
JetDefinition::set_jet_finder
void set_jet_finder(JetAlgorithm njf)
Definition: fjcore.hh:1155
NNBase::NNBase
NNBase(I *info)
Definition: fjcore.hh:1790
JetDefinition::Plugin::is_spherical
virtual bool is_spherical() const
Definition: fjcore.hh:1200
WTA_modp_scheme
@ WTA_modp_scheme
Definition: fjcore.hh:1061
cambridge_aachen_algorithm
const JetAlgorithm cambridge_aachen_algorithm
Definition: fjcore.hh:1051
Et2_scheme
@ Et2_scheme
Definition: fjcore.hh:1057
N3Dumb
@ N3Dumb
Definition: fjcore.hh:1026
Ntupliser_cfg.jets
string jets
Definition: Ntupliser_cfg.py:41
ClusterSequence::_bj_set_jetinfo
void _bj_set_jetinfo(J *const jet, const int _jets_index) const
Definition: fjcore.hh:1698
PseudoJet::pt2
double pt2() const
Definition: fjcore.hh:564
Error::description
std::string description() const
Definition: fjcore.hh:468
ClusterSequence::ClusterSequence
ClusterSequence()
Definition: fjcore.hh:1384
JetDefinition::_Rparam
double _Rparam
Definition: fjcore.hh:1205
PseudoJet::UserInfoBase::UserInfoBase
UserInfoBase()
Definition: fjcore.hh:634
PseudoJet::validated_cs
const ClusterSequence * validated_cs() const
Definition: fjcore.cc:3978
antikt_algorithm
@ antikt_algorithm
Definition: fjcore.hh:1040
Selector::get_rapidity_extent
void get_rapidity_extent(double &rapmin, double &rapmax) const
Definition: fjcore.hh:923
ClusterSequence::_jets
std::vector< PseudoJet > _jets
Definition: fjcore.hh:1541
PseudoJet::SIZE
@ SIZE
Definition: fjcore.hh:596
NNInfo::_info
I * _info
Definition: fjcore.hh:1779
PseudoJet::set_user_index
void set_user_index(const int index)
Definition: fjcore.hh:631
SelectorWorker::copy
virtual SelectorWorker * copy()
Definition: fjcore.hh:882
ClusterSequence::strategy_used
Strategy strategy_used() const
Definition: fjcore.hh:1434
JetDefinition::Recombiner::preprocess
virtual void preprocess(PseudoJet &) const
Definition: fjcore.hh:1171
NlnN3pi
@ NlnN3pi
Definition: fjcore.hh:1029
SelectorEtRange
Selector SelectorEtRange(double Etmin, double Etmax)
select objects with Etmin <= Et <= Etmax
Definition: fjcore.cc:4541
JetDefinition::Plugin::exclusive_sequence_meaningful
virtual bool exclusive_sequence_meaningful() const
Definition: fjcore.hh:1199
ClusterSequence::_jet_algorithm
JetAlgorithm _jet_algorithm
Definition: fjcore.hh:1550
ClusterSequenceStructure::has_child
virtual bool has_child(const PseudoJet &reference, PseudoJet &child) const FJCORE_OVERRIDE
Definition: fjcore.cc:2690
PseudoJet::perp2
double perp2() const
Definition: fjcore.hh:566
PseudoJet::pseudorapidity
double pseudorapidity() const
Definition: fjcore.cc:3802
PseudoJet::UserInfoBase
Definition: fjcore.hh:632
PseudoJet::reset
void reset(const PseudoJet &psjet)
Definition: fjcore.hh:604
PseudoJet::X
@ X
Definition: fjcore.hh:596
PseudoJet::structure_ptr
const PseudoJetStructureBase * structure_ptr() const
Definition: fjcore.cc:3987
SelectorStrip
Selector SelectorStrip(const double half_width)
Definition: fjcore.cc:4874
SharedPtr::__SharedCountingPtr::use_count
long use_count() const
Definition: fjcore.hh:376
ClusterSequence::TiledJet
Definition: fjcore.hh:1591
PseudoJet::rapidity
double rapidity() const
Definition: fjcore.hh:561
LimitedWarning::set_default_stream
static void set_default_stream(std::ostream *ostr)
Definition: fjcore.hh:436
IsBaseAndDerived::value
static const bool value
Definition: fjcore.hh:239
pt2_scheme
@ pt2_scheme
Definition: fjcore.hh:1055
Error::_default_ostr
static std::ostream * _default_ostr
the output stream (cerr if not set)
Definition: fjcore.hh:478
JetDefinition::_recombiner
const Recombiner * _recombiner
Definition: fjcore.hh:1211
Error::message
std::string message() const
Definition: fjcore.hh:467
PseudoJet::modp2
double modp2() const
Definition: fjcore.hh:576
ClusterSequence::_initial_n
int _initial_n
Definition: fjcore.hh:1546
PseudoJet::has_exclusive_subjets
virtual bool has_exclusive_subjets() const
Definition: fjcore.cc:4022
LimitedWarning::LimitedWarning
LimitedWarning()
Definition: fjcore.hh:430
JetDefinition::set_recombination_scheme
void set_recombination_scheme(RecombinationScheme)
Definition: fjcore.cc:3453
ClusterSequence::_changed_strategy_warning
static LimitedWarning _changed_strategy_warning
Definition: fjcore.hh:1585
PseudoJet::user_info_shared_ptr
SharedPtr< UserInfoBase > & user_info_shared_ptr()
Definition: fjcore.hh:662
false_type
integral_type< bool, false > false_type
the bool 'false' value promoted to a type
Definition: fjcore.hh:212
ClusterSequenceStructure::has_exclusive_subjets
virtual bool has_exclusive_subjets() const FJCORE_OVERRIDE
Definition: fjcore.cc:2710
SharedPtr::__SharedCountingPtr::_ptr
T * _ptr
the pointer we're counting the references to
Definition: fjcore.hh:385
PseudoJet::pz
double pz() const
Definition: fjcore.hh:548
Selector::operator&=
Selector & operator&=(const Selector &b)
Definition: fjcore.cc:4941
JetDefinition::Recombiner::~Recombiner
virtual ~Recombiner()
Definition: fjcore.hh:1172
SharedPtr::__SharedCountingPtr::operator--
long operator--()
Definition: fjcore.hh:378
Selector::validated_worker
const SelectorWorker * validated_worker() const
Definition: fjcore.hh:936
PseudoJet::has_child
virtual bool has_child(PseudoJet &child) const
Definition: fjcore.cc:4004
ClusterSequence::_plugin_activated
bool _plugin_activated
Definition: fjcore.hh:1555
PseudoJet::reset_PtYPhiM
void reset_PtYPhiM(double pt_in, double y_in, double phi_in, double m_in=0.0)
Definition: fjcore.hh:618
SharedPtr::__SharedCountingPtr::__SharedCountingPtr
__SharedCountingPtr(Y *ptr)
Definition: fjcore.hh:371
PseudoJet::_reset_indices
void _reset_indices()
Definition: fjcore.hh:785
SharedPtr::SharedPtr
SharedPtr(Y *ptr)
Definition: fjcore.hh:298
NNH::where_is
std::vector< NNBJ * > where_is
Definition: fjcore.hh:1820
PseudoJet::user_info_ptr
const UserInfoBase * user_info_ptr() const
Definition: fjcore.hh:656
integral_type::value_type
T value_type
a typedef for the type T
Definition: fjcore.hh:206
BIpt2_scheme
@ BIpt2_scheme
Definition: fjcore.hh:1059
PseudoJetStructureBase::exclusive_subdmerge
virtual double exclusive_subdmerge(const PseudoJet &reference, int nsub) const
Definition: fjcore.cc:4151
JetDefinition::Plugin::R
virtual double R() const =0
JetDefinition::Plugin
Definition: fjcore.hh:1191
SharedPtr::reset
void reset(SharedPtr< Y > const &share)
Definition: fjcore.hh:314
IndexedSortHelper::operator()
int operator()(const int i1, const int i2) const
Definition: fjcore.hh:774
PseudoJet::kt2
double kt2() const
Definition: fjcore.hh:569
Error::set_print_backtrace
static void set_print_backtrace(bool enabled)
Definition: fjcore.cc:3339
PseudoJet::_py
double _py
Definition: fjcore.hh:714
SharedPtr::SharedPtr
SharedPtr()
Definition: fjcore.hh:297
SharedPtr::SharedPtr
SharedPtr(SharedPtr const &share)
Definition: fjcore.hh:301
ClusterSequence::inclusive_jets
std::vector< PseudoJet > inclusive_jets(const double ptmin=0.0) const
Definition: fjcore.cc:1820
PseudoJet::e
double e() const
Definition: fjcore.hh:545
NNH::dij_min
double dij_min(int &iA, int &iB)
Definition: fjcore.hh:1859
Selector::Selector
Selector()
Definition: fjcore.hh:898
N2MHTLazy9
@ N2MHTLazy9
Definition: fjcore.hh:1019
ClusterSequence::_bj_dist
double _bj_dist(const J *const jeta, const J *const jetb) const
Definition: fjcore.hh:1707
PseudoJetStructureBase::constituents
virtual std::vector< PseudoJet > constituents(const PseudoJet &reference) const
Definition: fjcore.cc:4139
ClusterSequence::TwoVertices
std::pair< int, int > TwoVertices
Definition: fjcore.hh:1577
ClusterSequence::EEBriefJet::nz
double nz
Definition: fjcore.hh:1651
SelectorPtMax
Selector SelectorPtMax(double ptmax)
select objects with pt <= ptmax
Definition: fjcore.cc:4523
ClusterSequence::TiledJet::phi
double phi
Definition: fjcore.hh:1593
SelectorWorker::applies_jet_by_jet
virtual bool applies_jet_by_jet() const
Definition: fjcore.hh:876
Error::set_print_errors
static void set_print_errors(bool print_errors)
Definition: fjcore.hh:469
SharedPtr::~SharedPtr
~SharedPtr()
Definition: fjcore.hh:304
ClusterSequenceStructure::_associated_cs
const ClusterSequence * _associated_cs
Definition: fjcore.hh:1365
PseudoJet::_structure
SharedPtr< PseudoJetStructureBase > _structure
Definition: fjcore.hh:711
PseudoJet::px
double px() const
Definition: fjcore.hh:546
ClusterSequence::_Line::_Line
_Line(double a, double b)
Definition: fjcore.hh:1536
PseudoJet::structure
const StructureType & structure() const
Definition: fjcore.hh:820
PseudoJet::associated_cs
const ClusterSequence * associated_cs() const
Definition: fjcore.hh:671
JetDefinition::is_spherical
bool is_spherical() const
Definition: fjcore.cc:3385
integral_type::type
integral_type< T, _t > type
a typedef for the whole structure
Definition: fjcore.hh:207
PseudoJet::exclusive_subdmerge_max
double exclusive_subdmerge_max(int nsub) const
Definition: fjcore.cc:4047
SharedPtr::__SharedCountingPtr::__SharedCountingPtr
__SharedCountingPtr()
Definition: fjcore.hh:370
ClusterSequence::history_element
Definition: fjcore.hh:1477
PseudoJetStructureBase::has_valid_cluster_sequence
virtual bool has_valid_cluster_sequence() const
Definition: fjcore.hh:503
PseudoJet::rap
double rap() const
Definition: fjcore.hh:557
Selector::InvalidWorker
Definition: fjcore.hh:952
ClusterSequence::history_element::dij
double dij
index in the _jets vector where we will find the
Definition: fjcore.hh:1485
NlnN
@ NlnN
Definition: fjcore.hh:1028
JetDefinition::Recombiner::description
virtual std::string description() const =0
Selector::_copy_worker_if_needed
void _copy_worker_if_needed()
Definition: fjcore.hh:963
sort_indices
void sort_indices(std::vector< int > &indices, const std::vector< double > &values)
Definition: fjcore.cc:4058
SelectorRectangle
Selector SelectorRectangle(const double half_rap_width, const double half_phi_width)
Definition: fjcore.cc:4907
pseudojet_invalid_rap
const double pseudojet_invalid_rap
Definition: fjcore.hh:534
N2MHTLazy9AntiKtSeparateGhosts
@ N2MHTLazy9AntiKtSeparateGhosts
Definition: fjcore.hh:1018
PseudoJet::_phi
double _phi
Definition: fjcore.hh:715
PseudoJet::modp
double modp() const
Definition: fjcore.hh:577
ClusterSequence::exclusive_ymerge_max
double exclusive_ymerge_max(int njets) const
Definition: fjcore.hh:1402
JetDefinition::Plugin::~Plugin
virtual ~Plugin()
Definition: fjcore.hh:1201
PseudoJet::Y
@ Y
Definition: fjcore.hh:596
JetDefinition::_plugin
const Plugin * _plugin
Definition: fjcore.hh:1208
SelectorPtFractionMin
Selector SelectorPtFractionMin(double fraction)
Definition: fjcore.cc:4927
FJCORE_END_NAMESPACE
#define FJCORE_END_NAMESPACE
Definition: fjcore.hh:181
SelectorWorker::pass
virtual bool pass(const PseudoJet &jet) const =0
CompositeJetStructure::description
virtual std::string description() const FJCORE_OVERRIDE
Definition: fjcore.cc:3298
ClusterSequence::fastjet_banner_stream
static std::ostream * fastjet_banner_stream()
Definition: fjcore.hh:1507
ClusterSequence::plugin_record_ij_recombination
void plugin_record_ij_recombination(int jet_i, int jet_j, double dij, int &newjet_k)
Definition: fjcore.hh:1442
JetDefinition::jet_algorithm
JetAlgorithm jet_algorithm() const
Definition: fjcore.hh:1147
SharedPtr::get
T * get() const
Definition: fjcore.hh:342
Ntupliser_cfg.particles
particles
Definition: Ntupliser_cfg.py:270
Et_scheme
@ Et_scheme
Definition: fjcore.hh:1056
SelectorIsZero
Selector SelectorIsZero()
Definition: fjcore.cc:4938
CompositeJetStructure::_area_4vector_ptr
PseudoJet * _area_4vector_ptr
pointer to the 4-vector jet area
Definition: fjcore.hh:1243
ClusterSequence::plugin_activated
bool plugin_activated() const
Definition: fjcore.hh:1470
SelectorAbsEtaRange
Selector SelectorAbsEtaRange(double absetamin, double absetamax)
select objects with absetamin <= |eta| <= absetamax
Definition: fjcore.cc:4688
PseudoJet::validated_cluster_sequence
const ClusterSequence * validated_cluster_sequence() const
Definition: fjcore.hh:672
ClusterSequenceStructure
Definition: fjcore.hh:1333
LimitedWarning::_default_ostr
static std::ostream * _default_ostr
Definition: fjcore.hh:448
SelectorNHardest
Selector SelectorNHardest(unsigned int n)
Definition: fjcore.cc:4764
PseudoJet::set_cached_rap_phi
void set_cached_rap_phi(double rap, double phi)
Definition: fjcore.cc:3915
ClusterSequence::_transfer_input_jets
void _transfer_input_jets(const std::vector< L > &pseudojets)
Definition: fjcore.hh:1656
sorted_by_E
std::vector< PseudoJet > sorted_by_E(const std::vector< PseudoJet > &jets)
Definition: fjcore.cc:4073
ClusterSequence::_initialise_and_run_no_decant
void _initialise_and_run_no_decant()
Definition: fjcore.cc:1433
PseudoJet::user_info_shared_ptr
const SharedPtr< UserInfoBase > & user_info_shared_ptr() const
Definition: fjcore.hh:659
NNH::NNBJ::NN_dist
double NN_dist
Definition: fjcore.hh:1837
Selector::operator()
bool operator()(const PseudoJet &jet) const
Definition: fjcore.hh:907
SharedPtr::set_count
void set_count(const long &count)
Definition: fjcore.hh:364
PseudoJetStructureBase::n_exclusive_subjets
virtual int n_exclusive_subjets(const PseudoJet &reference, const double &dcut) const
Definition: fjcore.cc:4145
PseudoJet::validated_structure_ptr
const PseudoJetStructureBase * validated_structure_ptr() const
Definition: fjcore.cc:3993
Error::set_default_stream
static void set_default_stream(std::ostream *ostr)
Definition: fjcore.hh:471
SelectorMassMin
Selector SelectorMassMin(double Mmin)
select objects with Mass >= Mmin
Definition: fjcore.cc:4565
SelectorDoughnut
Selector SelectorDoughnut(const double radius_in, const double radius_out)
Definition: fjcore.cc:4842
have_same_momentum
bool have_same_momentum(const PseudoJet &, const PseudoJet &)
Definition: fjcore.cc:3909
ClusterSequence::_jet_def
JetDefinition _jet_def
Definition: fjcore.hh:1511
PseudoJetStructureBase::has_child
virtual bool has_child(const PseudoJet &reference, PseudoJet &child) const
Definition: fjcore.cc:4130
ClusterSequence::_tiles_ieta_min
int _tiles_ieta_min
Definition: fjcore.hh:1632
PseudoJet::has_associated_cs
bool has_associated_cs() const
Definition: fjcore.hh:667
PseudoJet::operator*
friend PseudoJet operator*(double, const PseudoJet &)
Definition: fjcore.cc:3821
ClusterSequence::history_element::child
int child
index in _history where second parent of this jet
Definition: fjcore.hh:1480
ClusterSequence::structure_shared_ptr
const SharedPtr< PseudoJetStructureBase > & structure_shared_ptr() const
Definition: fjcore.hh:1501
PseudoJet::has_valid_cs
bool has_valid_cs() const
Definition: fjcore.hh:669
PseudoJet::mt
double mt() const
Definition: fjcore.hh:575
__no_type
char(& __no_type)[2]
Definition: fjcore.hh:214
ClusterSequence::strategy_string
std::string strategy_string() const
Definition: fjcore.hh:1435
ClusterSequence::_tile_size_phi
double _tile_size_phi
Definition: fjcore.hh:1631
JetDefinition::set_extra_param
void set_extra_param(double xtra_param)
Definition: fjcore.hh:1156
SelectorWorker::set_reference
virtual void set_reference(const PseudoJet &)
Definition: fjcore.hh:879
swap
void swap(SharedPtr< T > &a, SharedPtr< T > &b)
Definition: fjcore.hh:412
JetDefinition
Definition: fjcore.hh:1065
ClusterSequence::Extras
Definition: fjcore.hh:1454
plugin_algorithm
@ plugin_algorithm
Definition: fjcore.hh:1046
NNBase::merge_jets
virtual void merge_jets(int iA, int iB, const PseudoJet &jet, int jet_index)=0
PseudoJet::has_user_info
bool has_user_info() const
Definition: fjcore.hh:653
PseudoJet::exclusive_subjets
std::vector< PseudoJet > exclusive_subjets(const double dcut) const
Definition: fjcore.cc:4025
ClusterSequence::Tile
Definition: fjcore.hh:1621
DAS::ptmin
static const double ptmin
Definition: binnings.h:46
PseudoJet::squared_distance
double squared_distance(const PseudoJet &other) const
Definition: fjcore.hh:588
PseudoJet::pt
double pt() const
Definition: fjcore.hh:565
SelectorAbsEtaMin
Selector SelectorAbsEtaMin(double absetamin)
select objects with |eta| >= absetamin
Definition: fjcore.cc:4682
PseudoJet::has_structure_of
bool has_structure_of() const
Definition: fjcore.hh:824
NNH::n
int n
Definition: fjcore.hh:1819
PseudoJet
Definition: fjcore.hh:535
NlnNCam4pi
@ NlnNCam4pi
Definition: fjcore.hh:1031
ClusterSequence::_tile_index
int _tile_index(int ieta, int iphi) const
Definition: fjcore.hh:1633
PseudoJet::m
double m() const
Definition: fjcore.hh:791
ClusterSequenceStructure::validated_cs
virtual const ClusterSequence * validated_cs() const FJCORE_OVERRIDE
Definition: fjcore.cc:2682
JetDefinition::DefaultRecombiner::preprocess
virtual void preprocess(PseudoJet &p) const FJCORE_OVERRIDE
Definition: fjcore.cc:3577
ClusterSequence::jets
const std::vector< PseudoJet > & jets() const
Definition: fjcore.hh:1673
ClusterSequence::_Parabola::_c
double _c
Definition: fjcore.hh:1532
ClusterSequence::_exclusive_warnings
static LimitedWarning _exclusive_warnings
Definition: fjcore.hh:1584
ClusterSequenceStructure::has_valid_cluster_sequence
virtual bool has_valid_cluster_sequence() const FJCORE_OVERRIDE
Definition: fjcore.cc:2676
PseudoJet::description
std::string description() const
Definition: fjcore.cc:3963
PseudoJetStructureBase::exclusive_subjets
virtual std::vector< PseudoJet > exclusive_subjets(const PseudoJet &reference, const double &dcut) const
Definition: fjcore.cc:4142
JetDefinition::DefaultRecombiner
Definition: fjcore.hh:1179
NNBase::remove_jet
virtual void remove_jet(int iA)=0
SelectorWorker::terminator
virtual void terminator(std::vector< const PseudoJet * > &jets) const
Definition: fjcore.hh:871
NNH::NNBJ::init
void init(const PseudoJet &jet, int index_in, I *info)
Definition: fjcore.hh:1827
SelectorRapMax
Selector SelectorRapMax(double rapmax)
select objects with rap <= rapmax
Definition: fjcore.cc:4614
PseudoJet::operator()
double operator()(int i) const
Definition: fjcore.cc:3785
PseudoJet::has_parents
virtual bool has_parents(PseudoJet &parent1, PseudoJet &parent2) const
Definition: fjcore.cc:4007
JetDefinition::set_jet_algorithm
void set_jet_algorithm(JetAlgorithm njf)
Definition: fjcore.hh:1154
Selector::_worker
SharedPtr< SelectorWorker > _worker
the underlying worker
Definition: fjcore.hh:968
ClusterSequence::_structure_use_count_after_construction
int _structure_use_count_after_construction
Definition: fjcore.hh:1552
DAS::ptmax
static const double ptmax
Definition: binnings.h:47
PseudoJet::InexistentUserInfo::InexistentUserInfo
InexistentUserInfo()
Definition: fjcore.cc:4056
JetAlgorithm
JetAlgorithm
Definition: fjcore.hh:1037
ClusterSequenceStructure::associated_cluster_sequence
virtual const ClusterSequence * associated_cluster_sequence() const FJCORE_OVERRIDE
Definition: fjcore.cc:2679
PseudoJet::delta_R
double delta_R(const PseudoJet &other) const
Definition: fjcore.hh:590
PseudoJet::reset
void reset(const L &some_four_vector)
Definition: fjcore.hh:608
N2MHTLazy25
@ N2MHTLazy25
Definition: fjcore.hh:1020
InternalError::InternalError
InternalError(const std::string &message_in)
Definition: fjcore.hh:485
ClusterSequenceStructure::exclusive_subjets
virtual std::vector< PseudoJet > exclusive_subjets(const PseudoJet &reference, const double &dcut) const FJCORE_OVERRIDE
Definition: fjcore.cc:2715
operator!
Selector operator!(const Selector &s)
Definition: fjcore.cc:4326
PseudoJet::_cluster_hist_index
int _cluster_hist_index
Definition: fjcore.hh:717
NNH::~NNH
~NNH()
Definition: fjcore.hh:1810
NNH::NNBJ::init
void init(const PseudoJet &jet, int index_in)
Definition: fjcore.hh:1823
LimitedWarning::_this_warning_summary
Summary * _this_warning_summary
Definition: fjcore.hh:451
ClusterSequence::_Parabola::operator()
double operator()(const double R) const
Definition: fjcore.hh:1530
PseudoJet::Et
double Et() const
Definition: fjcore.hh:578
JetDefinition::_plugin_shared
SharedPtr< const Plugin > _plugin_shared
Definition: fjcore.hh:1209
Selector::sum
PseudoJet sum(const std::vector< PseudoJet > &jets) const
Definition: fjcore.cc:4204
SelectorWorker::~SelectorWorker
virtual ~SelectorWorker()
Definition: fjcore.hh:869
ClusterSequence::JetType
JetType
Definition: fjcore.hh:1490
PseudoJet::set_structure_shared_ptr
void set_structure_shared_ptr(const SharedPtr< PseudoJetStructureBase > &structure)
Definition: fjcore.cc:3981
JetDefinition::R
double R() const
Definition: fjcore.hh:1149
FunctionOfPseudoJet::operator()
TOut operator()(const PseudoJet &pj) const
Definition: fjcore.hh:851
ClusterSequence::extras
const Extras * extras() const
Definition: fjcore.hh:1471
PseudoJet::E
double E() const
Definition: fjcore.hh:544
NNH::set_NN_nocross
void set_NN_nocross(NNBJ *jet, NNBJ *begin, NNBJ *end)
Definition: fjcore.hh:1932
SelectorMassMax
Selector SelectorMassMax(double Mmax)
select objects with Mass <= Mmax
Definition: fjcore.cc:4568
LimitedWarning::_n_warn_so_far
int _n_warn_so_far
Definition: fjcore.hh:446
ClusterSequence::jet_scale_for_algorithm
double jet_scale_for_algorithm(const PseudoJet &jet) const
Definition: fjcore.cc:1656
JetDefinition::delete_plugin_when_unused
void delete_plugin_when_unused()
Definition: fjcore.cc:3484
PseudoJet::operator+=
PseudoJet & operator+=(const PseudoJet &)
Definition: fjcore.cc:3846
PseudoJetStructureBase::~PseudoJetStructureBase
virtual ~PseudoJetStructureBase()
Definition: fjcore.hh:499
PseudoJet::Z
@ Z
Definition: fjcore.hh:596
Error
Definition: fjcore.hh:462
FunctionOfPseudoJet::result
virtual TOut result(const PseudoJet &pj) const =0
ClusterSequenceStructure::n_exclusive_subjets
virtual int n_exclusive_subjets(const PseudoJet &reference, const double &dcut) const FJCORE_OVERRIDE
Definition: fjcore.cc:2718
ClusterSequence::TiledJet::tile_index
int tile_index
Definition: fjcore.hh:1595
PseudoJet::has_pieces
virtual bool has_pieces() const
Definition: fjcore.cc:4050
JetDefinition::Plugin::ghost_separation_scale
virtual double ghost_separation_scale() const
Definition: fjcore.hh:1198
SharedPtr::__SharedCountingPtr::operator++
long operator++()
Definition: fjcore.hh:377
operator&&
Selector operator&&(const Selector &s1, const Selector &s2)
Definition: fjcore.cc:4385
ClusterSequence::DistMap
std::multimap< double, TwoVertices > DistMap
Definition: fjcore.hh:1579
NNBase::NNBase
NNBase()
Definition: fjcore.hh:1789
NNH::NNBJ::_index
int _index
Definition: fjcore.hh:1840
SharedPtr::reset
void reset()
Definition: fjcore.hh:308
NNH::NNH
NNH(const std::vector< PseudoJet > &jets)
Definition: fjcore.hh:1804
cambridge_algorithm
@ cambridge_algorithm
Definition: fjcore.hh:1039
SelectorERange
Selector SelectorERange(double Emin, double Emax)
select objects with Emin <= E <= Emax
Definition: fjcore.cc:4556
WTA_pt_scheme
@ WTA_pt_scheme
Definition: fjcore.hh:1060
ee_genkt_algorithm
@ ee_genkt_algorithm
Definition: fjcore.hh:1045
_NoInfo
Definition: fjcore.hh:1772
FunctionOfPseudoJet::FunctionOfPseudoJet
FunctionOfPseudoJet()
Definition: fjcore.hh:847
IndexedSortHelper::_ref_values
const std::vector< double > * _ref_values
Definition: fjcore.hh:776
ClusterSequence::EEBriefJet::_jets_index
int _jets_index
Definition: fjcore.hh:1650
LimitedWarning::_max_warn
int _max_warn
Definition: fjcore.hh:446
LimitedWarning::_global_warnings_summary
static std::list< Summary > _global_warnings_summary
Definition: fjcore.hh:450
CompositeJetStructure::constituents
virtual std::vector< PseudoJet > constituents(const PseudoJet &jet) const FJCORE_OVERRIDE
Definition: fjcore.cc:3305
join
PseudoJet join(const std::vector< PseudoJet > &pieces)
Definition: fjcore.hh:1245
FunctionOfPseudoJet
Definition: fjcore.hh:845
SelectorWorker::has_finite_area
virtual bool has_finite_area() const
Definition: fjcore.cc:4272
PseudoJet::m2
double m2() const
Definition: fjcore.hh:570
SelectorWorker
Definition: fjcore.hh:867
SelectorPtRange
Selector SelectorPtRange(double ptmin, double ptmax)
select objects with ptmin <= pt <= ptmax
Definition: fjcore.cc:4526
SelectorRapMin
Selector SelectorRapMin(double rapmin)
select objects with rap >= rapmin
Definition: fjcore.cc:4611
cast_if_derived
B * cast_if_derived(D *d)
Definition: fjcore.hh:247
__yes_type
char(& __yes_type)[1]
Definition: fjcore.hh:213
JetDefinition::Plugin::supports_ghosted_passive_areas
virtual bool supports_ghosted_passive_areas() const
Definition: fjcore.hh:1196
ClusterSequence::_bj_diJ
double _bj_diJ(const J *const jeta) const
Definition: fjcore.hh:1719
SelectorEtaMin
Selector SelectorEtaMin(double etamin)
select objects with eta >= etamin
Definition: fjcore.cc:4666
ClusterSequence::_bj_remove_from_tiles
void _bj_remove_from_tiles(TiledJet *const jet) const
JetDefinition::_shared_recombiner
SharedPtr< const Recombiner > _shared_recombiner
Definition: fjcore.hh:1212
Error::_execinfo_undefined
static LimitedWarning _execinfo_undefined
Definition: fjcore.hh:480
JetDefinition::JetDefinition
JetDefinition(JetAlgorithm jet_algorithm_in, const Recombiner *recombiner_in, Strategy strategy_in=Best)
Definition: fjcore.hh:1096
NlnNCam
@ NlnNCam
Definition: fjcore.hh:1033
IndexedSortHelper
Definition: fjcore.hh:769
FunctionOfPseudoJet::operator()
std::vector< TOut > operator()(const std::vector< PseudoJet > &pjs) const
Definition: fjcore.hh:852
Error::_print_backtrace
static bool _print_backtrace
do we print the backtrace?
Definition: fjcore.hh:477
ClusterSequenceStructure::exclusive_subjets_up_to
virtual std::vector< PseudoJet > exclusive_subjets_up_to(const PseudoJet &reference, int nsub) const FJCORE_OVERRIDE
Definition: fjcore.cc:2721
PseudoJet::reset_momentum
void reset_momentum(const L &some_four_vector)
Definition: fjcore.hh:625
BIpt_scheme
@ BIpt_scheme
Definition: fjcore.hh:1058
CompositeJetStructure::CompositeJetStructure
CompositeJetStructure()
Definition: fjcore.hh:1230
JetDefinition::has_same_recombiner
bool has_same_recombiner(const JetDefinition &other_jd) const
Definition: fjcore.cc:3470
ClusterSequence::history
const std::vector< history_element > & history() const
Definition: fjcore.hh:1676
PseudoJet::_pz
double _pz
Definition: fjcore.hh:714
JetDefinition::JetDefinition
JetDefinition(JetAlgorithm jet_algorithm_in, double R_in, double xtra_param_in, RecombinationScheme recomb_scheme_in=E_scheme, Strategy strategy_in=Best)
Definition: fjcore.hh:1081
PseudoJetStructureBase
Definition: fjcore.hh:496
SelectorAbsEtaMax
Selector SelectorAbsEtaMax(double absetamax)
select objects with |eta| <= absetamax
Definition: fjcore.cc:4685
ClusterSequence::_Line
Definition: fjcore.hh:1534
PseudoJet::kt_distance
double kt_distance(const PseudoJet &other) const
Definition: fjcore.cc:3943
twopi
const double twopi
Definition: fjcore.hh:192
NNH::head
NNBJ * head
Definition: fjcore.hh:1818
PseudoJet::CorrPt
double CorrPt() const
Definition: fjcore.hh:568
ClusterSequence::history_element::parent2
int parent2
index in _history where first parent of this jet
Definition: fjcore.hh:1479
pt_scheme
@ pt_scheme
Definition: fjcore.hh:1054
aachen_algorithm
const JetAlgorithm aachen_algorithm
Definition: fjcore.hh:1050
PseudoJetStructureBase::has_pieces
virtual bool has_pieces(const PseudoJet &) const
Definition: fjcore.hh:517
ClusterSequence::delete_self_when_unused
void delete_self_when_unused()
Definition: fjcore.cc:2271
N2Tiled
@ N2Tiled
Definition: fjcore.hh:1023
N2MHTLazy9Alt
@ N2MHTLazy9Alt
Definition: fjcore.hh:1021
PseudoJet::NUM_COORDINATES
@ NUM_COORDINATES
Definition: fjcore.hh:596
SelectorMassRange
Selector SelectorMassRange(double Mmin, double Mmax)
select objects with Mmin <= Mass <= Mmax
Definition: fjcore.cc:4571
ClusterSequence::n_particles
unsigned int n_particles() const
Definition: fjcore.hh:1679
Selector::has_finite_area
bool has_finite_area() const
Definition: fjcore.hh:932
N2MinHeapTiled
@ N2MinHeapTiled
Definition: fjcore.hh:1022
external_scheme
@ external_scheme
Definition: fjcore.hh:1062
SelectorAbsRapMin
Selector SelectorAbsRapMin(double absrapmin)
select objects with |rap| >= absrapmin
Definition: fjcore.cc:4651
NNBase::dij_min
virtual double dij_min(int &iA, int &iB)=0
SharedPtr::operator->
T * operator->() const
Definition: fjcore.hh:338
ClusterSequence::exclusive_ymerge
double exclusive_ymerge(int njets) const
Definition: fjcore.hh:1401
SharedPtr::__SharedCountingPtr::get
T * get() const
Definition: fjcore.hh:375
PseudoJet::set_cluster_sequence_history_index
void set_cluster_sequence_history_index(const int index)
Definition: fjcore.hh:708
operator<
bool operator<(SharedPtr< T > const &t, SharedPtr< U > const &u)
Definition: fjcore.hh:408
RecombinationScheme
RecombinationScheme
Definition: fjcore.hh:1052
NNBase::~NNBase
virtual ~NNBase()
Definition: fjcore.hh:1795
PseudoJet::_finish_init
void _finish_init()
Definition: fjcore.cc:3754
PseudoJet::phi_std
double phi_std() const
Definition: fjcore.hh:550
ClusterSequenceStructure::pieces
virtual std::vector< PseudoJet > pieces(const PseudoJet &reference) const FJCORE_OVERRIDE
Definition: fjcore.cc:2734
JetDefinition::description
std::string description() const
Definition: fjcore.cc:3394
JetDefinition::algorithm_description
static std::string algorithm_description(const JetAlgorithm jet_alg)
Definition: fjcore.cc:3429
ClusterSequence::_Rparam
double _Rparam
Definition: fjcore.hh:1547
fastjet_version_string
FJCORE_BEGIN_NAMESPACE std::string fastjet_version_string()
Definition: fjcore.cc:1552
FunctionOfPseudoJet::~FunctionOfPseudoJet
virtual ~FunctionOfPseudoJet()
Definition: fjcore.hh:848
NNH::NNH
NNH(const std::vector< PseudoJet > &jets, I *info)
Definition: fjcore.hh:1805
FJCORE_DEPRECATED_MSG
#define FJCORE_DEPRECATED_MSG(message)
Definition: fjcore.hh:263
JetDefinition::Recombiner::recombine
virtual void recombine(const PseudoJet &pa, const PseudoJet &pb, PseudoJet &pab) const =0
JetDefinition::DefaultRecombiner::recombine
virtual void recombine(const PseudoJet &pa, const PseudoJet &pb, PseudoJet &pab) const FJCORE_OVERRIDE
Definition: fjcore.cc:3517
PseudoJet::eta
double eta() const
Definition: fjcore.hh:563
CompositeJetStructure::_pieces
std::vector< PseudoJet > _pieces
the pieces building the jet
Definition: fjcore.hh:1242
JetDefinition::_jet_algorithm
JetAlgorithm _jet_algorithm
Definition: fjcore.hh:1204
JetDefinition::recombination_scheme
RecombinationScheme recombination_scheme() const
Definition: fjcore.hh:1152
ClusterSequenceStructure::has_constituents
virtual bool has_constituents() const FJCORE_OVERRIDE
Definition: fjcore.cc:2702
NNInfo< _NoInfo >::init_jet
void init_jet(BJ *briefjet, const fjcore::PseudoJet &jet, int index)
Definition: fjcore.hh:1785
operator-
PseudoJet operator-(const PseudoJet &, const PseudoJet &)
Definition: fjcore.cc:3815
ClusterSequence::BriefJet::_jets_index
int _jets_index
Definition: fjcore.hh:1589
PseudoJet::T
@ T
Definition: fjcore.hh:596
ClusterSequence::Q
double Q() const
Definition: fjcore.hh:1418
ClusterSequenceStructure::ClusterSequenceStructure
ClusterSequenceStructure()
Definition: fjcore.hh:1335
SharedPtr::_get_container
__SharedCountingPtr * _get_container() const
Definition: fjcore.hh:389
ClusterSequence::jet_def
const JetDefinition & jet_def() const
Definition: fjcore.hh:1437
__inheritance_helper::check_sig
static __yes_type check_sig(D const volatile *, T)
DynamicNearestNeighbours
Definition: fjcore.cc:186
NNInfo::NNInfo
NNInfo(I *info)
Definition: fjcore.hh:1776
PseudoJetStructureBase::has_exclusive_subjets
virtual bool has_exclusive_subjets() const
Definition: fjcore.hh:511
JetDefinition::jet_finder
JetAlgorithm jet_finder() const
Definition: fjcore.hh:1148
PseudoJet::reset
void reset(double px, double py, double pz, double E)
Definition: fjcore.hh:795
JetDefinition::strategy
Strategy strategy() const
Definition: fjcore.hh:1151
JetDefinition::JetDefinition
JetDefinition(JetAlgorithm jet_algorithm_in, double R_in, double xtra_param_in, const Recombiner *recombiner_in, Strategy strategy_in=Best)
Definition: fjcore.hh:1102
PseudoJet::theta
double theta() const
Definition: fjcore.hh:583
ClusterSequenceStructure::object_in_jet
virtual bool object_in_jet(const PseudoJet &reference, const PseudoJet &jet) const FJCORE_OVERRIDE
Definition: fjcore.cc:2696
SelectorEtMin
Selector SelectorEtMin(double Etmin)
select objects with Et >= Etmin
Definition: fjcore.cc:4535
E_scheme
@ E_scheme
Definition: fjcore.hh:1053
LimitedWarning::LimitedWarning
LimitedWarning(int max_warn_in)
Definition: fjcore.hh:431
ClusterSequence::StructureType
ClusterSequenceStructure StructureType
Definition: fjcore.hh:1504
PseudoJetStructureBase::has_constituents
virtual bool has_constituents() const
Definition: fjcore.hh:509
ClusterSequence::_fastjet_banner_ostr
static std::ostream * _fastjet_banner_ostr
Definition: fjcore.hh:1509
n_tile_neighbours
const int n_tile_neighbours
Definition: fjcore.cc:839
N2PoorTiled
@ N2PoorTiled
Definition: fjcore.hh:1024
PseudoJet::has_partner
virtual bool has_partner(PseudoJet &partner) const
Definition: fjcore.cc:4001
Selector::scalar_pt_sum
double scalar_pt_sum(const std::vector< PseudoJet > &jets) const
Definition: fjcore.cc:4223
NNInfo< _NoInfo >::NNInfo
NNInfo()
Definition: fjcore.hh:1783
InternalError
Definition: fjcore.hh:483
ClusterSequence::_writeout_combinations
bool _writeout_combinations
Definition: fjcore.hh:1545
Selector::~Selector
virtual ~Selector()
Definition: fjcore.hh:900
ClusterSequenceStructure::description
virtual std::string description() const FJCORE_OVERRIDE
Definition: fjcore.hh:1340
PseudoJet::operator-=
PseudoJet & operator-=(const PseudoJet &)
Definition: fjcore.cc:3854
NNH::NNBJ::other_init
void other_init(int index_in)
Definition: fjcore.hh:1831
ClusterSequence::_Qtot
double _Qtot
Definition: fjcore.hh:1548
JetDefinition::plugin
const Plugin * plugin() const
Definition: fjcore.hh:1145
PseudoJet::unboost
PseudoJet & unboost(const PseudoJet &prest)
Definition: fjcore.cc:3894
Ntupliser_cfg.radius
dictionary radius
Definition: Ntupliser_cfg.py:35
NNH::briefjets
NNBJ * briefjets
Definition: fjcore.hh:1817
ClusterSequence::_extras
SharedPtr< Extras > _extras
Definition: fjcore.hh:1556
PseudoJet::reset_momentum_PtYPhiM
void reset_momentum_PtYPhiM(double pt, double y, double phi, double m=0.0)
Definition: fjcore.cc:3920
jmarExample.eta
eta
DeepAK8/ParticleNet tagging.
Definition: jmarExample.py:19
ClusterSequence::Tile::head
TiledJet * head
Definition: fjcore.hh:1626
ClusterSequence::_Line::_b
double _b
Definition: fjcore.hh:1539
ClusterSequence::_strategy
Strategy _strategy
Definition: fjcore.hh:1549
Error::~Error
virtual ~Error()
Definition: fjcore.hh:466
SharedPtr::use_count
long use_count() const
Definition: fjcore.hh:349
PtYPhiM
PseudoJet PtYPhiM(double pt, double y, double phi, double m=0.0)
Definition: fjcore.cc:3931
PseudoJet::pieces
virtual std::vector< PseudoJet > pieces() const
Definition: fjcore.cc:4053
LimitedWarning::warn
void warn(const std::string &warning)
Definition: fjcore.hh:433
PseudoJetStructureBase::exclusive_subjets_up_to
virtual std::vector< PseudoJet > exclusive_subjets_up_to(const PseudoJet &reference, int nsub) const
Definition: fjcore.cc:4148
genkt_for_passive_algorithm
@ genkt_for_passive_algorithm
Definition: fjcore.hh:1043
SharedPtr::__SharedCountingPtr
Definition: fjcore.hh:368
ClusterSequence::BriefJet
Definition: fjcore.hh:1586
SelectorRapPhiRange
Selector SelectorRapPhiRange(double rapmin, double rapmax, double phimin, double phimax)
Definition: fjcore.cc:4731
SelectorWorker::has_known_area
virtual bool has_known_area() const
Definition: fjcore.hh:891
PseudoJet::associated_cluster_sequence
const ClusterSequence * associated_cluster_sequence() const
Definition: fjcore.cc:3971
PseudoJet::exclusive_subjets_up_to
std::vector< PseudoJet > exclusive_subjets_up_to(int nsub) const
Definition: fjcore.cc:4031
cambridge_for_passive_algorithm
@ cambridge_for_passive_algorithm
Definition: fjcore.hh:1042
dot_product
double dot_product(const PseudoJet &a, const PseudoJet &b)
Definition: fjcore.hh:737
ClusterSequence::_deletes_self_when_unused
bool _deletes_self_when_unused
Definition: fjcore.hh:1553
JetFinder
JetAlgorithm JetFinder
Definition: fjcore.hh:1049
ClusterSequence::Tile::end_tiles
Tile ** end_tiles
Definition: fjcore.hh:1625
PseudoJet::boost
PseudoJet & boost(const PseudoJet &prest)
Definition: fjcore.cc:3879
JetDefinition::n_parameters_for_algorithm
static unsigned int n_parameters_for_algorithm(const JetAlgorithm jet_alg)
Definition: fjcore.cc:3445
PseudoJet::_E
double _E
Definition: fjcore.hh:714
PseudoJet::has_structure
bool has_structure() const
Definition: fjcore.cc:3984
ClusterSequenceStructure::has_parents
virtual bool has_parents(const PseudoJet &reference, PseudoJet &parent1, PseudoJet &parent2) const FJCORE_OVERRIDE
Definition: fjcore.cc:2693
NNH::merge_jets
void merge_jets(int iA, int iB, const PseudoJet &jet, int jet_index)
Definition: fjcore.hh:1883
Best
@ Best
Definition: fjcore.hh:1027
NNInfo
Definition: fjcore.hh:1773
BestFJ30
@ BestFJ30
Definition: fjcore.hh:1034
JetDefinition::DefaultRecombiner::description
virtual std::string description() const FJCORE_OVERRIDE
Definition: fjcore.cc:3490