14TCanvas *create_canvas(
const char *title,
bool divide =
true)
16 auto c = (
TCanvas *)
gROOT->GetListOfCanvases()->FindObject(
"csg_canvas");
22 c =
new TCanvas(
"csg_canvas", title, 700, 1000);
26 c->Divide(1, 2, 0, 0);
28 gPad->SetPad(0, 0, 1, 0.4);
30 gPad->SetPad(0, 0.4, 1, 1);
40 if (is_raytracing != raytracing) {
41 gGeoManager->GetTopVolume()->SetVisRaytrace(raytracing);
50 auto c = create_canvas(
"Union boolean operation");
85 TText *
text =
pt->AddText(
"TGeoCompositeShape - composite shape class");
86 text->SetTextColor(2);
87 pt->AddText(
"----- It's an example of boolean union operation : A + B");
88 pt->AddText(
"----- A == part of sphere (5-175, 0-340), B == pgon");
90 pt->SetAllWith(
"-----",
"color", 4);
91 pt->SetAllWith(
"-----",
"font", 72);
92 pt->SetAllWith(
"-----",
"size", 0.04);
94 pt->SetTextSize(.044);
102 auto c = create_canvas(
"Intersection boolean operation");
137 TText *
text =
pt->AddText(
"TGeoCompositeShape - composite shape class");
139 text->SetTextColor(2);
140 pt->AddText(
"----- Here is an example of boolean intersection operation : A * B");
141 pt->AddText(
"----- A == sphere (with inner radius non-zero), B == box");
143 pt->SetAllWith(
"-----",
"color", 4);
144 pt->SetAllWith(
"-----",
"font", 72);
145 pt->SetAllWith(
"-----",
"size", 0.04);
146 pt->SetTextAlign(12);
147 pt->SetTextSize(0.044);
155 auto c = create_canvas(
"Difference boolean operation");
185 TText *
text =
pt->AddText(
"TGeoCompositeShape - composite shape class");
187 text->SetTextColor(2);
189 pt->AddText(
"----- It's an example of boolean difference: A - B");
190 pt->AddText(
"----- A == part of sphere (0-180, 0-270), B == partial torus (45-145)");
192 pt->SetAllWith(
"-----",
"color", 4);
193 pt->SetAllWith(
"-----",
"font", 72);
194 pt->SetAllWith(
"-----",
"size", 0.04);
195 pt->SetTextAlign(12);
196 pt->SetTextSize(0.044);
204 auto c = create_canvas(
"A * B - C");
248 TText *
text =
pt->AddText(
"TGeoCompositeShape - composite shape class");
249 text->SetTextColor(2);
250 pt->AddText(
"----- (sphere * box) + (sphere - box) ");
253 pt->SetAllWith(
"-----",
"color", 4);
254 pt->SetAllWith(
"-----",
"font", 72);
255 pt->SetAllWith(
"-----",
"size", 0.04);
256 pt->SetTextAlign(12);
257 pt->SetTextSize(0.044);
267 bool drawn =
gPad->GetListOfPrimitives()->FindObject(top);
271 printf(
"raytrace %d\n", raytracing);
280 auto c = create_canvas(
"Help to run demos",
false);
283 welcome->
AddText(
"Welcome to the new geometry package");
292 hdemo->
AddText(
"- Demo for building TGeo composite shapes");
294 hdemo->
AddText(
" .... s_union() : Union boolean operation");
295 hdemo->
AddText(
" .... s_difference() : Difference boolean operation");
296 hdemo->
AddText(
" .... s_intersection() : Intersection boolean operation");
297 hdemo->
AddText(
" .... s_complex() : Combination of (A * B) + (C - D)");
311 bar->
AddButton(
"How to run ",
"help()",
"Instructions ");
312 bar->
AddButton(
"Union ",
"s_union()",
"A + B ");
313 bar->
AddButton(
"Intersection ",
"s_intersection()",
"A * B ");
314 bar->
AddButton(
"Difference ",
"s_difference()",
"A - B ");
315 bar->
AddButton(
"Complex composite",
"s_complex()",
"(A * B) + (C - D)");
316 bar->
AddButton(
"RAY-TRACE ON/OFF",
"raytrace()",
"Toggle ray-tracing mode");
bool Bool_t
Boolean (0=false, 1=true) (bool).
externTGeoManager * gGeoManager
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
virtual void SetTextAlign(Short_t align=11)
Set the text alignment.
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
virtual void SetTextFont(Font_t tfont=62)
Set the text font.
A Control Bar is a fully user configurable tool which provides fast access to frequently used operati...
void Show()
Show control bar.
void AddButton(TControlBarButton *button)
Add button.
void SetVisRaytrace(Bool_t flag=kTRUE)
Composite shapes are Boolean combinations of two or more shape components.
The manager class for any TGeo geometry.
Base class describing materials.
virtual void RegisterYourself()
Register the matrix in the current manager, which will become the owner.
Media are used to store properties related to tracking and which are useful only when using geometry ...
virtual void DefineSection(Int_t snum, Double_t z, Double_t rmin, Double_t rmax)
Class describing translations.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
void Draw(Option_t *option="") override
draw top volume according to option
virtual void SetName(const char *name)
Set the name of the TNamed.
void Draw(Option_t *option="") override
Draw this pave with its current attributes.
virtual void SetAllWith(const char *text, Option_t *option, Double_t value)
virtual TText * AddText(Double_t x1, Double_t y1, const char *label)
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)