Logo ROOT  
Reference Guide
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
TGeometry* 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
TVirtualPad *thisPad = gPad;
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]);
Double_t maxSide = 0;
// 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);
Int_t ireply;
thisPad->Modified();
thisPad->Update();
}
}
Author
Robert Hatcher (rhatc.nosp@m.her@.nosp@m.fnal..nosp@m.gov) 2000.09.06

Definition in file xtruDraw.C.

TView::SetRange
virtual void SetRange(const Double_t *min, const Double_t *max)=0
TVirtualPad::Update
virtual void Update()=0
TMath::Max
Short_t Max(Short_t a, Short_t b)
Definition: TMathBase.h:212
geometry
Definition: geometry.py:1
Float_t
float Float_t
Definition: RtypesCore.h:57
Int_t
int Int_t
Definition: RtypesCore.h:45
x
Double_t x[n]
Definition: legend1.C:17
TGeometry
Definition: TGeometry.h:39
TView
Definition: TView.h:25
TXTRU::DefineSection
virtual void DefineSection(Int_t secNum, Float_t z, Float_t scale=1., Float_t x0=0., Float_t y0=0.)
Set z section iz information expand size of array if necessary.
Definition: TXTRU.cxx:250
y
Double_t y[n]
Definition: legend1.C:17
TVirtualPad::GetView
virtual TView * GetView() const =0
TNode
Definition: TNode.h:33
TView::GetRange
virtual void GetRange(Float_t *min, Float_t *max)=0
Double_t
double Double_t
Definition: RtypesCore.h:59
TVirtualPad
Definition: TVirtualPad.h:50
TXTRU::DefineVertex
virtual void DefineVertex(Int_t pointNum, Float_t x, Float_t y)
Set vertex point ipt to (x,y) expand size of array if necessary.
Definition: TXTRU.cxx:304
TCanvas
Definition: TCanvas.h:23
file
Definition: file.py:1
TXTRU
Definition: TXTRU.h:22
TVirtualPad::Modified
virtual void Modified(Bool_t flag=1)=0
gPad
#define gPad
Definition: TVirtualPad.h:287