Project
Loading...
Searching...
No Matches
o2::cad Namespace Reference

Namespaces

namespace  bench
 
namespace  harness
 
namespace  surface
 
namespace  xray
 

Classes

struct  BVHSurfaceCurveRecord
 One boundary curve of a BVHSurfaceRecord in the flat form ROOT streams: a segment, an arc or a B-spline. More...
 
struct  BVHSurfaceRecord
 The persistent record of one successful Add*Surface call; reading a solid back replays the records. More...
 
struct  FlatCSGBox
 
struct  FlatCSGCell
 One DNF cell: [first, first + count) of the halfspace array, intersected; volume is its own volume. More...
 
struct  FlatCSGHalfspace
 
class  O2BVHAssembly
 
class  O2BVHSurfaceSolid
 
class  O2FlatCSG
 
struct  OverlapCensus
 
struct  OverlapOptions
 
struct  OverlapPair
 One pair of placed solids, and everything measured about it. More...
 
struct  OverlapSolidReport
 One solid's sampling report; a shape with a poor display mesh shows here as reduced coverage. More...
 

Enumerations

enum class  OverlapVerdict { Disjoint , Touching , Interpenetrating , Contained }
 Whether two placed solids may legally coexist: disjoint and touching are legal, interpenetrating and contained are not. More...
 

Functions

TGeoVolume * buildCADVolumeFromMacro (const std::string &macroFile, const std::string &instanceTag)
 
void remapCADMedia (TGeoVolume *top, const char *modulename)
 
const charOverlapVerdictName (OverlapVerdict verdict)
 
int SampleBoundaryPoints (const TGeoShape *shape, int npoints, double residualTolerance, std::vector< double > &points, int &rejected, double &worstResidual, bool *usedPointsOnSegments=nullptr)
 
OverlapPair CheckPairOverlap (const TGeoShape *shapeA, const TGeoMatrix *matA, const std::string &nameA, const TGeoShape *shapeB, const TGeoMatrix *matB, const std::string &nameB, const OverlapOptions &options=OverlapOptions())
 Test one placed pair. matA / matB take each shape's local frame to the common frame.
 
OverlapCensus CheckWorldOverlaps (const TGeoVolume *volume, const OverlapOptions &options=OverlapOptions())
 Census every pair of volume's immediate daughters, and optionally each daughter against volume.
 
bool LoadSurfaceSolid (const std::string &file, O2BVHSurfaceSolid &solid)
 
bool LoadFacetSolid (const std::string &file, o2::base::O2Tessellated &solid)
 
bool LoadFlatCSG (const std::string &file, O2FlatCSG &solid)
 Load a flat-CSG sidecar (flatcsg_*.bin, version 1) into solid; call CloseShape() after. False on an I/O or format error.
 
bool WriteFlatCSG (const std::string &file, const O2FlatCSG &solid)
 

Detailed Description

Enumeration Type Documentation

◆ OverlapVerdict

enum class o2::cad::OverlapVerdict
strong

Whether two placed solids may legally coexist: disjoint and touching are legal, interpenetrating and contained are not.

Enumerator
Disjoint 

no sampled boundary point of either solid lies inside the other

Touching 

boundary points coincide, but none is deeper than the depth tolerance

Interpenetrating 

a boundary point of one solid lies strictly inside the other: illegal

Contained 

every sampled boundary point of the smaller solid is inside the other

Definition at line 31 of file O2OverlapCheck.h.

Function Documentation

◆ buildCADVolumeFromMacro()

TGeoVolume * o2::cad::buildCADVolumeFromMacro ( const std::string &  macroFile,
const std::string &  instanceTag 
)

JIT-compile a CAD-derived ROOT geometry macro (as produced by O2_CADtoTGeo.py) and execute it to obtain the top TGeoVolume of the described module.

