32 #ifndef __FASTJET_GHOSTEDAREASPEC_HH__
33 #define __FASTJET_GHOSTEDAREASPEC_HH__
37 #include "fastjet/PseudoJet.hh"
38 #include "fastjet/internal/BasicRandom.hh"
39 #include "fastjet/Selector.hh"
40 #include "fastjet/LimitedWarning.hh"
41 #include "fastjet/internal/deprecated.hh"
44 #define STATIC_GENERATOR 1
46 FASTJET_BEGIN_NAMESPACE
50 const double def_ghost_maxrap = 6.0;
51 const int def_repeat = 1;
52 const double def_ghost_area = 0.01;
53 const double def_grid_scatter = 1.0;
54 const double def_pt_scatter = 0.1;
55 const double def_mean_ghost_pt = 1e-100;
69 _ghost_rap_offset(0.0),
70 _repeat (gas::def_repeat),
71 _ghost_area (gas::def_ghost_area),
72 _grid_scatter (gas::def_grid_scatter),
73 _pt_scatter (gas::def_pt_scatter),
74 _mean_ghost_pt(gas::def_mean_ghost_pt),
75 _fj2_placement(false) {_initialize();}
79 int repeat_in = gas::def_repeat,
80 double ghost_area_in = gas::def_ghost_area,
81 double grid_scatter_in = gas::def_grid_scatter,
82 double pt_scatter_in = gas::def_pt_scatter,
83 double mean_ghost_pt_in = gas::def_mean_ghost_pt
85 _ghost_maxrap(ghost_maxrap_in),
86 _ghost_rap_offset(0.0),
88 _ghost_area(ghost_area_in),
89 _grid_scatter(grid_scatter_in),
90 _pt_scatter(pt_scatter_in),
91 _mean_ghost_pt(mean_ghost_pt_in),
92 _fj2_placement(false) {_initialize();}
96 double ghost_maxrap_in,
97 int repeat_in = gas::def_repeat,
98 double ghost_area_in = gas::def_ghost_area,
99 double grid_scatter_in = gas::def_grid_scatter,
100 double pt_scatter_in = gas::def_pt_scatter,
101 double mean_ghost_pt_in = gas::def_mean_ghost_pt
103 _ghost_maxrap (0.5*(ghost_maxrap_in - ghost_minrap_in)),
104 _ghost_rap_offset(0.5*(ghost_maxrap_in + ghost_minrap_in)),
106 _ghost_area(ghost_area_in),
107 _grid_scatter(grid_scatter_in),
108 _pt_scatter(pt_scatter_in),
109 _mean_ghost_pt(mean_ghost_pt_in),
110 _fj2_placement(false) {_initialize();}
115 int repeat_in = gas::def_repeat,
116 double ghost_area_in = gas::def_ghost_area,
117 double grid_scatter_in = gas::def_grid_scatter,
118 double pt_scatter_in = gas::def_pt_scatter,
119 double mean_ghost_pt_in = gas::def_mean_ghost_pt
127 inline double ghost_rapmax ()
const {
return _ghost_maxrap;}
128 inline double ghost_maxrap ()
const {
return _ghost_maxrap;}
129 inline double ghost_etamax ()
const {
return _ghost_maxrap;}
130 inline double ghost_maxeta ()
const {
return _ghost_maxrap;}
131 inline double ghost_area ()
const {
return _ghost_area ;}
132 inline double grid_scatter ()
const {
return _grid_scatter;}
133 inline double pt_scatter ()
const {
return _pt_scatter ;}
134 inline double mean_ghost_pt()
const {
return _mean_ghost_pt ;}
135 inline int repeat ()
const {
return _repeat ;}
136 inline bool fj2_placement()
const {
return _fj2_placement;}
138 inline double kt_scatter ()
const {
return _pt_scatter ;}
139 inline double mean_ghost_kt()
const {
return _mean_ghost_pt ;}
142 inline double actual_ghost_area()
const {
return _actual_ghost_area;}
143 inline int n_ghosts()
const {
return _n_ghosts;}
146 inline void set_ghost_area (
double val) {_ghost_area = val; _initialize();}
147 inline void set_ghost_rapmax (
double val) {_ghost_maxrap = val; _initialize();}
148 inline void set_ghost_maxrap (
double val) {_ghost_maxrap = val; _initialize();}
149 inline void set_ghost_etamax (
double val) {_ghost_maxrap = val; _initialize();}
150 inline void set_ghost_maxeta (
double val) {_ghost_maxrap = val; _initialize();}
151 inline void set_grid_scatter (
double val) {_grid_scatter = val; }
152 inline void set_pt_scatter (
double val) {_pt_scatter = val; }
153 inline void set_mean_ghost_pt(
double val) {_mean_ghost_pt = val; }
154 inline void set_repeat (
int val) {_repeat = val; }
156 inline void set_kt_scatter (
double val) {_pt_scatter = val; }
157 inline void set_mean_ghost_kt(
double val) {_mean_ghost_pt = val; }
176 FASTJET_DEPRECATED_MSG(
"This is deprecated since we strongly recomment to use the new ghost placement instead")
177 void set_fj2_placement(
bool val);
181 inline
int nphi()
const {
return _nphi;}
182 inline int nrap()
const {
return _nrap;}
188 _random_generator.get_status(__iseed);}
196 _random_generator.set_status(__iseed);}
198 inline void checkpoint_random() {get_random_status(_random_checkpoint);}
199 inline void restore_checkpoint_random() {set_random_status(_random_checkpoint);}
202 std::string description()
const;
206 void add_ghosts(std::vector<PseudoJet> & )
const;
213 return _random_generator;}
218 double _ghost_maxrap;
219 double _ghost_rap_offset;
222 double _grid_scatter;
224 double _mean_ghost_pt;
230 double _actual_ghost_area, _dphi, _drap;
231 int _n_ghosts, _nphi, _nrap;
234 std::vector<int> _random_checkpoint;
235 static BasicRandom<double> _random_generator;
240 inline double _our_rand()
const {
return _random_generator();}
251 FASTJET_END_NAMESPACE
253 #endif // __FASTJET_GHOSTEDAREASPEC_HH__