Go to the documentation of this file.    1 #ifndef __JCYLINDER3D__ 
    2 #define __JCYLINDER3D__ 
   83       if (__begin != __end) {
 
   85         zmin = +std::numeric_limits<double>::max();
 
   86         zmax = -std::numeric_limits<double>::max();
 
   88         for (T i = __begin; i != __end; ++i) {
 
   89           if (i->getZ() < 
zmin) 
zmin = i->getZ();
 
   90           if (i->getZ() > 
zmax) 
zmax = i->getZ();
 
  234         return sqrt(R*R + dz*dz);
 
  270       double path[] = { 0.0, 0.0 };
 
  272       if (fabs(axis.
getDZ()) != 0.0) {
 
  281         for (
int i = 0; i != 2; ++i) {
 
  283           const double u = (Z[i] - axis.
getZ()) / axis.
getDZ();
 
  293       if (fabs(axis.
getDZ()) != 1.0) {
 
  297         const double x  = axis.
getX() - this->
getX();
 
  298         const double y  = axis.
getY() - this->
getY();
 
  299         const double dx = axis.
getDX();
 
  300         const double dy = axis.
getDY();
 
  303         const double a  =   (dx * dx +  dy * dy);
 
  304         const double b  = 2*(dx * x  +  dy * y);
 
  305         const double c  =   (x  * x  +  y  * y)  -  R * R;
 
  307         const double q  = b*b - 4*a*c;
 
  312             (-b - sqrt(q)) / (2*a),
 
  313             (-b + sqrt(q)) / (2*a)
 
  316           for (
int i = 0; i != 2; ++i) {
 
  318             const double z = axis.
getZ() + 
u[i] * axis.
getDZ();
 
  327       return std::make_pair(path[0], path[1]);
 
  340       in >> static_cast<JCircle2D&>(cylinder);
 
  341       in >> cylinder.
zmin >> cylinder.
zmax;
 
  356       out << static_cast<const JCircle2D&>(cylinder);
 
  358       out << cylinder.
zmin;
 
  360       out << cylinder.
zmax;
 
  375       in >> static_cast<JCircle2D&>(cylinder);
 
  376       in >> cylinder.
zmin >> cylinder.
zmax;
 
  391       out << static_cast<const JCircle2D&>(cylinder);
 
  392       out << cylinder.
zmin << cylinder.
zmax;
 
 
double getDZ() const
Get z direction.
 
JCylinder3D(T __begin, T __end)
Constructor.
 
void setZmax(const double zmax)
Set maximal z position.
 
Interface for binary input.
 
friend JWriter & operator<<(JWriter &out, const JCylinder3D &cylinder)
Write cylinder to output.
 
const JPosition2D & getPosition() const
Get position.
 
double getDistance(const JVector3D &pos) const
Get distance between cylinder wall and given position.
 
double getZmin() const
Get minimal z position.
 
std::pair< double, double > getIntersection(const JAxis3D &axis) const
Get intersection points of axis with cylinder.
 
Data structure for circle in two dimensions.
 
double getZ() const
Get z position.
 
friend std::ostream & operator<<(std::ostream &out, const JCylinder3D &cylinder)
Write cylinder to output stream.
 
double getVolume() const
Get volume.
 
bool is_inside(const JVector3D &pos) const
Check whether given point is inside cylinder.
 
JCylinder3D & add(const JVector3D &pos)
Add position.
 
double getRadius() const
Get radius.
 
JPosition2D()
Default constructor.
 
void addMargin(const double D)
Add (safety) margin.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
friend std::istream & operator>>(std::istream &in, JCylinder3D &cylinder)
Read cylinder from input stream.
 
double getDistanceSquared(const JVector3D &pos) const
Get square of distance between cylinder wall and given position.
 
Data structure for vector in three dimensions.
 
Data structure for position in three dimensions.
 
Interface for binary output.
 
double getDX() const
Get x direction.
 
double getDY() const
Get y direction.
 
JCylinder3D()
Default constructor.
 
bool is_inside(const JVector2D &pos) const
Check whether given point is inside circle.
 
friend JReader & operator>>(JReader &in, JCylinder3D &cylinder)
Read cylinder from input.
 
JVector2D & sub(const JVector2D &vector)
Subtract vector.
 
double getZmax() const
Get maximal z position.
 
JVector2D()
Default constructor.
 
double getY() const
Get y position.
 
JCylinder3D(const JCircle2D &circle, const double zmin, const double zmax)
Constructor.
 
double getX() const
Get x position.
 
Auxiliary classes and methods for 3D geometrical objects and operations.
 
void setZmin(const double zmin)
Set minimal z position.
 
double getLength() const
Get length.
 
double getX() const
Get x position.
 
double getY() const
Get y position.
 
JPosition3D getCenter() const
Get centre.
 
Data structure for vector in two dimensions.