Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-15 10:30:27

0001 /*************************************************************************
0002  * Copyright (C) 1995-2025, Rene Brun and Fons Rademakers.               *
0003  * All rights reserved.                                                  *
0004  *                                                                       *
0005  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0006  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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; // Pointer to checker instance
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) // Abstract interface for geometry painters
0058 };
0059 
0060 #endif