29 namespace GLTutorials {
31 Double_t r1, r2, r3, r4, r5, r6, r7, r8, r9;
35 void generate_random(Int_t i)
37 const Double_t dr = 3.5;
42 r2 = (2 * dr * r.Rndm(i)) - dr;
43 r3 = (2 * dr * r.Rndm(i)) - dr;
44 r5 = (2 * dr * r.Rndm(i)) - dr;
45 r6 = (2 * dr * r.Rndm(i)) - dr;
46 r8 = (2 * dr * r.Rndm(i)) - dr;
52 void parallelcoordtrans()
57 using namespace ROOT::GLTutorials;
59 Double_t s1x = 0., s1y = 0., s1z = 0.;
60 Double_t s2x = 0., s2y = 0., s2z = 0.;
61 Double_t s3x = 0., s3y = 0., s3z = 0.;
63 gStyle->SetCanvasPreferGL(kTRUE);
64 TCanvas *c1 =
new TCanvas(
"parallel coors",
"parallel coords", 0, 0, 900, 1000);
66 TNtuple *
const nt =
new TNtuple(
"nt",
"Demo ntuple",
"x:y:z:u:v:w:a:b:c");
68 for (Int_t i = 0; i < 1500; ++i) {
69 r.Sphere(s1x, s1y, s1z, 0.1);
70 r.Sphere(s2x, s2y, s2z, 0.2);
71 r.Sphere(s3x, s3y, s3z, 0.05);
74 nt->Fill(r1, r2, r3, r4, r5, r6, r7, r8, r9);
77 nt->Fill(s1x, s1y, s1z, s2x, s2y, s2z, r7, r8, r9);
80 nt->Fill(r1, r2, r3, r4, r5, r6, r7, s3y, r9);
83 nt->Fill(s2x - 1, s2y - 1, s2z, s1x + .5, s1y + .5, s1z + .5, r7, r8, r9);
86 nt->Fill(r1, r2, r3, r4, r5, r6, r7, r8, r9);
89 nt->Fill(s1x + 1, s1y + 1, s1z + 1, s3x - 2, s3y - 2, s3z - 2, r7, r8, r9);
92 nt->Fill(r1, r2, r3, r4, r5, r6, s3x, r8, s3z);
99 nt->Draw(
"x:y:z:u:v:w:a:b:c",
"",
"para");
100 TParallelCoord *
const para1 = (TParallelCoord*)gPad->GetListOfPrimitives()->FindObject(
"ParaCoord");
101 assert(para1 != 0 &&
"parallelcoordtrans, 'ParaCoord' is null");
103 para1->SetLineColor(25);
104 TParallelCoordVar *pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"x");
105 pcv->SetHistogramHeight(0.);
107 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"y");
108 pcv->SetHistogramHeight(0.);
110 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"z");
111 pcv->SetHistogramHeight(0.);
113 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"a");
114 pcv->SetHistogramHeight(0.);
116 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"b");
117 pcv->SetHistogramHeight(0.);
119 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"c");
120 pcv->SetHistogramHeight(0.);
122 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"u");
123 pcv->SetHistogramHeight(0.);
125 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"v");
126 pcv->SetHistogramHeight(0.);
128 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"w");
129 pcv->SetHistogramHeight(0.);
134 TColor *
const col26 = gROOT->GetColor(26);
135 assert(col26 != 0 &&
"parallelcoordtrans, color with index 26 not found");
137 col26->SetAlpha(0.01);
140 nt->Draw(
"x:y:z:u:v:w:a:b:c",
"",
"para");
141 TParallelCoord *
const para2 = (TParallelCoord*)gPad->GetListOfPrimitives()->FindObject(
"ParaCoord");
142 assert(para2 != 0 &&
"parallelcoordtrans, 'ParaCoord' is null");
144 para2->SetLineColor(26);
146 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"x");
147 pcv->SetHistogramHeight(0.);
149 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"y");
150 pcv->SetHistogramHeight(0.);
152 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"z");
153 pcv->SetHistogramHeight(0.);
155 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"a");
156 pcv->SetHistogramHeight(0.);
158 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"b");
159 pcv->SetHistogramHeight(0.);
161 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"c");
162 pcv->SetHistogramHeight(0.);
164 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"u");
165 pcv->SetHistogramHeight(0.);
167 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"v");
168 pcv->SetHistogramHeight(0.);
170 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"w");
171 pcv->SetHistogramHeight(0.);