16 Bool_t makecw = kFALSE;
20 Bool_t reversez = kFALSE;
25 Bool_t domalformed = kFALSE;
28 TCanvas* c1 =
new TCanvas(
"c1",
"sample TXTRU Shapes",200,10,640,640);
31 TGeometry* geom =
new TGeometry(
"sample",
"sample");
41 Float_t bigdim = 12.5*unit;
42 TBRIK* world =
new TBRIK(
"world",
"world",
"void",bigdim,bigdim,bigdim);
45 TNode* worldnode =
new TNode(
"worldnode",
"world node",world);
46 worldnode->SetVisibility(0);
51 Float_t x[] = { -0.50, -1.20, 1.20, 0.50, 0.50, 1.20, -1.20, -0.50 };
52 Float_t y[] = { -0.75, -2.00, -2.00, -0.75, 0.75, 2.00, 2.00, 0.75 };
53 Float_t z[] = { -0.50, -1.50, -1.50, 1.50, 1.50, 0.50 };
54 Float_t s[] = { 0.50, 1.00, 1.50, 1.50, 1.00, 0.50 };
55 Int_t nxy =
sizeof(x)/
sizeof(Float_t);
56 Float_t convexscale[] = { 7.0, -1.0, 1.5 };
58 Int_t icolor[] = { 1, 2, 3, 2, 2, 2, 4, 2, 6 };
63 for (Int_t zcase = 0; zcase<3; zcase++) {
64 if (zcase == 1 && !domalformed)
continue;
65 for (Int_t xycase = 0; xycase<3; xycase++) {
66 if (xycase == 1 && !domalformed)
continue;
69 sprintf(name,
"txtru%1d%1d%1d",xycase,zcase,zseg);
70 TXTRU* mytxtru =
new TXTRU(name,name,
"void",8,2);
73 Float_t xsign = (makecw) ? -1 : 1;
74 Float_t zsign = (reversez) ? -1 : 1;
77 for (i=0; i<nxy; i++) {
78 Float_t xtmp = x[i]*xsign;
80 if (i==0||i==3||i==4||i==7) xtmp *= convexscale[xycase];
81 if (xycase==2) xtmp *=2;
82 mytxtru->DefineVertex(i,xtmp,ytmp);
85 for (i=0, j=0; i<zseg; i++) {
86 Float_t ztmp = z[i]*zsign;
87 if (i==0||i==5) ztmp *= convexscale[zcase];
88 if (zcase==2) ztmp *= 2.5;
89 if (zseg>2 && zcase!=2 && (i==1||i==4))
continue;
90 mytxtru->DefineSection(j,ztmp,s[i]);
94 TNode* txtrunode =
new TNode(name,name,mytxtru);
95 txtrunode->SetLineColor(icolor[3*zcase+xycase]);
96 Float_t pos_scale = (domalformed) ? 10 : 6;
97 Float_t xpos = (xycase-1)*pos_scale*unit;
98 Float_t ypos = (zcase-1)*pos_scale*unit;
99 txtrunode->SetPosition(xpos,ypos,0.);
105 Float_t zhalf = 0.5*bigdim;
106 Float_t rmax = 0.03*bigdim;
107 TCONE* zcone =
new TCONE(
"zcone",
"zcone",
"void",zhalf,0.,rmax,0.,0.);
108 zcone->SetVisibility(extravis);
109 TNode* zconenode =
new TNode(
"zconenode",
"zconenode",zcone);
110 zconenode->SetLineColor(3);
112 Float_t dzstub = 2*rmax;
113 TBRIK* zbrik =
new TBRIK(
"zbrik",
"zbrik",
"void",rmax,rmax,dzstub);
114 zbrik->SetVisibility(extravis);
115 TNode* zbriknode =
new TNode(
"zbriknode",
"zbriknode",zbrik);
116 zbriknode->SetPosition(0.,0.,zhalf+dzstub);
117 zbriknode->SetLineColor(3);
124 TVirtualPad *thisPad = gPad;
126 TView *view = thisPad->GetView();
128 Double_t min[3],max[3],center[3];
129 view->GetRange(min,max);
132 for (i=0;i<3; i++) center[i] = 0.5*(max[i]+min[i]);
133 Double_t maxSide = 0;
135 for (i=0;i<3; i++) maxSide = TMath::Max(maxSide,max[i]-center[i]);
138 max[i] = center[i] + maxSide;
139 min[i] = center[i] - maxSide;
141 view->SetRange(min,max);