File indexing completed on 2025-12-15 10:30:27
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef ROOT_TVirtualGeoChecker
0010 #define ROOT_TVirtualGeoChecker
0011
0012 #include "TObject.h"
0013
0014 class TGeoVolume;
0015 class TGeoShape;
0016 class TGeoNode;
0017 class TGeoManager;
0018 class TH2F;
0019 class TStopwatch;
0020
0021 class TVirtualGeoChecker : public TObject {
0022 protected:
0023 static TVirtualGeoChecker *fgGeoChecker;
0024
0025 public:
0026 TVirtualGeoChecker();
0027 ~TVirtualGeoChecker() override;
0028
0029 virtual void
0030 CheckPoint(Double_t x = 0, Double_t y = 0, Double_t z = 0, Option_t *option = "", Double_t safety = 0.) = 0;
0031 virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option) = 0;
0032 virtual void CheckBoundaryErrors(Int_t ntracks = 1000000, Double_t radius = -1.) = 0;
0033 virtual void CheckBoundaryReference(Int_t icheck = -1) = 0;
0034 virtual void CheckGeometryFull(Bool_t checkoverlaps = kTRUE, Bool_t checkcrossings = kTRUE, Int_t nrays = 10000,
0035 const Double_t *vertex = nullptr) = 0;
0036 virtual void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const = 0;
0037 virtual void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp = 0.1, Option_t *option = "") = 0;
0038 virtual TH2F *LegoPlot(Int_t ntheta = 60, Double_t themin = 0., Double_t themax = 180., Int_t nphi = 90,
0039 Double_t phimin = 0., Double_t phimax = 360., Double_t rmin = 0., Double_t rmax = 9999999,
0040 Option_t *option = "") = 0;
0041 virtual void PrintOverlaps() const = 0;
0042 virtual void RandomPoints(TGeoVolume *vol, Int_t npoints, Option_t *option) = 0;
0043 virtual void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz,
0044 const char *target_vol = nullptr, Bool_t check_norm = kFALSE) = 0;
0045 virtual void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch = nullptr,
0046 Bool_t last = kFALSE, Bool_t refresh = kFALSE, const char *msg = "") = 0;
0047 virtual TGeoNode *SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path) = 0;
0048 virtual void SetSelectedNode(TGeoNode *node) = 0;
0049 virtual void SetNmeshPoints(Int_t npoints = 1000) = 0;
0050 virtual void Test(Int_t npoints, Option_t *option) = 0;
0051 virtual void TestOverlaps(const char *path) = 0;
0052 virtual Bool_t TestVoxels(TGeoVolume *vol, Int_t npoints = 1000000) = 0;
0053 virtual Double_t Weight(Double_t precision = 0.01, Option_t *option = "v") = 0;
0054
0055 TVirtualGeoChecker *GeoChecker();
0056
0057 ClassDefOverride(TVirtualGeoChecker, 0)
0058 };
0059
0060 #endif