11 #ifndef ROOT_TGeoParallelWorld
12 #define ROOT_TGeoParallelWorld
19 class TGeoPhysicalNode;
22 class TGeoParallelWorld :
public TNamed
25 TGeoManager *fGeoManager;
30 TGeoPhysicalNode *fLastState;
33 TGeoParallelWorld(
const TGeoParallelWorld&);
34 TGeoParallelWorld& operator=(
const TGeoParallelWorld&);
38 TGeoParallelWorld() : TNamed(),fGeoManager(0),fPaths(0),fUseOverlaps(kFALSE),fIsClosed(kFALSE),fVolume(0),fLastState(0),fPhysical(0) {}
39 TGeoParallelWorld(
const char *name, TGeoManager *mgr);
42 virtual ~TGeoParallelWorld();
44 void AddNode(
const char *path);
46 void SetUseOverlaps(Bool_t flag) {fUseOverlaps = flag;}
47 Bool_t IsUsingOverlaps()
const {
return fUseOverlaps;}
48 void ResetOverlaps()
const;
50 void AddOverlap(TGeoVolume *vol, Bool_t activate=kTRUE);
51 void AddOverlap(
const char *volname, Bool_t activate=kTRUE);
53 Int_t PrintDetectedOverlaps()
const;
56 Bool_t CloseGeometry();
58 void RefreshPhysicalNodes();
61 TGeoPhysicalNode *FindNode(Double_t point[3]);
62 TGeoPhysicalNode *FindNextBoundary(Double_t point[3], Double_t dir[3], Double_t &step, Double_t stepmax=1.E30);
63 Double_t Safety(Double_t point[3], Double_t safmax=1.E30);
66 TGeoManager *GetGeometry()
const {
return fGeoManager;}
67 Bool_t IsClosed()
const {
return fIsClosed;}
68 TGeoVolume *GetVolume()
const {
return fVolume;}
71 void CheckOverlaps(Double_t ovlp=0.001);
72 void Draw(Option_t *option);
74 ClassDef(TGeoParallelWorld, 3)