Logo ROOT   6.16/01
Reference Guide
TGeoParaboloid.h
Go to the documentation of this file.
1// @(#)root/geom:$Id$
2// Author: Mihaela Gheata 20/06/04
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGeoParaboloid
13#define ROOT_TGeoParaboloid
14
15#include "TGeoBBox.h"
16
18{
19private:
20 Double_t fRlo; // radius at z=-dz
21 Double_t fRhi; // radius at z=+dz
22 Double_t fDz; // range on Z axis [-dz, dz]
23 Double_t fA; // quadratic coeff.
24 Double_t fB; // Z value of parabola at x=y=0
25public:
26 // constructors
29 TGeoParaboloid(const char *name, Double_t rlo, Double_t rhi, Double_t dz);
30 TGeoParaboloid(Double_t *params);
31 // destructor
32 virtual ~TGeoParaboloid();
33 // methods
34 virtual Double_t Capacity() const;
35 virtual void ComputeBBox();
36 virtual void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm);
37 virtual void ComputeNormal_v(const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize);
38 virtual Bool_t Contains(const Double_t *point) const;
39 virtual void Contains_v(const Double_t *points, Bool_t *inside, Int_t vecsize) const;
40 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
41 Double_t DistToParaboloid(const Double_t *point, const Double_t *dir, Bool_t in) const;
42 virtual Double_t DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact=1,
43 Double_t step=TGeoShape::Big(), Double_t *safe=0) const;
44 virtual void DistFromInside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const;
45 virtual Double_t DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact=1,
46 Double_t step=TGeoShape::Big(), Double_t *safe=0) const;
47 virtual void DistFromOutside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const;
48 virtual TGeoVolume *Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv,
49 Double_t start, Double_t step);
50 virtual const TBuffer3D &GetBuffer3D(Int_t reqSections, Bool_t localFrame) const;
51 Double_t GetRlo() const {return fRlo;}
52 Double_t GetRhi() const {return fRhi;}
53 Double_t GetDz() const {return fDz;}
54
55 virtual void GetBoundingCylinder(Double_t *param) const;
56 virtual TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const;
57 virtual void GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols) const;
58 virtual Int_t GetNmeshVertices() const;
59 virtual Bool_t GetPointsOnSegments(Int_t /*npoints*/, Double_t * /*array*/) const {return kFALSE;}
60 virtual void InspectShape() const;
61 virtual Bool_t IsCylType() const {return kTRUE;}
62 virtual TBuffer3D *MakeBuffer3D() const;
63 virtual Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const;
64 virtual void Safety_v(const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const;
65 virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
67 virtual void SetDimensions(Double_t *param);
68 virtual void SetPoints(Double_t *points) const;
69 virtual void SetPoints(Float_t *points) const;
70 virtual void SetSegsAndPols(TBuffer3D &buff) const;
71 virtual void Sizeof3D() const;
72
73 ClassDef(TGeoParaboloid, 1) // paraboloid class
74
75};
76
77
78#endif
int Int_t
Definition: RtypesCore.h:41
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:324
point * points
Definition: X3DBuffer.c:22
Generic 3D primitive description class.
Definition: TBuffer3D.h:18
Box class.
Definition: TGeoBBox.h:18
Geometrical transformation package.
Definition: TGeoMatrix.h:41
Paraboloid class.
virtual void DistFromOutside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const
Compute distance from array of input points having directions specified by dirs. Store output in dist...
Double_t GetDz() const
virtual TGeoShape * GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const
in case shape has some negative parameters, these has to be computed in order to fit the mother
virtual Bool_t Contains(const Double_t *point) const
test if point is inside the elliptical tube
Double_t DistToParaboloid(const Double_t *point, const Double_t *dir, Bool_t in) const
Compute distance from a point to the parabola given by: z = a*rsq + b; rsq = x*x+y*y
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const
Computes the closest distance from given point to this shape.
virtual TGeoVolume * Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)
Divide the paraboloid along one axis.
Double_t GetRhi() const
virtual const TBuffer3D & GetBuffer3D(Int_t reqSections, Bool_t localFrame) const
Fills a static 3D buffer and returns a reference.
virtual void GetBoundingCylinder(Double_t *param) const
Fill vector param[4] with the bounding cylinder parameters.
virtual void ComputeNormal_v(const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize)
Compute the normal for an array o points so that norm.dot.dir is positive Input: Arrays of point coor...
virtual void SetSegsAndPols(TBuffer3D &buff) const
Fill TBuffer3D structure for segments and polygons.
virtual void GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols) const
Returns numbers of vertices, segments and polygons composing the shape mesh.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
compute closest distance from point px,py to each vertex
virtual void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm)
Compute normal to closest surface from POINT.
virtual void SetPoints(Double_t *points) const
Create paraboloid mesh points.
virtual Bool_t IsCylType() const
void SetParaboloidDimensions(Double_t rlo, Double_t rhi, Double_t dz)
Set paraboloid dimensions.
virtual Double_t Capacity() const
Computes capacity of the shape in [length^3].
virtual TBuffer3D * MakeBuffer3D() const
Creates a TBuffer3D describing this shape.
virtual Int_t GetNmeshVertices() const
Returns number of vertices on the paraboloid mesh.
virtual void Contains_v(const Double_t *points, Bool_t *inside, Int_t vecsize) const
Check the inside status for each of the points in the array.
Double_t GetRlo() const
virtual Double_t DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const
compute distance from inside point to surface of the paraboloid
virtual void SetDimensions(Double_t *param)
Set paraboloid dimensions starting from an array.
virtual Double_t DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=0) const
compute distance from outside point to surface of the paraboloid and safe distance
virtual void DistFromInside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const
Compute distance from array of input points having directions specified by dirs. Store output in dist...
virtual void ComputeBBox()
compute bounding box of the tube
virtual void Sizeof3D() const
virtual ~TGeoParaboloid()
destructor
TGeoParaboloid()
Dummy constructor.
virtual void InspectShape() const
print shape parameters
virtual Bool_t GetPointsOnSegments(Int_t, Double_t *) const
Fills array with n random points located on the line segments of the shape mesh.
virtual void Safety_v(const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const
Compute safe distance from each of the points in the input array.
Base abstract class for all shapes.
Definition: TGeoShape.h:26
static Double_t Big()
Definition: TGeoShape.h:88
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition: TGeoVolume.h:53