FastJet  3.4.0
ClusterSequence1GhostPassiveArea.hh
1 //FJSTARTHEADER
2 // $Id$
3 //
4 // Copyright (c) 2005-2021, Matteo Cacciari, Gavin P. Salam and Gregory Soyez
5 //
6 //----------------------------------------------------------------------
7 // This file is part of FastJet.
8 //
9 // FastJet is free software; you can redistribute it and/or modify
10 // it under the terms of the GNU General Public License as published by
11 // the Free Software Foundation; either version 2 of the License, or
12 // (at your option) any later version.
13 //
14 // The algorithms that underlie FastJet have required considerable
15 // development. They are described in the original FastJet paper,
16 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
17 // FastJet as part of work towards a scientific publication, please
18 // quote the version you use and include a citation to the manual and
19 // optionally also to hep-ph/0512210.
20 //
21 // FastJet is distributed in the hope that it will be useful,
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 // GNU General Public License for more details.
25 //
26 // You should have received a copy of the GNU General Public License
27 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.
28 //----------------------------------------------------------------------
29 //FJENDHEADER
30 
31 #ifndef __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__
32 #define __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__
33 
34 
35 #include "fastjet/PseudoJet.hh"
36 #include "fastjet/ClusterSequenceAreaBase.hh"
37 #include "fastjet/ClusterSequenceActiveArea.hh"
38 #include<iostream>
39 #include<vector>
40 
41 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
42 
43 //using namespace std;
44 
45 /// @ingroup sec_area_classes
46 /// \class ClusterSequence1GhostPassiveArea
47 /// Like ClusterSequence with computation of the passive jet area by
48 /// adding a single ghost
49 ///
50 /// Class that behaves essentially like ClusterSequence except
51 /// that it also provides access to the area of a jet (which
52 /// will be a random quantity... Figure out what to do about seeds
53 /// later...)
54 ///
55 /// This class should not be used directly. Rather use
56 /// ClusterSequenceArea
58 public:
59 
61 
62  /// constructor based on JetDefinition and 1GhostPassiveAreaSpec
63  template<class L> ClusterSequence1GhostPassiveArea
64  (const std::vector<L> & pseudojets,
65  const JetDefinition & jet_def_in,
66  const GhostedAreaSpec & area_spec,
67  const bool & writeout_combinations = false) ;
68 
69  /// return an estimate for the number of empty jets -- one uses the
70  /// AreaBase one rather than the ActiveArea one (which for which we
71  /// do not have the information).
72  virtual double n_empty_jets(const Selector & selector) const FASTJET_OVERRIDE{
73  return ClusterSequenceAreaBase::n_empty_jets(selector);
74  }
75 
76 protected:
77  /// does the initialisation and running specific to the passive
78  /// areas class
79  void _initialise_and_run_1GPA (const JetDefinition & jet_def_in,
80  const GhostedAreaSpec & area_spec,
81  const bool & writeout_combinations = false);
82 
83 private:
84 
85  void _run_1GPA(const GhostedAreaSpec & area_spec);
86 };
87 
88 
89 
90 
91 template<class L> ClusterSequence1GhostPassiveArea::ClusterSequence1GhostPassiveArea
92 (const std::vector<L> & pseudojets,
93  const JetDefinition & jet_def_in,
94  const GhostedAreaSpec & area_spec,
95  const bool & writeout_combinations) {
96 
97  // transfer the initial jets (type L) into our own array
98  _transfer_input_jets(pseudojets);
99 
100  // run the clustering for passive areas
101  _initialise_and_run_1GPA(jet_def_in, area_spec, writeout_combinations);
102 
103 }
104 
105 
106 
107 FASTJET_END_NAMESPACE
108 
109 #endif // __FASTJET_CLUSTERSEQUENCE1GHOSTPASSIVEAREA_HH__
Like ClusterSequence with computation of the passive jet area by adding a single ghost.
virtual double n_empty_jets(const Selector &selector) const override
return an estimate for the number of empty jets – one uses the AreaBase one rather than the ActiveAre...
Like ClusterSequence with computation of the active jet area.
Parameters to configure the computation of jet areas using ghosts.
class that is intended to hold a full definition of the jet clusterer
Class that encodes information about cuts and other selection criteria that can be applied to PseudoJ...
Definition: Selector.hh:149