18 namespace JGEOMETRY3D {}
19 namespace JPP {
using namespace JGEOMETRY3D; }
21 namespace JGEOMETRY3D {
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) {
Data structure for angles in three dimensions.
JOmega3D(const JAngle3D &dir, const range_type &theta, const double grid)
Constructor.
JOmega3D()
Default constructor.
Data structure for direction in three dimensions.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
double getDot(const JAngle3D &angle) const
Get dot product.
Direction set covering (part of) solid angle.
std::pair< double, double > range_type
JOmega3D(const double grid)
Constructor.
static const double PI
Mathematical constants.
int find(const JAngle3D &dir) const
Get index of direction closest to given direction.
then usage $script[distance] fi case set_variable R
void configure(const JAngle3D &dir, const range_type &theta, const double grid)
Configure direction set.
Base class for direction set.
JOmega3D(const JAngle3D &dir)
Constructor.