70 Error(
"ctor",
"No geometry loaded");
120 gSize3D.numPoints += numpoints;
137 static Int_t npoints = 0;
149 for (i=0; i<3; i++)
xmin[i]=
xmax[i]=0;
154 for (i=0; i<3; i++) {
155 box[i] += ninv*(point[i]-
box[i]);
156 if (point[i]<
xmin[i])
xmin[i]=point[i];
157 if (point[i]>
xmax[i])
xmax[i]=point[i];
167 memcpy(bombtr, tr, 3*
sizeof(
Double_t));
277 static Int_t color = 0;
280 for (
auto icol=1; icol<10; ++icol)
290 using IntMap_t = std::map<Int_t, Int_t>;
291 constexpr Int_t ncolors = 100;
294 static IntMap_t colmap;
297 auto it = colmap.find(base);
298 if (it != colmap.end())
return (it->second + light*(ncolors-1));
304 if (it != colmap.end())
return (it->second + light*(ncolors-1));
324 colmap[color] = color_map_idx;
325 return (color_map_idx + light*(ncolors-1));
333 if (!
gPad)
return nullptr;
342 const Int_t big = 9999;
343 const Int_t inaxis = 7;
344 const Int_t maxdist = 5;
348 if (!view)
return big;
358 if (px < puxmin - inaxis)
return big;
359 if (py > puymin + inaxis)
return big;
360 if (px > puxmax + inaxis)
return big;
361 if (py < puymax - inaxis)
return big;
364 gPad->SetSelected(view);
374 gPad->SetSelected(crt);
386 gPad->SetSelected(crt);
397 if ((puxmax+inaxis-px) < 40) {
398 if ((py-puymax+inaxis) < 40) {
410 gPad->SetSelected(volume);
438 else gPad->SetSelected(vol);
456 gPad->SetSelected(vol);
476 while ((daughter=next())) {
491 else gPad->SetSelected(vol);
515 else gPad->SetSelected(vol);
539 view->
SetView(-206,126,75,irep);
584 while ((daughter=next())) {
590 if (vis && level<=rlevel) count++;
598 if (vis && last) count++;
600 if (last) next.
Skip();
615 if (maxnodes <= 0 && top) {
629 for (
Int_t level = 1;level<20;level++) {
637 if (nnodes > maxnodes) {
659 if ((
h =
gROOT->GetPluginManager()->FindHandler(
"TGeoManagerEditor"))) {
660 if (
h->LoadPlugin() == -1)
return;
673 if (!option[0])
gPad->GetCanvas()->GetCanvasImp()->ShowEditor();
703 if (autorange) tlo = 0.;
707 for (i=0; i<ncoeff; i++) {
710 if (i < ncoeff-1) formula +=
"+";
711 if (lambda < lambdamin &&
712 lambda > 0.) lambdamin = lambda;
714 if (autorange) thi = 10./lambdamin;
736 Error(
"DrawPolygon",
"No vertices defined");
746 g1->
SetTitle(
Form(
"Polygon with %d vertices (outscribed %d)",nvert, nconv));
762 g2 =
new TGraph(nconv+1, xc,yc);
772 gROOT->MakeDefCanvas();
775 if (g2) g2->
Draw(
"LP");
801 gROOT->MakeDefCanvas();
814 if (has_pad)
gPad->Update();
826 gPad->GetViewer3D(option);
843 gROOT->MakeDefCanvas();
856 if (has_pad)
gPad->Update();
862 gPad->GetViewer3D(option);
873 if (!overlap)
return;
885 gROOT->MakeDefCanvas();
893 gPad->GetViewer3D(option);
902 if (has_pad)
gPad->Update();
928 gROOT->MakeDefCanvas();
943 if (has_pad)
gPad->Update();
958 if (!
gPad->GetView())
return;
999 while ((obj=next())) {
1000 if (strcmp(obj->
ClassName(),
"TGeoTrack"))
continue;
1006 if (!ntracks)
return;
1009 while ((obj=next())) {
1010 if (strcmp(obj->
ClassName(),
"TGeoTrack"))
continue;
1012 if (!track)
continue;
1095 if (!
gPad)
return info;
1098 info =
"wrong overlapping flag";
1103 else ovtype =
"OVERLAP";
1144 printf(
"Woops!!!\n");
1153 Int_t nframes = nfr;
1156 if (nvols<1500) nframes=10;
1157 if (nvols<1000) nframes=20;
1158 if (nvols<200) nframes = 50;
1159 if (nvols<100) nframes = 100;
1171 return fChecker->
LegoPlot(ntheta, themin, themax, nphi, phimin, phimax, rmin, rmax, option);
1178 for (
Int_t i=0; i<3; i++)
1179 master[i] = -local[0]*
fMat[i]-local[1]*
fMat[i+3]-local[2]*
fMat[i+6];
1206 if (
gPad) is_padviewer = (!strcmp(
gPad->GetViewer3D()->ClassName(),
"TViewer3DPad"))?
kTRUE:
kFALSE;
1223 for (inode=0; inode<nnodes; inode++) {
1243 if (!overlap)
return;
1244 Int_t color, transparency;
1263 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1276 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1311 Int_t transparency = 0;
1314 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1329 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1369 Int_t line_color=0, line_width=0, line_style=0;
1370 while ((daughter=next())) {
1376 drawDaughters =
kTRUE;
1386 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1421 if (!strstr(option,
"range")) ((
TAttLine*)vol)->Modify();
1459 if (!viewer || shape.IsA()==TGeoShapeAssembly::Class()) {
1460 return addDaughters;
1478 viewer->
AddObject(buffer, &addDaughters);
1495 return addDaughters;
1516 Int_t i, col, wid, sty;
1546 for (i=1;i<=level; i++) {
1610 if (!
gPad ||
gPad->IsBatch())
return;
1651 for (
Int_t i=0; i<3; i++) cov[i] = 0.5*(min[i]+max[i]);
1653 for (
Int_t i=0; i<3; i++) cop[i] = cov[i] - dir[i]*dview;
1660 Int_t pxmin,pxmax, pymin,pymax;
1661 pxmin =
gPad->UtoAbsPixel(0);
1662 pxmax =
gPad->UtoAbsPixel(1);
1663 pymin =
gPad->VtoAbsPixel(1);
1664 pymax =
gPad->VtoAbsPixel(0);
1676 tosource[2] = -dir[2];
1680 Int_t base_color, color;
1686 Int_t ntotal = pxmax*pymax;
1690 for (px=pxmin; px<pxmax; px++) {
1691 for (py=pymin; py<pymax; py++) {
1697 xloc =
gPad->AbsPixeltoX(pxmin+pxmax-px);
1699 yloc =
gPad->AbsPixeltoY(pymin+pymax-py);
1701 modloc =
TMath::Sqrt(xloc*xloc+yloc*yloc+dproj*dproj);
1702 local[0] = xloc/modloc;
1703 local[1] = yloc/modloc;
1704 local[2] = dproj/modloc;
1727 if (stemin>1E10)
break;
1760 if (step>1E10)
break;
1765 if (steptot>stemax) {
1779 if (!nextnode)
continue;
1788 if (!done)
continue;
1793 for (
Int_t i=0; i<3; ++i) local[i] += 1.E-8*dir[i];
1795 for (
Int_t i=0; i<3; ++i) local[i] += step*dir[i];
1800 if (!norm)
continue;
1802 calf = norm[0]*tosource[0]+norm[1]*tosource[1]+norm[2]*tosource[2];
1804 color =
GetColor(base_color, light);
1845 if ((ibomb<0) || (ibomb>3)) {
1846 Warning(
"SetExplodedView",
"exploded view can be 0-3");
1874 Warning(
"SetNsegments",
"number of segments should be > 2");
1913 if (
gPad->GetView()) {
1937 Warning(
"SetVisOption",
"wrong visualization option");
1981 const Int_t inaxis = 7;
1982 const Int_t maxdist = 5;
1983 const Int_t big = 9999;
1985 if (!
gPad)
return dist;
1987 if (!(numpoints && view))
return dist;
1988 if (shape->IsA()==TGeoShapeAssembly::Class())
return dist;
1996 if (px < puxmin - inaxis)
return big;
1997 if (py > puymin + inaxis)
return big;
1998 if (px > puxmax + inaxis)
return big;
1999 if (py < puymax - inaxis)
return big;
2000 if ((puxmax+inaxis-px) < 40) {
2013 for (
Int_t i=0; i<numpoints; i++) {
2018 x1 =
gPad->XtoAbsPixel(xndc[0]);
2019 y1 =
gPad->YtoAbsPixel(xndc[1]);
2020 dpoint2 = (px-
x1)*(px-
x1) + (py-y1)*(py-y1);
2021 if (dpoint2 < dist) dist=(
Int_t)dpoint2;
2023 if (dist > 100)
return dist;
2058 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 Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
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.
TVirtualGeoTrack * AddTrack(Int_t id, Int_t pdgcode, TObject *part) override
Create a primary TGeoTrack.
void PaintOverlap(void *ovlp, Option_t *option="") override
Paint an overlap.
void EstimateCameraMove(Double_t tmin, Double_t tmax, Double_t *start, Double_t *end) override
Estimate camera movement between tmin and tmax for best track display.
TGeoIteratorPlugin * fPlugin
TGeoNode * SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path) override
Shoot npoints randomly in a box of 1E-5 around current point.
void PrintOverlaps() const override
Print overlaps (see TGeoChecker::PrintOverlaps())
void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz, const char *target_vol=nullptr, Bool_t check_norm=kFALSE) override
Shoot nrays in the current drawn geometry.
void BombTranslation(const Double_t *tr, Double_t *bombtr) override
Get the new 'bombed' translation vector according current exploded view mode.
void Paint(Option_t *option="") override
Paint current geometry according to option.
void EditGeometry(Option_t *option="") override
Start the geometry editor.
void GetViewAngles(Double_t &longitude, Double_t &latitude, Double_t &psi) override
Get the current view angles.
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="") override
Generate a lego plot fot the top volume, according to option.
void Raytrace(Option_t *option="") override
Raytrace current drawn geometry.
TGeoChecker * GetChecker()
Create/return geometry checker.
virtual ~TGeoPainter()
Default destructor.
void SetVisOption(Int_t option=0) override
Set drawing mode :
Bool_t IsExplodedView() const override
void TestOverlaps(const char *path) override
Geometry overlap checker based on sampling.
void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=nullptr) override
Geometry checking method (see: TGeoManager::CheckGeometry())
Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const override
Returns distance between point px,py on the pad an a shape.
void Draw(Option_t *option="") override
Draw method.
Int_t CountVisibleNodes() override
Count total number of visible nodes.
void DefineColors() const
Define 100 colors with increasing light intensities for each basic color (1-7) Register these colors ...
void SetExplodedView(Int_t iopt=0) override
Set type of exploding view.
void ExecuteManagerEvent(TGeoManager *geom, Int_t event, Int_t px, Int_t py) override
Execute mouse actions on a given volume.
void SetNmeshPoints(Int_t npoints) override
Set number of points to be generated on the shape outline when checking for overlaps.
Int_t DistanceToPrimitiveVol(TGeoVolume *vol, Int_t px, Int_t py) override
Compute the closest distance of approach from point px,py to a volume.
void UnbombTranslation(const Double_t *tr, Double_t *bombtr) override
Get the new 'unbombed' translation vector according current exploded view mode.
void PaintNode(TGeoNode *node, Option_t *option="", TGeoMatrix *global=nullptr) override
Paint recursively a node and its content according to visualization options.
void DefaultAngles() override
Set default angles for the current view.
TGeoShape * fClippingShape
Bool_t PaintShape(const TGeoShape &shape, Option_t *option) const
Paint the supplied shape into the current 3D viewer.
Int_t CountNodes(TGeoVolume *vol, Int_t level) const
Count number of visible nodes down to a given level.
void DrawShape(TGeoShape *shape, Option_t *option="") override
Draw a shape.
void DrawOnly(Option_t *option="") override
Draw only one volume.
void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const override
Geometry checking method (see TGeoChecker).
void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp=0.1, Option_t *option="") const override
Check overlaps for the top volume of the geometry, within a limit OVLP.
void SetBombFactors(Double_t bombx=1.3, Double_t bomby=1.3, Double_t bombz=1.3, Double_t bombr=1.3) override
Set cartesian and radial bomb factors for translations.
void DefaultColors() override
Set default volume colors according to tracking media.
void CheckEdit()
Check if Ged library is loaded and load geometry editor classe.
void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.) override
Check pushes and pulls needed to cross the next boundary with respect to the position given by FindNe...
void ClearVisibleVolumes()
Clear the list of visible volumes reset the kVisOnScreen bit for volumes previously in the list.
Int_t GetColor(Int_t base, Float_t light) const override
Get index of a base color with given light intensity (0,1)
void LocalToMasterVect(const Double_t *local, Double_t *master) const
Convert a local vector according view rotation matrix.
void DrawVolume(TGeoVolume *vol, Option_t *option="") override
Draw method.
TGeoVolume * GetDrawnVolume() const override
Get currently drawn volume.
void DrawPolygon(const TGeoPolygon *poly) override
Draw a polygon in 3D.
void Test(Int_t npoints, Option_t *option) override
Check time of finding "Where am I" for n points.
void PaintVolume(TGeoVolume *vol, Option_t *option="", TGeoMatrix *global=nullptr) override
Paint recursively a node and its content according to visualization options.
void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option) override
Test for shape navigation methods.
void RandomPoints(const TGeoVolume *vol, Int_t npoints, Option_t *option="") override
Draw random points in the bounding box of a volume.
void SetNsegments(Int_t nseg=20) override
Set number of segments to approximate circles.
void CheckBoundaryReference(Int_t icheck=-1) override
Check the boundary errors reference file created by CheckBoundaryErrors method.
void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE) override
Average center of view of all painted tracklets and compute view box.
void GrabFocus(Int_t nfr=0, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0) override
Move focus to current volume.
void DrawOverlap(void *ovlp, Option_t *option="") override
Draw an overlap.
void SetVisLevel(Int_t level=3) override
Set default level down to which visualization is performed.
void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys) override
Add numpoints, numsegs, numpolys to the global 3D size.
void PaintPhysicalNode(TGeoPhysicalNode *node, Option_t *option="")
Paints a physical node associated with a path.
const char * GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const override
Get some info about the current selected volume.
void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="") override
Check current point in the geometry.
void DrawCurrentPoint(Int_t color) override
Draw current point in the same view.
void DrawPath(const char *path, Option_t *option="") override
Draw all volumes for a given path.
void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch=nullptr, Bool_t last=kFALSE, Bool_t refresh=kFALSE, const char *msg="") override
Text progress bar.
void SetCheckedNode(TGeoNode *node) override
Select a node to be checked for overlaps.
void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="") override
Draw the time evolution of a radionuclide.
void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py) override
Execute mouse actions on a given shape.
Double_t Weight(Double_t precision, Option_t *option="v") override
Compute weight [kg] of the current volume.
void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py) override
Execute mouse actions on a given volume.
TGeoPainter(TGeoManager *manager)
Default constructor.
void ModifiedPad(Bool_t update=kFALSE) const override
Check if a pad and view are present and send signal "Modified" to pad.
void SetTopVisible(Bool_t vis=kTRUE) override
Set top geometry volume as visible.
void DrawPanel() override
Bool_t TestVoxels(TGeoVolume *vol) override
Check voxels efficiency per volume.
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 TGraph is an object made of two arrays X and Y with npoints each.
virtual void SetTitle(const char *title="")
Change (i.e.
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.
Long_t ExecPlugin(int nargs, const T &... params)
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)
Short_t Max(Short_t a, Short_t b)
constexpr Double_t DegToRad()
Conversion from degree to radian:
Double_t Sqrt(Double_t x)