Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-16 09:22:24

0001 // @(#)root/geom:$Id$
0002 // Author: Andrei Gheata   05/01/26
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TGeoOverlapCandidate
0013 #define ROOT_TGeoOverlapCandidate
0014 
0015 #include "TBuffer3D.h"
0016 #include "TString.h"
0017 #include "TGeoMatrix.h"
0018 class TGeoShape;
0019 class TGeoVolume;
0020 
0021 // Lightweight description of a single overlap/extrusion check to perform
0022 struct TGeoOverlapCandidate {
0023    TString fName;               ///< display name
0024    TGeoVolume *fVol1 = nullptr; ///< first volume
0025    TGeoVolume *fVol2 = nullptr; ///< second volume
0026    TGeoHMatrix fMat1;           ///< matrix for first volume
0027    TGeoHMatrix fMat2;           ///< matrix for second volume
0028    Bool_t fIsOverlap = kTRUE;   ///< kTRUE=overlap, kFALSE=extrusion
0029    Double_t fOvlp = 0.0;        ///< threshold for "illegal"
0030 };
0031 
0032 // Output of the numerical check (no ROOT object allocation inside)
0033 struct TGeoOverlapResult {
0034    TString fName;                                ///< display name
0035    TGeoVolume *fVol1 = nullptr;                  ///< first volume
0036    TGeoVolume *fVol2 = nullptr;                  ///< second volume
0037    TGeoHMatrix fMat1;                            /// matrix for first volume
0038    TGeoHMatrix fMat2;                            /// matrix for second volume
0039    Bool_t fIsOverlap = kTRUE;                    ///< kTRUE=overlap, kFALSE=extrusion
0040    Double_t fMaxOverlap = 0.0;                   ///< overlap distance found
0041    std::vector<std::array<Double_t, 3>> fPoints; ///< up to N points (e.g. 100)
0042 };
0043 
0044 #endif // ROOT_TGeoOverlapWorkState