![]() |
Project
|
The X-ray transport benchmark's algorithms: stepping, auditing and comparing ordered crossing lists. More...
#include "CADSupport/O2SolidHarness.h"#include "TGeoShape.h"#include <algorithm>#include <array>#include <cmath>#include <string>#include <vector>Go to the source code of this file.
Classes | |
| struct | o2::cad::xray::Crossing |
| struct | o2::cad::xray::Robustness |
| struct | o2::cad::xray::StepConfig |
| struct | o2::cad::xray::ListComparison |
| struct | o2::cad::xray::RayDef |
| struct | o2::cad::xray::Beam |
| struct | o2::cad::xray::Raster |
Namespaces | |
| namespace | o2 |
| a couple of static helper functions to create timestamp values for CCDB queries or override obsolete objects | |
| namespace | o2::cad |
| namespace | o2::cad::xray |
Functions | |
| template<typename ContainsFn , typename DistOutFn , typename DistInFn > | |
| std::vector< Crossing > | o2::cad::xray::stepCrossingsWithKernels (const Point3D &origin, const Point3D &dir, double tMax, const StepConfig &cfg, Robustness &stats, ContainsFn contains, DistOutFn distFromOutside, DistInFn distFromInside) |
| std::vector< Crossing > | o2::cad::xray::stepWithShapeApi (const TGeoShape *shape, const Point3D &origin, const Point3D &dir, double tMax, const StepConfig &cfg, Robustness &stats) |
| Mode (a): the same loop driven by the ordinary TGeoShape virtuals. | |
| void | o2::cad::xray::auditCrossingList (const std::vector< Crossing > &crossings, const TGeoShape *shape, const Point3D &origin, const Point3D &dir, double tMax, const StepConfig &cfg, Robustness &stats) |
| void | o2::cad::xray::compareLists (const std::vector< Crossing > &candidate, const std::vector< Crossing > &reference, const Point3D &origin, const Point3D &dir, double tolerance, ListComparison &out) |
| double | o2::cad::xray::dot3 (const Point3D &a, const Point3D &b) |
| Point3D | o2::cad::xray::normalize3 (const Point3D &a) |
| Point3D | o2::cad::xray::cross3 (const Point3D &a, const Point3D &b) |
| std::vector< Beam > | o2::cad::xray::buildFanBeams (int count) |
| std::vector< Beam > | o2::cad::xray::buildBeams (const std::string &axesSpec, double tiltDegrees) |
| Raster | o2::cad::xray::buildRaster (const Point3D &bboxMin, const Point3D &bboxMax, int n, const std::vector< Beam > &beams, double transverseMargin) |
| double | o2::cad::xray::chordVolume (const Raster &raster, const std::vector< double > &insideLengthPerBeam) |
The X-ray transport benchmark's algorithms: stepping, auditing and comparing ordered crossing lists.
Header-only, and deliberately NOT in CADSupport: this is a measuring instrument, and the project's rule is that an instrument must not change the thing it measures. Putting it here means o2-bench-cadsupport-solid-harness and the oracle gate are untouched – not one object file of the existing path is rebuilt differently.
It is a header rather than code inside runXRayBenchmark.cxx for one reason: the unit tests in testBVHSurfaceSolid.cxx must exercise THE SAME stepping loop and THE SAME comparator that the benchmark runs. A test against a second implementation of the same idea tests neither.
Definition in file XRayTransport.h.