Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
xtruDraw.C File Reference

Detailed Description

Draw a "representative" TXTRU shape.

void xtruDraw()
{
TCanvas *canvas = new TCanvas("xtru", "Example XTRU object", 200, 10, 640, 640);
// Create a new geometry
geometry = new TGeometry("geometry", "geometry");
geometry->cd();
TXTRU *atxtru = new TXTRU("atxtru", "atxtru", "void", 5, 2);
// outline and z segment specifications
Float_t x[] = {-177.292, -308.432, -308.432, -305.435, -292.456, -280.01, -241.91, -241.91,
-177.292, -177.292, 177.292, 177.292, 241.91, 241.91, 280.06, 297.942,
305.435, 308.432, 308.432, 177.292, 177.292, -177.292};
Float_t y[] = {154.711, 23.5712, 1.1938, 1.1938, 8.6868, 8.6868, -3.7592, -90.0938, -154.711, -190.602, -190.602,
-154.711, -90.0938, -3.7592, 8.6868, 8.6868, 1.1938, 1.1938, 23.5712, 154.711, 190.602, 190.602};
Float_t z[] = {0.00, 500.0};
Float_t scale[] = {1.00, 1.00};
Float_t x0[] = {0, 0};
Float_t y0[] = {0, 0};
Int_t i;
Int_t nxy = sizeof(x) / sizeof(Float_t);
for (i = 0; i < nxy; i++) {
atxtru->DefineVertex(i, x[i], y[i]);
}
Int_t nz = sizeof(z) / sizeof(Float_t);
for (i = 0; i < nz; i++) {
atxtru->DefineSection(i, z[i], scale[i], x0[i], y0[i]);
}
// Define a TNode where this example resides in the TGeometry
// Draw the TGeometry
TNode *anode = new TNode("anode", "anode", atxtru);
anode->SetLineColor(1);
geometry->Draw();
// Tweak the pad scales so as not to distort the shape
if (thisPad) {
TView *view = thisPad->GetView();
if (!view)
return;
Double_t min[3], max[3], center[3];
view->GetRange(min, max);
int i;
// Find the boxed center
for (i = 0; i < 3; i++)
center[i] = 0.5 * (max[i] + min[i]);
// Find the largest side
for (i = 0; i < 3; i++)
maxSide = TMath::Max(maxSide, max[i] - center[i]);
file: // Adjust scales:
for (i = 0; i < 3; i++) {
max[i] = center[i] + maxSide;
min[i] = center[i] - maxSide;
}
view->SetRange(min, max);
thisPad->Modified();
thisPad->Update();
}
}
int Int_t
Definition RtypesCore.h:45
float Float_t
Definition RtypesCore.h:57
double Double_t
Definition RtypesCore.h:59
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define gPad
The Canvas class.
Definition TCanvas.h:23
TGeometry description.
Definition TGeometry.h:39
TNode description.
Definition TNode.h:33
See TView3D.
Definition TView.h:25
virtual void GetRange(Float_t *min, Float_t *max)=0
virtual void SetRange(const Double_t *min, const Double_t *max)=0
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition TVirtualPad.h:51
A poly-extrusion.
Definition TXTRU.h:22
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Definition TMathBase.h:250
Author
Robert Hatcher (rhatc.nosp@m.her@.nosp@m.fnal..nosp@m.gov) 2000.09.06

Definition in file xtruDraw.C.