12 #ifndef ROOT_TGeoOverlap
13 #define ROOT_TGeoOverlap
37 class TGeoOverlap :
public TNamed,
44 kGeoOverlap = BIT(14),
45 kGeoExtrusion = BIT(15)
49 TGeoOverlap(
const TGeoOverlap&);
50 TGeoOverlap& operator=(
const TGeoOverlap&);
56 TGeoHMatrix *fMatrix1;
57 TGeoHMatrix *fMatrix2;
58 TPolyMarker3D *fMarker;
62 TGeoOverlap(
const char *name, TGeoVolume *vol1, TGeoVolume *vol2,
63 const TGeoMatrix *matrix1,
const TGeoMatrix *matrix2,
64 Bool_t isovlp=kTRUE, Double_t ovlp=0.01);
65 virtual ~TGeoOverlap();
67 void Browse(TBrowser *b);
68 virtual Int_t Compare(
const TObject *obj)
const;
69 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
70 virtual void Draw(Option_t *option=
"");
71 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
72 TPolyMarker3D *GetPolyMarker()
const {
return fMarker;}
73 TGeoVolume *GetFirstVolume()
const {
return fVolume1;}
74 TGeoVolume *GetSecondVolume()
const {
return fVolume2;}
75 TGeoHMatrix *GetFirstMatrix()
const {
return fMatrix1;}
76 TGeoHMatrix *GetSecondMatrix()
const {
return fMatrix2;}
77 Double_t GetOverlap()
const {
return fOverlap;}
78 Bool_t IsExtrusion()
const {
return TObject::TestBit(kGeoExtrusion);}
79 Bool_t IsOverlap()
const {
return TObject::TestBit(kGeoOverlap);}
80 Bool_t IsFolder()
const {
return kFALSE;}
81 virtual Bool_t IsSortable()
const {
return kTRUE;}
82 virtual void Paint(Option_t *option=
"");
83 virtual void Print(Option_t *option=
"")
const;
84 virtual void PrintInfo()
const;
85 virtual void Sizeof3D()
const;
86 void SampleOverlap(Int_t npoints=1000000);
87 void SetIsExtrusion(Bool_t flag=kTRUE) {TObject::SetBit(kGeoExtrusion,flag); TObject::SetBit(kGeoOverlap,!flag);}
88 void SetIsOverlap(Bool_t flag=kTRUE) {TObject::SetBit(kGeoOverlap,flag); TObject::SetBit(kGeoExtrusion,!flag);}
89 void SetNextPoint(Double_t x, Double_t y, Double_t z);
90 void SetFirstVolume(TGeoVolume *vol) {fVolume1=vol;}
91 void SetSecondVolume(TGeoVolume *vol) {fVolume2=vol;}
92 void SetFirstMatrix(TGeoMatrix *matrix) {*fMatrix1 = matrix;}
93 void SetSecondMatrix(TGeoMatrix *matrix) {*fMatrix2 = matrix;}
94 void SetOverlap(Double_t ovlp) {fOverlap=ovlp;}
95 void Validate()
const;
97 ClassDef(TGeoOverlap, 2)