Project
Loading...
Searching...
No Matches
XRayTransport.h File Reference

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< Crossingo2::cad::xray::stepCrossingsWithKernels (const Point3D &origin, const Point3D &dir, double tMax, const StepConfig &cfg, Robustness &stats, ContainsFn contains, DistOutFn distFromOutside, DistInFn distFromInside)
 
std::vector< Crossingo2::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< Beamo2::cad::xray::buildFanBeams (int count)
 
std::vector< Beamo2::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)
 

Detailed Description

The X-ray transport benchmark's algorithms: stepping, auditing and comparing ordered crossing lists.

Author
Sandro Wenzel sandr.nosp@m.o.we.nosp@m.nzel@.nosp@m.cern.nosp@m..ch
Since
2026-08

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.