68 Error(
"ctor",
"No geometry loaded");
118 gSize3D.numPoints += numpoints;
135 static Int_t npoints = 0;
147 for (i=0; i<3; i++)
xmin[i]=
xmax[i]=0;
152 for (i=0; i<3; i++) {
153 box[i] += ninv*(point[i]-
box[i]);
154 if (point[i]<
xmin[i])
xmin[i]=point[i];
155 if (point[i]>
xmax[i])
xmax[i]=point[i];
165 memcpy(bombtr, tr, 3*
sizeof(
Double_t));
275 static Int_t color = 0;
278 for (
auto icol=1; icol<10; ++icol)
288 using IntMap_t = std::map<Int_t, Int_t>;
289 constexpr Int_t ncolors = 100;
292 static IntMap_t colmap;
295 auto it = colmap.find(base);
296 if (it != colmap.end())
return (it->second + light*(ncolors-1));
302 if (it != colmap.end())
return (it->second + light*(ncolors-1));
322 colmap[color] = color_map_idx;
323 return (color_map_idx + light*(ncolors-1));
340 const Int_t big = 9999;
341 const Int_t inaxis = 7;
342 const Int_t maxdist = 5;
346 if (!view)
return big;
356 if (px < puxmin - inaxis)
return big;
357 if (py > puymin + inaxis)
return big;
358 if (px > puxmax + inaxis)
return big;
359 if (py < puymax - inaxis)
return big;
362 gPad->SetSelected(view);
372 gPad->SetSelected(crt);
384 gPad->SetSelected(crt);
395 if ((puxmax+inaxis-px) < 40) {
396 if ((py-puymax+inaxis) < 40) {
408 gPad->SetSelected(volume);
436 else gPad->SetSelected(vol);
454 gPad->SetSelected(vol);
474 while ((daughter=next())) {
489 else gPad->SetSelected(vol);
513 else gPad->SetSelected(vol);
537 view->
SetView(-206,126,75,irep);
582 while ((daughter=next())) {
588 if (vis && level<=rlevel) count++;
596 if (vis && last) count++;
598 if (last) next.
Skip();
613 if (maxnodes <= 0 && top) {
627 for (
Int_t level = 1;level<20;level++) {
635 if (nnodes > maxnodes) {
657 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TGeoManagerEditor"))) {
658 if (
h->LoadPlugin() == -1)
return;
671 if (!option[0])
gPad->GetCanvas()->GetCanvasImp()->ShowEditor();
701 if (autorange) tlo = 0.;
705 for (i=0; i<ncoeff; i++) {
708 if (i < ncoeff-1) formula +=
"+";
709 if (lambda < lambdamin &&
710 lambda > 0.) lambdamin = lambda;
712 if (autorange) thi = 10./lambdamin;
734 Error(
"DrawPolygon",
"No vertices defined");
744 g1->
SetTitle(
Form(
"Polygon with %d vertices (outscribed %d)",nvert, nconv));
760 g2 =
new TGraph(nconv+1, xc,yc);
770 gROOT->MakeDefCanvas();
773 if (g2) g2->
Draw(
"LP");
799 gROOT->MakeDefCanvas();
812 if (has_pad)
gPad->Update();
824 gPad->GetViewer3D(option);
841 gROOT->MakeDefCanvas();
854 if (has_pad)
gPad->Update();
860 gPad->GetViewer3D(option);
871 if (!overlap)
return;
883 gROOT->MakeDefCanvas();
891 gPad->GetViewer3D(option);
900 if (has_pad)
gPad->Update();
926 gROOT->MakeDefCanvas();
941 if (has_pad)
gPad->Update();
956 if (!
gPad->GetView())
return;
997 while ((obj=next())) {
998 if (strcmp(obj->
ClassName(),
"TGeoTrack"))
continue;
1004 if (!ntracks)
return;
1007 while ((obj=next())) {
1008 if (strcmp(obj->
ClassName(),
"TGeoTrack"))
continue;
1010 if (!track)
continue;
1093 if (!
gPad)
return info;
1096 info =
"wrong overlapping flag";
1101 else ovtype =
"OVERLAP";
1142 printf(
"Woops!!!\n");
1151 Int_t nframes = nfr;
1154 if (nvols<1500) nframes=10;
1155 if (nvols<1000) nframes=20;
1156 if (nvols<200) nframes = 50;
1157 if (nvols<100) nframes = 100;
1169 return fChecker->
LegoPlot(ntheta, themin, themax, nphi, phimin, phimax, rmin, rmax, option);
1176 for (
Int_t i=0; i<3; i++)
1177 master[i] = -local[0]*
fMat[i]-local[1]*
fMat[i+3]-local[2]*
fMat[i+6];
1204 if (
gPad) is_padviewer = (!strcmp(
gPad->GetViewer3D()->ClassName(),
"TViewer3DPad"))?
kTRUE:
kFALSE;
1221 for (inode=0; inode<nnodes; inode++) {
1241 if (!overlap)
return;
1242 Int_t color, transparency;
1261 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1274 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1309 Int_t transparency = 0;
1312 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1327 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1367 Int_t line_color=0, line_width=0, line_style=0;
1368 while ((daughter=next())) {
1374 drawDaughters =
kTRUE;
1384 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1419 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1458 return addDaughters;
1476 viewer->
AddObject(buffer, &addDaughters);
1493 return addDaughters;
1514 Int_t i, col, wid, sty;
1544 for (i=1;i<=level; i++) {
1608 if (!
gPad ||
gPad->IsBatch())
return;
1649 for (
Int_t i=0; i<3; i++) cov[i] = 0.5*(min[i]+max[i]);
1651 for (
Int_t i=0; i<3; i++) cop[i] = cov[i] - dir[i]*dview;
1658 Int_t pxmin,pxmax, pymin,pymax;
1659 pxmin =
gPad->UtoAbsPixel(0);
1660 pxmax =
gPad->UtoAbsPixel(1);
1661 pymin =
gPad->VtoAbsPixel(1);
1662 pymax =
gPad->VtoAbsPixel(0);
1674 tosource[2] = -dir[2];
1678 Int_t base_color, color;
1684 Int_t ntotal = pxmax*pymax;
1688 for (px=pxmin; px<pxmax; px++) {
1689 for (py=pymin; py<pymax; py++) {
1695 xloc =
gPad->AbsPixeltoX(pxmin+pxmax-px);
1697 yloc =
gPad->AbsPixeltoY(pymin+pymax-py);
1699 modloc =
TMath::Sqrt(xloc*xloc+yloc*yloc+dproj*dproj);
1700 local[0] = xloc/modloc;
1701 local[1] = yloc/modloc;
1702 local[2] = dproj/modloc;
1725 if (stemin>1E10)
break;
1758 if (step>1E10)
break;
1763 if (steptot>stemax) {
1777 if (!nextnode)
continue;
1786 if (!done)
continue;
1791 for (
Int_t i=0; i<3; ++i) local[i] += 1.E-8*dir[i];
1793 for (
Int_t i=0; i<3; ++i) local[i] += step*dir[i];
1798 if (!norm)
continue;
1800 calf = norm[0]*tosource[0]+norm[1]*tosource[1]+norm[2]*tosource[2];
1802 color =
GetColor(base_color, light);
1843 if ((ibomb<0) || (ibomb>3)) {
1844 Warning(
"SetExplodedView",
"exploded view can be 0-3");
1872 Warning(
"SetNsegments",
"number of segments should be > 2");
1911 if (
gPad->GetView()) {
1935 Warning(
"SetVisOption",
"wrong visualization option");
1979 const Int_t inaxis = 7;
1980 const Int_t maxdist = 5;
1981 const Int_t big = 9999;
1985 if (!(numpoints && view))
return dist;
1994 if (px < puxmin - inaxis)
return big;
1995 if (py > puymin + inaxis)
return big;
1996 if (px > puxmax + inaxis)
return big;
1997 if (py < puymax - inaxis)
return big;
1998 if ((puxmax+inaxis-px) < 40) {
2011 for (
Int_t i=0; i<numpoints; i++) {
2016 x1 =
gPad->XtoAbsPixel(xndc[0]);
2017 y1 =
gPad->YtoAbsPixel(xndc[1]);
2018 dpoint2 = (px-
x1)*(px-
x1) + (py-y1)*(py-y1);
2056 memcpy(bombtr, tr, 3*
sizeof(
Double_t));
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
static const double x1[5]
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
virtual Color_t GetLineColor() const
Return the line color.
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
virtual Width_t GetLineWidth() const
Return the line width.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Style_t GetLineStyle() const
Return the line style.
virtual void Modify()
Change current line attributes if necessary.
virtual Style_t GetMarkerStyle() const
Return the marker style.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual Color_t GetMarkerColor() const
Return the marker color.
virtual Size_t GetMarkerSize() const
Return the marker size.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Generic 3D primitive description class.
Bool_t SetRawSizes(UInt_t reqPnts, UInt_t reqPntsCapacity, UInt_t reqSegs, UInt_t reqSegsCapacity, UInt_t reqPols, UInt_t reqPolsCapacity)
Set kRaw tessellation section of buffer with supplied sizes.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
The color creation and management class.
static void HLS2RGB(Float_t h, Float_t l, Float_t s, Float_t &r, Float_t &g, Float_t &b)
Static method to compute RGB from HLS.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
static void InitializeColors()
Initialize colors used by the TCanvas based graphics (via TColor objects).
static void RGB2HLS(Float_t r, Float_t g, Float_t b, Float_t &h, Float_t &l, Float_t &s)
Static method to compute HLS from RGB.
static Int_t CreateGradientColorTable(UInt_t Number, Double_t *Stops, Double_t *Red, Double_t *Green, Double_t *Blue, UInt_t NColors, Float_t alpha=1.)
Static function creating a color table with several connected linear gradients.
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn,...
virtual void SetTitle(const char *title="")
Set function title if title has the form "fffffff;xxxx;yyyy", it is assumed that the function title i...
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn,...
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
Visualization and tracking attributes for volumes and nodes.
Bool_t TestAttBit(UInt_t f) const
Bool_t IsVisBranch() const
void ResetAttBit(UInt_t f)
void SetVisRaytrace(Bool_t flag=kTRUE)
Bool_t IsVisDaughters() const
Double_t Concentration(Double_t time) const
Find concentration of the element at a given time.
void GetCoeff(Int_t i, Double_t &cn, Double_t &lambda) const
void GetRange(Double_t &tmin, Double_t &tmax) const
TGeoElementRN * GetElement() const
Geometry checking package.
void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)
Test for shape navigation methods.
void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp=0.1, Option_t *option="")
Check illegal overlaps for volume VOL within a limit OVLP.
void TestOverlaps(const char *path)
Geometry overlap checker based on sampling.
void SetSelectedNode(TGeoNode *node)
TGeoNode * SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path)
shoot npoints randomly in a box of 1E-5 around current point.
Double_t Weight(Double_t precision=0.01, Option_t *option="v")
Estimate weight of top level volume with a precision SIGMA(W)/W better than PRECISION.
void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=NULL)
Geometry checking.
void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const
Shoot nrays with random directions from starting point (startx, starty, startz) in the reference fram...
virtual void CheckBoundaryReference(Int_t icheck=-1)
Check the boundary errors reference file created by CheckBoundaryErrors method.
void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="")
Draw point (x,y,z) over the picture of the daughters of the volume containing this point.
void SetNmeshPoints(Int_t npoints=1000)
Set number of points to be generated on the shape outline when checking for overlaps.
void PrintOverlaps() const
Print the current list of overlaps held by the manager class.
void Test(Int_t npoints, Option_t *option)
Check time of finding "Where am I" for n points.
Bool_t TestVoxels(TGeoVolume *vol, Int_t npoints=1000000)
Returns optimal voxelization type for volume vol.
void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch=0, Bool_t last=kFALSE, Bool_t refresh=kFALSE, const char *msg="")
Print current operation progress.
void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz, const char *target_vol=0, Bool_t check_norm=kFALSE)
Randomly shoot nrays from point (startx,starty,startz) and plot intersections with surfaces for curre...
TH2F * LegoPlot(Int_t ntheta=60, Double_t themin=0., Double_t themax=180., Int_t nphi=90, Double_t phimin=0., Double_t phimax=360., Double_t rmin=0., Double_t rmax=9999999, Option_t *option="")
Generate a lego plot fot the top volume, according to option.
void RandomPoints(TGeoVolume *vol, Int_t npoints, Option_t *option)
Draw random points in the bounding box of a volume.
virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.)
Check pushes and pulls needed to cross the next boundary with respect to the position given by FindNe...
Class handling Boolean composition of shapes.
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...
Matrix class used for computing global transformations Should NOT be used for node definition.
void Clear(Option_t *option="")
clear the data for this matrix
void SetIterator(const TGeoIterator *iter)
virtual void ProcessNode()=0
const TGeoMatrix * GetCurrentMatrix() const
Returns global matrix for current node.
void SetTopName(const char *name)
Set the top name for path.
void GetPath(TString &path) const
Returns the path for the current node.
void SetUserPlugin(TGeoIteratorPlugin *plugin)
Set a plugin.
void Skip()
Stop iterating the current branch.
The manager class for any TGeo geometry.
TGeoNode * GetMother(Int_t up=1) const
Double_t * FindNormalFast()
Computes fast normal to next crossed boundary, assuming that the current point is close enough to the...
void DoRestoreState()
Restore a backed-up state without affecting the cache stack.
const Double_t * GetCurrentDirection() const
void CdUp()
Go one level up in geometry.
void DoBackupState()
Backup the current state without affecting the cache stack.
TObjArray * GetListOfVolumes() const
void SetMatrixReflection(Bool_t flag=kTRUE)
virtual Bool_t cd(const char *path="")
Browse the tree of nodes starting from fTopNode according to pathname.
void LocalToMaster(const Double_t *local, Double_t *master) const
TGeoNode * GetCurrentNode() const
void SetCurrentDirection(Double_t *dir)
TGeoNode * Step(Bool_t is_geom=kTRUE, Bool_t cross=kTRUE)
Make a rectilinear step of length fStep from current point (fPoint) on current direction (fDirection)...
Bool_t IsDrawingExtra() const
void SetOutside(Bool_t flag=kTRUE)
TGeoNode * FindNextBoundaryAndStep(Double_t stepmax=TGeoShape::Big(), Bool_t compsafe=kFALSE)
Compute distance to next boundary within STEPMAX.
Int_t GetMaxVisNodes() const
void SetCurrentPoint(Double_t *point)
Int_t GetVisOption() const
Returns current depth to which geometry is drawn.
const Double_t * GetCurrentPoint() const
TGeoNode * InitTrack(const Double_t *point, const Double_t *dir)
Initialize current point and current direction vector (normalized) in MARS.
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
TGeoHMatrix * GetCurrentMatrix() const
TGeoNode * GetTopNode() const
void MasterToLocalVect(const Double_t *master, Double_t *local) const
void SetPaintVolume(TGeoVolume *vol)
void SetStep(Double_t step)
TGeoVolume * GetCurrentVolume() const
Int_t GetVisLevel() const
Returns current depth to which geometry is drawn.
Int_t GetBombMode() const
void CdTop()
Make top level node the current node.
void MasterToLocal(const Double_t *master, Double_t *local) const
Int_t PushPath(Int_t startlevel=0)
Int_t GetNsegments() const
Get number of segments approximating circles.
Bool_t IsNodeSelectable() const
TGeoVolume * GetTopVolume() const
TObjArray * GetListOfPhysicalNodes()
virtual Int_t GetDefaultColor() const
Get some default color related to this material.
Geometrical transformation package.
Bool_t IsReflection() const
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
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Bool_t IsVisDaughters() const
Bool_t IsOnScreen() const
check if this node is drawn. Assumes that this node is current
TGeoVolume * GetVolume() const
Int_t GetNdaughters() const
Base class describing geometry overlaps.
TGeoVolume * GetSecondVolume() const
TPolyMarker3D * GetPolyMarker() const
TGeoHMatrix * GetFirstMatrix() const
Bool_t IsExtrusion() const
Double_t GetOverlap() const
TGeoHMatrix * GetSecondMatrix() const
TGeoVolume * GetFirstVolume() const
Class implementing all draw interfaces for a generic 3D viewer using TBuffer3D mechanism.
TGeoIteratorPlugin * fPlugin
virtual void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch=0, Bool_t last=kFALSE, Bool_t refresh=kFALSE, const char *msg="")
Text progress bar.
virtual void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz, const char *target_vol=0, Bool_t check_norm=kFALSE)
Shoot nrays in the current drawn geometry.
virtual void DrawShape(TGeoShape *shape, Option_t *option="")
Draw a shape.
virtual TGeoVolume * GetDrawnVolume() const
Get currently drawn volume.
virtual void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const
Geometry checking method (see TGeoChecker).
virtual void Paint(Option_t *option="")
Paint current geometry according to option.
TGeoManager * fGeoManager
TH2F * LegoPlot(Int_t ntheta=60, Double_t themin=0., Double_t themax=180., Int_t nphi=90, Double_t phimin=0., Double_t phimax=360., Double_t rmin=0., Double_t rmax=9999999, Option_t *option="")
Generate a lego plot fot the top volume, according to option.
virtual void SetCheckedNode(TGeoNode *node)
Select a node to be checked for overlaps.
virtual void EditGeometry(Option_t *option="")
Start the geometry editor.
virtual void SetTopVisible(Bool_t vis=kTRUE)
Set top geometry volume as visible.
virtual void SetVisOption(Int_t option=0)
Set drawing mode :
TGeoChecker * GetChecker()
Create/return geometry checker.
virtual ~TGeoPainter()
Default destructor.
virtual void SetExplodedView(Int_t iopt=0)
Set type of exploding view.
virtual Int_t GetColor(Int_t base, Float_t light) const
Get index of a base color with given light intensity (0,1)
virtual void UnbombTranslation(const Double_t *tr, Double_t *bombtr)
Get the new 'unbombed' translation vector according current exploded view mode.
virtual void DrawOnly(Option_t *option="")
Draw only one volume.
virtual Double_t Weight(Double_t precision, Option_t *option="v")
Compute weight [kg] of the current volume.
void DefineColors() const
Define 100 colors with increasing light intensities for each basic color (1-7) Register these colors ...
virtual Int_t DistanceToPrimitiveVol(TGeoVolume *vol, Int_t px, Int_t py)
Compute the closest distance of approach from point px,py to a volume.
virtual void SetBombFactors(Double_t bombx=1.3, Double_t bomby=1.3, Double_t bombz=1.3, Double_t bombr=1.3)
Set cartesian and radial bomb factors for translations.
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")
Draw the time evolution of a radionuclide.
virtual void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py)
Execute mouse actions on a given shape.
virtual void DrawCurrentPoint(Int_t color)
Draw current point in the same view.
virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.)
Check pushes and pulls needed to cross the next boundary with respect to the position given by FindNe...
virtual void RandomPoints(const TGeoVolume *vol, Int_t npoints, Option_t *option="")
Draw random points in the bounding box of a volume.
TGeoShape * fClippingShape
Bool_t PaintShape(const TGeoShape &shape, Option_t *option) const
Paint the supplied shape into the current 3D viewer.
virtual void DrawPolygon(const TGeoPolygon *poly)
Draw a polygon in 3D.
virtual Bool_t IsExplodedView() const
Int_t CountNodes(TGeoVolume *vol, Int_t level) const
Count number of visible nodes down to a given level.
virtual void ExecuteManagerEvent(TGeoManager *geom, Int_t event, Int_t px, Int_t py)
Execute mouse actions on a given volume.
virtual void BombTranslation(const Double_t *tr, Double_t *bombtr)
Get the new 'bombed' translation vector according current exploded view mode.
virtual void EstimateCameraMove(Double_t tmin, Double_t tmax, Double_t *start, Double_t *end)
Estimate camera movement between tmin and tmax for best track display.
virtual void CheckBoundaryReference(Int_t icheck=-1)
Check the boundary errors reference file created by CheckBoundaryErrors method.
virtual void Test(Int_t npoints, Option_t *option)
Check time of finding "Where am I" for n points.
virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="")
Check current point in the geometry.
virtual TVirtualGeoTrack * AddTrack(Int_t id, Int_t pdgcode, TObject *part)
Create a primary TGeoTrack.
void CheckEdit()
Check if Ged library is loaded and load geometry editor classe.
virtual Int_t CountVisibleNodes()
Count total number of visible nodes.
virtual void ClearVisibleVolumes()
Clear the list of visible volumes reset the kVisOnScreen bit for volumes previously in the list.
virtual void SetNsegments(Int_t nseg=20)
Set number of segments to approximate circles.
virtual void DrawOverlap(void *ovlp, Option_t *option="")
Draw an overlap.
void LocalToMasterVect(const Double_t *local, Double_t *master) const
Convert a local vector according view rotation matrix.
virtual void Draw(Option_t *option="")
Draw method.
virtual const char * GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const
Get some info about the current selected volume.
virtual void TestOverlaps(const char *path)
Geometry overlap checker based on sampling.
virtual Bool_t TestVoxels(TGeoVolume *vol)
Check voxels efficiency per volume.
virtual void DrawVolume(TGeoVolume *vol, Option_t *option="")
Draw method.
virtual void PaintNode(TGeoNode *node, Option_t *option="", TGeoMatrix *global=0)
Paint recursively a node and its content according to visualization options.
virtual Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const
Returns distance between point px,py on the pad an a shape.
virtual void Raytrace(Option_t *option="")
Raytrace current drawn geometry.
virtual void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE)
Average center of view of all painted tracklets and compute view box.
virtual void PaintVolume(TGeoVolume *vol, Option_t *option="", TGeoMatrix *global=0)
Paint recursively a node and its content according to visualization options.
virtual void GrabFocus(Int_t nfr=0, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0)
Move focus to current volume.
virtual void PrintOverlaps() const
Print overlaps (see TGeoChecker::PrintOverlaps())
virtual void DefaultColors()
Set default volume colors according to tracking media.
void PaintPhysicalNode(TGeoPhysicalNode *node, Option_t *option="")
Paints a physical node associated with a path.
virtual TGeoNode * SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path)
Shoot npoints randomly in a box of 1E-5 around current point.
virtual void DrawPath(const char *path, Option_t *option="")
Draw all volumes for a given path.
virtual void GetViewAngles(Double_t &longitude, Double_t &latitude, Double_t &psi)
Get the current view angles.
virtual void PaintOverlap(void *ovlp, Option_t *option="")
Paint an overlap.
virtual void DefaultAngles()
Set default angles for the current view.
virtual void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py)
Execute mouse actions on a given volume.
virtual void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys)
Add numpoints, numsegs, numpolys to the global 3D size.
virtual void SetVisLevel(Int_t level=3)
Set default level down to which visualization is performed.
virtual void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp=0.1, Option_t *option="") const
Check overlaps for the top volume of the geometry, within a limit OVLP.
TGeoPainter(TGeoManager *manager)
Default constructor.
virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)
Test for shape navigation methods.
virtual void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=NULL)
Geometry checking method (see: TGeoManager::CheckGeometry())
virtual void ModifiedPad(Bool_t update=kFALSE) const
Check if a pad and view are present and send signal "Modified" to pad.
virtual void SetNmeshPoints(Int_t npoints)
Set number of points to be generated on the shape outline when checking for overlaps.
Physical nodes are the actual 'touchable' objects in the geometry, representing a path of positioned ...
Bool_t IsVisibleFull() const
TGeoHMatrix * GetMatrix(Int_t level=-1) const
Return global matrix for node at LEVEL.
Bool_t IsVolAttributes() const
TGeoVolume * GetVolume(Int_t level=-1) const
Return volume associated with node at LEVEL in the branch.
An arbitrary polygon defined by vertices.
void GetVertices(Double_t *x, Double_t *y) const
Fill list of vertices into provided arrays.
void GetConvexVertices(Double_t *x, Double_t *y) const
Fill list of vertices of the convex outscribed polygon into provided arrays.
Base abstract class for all shapes.
virtual void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm)=0
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)=0
Computes distance from point (px,py) to the object.
virtual const TBuffer3D & GetBuffer3D(Int_t reqSections, Bool_t localFrame) const
Stub implementation to avoid forcing implementation at this stage.
static void SetTransform(TGeoMatrix *matrix)
Set current transformation matrix that applies to shape.
virtual Bool_t IsComposite() const
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 =0
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 =0
static TGeoMatrix * GetTransform()
Returns current transformation matrix that applies to shape.
virtual Bool_t Contains(const Double_t *point) const =0
virtual void SetPoints(Double_t *points) const =0
Class for user-defined tracks attached to a geometry.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Bool_t IsVisContainers() const
TGeoMaterial * GetMaterial() const
Int_t GetNdaughters() const
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
void SetTransparency(Char_t transparency=0)
TGeoShape * GetShape() const
Bool_t IsRaytracing() const
Check if the painter is currently ray-tracing the content of this volume.
Bool_t IsVisLeaves() const
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual Bool_t IsAssembly() const
Returns true if the volume is an assembly or a scaled assembly.
Char_t GetTransparency() const
virtual Bool_t IsVisible() const
A Graph is a graphics object made of two arrays X and Y with npoints each.
virtual void SetTitle(const char *title="")
Set graph title.
virtual void Draw(Option_t *chopt="")
Draw this graph with its current attributes.
2-D histogram with a float per channel (see TH1 documentation)}
virtual const char * GetName() const
Returns name of object.
Int_t GetEntriesFast() const
virtual void Clear(Option_t *option="")
Remove all objects from the array.
TObject * UncheckedAt(Int_t i) const
Mother of all ROOT objects.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual Int_t SetNextPoint(Double_t x, Double_t y, Double_t z)
Set point following LastPoint to x, y, z.
virtual void Draw(Option_t *option="")
Draws 3-D polymarker with its current attributes.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
void Stop()
Stop the stopwatch.
void ToLower()
Change string to lower-case.
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual void SetPerspective()=0
virtual Double_t GetPsi()=0
virtual void GetWindow(Double_t &u0, Double_t &v0, Double_t &du, Double_t &dv) const =0
virtual Double_t GetLongitude()=0
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
virtual Double_t GetDview() const =0
virtual void SetAutoRange(Bool_t autorange=kTRUE)=0
virtual Double_t GetDproj() const =0
virtual Bool_t IsPerspective() const =0
virtual void SetViewChanged(Bool_t flag=kTRUE)=0
virtual void GetRange(Float_t *min, Float_t *max)=0
static TView * CreateView(Int_t system=1, const Double_t *rmin=0, const Double_t *rmax=0)
Create a concrete default 3-d view via the plug-in manager.
virtual Double_t GetLatitude()=0
virtual void MoveFocus(Double_t *center, Double_t dx, Double_t dy, Double_t dz, Int_t nsteps=10, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0)=0
virtual void SetView(Double_t longitude, Double_t latitude, Double_t psi, Int_t &irep)=0
Abstract class for geometry painters.
static void SetPainter(const TVirtualGeoPainter *painter)
Static function to set an alternative histogram painter.
Base class for user-defined tracks attached to a geometry.
virtual void PaintCollect(Double_t, Double_t *)
static void ShowEditor()
Show the global pad editor. Static method.
Abstract 3D shapes viewer.
virtual Bool_t PreferLocalFrame() const =0
virtual Int_t AddObject(const TBuffer3D &buffer, Bool_t *addChildren=0)=0
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
double dist(Rotation3D const &r1, Rotation3D const &r2)
static constexpr double s
Short_t Max(Short_t a, Short_t b)
constexpr Double_t E()
Base of natural log:
constexpr Double_t DegToRad()
Conversion from degree to radian:
Double_t Sqrt(Double_t x)