46 for (const_iterator i = this->begin(); i != this->end(); ++i) {
48 const double x = dir.
getDot(*i);
134 double thetaMin = theta.first;
135 double thetaMax = theta.second;
137 if (thetaMin < 0.0) { thetaMin = 0.0; }
138 if (thetaMin >
PI) { thetaMin =
PI; }
139 if (thetaMax < 0.0) { thetaMax = 0.0; }
140 if (thetaMax >
PI) { thetaMax =
PI; }
142 if (thetaMax > thetaMin) {
146 const double rad = thetaMax - thetaMin;
147 const double bin = rad / floor(rad/(1.4*grid) + 0.5);
148 const double unit = 2.0 * sqrt(1.0 - cos(grid));
150 for (
double theta = thetaMin; theta < thetaMax + 0.5*bin; theta += bin) {
154 if (theta > 0.5*bin &&
PI - theta > 0.5*bin)
155 step =
PI / floor(
PI*sin(theta)/unit + 0.5);
159 for (
double phi = 0.0; phi < 2.0*
PI - 0.5*step; phi += step) {
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Data structure for angles in three dimensions.
double getDot(const JAngle3D &angle) const
Get dot product.
Data structure for direction in three dimensions.
Direction set covering (part of) solid angle.
JOmega3D()
Default constructor.
void configure(const JAngle3D &dir, const range_type &theta, const double grid)
Configure direction set.
JOmega3D(const JAngle3D &dir, const range_type &theta, const double grid)
Constructor.
JOmega3D(const JAngle3D &dir)
Constructor.
JOmega3D(const double grid)
Constructor.
Auxiliary classes and methods for 3D geometrical objects and operations.
static const double PI
Mathematical constants.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Base class for direction set.
std::pair< double, double > range_type
int find(const JAngle3D &dir) const
Get index of direction closest to given direction.