The macro body is wrapped into a unique namespace (derived from instanceTag) so that several such macros — which all export identically named symbols (build(), get_builder_hook_unchecked(), ...) — can coexist in the same Cling session without colliding. Returns nullptr on failure.

Parameters
macroFilepath to the geometry macro (shell variables are expanded)
instanceTaga short tag used to build a unique, human-readable namespace

Definition at line 39 of file CADGeometryUtils.cxx.

◆ CheckPairOverlap()

OverlapPair o2::cad::CheckPairOverlap ( const TGeoShape *  shapeA,
const TGeoMatrix *  matA,
const std::string &  nameA,
const TGeoShape *  shapeB,
const TGeoMatrix *  matB,
const std::string &  nameB,
const OverlapOptions options = OverlapOptions() 
)

Test one placed pair. matA / matB take each shape's local frame to the common frame.

Definition at line 343 of file O2OverlapCheck.cxx.

◆ CheckWorldOverlaps()

OverlapCensus o2::cad::CheckWorldOverlaps ( const TGeoVolume *  volume,
const OverlapOptions options = OverlapOptions() 
)

Census every pair of volume's immediate daughters, and optionally each daughter against volume.

Definition at line 370 of file O2OverlapCheck.cxx.

◆ LoadFacetSolid()

bool o2::cad::LoadFacetSolid ( const std::string &  file,
o2::base::O2Tessellated solid 
)

Load a facet sidecar (facets_*.bin: a uint32 triangle count, then nine float32 per triangle) into solid; call CloseShape() after. False on an I/O or format error; degenerate facets are skipped and counted in a warning.

Definition at line 636 of file O2SurfaceSolidIO.cxx.

◆ LoadFlatCSG()

bool o2::cad::LoadFlatCSG ( const std::string &  file,
O2FlatCSG solid 
)

Load a flat-CSG sidecar (flatcsg_*.bin, version 1) into solid; call CloseShape() after. False on an I/O or format error.

Definition at line 688 of file O2SurfaceSolidIO.cxx.

◆ LoadSurfaceSolid()

bool o2::cad::LoadSurfaceSolid ( const std::string &  file,
O2BVHSurfaceSolid solid 
)

Load an exact-surface sidecar (surfaces_*.bin, versions 1-3) into solid through its Add*Surface methods; call CloseShape() after. False on an I/O or format error, when the solid may be partly filled and should be discarded.

Definition at line 365 of file O2SurfaceSolidIO.cxx.

◆ OverlapVerdictName()

const char * o2::cad::OverlapVerdictName ( OverlapVerdict  verdict)

Definition at line 38 of file O2OverlapCheck.cxx.

◆ remapCADMedia()

void o2::cad::remapCADMedia ( TGeoVolume *  top,
const char modulename 
)

Re-register the TGeo media used in the volume tree rooted at top into the O2 MaterialManager under ownership of modulename, rewiring the volumes to the newly created media. This brings the CAD-imported media under O2's media/cut handling (so that e.g. tracking cuts apply consistently).

Definition at line 102 of file CADGeometryUtils.cxx.

◆ SampleBoundaryPoints()

int o2::cad::SampleBoundaryPoints ( const TGeoShape *  shape,
int  npoints,
double  residualTolerance,
std::vector< double > &  points,
int rejected,
double &  worstResidual,
bool *  usedPointsOnSegments = nullptr 
)

Sample npoints points on shape's own boundary into points, keeping those within residualTolerance where Contains flips. Returns the number kept; rejected and worstResidual report the filter.

Definition at line 154 of file O2OverlapCheck.cxx.

◆ WriteFlatCSG()

bool o2::cad::WriteFlatCSG ( const std::string &  file,
const O2FlatCSG solid 
)

Write solid in the same format. Used by the converter's tests and by the round-trip case; the production writer is Detectors/CADSupport/tools/cadsupport/flat.py, and the two must agree byte for byte.

Definition at line 804 of file O2SurfaceSolidIO.cxx.