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"
43 #define STATIC_GENERATOR 1
45 FASTJET_BEGIN_NAMESPACE
49 const double def_ghost_maxrap = 6.0;
50 const int def_repeat = 1;
51 const double def_ghost_area = 0.01;
52 const double def_grid_scatter = 1.0;
53 const double def_pt_scatter = 0.1;
54 const double def_mean_ghost_pt = 1e-100;
68 _ghost_rap_offset(0.0),
69 _repeat (gas::def_repeat),
70 _ghost_area (gas::def_ghost_area),
71 _grid_scatter (gas::def_grid_scatter),
72 _pt_scatter (gas::def_pt_scatter),
73 _mean_ghost_pt(gas::def_mean_ghost_pt),
74 _fj2_placement(false) {_initialize();}
78 int repeat_in = gas::def_repeat,
79 double ghost_area_in = gas::def_ghost_area,
80 double grid_scatter_in = gas::def_grid_scatter,
81 double pt_scatter_in = gas::def_pt_scatter,
82 double mean_ghost_pt_in = gas::def_mean_ghost_pt
84 _ghost_maxrap(ghost_maxrap_in),
85 _ghost_rap_offset(0.0),
87 _ghost_area(ghost_area_in),
88 _grid_scatter(grid_scatter_in),
89 _pt_scatter(pt_scatter_in),
90 _mean_ghost_pt(mean_ghost_pt_in),
91 _fj2_placement(false) {_initialize();}
95 double ghost_maxrap_in,
96 int repeat_in = gas::def_repeat,
97 double ghost_area_in = gas::def_ghost_area,
98 double grid_scatter_in = gas::def_grid_scatter,
99 double pt_scatter_in = gas::def_pt_scatter,
100 double mean_ghost_pt_in = gas::def_mean_ghost_pt
102 _ghost_maxrap (0.5*(ghost_maxrap_in - ghost_minrap_in)),
103 _ghost_rap_offset(0.5*(ghost_maxrap_in + ghost_minrap_in)),
105 _ghost_area(ghost_area_in),
106 _grid_scatter(grid_scatter_in),
107 _pt_scatter(pt_scatter_in),
108 _mean_ghost_pt(mean_ghost_pt_in),
109 _fj2_placement(false) {_initialize();}
114 int repeat_in = gas::def_repeat,
115 double ghost_area_in = gas::def_ghost_area,
116 double grid_scatter_in = gas::def_grid_scatter,
117 double pt_scatter_in = gas::def_pt_scatter,
118 double mean_ghost_pt_in = gas::def_mean_ghost_pt
126 inline double ghost_rapmax ()
const {
return _ghost_maxrap;}
127 inline double ghost_maxrap ()
const {
return _ghost_maxrap;}
128 inline double ghost_etamax ()
const {
return _ghost_maxrap;}
129 inline double ghost_maxeta ()
const {
return _ghost_maxrap;}
130 inline double ghost_area ()
const {
return _ghost_area ;}
131 inline double grid_scatter ()
const {
return _grid_scatter;}
132 inline double pt_scatter ()
const {
return _pt_scatter ;}
133 inline double mean_ghost_pt()
const {
return _mean_ghost_pt ;}
134 inline int repeat ()
const {
return _repeat ;}
135 inline bool fj2_placement()
const {
return _fj2_placement;}
137 inline double kt_scatter ()
const {
return _pt_scatter ;}
138 inline double mean_ghost_kt()
const {
return _mean_ghost_pt ;}
141 inline double actual_ghost_area()
const {
return _actual_ghost_area;}
142 inline int n_ghosts()
const {
return _n_ghosts;}
145 inline void set_ghost_area (
double val) {_ghost_area = val; _initialize();}
146 inline void set_ghost_rapmax (
double val) {_ghost_maxrap = val; _initialize();}
147 inline void set_ghost_maxrap (
double val) {_ghost_maxrap = val; _initialize();}
148 inline void set_ghost_etamax (
double val) {_ghost_maxrap = val; _initialize();}
149 inline void set_ghost_maxeta (
double val) {_ghost_maxrap = val; _initialize();}
150 inline void set_grid_scatter (
double val) {_grid_scatter = val; }
151 inline void set_pt_scatter (
double val) {_pt_scatter = val; }
152 inline void set_mean_ghost_pt(
double val) {_mean_ghost_pt = val; }
153 inline void set_repeat (
int val) {_repeat = val; }
155 inline void set_kt_scatter (
double val) {_pt_scatter = val; }
156 inline void set_mean_ghost_kt(
double val) {_mean_ghost_pt = val; }
175 void set_fj2_placement(
bool val);
179 inline int nphi()
const {
return _nphi;}
180 inline int nrap()
const {
return _nrap;}
186 _random_generator.get_status(__iseed);}
194 _random_generator.set_status(__iseed);}
196 inline void checkpoint_random() {get_random_status(_random_checkpoint);}
197 inline void restore_checkpoint_random() {set_random_status(_random_checkpoint);}
200 std::string description()
const;
204 void add_ghosts(std::vector<PseudoJet> & )
const;
211 return _random_generator;}
216 double _ghost_maxrap;
217 double _ghost_rap_offset;
220 double _grid_scatter;
222 double _mean_ghost_pt;
228 double _actual_ghost_area, _dphi, _drap;
229 int _n_ghosts, _nphi, _nrap;
232 std::vector<int> _random_checkpoint;
233 static BasicRandom<double> _random_generator;
238 inline double _our_rand()
const {
return _random_generator();}
249 FASTJET_END_NAMESPACE
251 #endif // __FASTJET_GHOSTEDAREASPEC_HH__