199 Error(
"ctor",
"Composite %s: cannot parse expression: %s", name, expression);
231 Error(
"ctor",
"Composite shape %s has null node", name);
329 Error(
"Divide",
"Composite shapes cannot be divided");
349 printf(
" Bounding box:\n");
368 Error(
"MakeNode",
"parser error");
372 Warning(
"MakeNode",
"no geometrical transformation allowed at this level");
375 Error(
"MakeNode",
"Expression has no boolean operation");
399 if (!painter || !viewer)
return kFALSE;
414 paintComponents = viewer->
OpenComposite(buffer, &addChildren);
421 if (preferLocal) matrix->
Clear();
423 if (preferLocal) *matrix = backup;
492 out <<
" TGeoShape *" <<
GetPointerName() <<
" = new TGeoCompositeShape(\"" <<
GetName() <<
"\", pBoolNode);" << std::endl;
526 if (!
fNode)
return 0;
537 for (
Int_t i=0; i<vecsize; i++) inside[i] =
Contains(&points[3*i]);
555 for (
Int_t i=0; i<vecsize; i++) dists[i] =
DistFromInside(&points[3*i], &dirs[3*i], 3, step[i]);
563 for (
Int_t i=0; i<vecsize; i++) dists[i] =
DistFromOutside(&points[3*i], &dirs[3*i], 3, step[i]);
573 for (
Int_t i=0; i<vecsize; i++) safe[i] =
Safety(&points[3*i], inside[i]);
virtual void CloseComposite()=0
virtual Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const
computes the closest distance from given point to this shape, according to option.
virtual const char * GetTitle() const
Returns title of object.
virtual TGeoVolume * Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)
Divide all range of iaxis in range/step cells.
virtual Int_t GetNmeshVertices() const
Return number of vertices of the mesh representation.
Random number generator class based on M.
void MakeNode(const char *expression)
Make a booleann node according to the top level boolean operation of expression.
virtual Double_t Rndm(Int_t i=0)
Machine independent random number generator.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual Bool_t OpenComposite(const TBuffer3D &buffer, Bool_t *addChildren=0)=0
virtual void SetName(const char *name)
Change (i.e.
virtual Bool_t PaintComposite(Option_t *option="") const
Paint this composite shape into the current 3D viewer Returns bool flag indicating if the caller shou...
virtual Int_t GetNpoints()=0
TGeoShape * GetLeftShape() const
void RegisterYourself()
Register the shape and all components to TGeoManager class.
virtual void Sizeof3D() const
Register size of this 3D object.
TObjArray * GetListOfShapes() const
virtual Double_t DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=0, Double_t *safe=0) const =0
static Int_t Parse(const char *expr, TString &expr1, TString &expr2, TString &expr3)
Parse a string boolean expression and do a syntax check.
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 outside of this composite shape.
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 box.
static UInt_t GetCSLevel()
Return CS level.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
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 this composite shape.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
const char * Data() const
virtual void ClearThreadData() const
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
virtual void Paint(Option_t *option)
Special schema for feeding the 3D buffers to the painter client.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
TGeoMatrix * GetRightMatrix() const
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 specisied by dirs. Store output in dist...
Abstract 3D shapes viewer.
static void IncCSLevel()
Increment CS level.
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 void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void SetPoints(Double_t *points) const
create points for a composite shape
virtual void CreateThreadData(Int_t nthreads)
void Clear(Option_t *option="")
clear the data for this matrix
virtual void ComputeBBox(Double_t &dx, Double_t &dy, Double_t &dz, Double_t *origin)=0
virtual const char * ClassName() const
Returns name of class to which the object belongs.
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...
Bool_t TestBit(UInt_t f) const
virtual void RegisterYourself()
Register the matrix in the current manager, which will become the owner.
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.
void CreateThreadData(Int_t nthreads)
Create thread data for n threads max.
Generic 3D primitive description class.
virtual Bool_t Contains(const Double_t *point) const
Tests if point is inside the shape.
TGeoMatrix * GetLeftMatrix() const
virtual void InspectShape() const
print shape parameters
R__EXTERN TRandom * gRandom
TObjArray * GetListOfMatrices() const
virtual const char * GetName() const
Get the shape name.
static UInt_t DecCSLevel()
Decrement CS level.
TGeoShape * GetRightShape() const
virtual Double_t Capacity() const
Computes capacity of this shape [length^3] by sampling with 1% error.
virtual Bool_t Contains(const Double_t *point) const =0
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 specisied by dirs. Store output in dist...
virtual void InspectShape() const
Prints shape parameters.
virtual void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm)
Computes normal vector in POINT to the composite shape.
virtual Bool_t PreferLocalFrame() const =0
R__EXTERN TGeoManager * gGeoManager
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute closest distance from point px,py to each corner.
virtual void FillBuffer3D(TBuffer3D &buffer, Int_t reqSections, Bool_t localFrame) const
Fills the supplied buffer, with sections in desired frame See TBuffer3D.h for explanation of sections...
virtual void SetPoints(Double_t *points) const
Fill buffer with shape vertices.
TGeoCompositeShape()
Default constructor.
virtual Bool_t IsComposite() const
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
Bool_t IsRegistered() const
Int_t ShapeDistancetoPrimitive(Int_t numpoints, Int_t px, Int_t py) const
Returns distance to shape primitive mesh.
const char * GetPointerName() const
Provide a pointer name containing uid.
Int_t AddShape(const TGeoShape *shape)
Add a shape to the list. Returns index of the shape in list.
virtual Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const =0
static TGeoMatrix * GetTransform()
Returns current transformation matrix that applies to shape.
void SetShapeBit(UInt_t f, Bool_t set)
Equivalent of TObject::SetBit.
typedef void((*Func_t)())
virtual void Sizeof3D() const
compute size of this 3D object
virtual void ComputeBBox()
compute bounding box of the sphere
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.
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
virtual Double_t DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=0, Double_t *safe=0) const =0
double norm(double *x, double *p)
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
virtual ~TGeoCompositeShape()
destructor
virtual void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm)=0
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.