18 namespace JGEOMETRY3D {}
19 namespace JPP {
using namespace JGEOMETRY3D; }
21 namespace JGEOMETRY3D {
44 for (const_iterator i = this->begin(); i != this->end(); ++i) {
46 const double x = dir.
getDot(*i);
132 double thetaMin = theta.getLowerLimit();
133 double thetaMax = theta.getUpperLimit();
135 if (thetaMin < 0.0) { thetaMin = 0.0; }
136 if (thetaMin >
PI) { thetaMin =
PI; }
137 if (thetaMax < 0.0) { thetaMax = 0.0; }
138 if (thetaMax >
PI) { thetaMax =
PI; }
140 if (thetaMax > thetaMin) {
144 const double rad = thetaMax - thetaMin;
145 const double bin = rad / floor(rad/(1.4*grid) + 0.5);
146 const double unit = 2.0 * sqrt(1.0 - cos(grid));
148 for (
double theta = thetaMin; theta < thetaMax + 0.5*bin; theta += bin) {
152 if (theta > 0.5*bin &&
PI - theta > 0.5*bin)
153 step =
PI / floor(
PI*sin(theta)/unit + 0.5);
157 for (
double phi = 0.0; phi < 2.0*
PI - 0.5*step; phi += step) {
Data structure for angles in three dimensions.
void configure(const JAngle3D &dir, const JAngleRange &theta, const double grid)
Configure direction set.
JOmega3D(const JAngle3D &dir, const JAngleRange &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.
JOmega3D(const double grid)
Constructor.
int find(const JAngle3D &dir) const
Get index of direction closest to given direction.
then usage $script[distance] fi case set_variable R
Base class for direction set.
JOmega3D(const JAngle3D &dir)
Constructor.