30 #ifndef __FASTJET_GHOSTEDAREASPEC_HH__
31 #define __FASTJET_GHOSTEDAREASPEC_HH__
35 #include "fastjet/PseudoJet.hh"
36 #include "fastjet/internal/BasicRandom.hh"
37 #include "fastjet/Selector.hh"
38 #include "fastjet/LimitedWarning.hh"
41 #define STATIC_GENERATOR 1
43 FASTJET_BEGIN_NAMESPACE
47 const double def_ghost_maxrap = 6.0;
48 const int def_repeat = 1;
49 const double def_ghost_area = 0.01;
50 const double def_grid_scatter = 1.0;
51 const double def_pt_scatter = 0.1;
52 const double def_mean_ghost_pt = 1e-100;
66 _ghost_rap_offset(0.0),
67 _repeat (gas::def_repeat),
68 _ghost_area (gas::def_ghost_area),
69 _grid_scatter (gas::def_grid_scatter),
70 _pt_scatter (gas::def_pt_scatter),
71 _mean_ghost_pt(gas::def_mean_ghost_pt),
72 _fj2_placement(false) {_initialize();}
76 int repeat_in = gas::def_repeat,
77 double ghost_area_in = gas::def_ghost_area,
78 double grid_scatter_in = gas::def_grid_scatter,
79 double pt_scatter_in = gas::def_pt_scatter,
80 double mean_ghost_pt_in = gas::def_mean_ghost_pt
82 _ghost_maxrap(ghost_maxrap_in),
83 _ghost_rap_offset(0.0),
85 _ghost_area(ghost_area_in),
86 _grid_scatter(grid_scatter_in),
87 _pt_scatter(pt_scatter_in),
88 _mean_ghost_pt(mean_ghost_pt_in),
89 _fj2_placement(false) {_initialize();}
93 double ghost_maxrap_in,
94 int repeat_in = gas::def_repeat,
95 double ghost_area_in = gas::def_ghost_area,
96 double grid_scatter_in = gas::def_grid_scatter,
97 double pt_scatter_in = gas::def_pt_scatter,
98 double mean_ghost_pt_in = gas::def_mean_ghost_pt
100 _ghost_maxrap (0.5*(ghost_maxrap_in - ghost_minrap_in)),
101 _ghost_rap_offset(0.5*(ghost_maxrap_in + ghost_minrap_in)),
103 _ghost_area(ghost_area_in),
104 _grid_scatter(grid_scatter_in),
105 _pt_scatter(pt_scatter_in),
106 _mean_ghost_pt(mean_ghost_pt_in),
107 _fj2_placement(false) {_initialize();}
112 int repeat_in = gas::def_repeat,
113 double ghost_area_in = gas::def_ghost_area,
114 double grid_scatter_in = gas::def_grid_scatter,
115 double pt_scatter_in = gas::def_pt_scatter,
116 double mean_ghost_pt_in = gas::def_mean_ghost_pt
124 inline double ghost_etamax ()
const {
return _ghost_maxrap;}
125 inline double ghost_maxrap ()
const {
return _ghost_maxrap;}
126 inline double ghost_area ()
const {
return _ghost_area ;}
127 inline double grid_scatter ()
const {
return _grid_scatter;}
128 inline double pt_scatter ()
const {
return _pt_scatter ;}
129 inline double mean_ghost_pt()
const {
return _mean_ghost_pt ;}
130 inline int repeat ()
const {
return _repeat ;}
131 inline bool fj2_placement()
const {
return _fj2_placement;}
133 inline double kt_scatter ()
const {
return _pt_scatter ;}
134 inline double mean_ghost_kt()
const {
return _mean_ghost_pt ;}
137 inline double actual_ghost_area()
const {
return _actual_ghost_area;}
138 inline int n_ghosts()
const {
return _n_ghosts;}
141 inline void set_ghost_area (
double val) {_ghost_area = val; _initialize();}
142 inline void set_ghost_etamax (
double val) {_ghost_maxrap = val; _initialize();}
143 inline void set_ghost_maxrap (
double val) {_ghost_maxrap = val; _initialize();}
144 inline void set_grid_scatter (
double val) {_grid_scatter = val; }
145 inline void set_pt_scatter (
double val) {_pt_scatter = val; }
146 inline void set_mean_ghost_pt(
double val) {_mean_ghost_pt = val; }
147 inline void set_repeat (
int val) {_repeat = val; }
149 inline void set_kt_scatter (
double val) {_pt_scatter = val; }
150 inline void set_mean_ghost_kt(
double val) {_mean_ghost_pt = val; }
169 void set_fj2_placement(
bool val);
173 inline int nphi()
const {
return _nphi;}
174 inline int nrap()
const {
return _nrap;}
180 _random_generator.get_status(__iseed);}
188 _random_generator.set_status(__iseed);}
190 inline void checkpoint_random() {get_random_status(_random_checkpoint);}
191 inline void restore_checkpoint_random() {set_random_status(_random_checkpoint);}
194 std::string description()
const;
198 void add_ghosts(std::vector<PseudoJet> & )
const;
205 return _random_generator;}
210 double _ghost_maxrap;
211 double _ghost_rap_offset;
214 double _grid_scatter;
216 double _mean_ghost_pt;
222 double _actual_ghost_area, _dphi, _drap;
223 int _n_ghosts, _nphi, _nrap;
226 std::vector<int> _random_checkpoint;
227 static BasicRandom<double> _random_generator;
232 inline double _our_rand()
const {
return _random_generator();}
243 FASTJET_END_NAMESPACE
245 #endif // __FASTJET_GHOSTEDAREASPEC_HH__