31#ifndef __FASTJET_RANGEDEFINITION_HH__
32#define __FASTJET_RANGEDEFINITION_HH__
34#include "fastjet/PseudoJet.hh"
35#include "fastjet/Error.hh"
36#include "fastjet/LimitedWarning.hh"
37#include "fastjet/internal/deprecated.hh"
42FASTJET_BEGIN_NAMESPACE
54 FASTJET_DEPRECATED_MSG(
"RangeDefinition is deprecated since FastJet 3.0. Use the Selector mechanism instead",
58 FASTJET_DEPRECATED_MSG(
"RangeDefinition is deprecated since FastJet 3.0. Use the Selector mechanism instead",
60 assert ( rapmax > 0.0 );
65 _total_area = 2.0*rapmax*twopi;
66 _phispan = _phimax-_phimin; }
74 double phimin = 0.0,
double phimax = twopi) {
76 assert ( rapmin < rapmax);
77 assert ( phimin < phimax);
78 assert ( phimin > -twopi );
79 assert ( phimax < 2*twopi);
84 if (_phimax-_phimin > twopi)
85 _total_area = (_rapmax - _rapmin)*twopi;
87 _total_area = (_rapmax - _rapmin)*(_phimax - _phimin);
88 _phispan = _phimax-_phimin; }
108 if (! is_localizable() ) {
109 std::ostringstream err;
110 err << description() <<
111 "\nThis range is not localizable. set_position() should not be used on it.";
112 throw Error(err.str());
121 set_position(jet.
rap(),jet.
phi());
126 double rap = jet.
rap();
127 double phi = jet.
phi();
128 return is_in_range(rap,phi);
133 double dphi=phi-_phimin;
134 if (dphi >= twopi) dphi -= twopi;
135 if (dphi < 0) dphi += twopi;
136 return ( rap >= _rapmin &&
149 virtual inline double area()
const {
return _total_area; }
153 std::ostringstream ostr;
154 ostr <<
"Range: " << _rapmin <<
" <= y <= " << _rapmax <<
", "
155 << _phimin <<
" <= phi <= " << _phimax ;
166 void _numerical_total_area(
double rapmax,
int npoints) ;
167 double _rapjet,_phijet;
170 double _rapmin,_rapmax,_phimin,_phimax,_phispan;
179 void _warn_deprecated()
const;
base class corresponding to errors that can be thrown by FastJet
class to provide facilities for giving warnings up to some maximum number of times and to provide glo...
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)
class for holding a range definition specification, given by limits on rapidity and azimuth.
virtual bool is_in_range(double rap, double phi) const
return bool according to whether a (rap,phi) point is in range
RangeDefinition(double rapmin, double rapmax, double phimin=0.0, double phimax=twopi)
constructor for a range definition given by rapmin <= y <= rapmax, phimin <= phi <= phimax
bool is_in_range(const PseudoJet &jet) const
return bool according to whether the jet is within the given range
virtual bool is_localizable() const
returns true if the range is localizable (i.e.
virtual double area() const
area of the range region
virtual void get_rap_limits(double &rapmin, double &rapmax) const
return the minimal and maximal rapidity of this range; remember to replace this if you write a derive...
RangeDefinition(double rapmax)
constructor for a range definition given by |y|<rapmax
virtual std::string description() const
textual description of range
RangeDefinition()
default constructor
void set_position(const double &rap, const double &phi)
place the range on the rap-phi position
virtual ~RangeDefinition()
destructor does nothing
void set_position(const PseudoJet &jet)
place the range on the jet position