212 Error(
"CheckShape",
"No geometry manager");
251 return ((
TObject *)
this)->ClassName();
262 if (!painter)
return 9999;
274 if (point[0]*
c2+point[1]*s2 >= 0) saf2 =
TMath::Abs(point[0]*s2 - point[1]*
c2);
276 if (saf<epsil)
return kTRUE;
286 while (phi<phi1) phi+=360.;
288 if (ddp>phi2-phi1)
return kFALSE;
302 Double_t rxy0 = point[0]*cphi+point[1]*sphi;
303 Double_t rdotn = point[0]*nx + point[1]*ny;
315 Double_t ddotn = dir[0]*nx + dir[1]*ny;
316 if (ddotn<=0)
return kFALSE;
318 rxy = rxy0+
snext*(dir[0]*cphi+dir[1]*sphi);
352 a1 = (
x2*y1-
x1*y2)/dx1;
356 a2 = (
x4*y3-
x3*y4)/dx2;
359 if (stand1 && stand2) {
363 if ((y3-y1)*(y3-y2)<-eps || (y4-y1)*(y4-y2)<-eps ||
364 (y1-y3)*(y1-y4)<-eps || (y2-y3)*(y2-y4)<-eps)
return kTRUE;
390 xm = (a1-a2)/(b2-b1);
391 ym = (a1*b2-a2*b1)/(b2-b1);
396 if (check > -eps)
return kFALSE;
397 check = (xm-
x3)*(xm-
x4)+(ym-y3)*(ym-y4);
398 if (check > -eps)
return kFALSE;
414 s=-point[0]*
s1+point[1]*
c1;
418 if (((point[0]+s*dir[0])*sm-(point[1]+s*dir[1])*cm)>=0) sfi1=s;
421 un = -dir[0]*s2+dir[1]*
c2;
424 s=point[0]*s2-point[1]*
c2;
428 if ((-(point[0]+s*dir[0])*sm+(point[1]+s*dir[1])*cm)>=0) sfi2=s;
442 if (point[0]*
c2+point[1]*s2 >= 0) saf2 =
TMath::Abs(point[0]*s2 - point[1]*
c2);
454 if (dir[0]*norm[0]+dir[1]*norm[1] < 0) {
474 Double_t rsq = point[0]*point[0]+point[1]*point[1];
477 if (safsq<0)
return 0.;
479 rproj = point[0]*
c2+point[1]*s2;
480 safsq = rsq-rproj*rproj;
481 if (safsq<0)
return 0.;
496 Double_t crossp = (z2-z1)*(
r-r1)-(z-z1)*(r2-r1);
497 crossp *= (outer) ? 1. : -1.;
513 c2 = (z2-z1)*(z2-z1)+(r2-r1)*(r2-r1);
557 for (j = 0; j < NbPnts; j++) {
569 for (j = 0; j < NbPnts; j++) {
623 if (visdensity>0 && paintVolume->
GetMedium()) {
633 if (paintVolume && paintVolume->
GetShape()) {
657 if (!localMasterMat) {
675 Int_t basicColor = 0;
680 if (basicColor < 0) basicColor = 0;
692 Warning(
"GetBuffer3D",
"this must be implemented for shapes in a TGeoPainter hierarchy. This will be come a pure virtual fn eventually.");
724 if (option && option[0]) {
737 if (option && option[0]) {
static const double x2[5]
static const double x4[22]
static const double x1[5]
static const double x3[11]
R__EXTERN TGeoManager * gGeoManager
virtual Color_t GetLineColor() const
Return the line color.
Generic 3D primitive description class.
void SetLocalMasterIdentity()
Set kRaw tessellation section of buffer with supplied sizes.
Bool_t SectionsValid(UInt_t mask) const
Double_t fLocalMaster[16]
void ClearSectionsValid()
Clear any sections marked valid.
void SetSectionsValid(UInt_t mask)
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
Matrix class used for computing global transformations Should NOT be used for node definition.
The manager class for any TGeo geometry.
TGeoHMatrix * GetGLMatrix() const
Bool_t IsMatrixTransform() const
void LocalToMaster(const Double_t *local, Double_t *master) const
TGeoVolume * GetPaintVolume() const
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
Double_t GetVisDensity() const
void LocalToMasterBomb(const Double_t *local, Double_t *master) const
void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)
Test for shape navigation methods.
TGeoHMatrix * GetCurrentMatrix() const
Bool_t IsMatrixReflection() const
TVirtualGeoPainter * GetPainter() const
Int_t GetBombMode() const
TObjArray * GetListOfShapes() const
TGeoVolume * GetTopVolume() const
Bool_t IsCleaning() const
Int_t AddShape(const TGeoShape *shape)
Add a shape to the list. Returns index of the shape in list.
virtual Double_t GetDensity() const
Geometrical transformation package.
virtual void LocalToMasterBomb(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
virtual void LocalToMaster(const Double_t *local, Double_t *master) const
convert a point by multiplying its column vector (x, y, z, 1) to matrix inverse
void GetHomogenousMatrix(Double_t *hmat) const
The homogenous matrix associated with the transformation is used for piling up's and visualization.
Base abstract class for all shapes.
virtual const TBuffer3D & GetBuffer3D(Int_t reqSections, Bool_t localFrame) const
Stub implementation to avoid forcing implementation at this stage.
Int_t GetBasicColor() const
Get the basic color (0-7).
static Bool_t IsSegCrossing(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3, Double_t x4, Double_t y4)
Check if segments (A,B) and (C,D) are crossing, where: A(x1,y1), B(x2,y2), C(x3,y3),...
void TransformPoints(Double_t *points, UInt_t NbPoints) const
Tranform a set of points (LocalToMaster)
void SetShapeBit(UInt_t f, Bool_t set)
Equivalent of TObject::SetBit.
void ResetShapeBit(UInt_t f)
static Double_t DistToPhiMin(const Double_t *point, const Double_t *dir, Double_t s1, Double_t c1, Double_t s2, Double_t c2, Double_t sm, Double_t cm, Bool_t in=kTRUE)
compute distance from point (inside phi) to both phi planes. Return minimum.
TGeoShape()
Default constructor.
static Double_t SafetyPhi(const Double_t *point, Bool_t in, Double_t phi1, Double_t phi2)
Static method to compute safety w.r.t a phi corner defined by cosines/sines of the angles phi1,...
virtual ~TGeoShape()
Destructor.
static void SetTransform(TGeoMatrix *matrix)
Set current transformation matrix that applies to shape.
virtual Bool_t IsComposite() const
static Bool_t IsSameWithinTolerance(Double_t a, Double_t b)
Check if two numbers differ with less than a tolerance.
const char * GetPointerName() const
Provide a pointer name containing uid.
virtual void FillBuffer3D(TBuffer3D &buffer, Int_t reqSections, Bool_t localFrame) const
Fill the supplied buffer, with sections in desired frame See TBuffer3D.h for explanation of sections,...
void CheckShape(Int_t testNo, Int_t nsamples=10000, Option_t *option="")
Test for shape navigation methods.
static Double_t EpsMch()
static function returning the machine round-off error
static Bool_t IsInPhiRange(const Double_t *point, Double_t phi1, Double_t phi2)
Static method to check if a point is in the phi range (phi1, phi2) [degrees].
static Double_t ComputeEpsMch()
Compute machine round-off double precision error as the smallest number that if added to 1....
static TGeoMatrix * fgTransform
virtual Bool_t IsReflected() const
Int_t ShapeDistancetoPrimitive(Int_t numpoints, Int_t px, Int_t py) const
Returns distance to shape primitive mesh.
virtual const char * GetName() const
Get the shape name.
static void NormalPhi(const Double_t *point, const Double_t *dir, Double_t *norm, Double_t c1, Double_t s1, Double_t c2, Double_t s2)
Static method to compute normal to phi planes.
static Double_t SafetySeg(Double_t r, Double_t z, Double_t r1, Double_t z1, Double_t r2, Double_t z2, Bool_t outer)
Compute distance from point of coordinates (r,z) to segment (r1,z1):(r2,z2)
static Bool_t IsCrossingSemiplane(const Double_t *point, const Double_t *dir, Double_t cphi, Double_t sphi, Double_t &snext, Double_t &rxy)
Compute distance from POINT to semiplane defined by PHI angle along DIR.
virtual void Paint(Option_t *option="")
Paint this shape.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute mouse actions on this shape.
static TGeoMatrix * GetTransform()
Returns current transformation matrix that applies to shape.
static Double_t Tolerance()
static Bool_t IsCloseToPhi(Double_t epsil, const Double_t *point, Double_t c1, Double_t s1, Double_t c2, Double_t s2)
True if point is closer than epsil to one of the phi planes defined by c1,s1 or c2,...
virtual void Draw(Option_t *option="")
Draw this shape.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
TGeoMedium * GetMedium() const
TGeoMaterial * GetMaterial() const
TGeoShape * GetShape() const
Char_t GetTransparency() const
The TNamed class is the base class for all named ROOT classes.
virtual const char * GetName() const
Returns name of object.
virtual TObject * Remove(TObject *obj)
Remove object from array.
Mother of all ROOT objects.
virtual UInt_t GetUniqueID() const
Return the unique object id.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Abstract class for geometry painters.
virtual void DrawShape(TGeoShape *shape, Option_t *option="")=0
virtual void PaintShape(TGeoShape *shape, Option_t *option="")=0
virtual void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py)=0
virtual Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const =0
Double_t ATan2(Double_t y, Double_t x)
constexpr Double_t DegToRad()
Conversion from degree to radian:
Double_t Sqrt(Double_t x)
Short_t Min(Short_t a, Short_t b)
constexpr Double_t RadToDeg()
Conversion from radian to degree:
#define snext(osub1, osub2)