Limits and pain points
The honest list. These are the things known to catch people today, roughly in order of how often they do it. None is a reason not to use the system, but all of them are cheaper to read about here than to rediscover in a result.
| What | Why it happens | What to do |
|---|---|---|
One geom.C per hooked thing |
The macro exports a single builder hook, and that hook is what the JSON refers to. | Run the converter once per subsystem, into its own folder. They coexist happily in one JSON. |
| Media, cuts and field default to zero | A CAD file carries a material, never a medium, and the emitter uses a three-argument TGeoMedium which zeroes every parameter. |
Pass --in-field. Accept transport defaults for step control, and treat production cuts as unset until you write a real detector. |
| The anchor volume must already exist | Placement is expressed inside the frame of an existing O2 volume. | Use barrel unless you have a reason not to, and remember it sits at cave (0, -30, 0). |
| Free-form surfaces stay tessellated | Genuine B-spline surfaces are not supported by the exact tier at all. | Check the surface report. Recognition already recovers quadrics written as NURBS, which is the large majority of them. |
| Illegal overlaps in the CAD model | Engineering assemblies are not drawn as legal transport worlds, and parts routinely interpenetrate. | Read CheckOverlaps, then fix in CAD or clip the offending region. |
| Degenerate facets at coarse precision | O2Tessellated drops triangles that collapse to a line. |
Treat it as a mesh-quality signal: lower --mesh-prec, or move the part onto an exact tier. |
| A surprisingly huge output directory | Meshing a metre-scale curved part at a fine chord tolerance. | Convert large models without --mesh, and never use the default --mesh-prec on something metre-sized. |
o2-sim complains about a missing externalModules array |
Cosmetic. The message is emitted even when your JSON correctly contains only externalDetectors. |
Ignore it. |
One rule that is not a preference
Run --csg auto conversions strictly serially. Parallel runs race each other and silently lose
shapes, which produces a geometry that looks complete and is not — the worst possible failure mode,
and the hardest to notice afterwards.
Deeper material lives in Detectors/CADSupport: README.md for the complete option reference,
doc/reference/ for the exact-surface solid, its file format and the CSG pipeline, and
doc/known-issues.md for open defects.
