2#ifndef ROOT7_REveGeoOverlaps
3#define ROOT7_REveGeoOverlaps
17namespace Experimental {
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
char Text_t
General string (char)
The overlaps and extrusions of a geometry, as a flat list plus a 3D view.
void ScanOverlaps(TGeoManager *mgr, double precision=0.001)
Find every overlap and extrusion in the geometry and work out where each one is.
void SelectOverlap(int idx)
Show one overlap and nothing else.
float GetMarkerSize() const
std::string MakeTip(const Entry &ent, int which, int placement, int inst, int ninst) const
Text shown when the mouse is over one of the drawn pieces.
REveGeoOverlapTable & operator=(const REveGeoOverlapTable &)=delete
float fCrossSize
cap, in cm, on the half-length of each marker's 3D-cross arm; AddPlacement() scales the actual arm to...
void AddPlacement(const Entry &ent, const TGeoHMatrix &global, int placement, std::set< std::string > *seen=nullptr, int inst=-1, int ninst=0)
Draw one placement of the selected overlap: the two shapes and the points.
void SetMarkerSize(float size)
Marker size for the overlap points.
REveElement * fHolder
! where the selected overlap is drawn; put this in a 3D scene
TGeoManager * fMgr
! kept from ScanOverlaps() so SetPrecision() can re-run it
void SetPrecision(double precision)
Re-run the overlap check at a new precision and rebuild the table from scratch.
REveGeoOverlapTable(const REveGeoOverlapTable &)=delete
void PrintOverlap(int idx)
Print one overlap's details to the server console: name, volumes, mother, TGeoOverlap's own title (us...
~REveGeoOverlapTable() override
void Redraw()
Re-run whichever selection is current, so a change of appearance takes effect without the client havi...
void SelectUniqueOverlap(int gidx)
Show every instance of one kind of flaw at once.
void LocalizeMarkers(Entry &ent, const std::vector< float > &localPts)
Filter the marker points down to the ones that plausibly belong to this flaw.
int fScanGen
bumped by ScanOverlaps(); lets the client tell a rescan from an ordinary selection stamp
void PrintUniqueOverlap(int gidx)
Print a whole group – every entry sharing this (vol1, vol2, extrusion) – to the server console,...
void SetCrossSize(float size)
Cap, in cm, on the half-length of each marker's 3D-cross arm.
void CollectPlacements(TGeoManager *mgr)
Global matrix of every physical placement of each mother volume.
Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override
Write core json.
std::vector< Group > fGroups
void BuildGroups()
Collapse entries that are the same flaw repeated.
double GetPrecision() const
float GetCrossSize() const
int GetNumOverlaps() const
REveElement * GetVizHolder()
Element carrying the shapes of the selected overlap.
std::vector< Entry > fEntries
Matrix class used for computing global transformations Should NOT be used for node definition.
The manager class for any TGeo geometry.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
TGeoVolume * fV1
! first volume; the mother, for an extrusion
TGeoHMatrix fM2
! placements, in the mother's local frame
std::string fName
TGeoOverlap name, e.g. ov00035.
std::string fTitle
human-readable description
std::string fVol2
names of the two volumes
TGeoVolume * fV2
! second volume
std::vector< TGeoHMatrix > fGlobals
! global matrix of every placement of the mother
bool fExtrusion
extrusion, as opposed to a real overlap
int fNumRawMarkers
points the overlap carried, before filtering
TGeoVolume * fMother
! volume both matrices are expressed in
double fValue
overlap/extrusion size, in cm
std::vector< float > fLocalMarkers
! marker points, in the mother's frame, finite only
One kind of flaw, with every placement of it that the geometry contains.
std::vector< int > fMembers
indices into the entry list
double fValue
largest value among the members