Project
Loading...
Searching...
No Matches
O2SolidHarness.cxx File Reference
#include "CADSupport/O2SolidHarness.h"
#include "CADSupport/O2FlatCSG.h"
#include "TClass.h"
#include "TFile.h"
#include "TGeoMatrix.h"
#include "TKey.h"
#include <algorithm>
#include <chrono>
#include <cmath>
#include <cstring>
#include <memory>
#include <random>

Go to the source code of this file.

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::harness
 
namespace  o2::cad::harness::detail
 

Functions

uint64_t o2::cad::harness::detail::mixDouble (uint64_t acc, double value)
 
SampleSet o2::cad::harness::generateSamples (const TGeoShape *reference, const Point3D &bboxMin, const Point3D &bboxMax, const SampleConfig &cfg={})
 A deterministic sample set from cfg.seed and the bbox; reference, the trusted mesh, classifies the points.
 
ValidationResult o2::cad::harness::validateContains (const TGeoShape *candidate, const TGeoShape *reference, const std::vector< Point3D > &points, const ValidationOptions &opt={})
 
ValidationResult o2::cad::harness::validateDistFromOutside (const TGeoShape *candidate, const TGeoShape *reference, const std::vector< Ray > &rays, const ValidationOptions &opt={})
 
ValidationResult o2::cad::harness::validateDistFromInside (const TGeoShape *candidate, const TGeoShape *reference, const std::vector< Ray > &rays, const ValidationOptions &opt={})
 
ValidationResult o2::cad::harness::validateSafety (const TGeoShape *shape, const std::vector< Point3D > &points, const ValidationOptions &opt={})
 Check one shape's Safety() lower-bound contract against its own DistFrom* along six probe directions; never compares two shapes.
 
ValidationResult o2::cad::harness::validateContainsAgainstOracle (const TGeoShape *candidate, const std::vector< Point3D > &points, const std::vector< int > &oracleState, const std::vector< double > &oracleBoundaryDistance, const ValidationOptions &opt={})
 oracleState: 1 inside, 0 outside, -1 declined; oracleBoundaryDistance may cover only a prefix of points.
 
ValidationResult o2::cad::harness::validateDistanceAgainstOracle (const TGeoShape *candidate, const std::vector< Ray > &rays, const std::vector< double > &oracleDistance, bool wantInside, const ValidationOptions &opt={}, const std::vector< int > &oracleOriginState={})
 
ValidationResult o2::cad::harness::validateSafetyAgainstOracle (const TGeoShape *candidate, const std::vector< Point3D > &points, const std::vector< double > &oracleBoundaryDistance, const ValidationOptions &opt={})
 Safety's contract against the oracle's exact distance: 0 <= safety <= trueDistance.
 
TimingResult o2::cad::harness::timeContains (const TGeoShape *shape, const std::vector< Point3D > &points, int warmupRepeats, int timedRepeats)
 
TimingResult o2::cad::harness::timeDistFromOutside (const TGeoShape *shape, const std::vector< Ray > &rays, int warmupRepeats, int timedRepeats, double stepmax=TGeoShape::Big())
 
TimingResult o2::cad::harness::timeDistFromInside (const TGeoShape *shape, const std::vector< Ray > &rays, int warmupRepeats, int timedRepeats)
 
TimingResult o2::cad::harness::timeSafety (const TGeoShape *shape, const std::vector< Point3D > &points, int warmupRepeats, int timedRepeats)
 
TGeoShape * o2::cad::harness::loadShapeFromRootFile (const std::string &path, std::string *error=nullptr)
 Read the single TGeoShape of a shape_<part>.root sidecar; nullptr on failure, with the reason in *error. The caller owns it.
 
TGeoHMatrix * o2::cad::harness::loadShapePlacementFromRootFile (const std::string &path)
 Read the shape's placement, or nullptr when there is none, meaning the identity. The caller owns it.
 
bool o2::cad::harness::saveShapeToRootFile (const std::string &path, const TGeoShape &shape, std::string *error=nullptr)
 Write a shape sidecar, with placement under "placement" unless it is null or the identity.
 
bool o2::cad::harness::saveShapeToRootFile (const std::string &path, const TGeoShape &shape, const TGeoMatrix *placement, std::string *error)