33#include "fastjet/RectangularGrid.hh"
37FASTJET_BEGIN_NAMESPACE
40RectangularGrid::RectangularGrid()
41 : _ymax(-1.0), _ymin(1.0), _requested_drap(-1.0), _requested_dphi(-1.0) {
60 double y_minus_ymin = p.
rap() - _ymin;
61 if (y_minus_ymin < 0)
return -1;
62 int iy = int(y_minus_ymin * _inverse_dy);
63 if (iy >= _ny)
return -1;
72 int iphi = int( p.
phi() * _inverse_dphi );
73 if (iphi == _nphi) iphi = 0;
75 return iy*_nphi + iphi;
80void RectangularGrid::_setup_grid() {
82 assert(_ymax > _ymin);
83 assert(_requested_drap > 0);
84 assert(_requested_dphi > 0);
86 double ny_double = (_ymax-_ymin) / _requested_drap;
87 _ny = max(
int(ny_double+0.5),1);
88 _dy = (_ymax-_ymin) / _ny;
89 _inverse_dy = _ny/(_ymax-_ymin);
91 _nphi = int (twopi / _requested_dphi + 0.5);
92 _dphi = twopi / _nphi;
93 _inverse_dphi = _nphi/twopi;
96 assert(_ny >= 1 && _nphi >= 1);
98 _ntotal = _nphi * _ny;
100 _cell_area = _dy * _dphi;
104 if (_tile_selector.
worker()) {
107 for (
int i = 0; i <
n_tiles(); i++) {
108 int iphi = i % _nphi;
109 int irap = i / _nphi;
110 double phi = (iphi + 0.5)*_dphi;
111 double rap = (irap + 0.5)*_dy + _ymin;
112 _is_good[i] = _tile_selector.
pass(
PtYPhiM(1.0, rap, phi));
113 if (_is_good[i]) _ngood++;
123 return "Uninitialised rectangular grid";
126 oss <<
"rectangular grid with rapidity extent " << _ymin <<
" < rap < " << _ymax
127 <<
", tile size drap x dphi = " << _dy <<
" x " << _dphi;
129 if (_tile_selector.
worker()) {
130 oss <<
", good tiles are those that pass selector " << _tile_selector.
description();
Class to contain pseudojets, including minimal information of use to jet-clustering routines.
double rap() const
returns the rapidity or some large value when the rapidity is infinite
double phi() const
returns phi (in the range 0..2pi)
virtual int tile_index(const PseudoJet &p) const override
returns the index of the tile in which p is located, or -1 if p is outside the tiling region
virtual int n_tiles() const override
returns the total number of tiles in the tiling; valid tile indices run from 0 ......
virtual std::string description() const override
returns a textual description of the grid
virtual bool is_initialised() const override
returns true if the grid is in a suitably initialised state
const SharedPtr< SelectorWorker > & worker() const
returns a (reference to) the underlying worker's shared pointer
bool pass(const PseudoJet &jet) const
return true if the jet passes the selection
std::string description() const
returns a textual description of the selector
PseudoJet PtYPhiM(double pt, double y, double phi, double m)
return a pseudojet with the given pt, y, phi and mass