Draw a sample of TXTRU shapes some convex, concave (and possibly malformed).
void xtruSamples()
{
TBRIK *world =
new TBRIK(
"world",
"world",
"void", bigdim, bigdim, bigdim);
TNode *worldnode =
new TNode(
"worldnode",
"world node", world);
Float_t x[] = {-0.50, -1.20, 1.20, 0.50, 0.50, 1.20, -1.20, -0.50};
Float_t y[] = {-0.75, -2.00, -2.00, -0.75, 0.75, 2.00, 2.00, 0.75};
Float_t z[] = {-0.50, -1.50, -1.50, 1.50, 1.50, 0.50};
Float_t s[] = {0.50, 1.00, 1.50, 1.50, 1.00, 0.50};
Float_t convexscale[] = {7.0, -1.0, 1.5};
Int_t icolor[] = {1, 2, 3, 2, 2, 2, 4, 2, 6};
for (
Int_t zcase = 0; zcase < 3; zcase++) {
if (zcase == 1 && !domalformed)
continue;
for (
Int_t xycase = 0; xycase < 3; xycase++) {
if (xycase == 1 && !domalformed)
continue;
sprintf(
name,
"txtru%1d%1d%1d", xycase, zcase, zseg);
Float_t zsign = (reversez) ? -1 : 1;
for (i = 0; i < nxy; i++) {
if (i == 0 || i == 3 || i == 4 || i == 7)
xtmp *= convexscale[xycase];
if (xycase == 2)
xtmp *= 2;
}
for (i = 0, j = 0; i < zseg; i++) {
if (i == 0 || i == 5)
ztmp *= convexscale[zcase];
if (zcase == 2)
ztmp *= 2.5;
if (zseg > 2 && zcase != 2 && (i == 1 || i == 4))
continue;
j++;
}
Float_t pos_scale = (domalformed) ? 10 : 6;
Float_t xpos = (xycase - 1) * pos_scale * unit;
Float_t ypos = (zcase - 1) * pos_scale * unit;
}
}
TCONE *zcone =
new TCONE(
"zcone",
"zcone",
"void", zhalf, 0., rmax, 0., 0.);
TNode *zconenode =
new TNode(
"zconenode",
"zconenode", zcone);
TBRIK *zbrik =
new TBRIK(
"zbrik",
"zbrik",
"void", rmax, rmax, dzstub);
TNode *zbriknode =
new TNode(
"zbriknode",
"zbriknode", zbrik);
if (thisPad) {
if (!view)
return;
int i;
for (i = 0; i < 3; i++)
center[i] = 0.5 * (max[i] + min[i]);
for (i = 0; i < 3; i++)
maxSide =
TMath::Max(maxSide, max[i] - center[i]);
file:
for (i = 0; i < 3; i++) {
max[i] = center[i] + maxSide;
min[i] = center[i] - maxSide;
}
}
}
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
float Float_t
Float 4 bytes (float).
virtual void SetLineColor(Color_t lcolor)
Set the line color.
A box with faces perpendicular to the axes.
void Draw(Option_t *option="") override
Draw this Geometry.
virtual void cd(const char *path=nullptr)
Change Current Geometry to this.
virtual void SetPosition(Double_t x=0, Double_t y=0, Double_t z=0)
virtual void cd(const char *path=nullptr)
Change Current Reference node to this.
virtual void SetVisibility(Int_t vis=1)
Set visibility for this node and its sons.
virtual void SetVisibility(Int_t vis)
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.
virtual void Modified(Bool_t flag=1)=0
virtual TView * GetView() const =0
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.
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.
__device__ AFloat max(AFloat x, AFloat y)
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.