22 int main(
int argc,
char**argv)
33 JParser<> zap(
"Example program to test intersection of straight line with cylinder.");
42 catch(
const exception &error) {
43 FATAL(error.what() << endl);
46 gRandom->SetSeed(seed);
54 int number_of_errors = 0;
55 int number_of_events = 0;
57 for (
int i = 0; i != numberOfEvents; ++i) {
61 const double x = gRandom->Uniform(-1.0, +1.0);
62 const double y = gRandom->Uniform(-1.0, +1.0);
63 const double z = gRandom->Uniform(-1.0, +1.0);
69 gRandom->Sphere(dx, dy, dz, 1.0);
76 make_pair(intersection.first - 1*precision,
false),
77 make_pair(2*precision,
true),
78 make_pair(intersection.second - intersection.first - 2*precision,
true),
79 make_pair(2*precision,
false)
86 const int N =
sizeof(path)/
sizeof(path[0]);
90 for (
int i = 0; i != N; ++i) {
92 axis.
move(path[i].first);
103 for (
int i = 0; i != N; ++i) {
104 cout << endl <<
"point[" << noshowpos << setw(1) << i <<
"] = "
105 << showpos <<
FIXED(9,5) << pos[i].
getX() <<
' '
106 << showpos <<
FIXED(9,5) << pos[i].
getY() <<
' '
107 << showpos <<
FIXED(9,5) << pos[i].
getZ() <<
' '
109 << (cylinder.
getDistance(pos[i]) < 1e-3*precision ?
"in" :
"out") << endl;
119 NOTICE(
"Number of errors: " << number_of_errors <<
" out of " << number_of_events <<
" events." << endl);
121 ASSERT(number_of_events > 0);
122 ASSERT(number_of_errors == 0);
int main(int argc, char **argv)
General purpose messaging.
#define DEBUG(A)
Message macros.
#define ASSERT(A,...)
Assert macro.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
I/O formatting auxiliaries.
Data structure for circle in two dimensions.
Data structure for vector in two dimensions.
void move(const double step)
Move vertex along this axis.
intersection_type getIntersection(const JAxis3D &axis) const
Get intersection points of axis with cylinder.
double getDistance(const JVector3D &pos) const
Get distance between cylinder wall and given position.
const JPosition3D & getPosition() const
Get position.
Data structure for vector in three dimensions.
double getY() const
Get y position.
double getZ() const
Get z position.
double getX() const
Get x position.
Data structure for normalised vector in three dimensions.
Utility class to parse command line options.
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
Auxiliary data structure for floating point format specification.