29 namespace CocoaTutorials {
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()
59 using namespace ROOT::CocoaTutorials;
61 Double_t s1x = 0., s1y = 0., s1z = 0.;
62 Double_t s2x = 0., s2y = 0., s2z = 0.;
63 Double_t s3x = 0., s3y = 0., s3z = 0.;
65 TCanvas *c1 =
new TCanvas(
"parallel coords",
"parallel coords", 0, 0, 900, 1000);
67 if (gVirtualX && !gVirtualX->InheritsFrom(
"TGCocoa")) {
68 ::Error(
"generate_random",
"This macro works only on OS X with --enable-cocoa");
73 TNtuple *
const nt =
new TNtuple(
"nt",
"Demo ntuple",
"x:y:z:u:v:w:a:b:c");
75 for (Int_t i = 0; i < 1500; ++i) {
76 r.Sphere(s1x, s1y, s1z, 0.1);
77 r.Sphere(s2x, s2y, s2z, 0.2);
78 r.Sphere(s3x, s3y, s3z, 0.05);
81 nt->Fill(r1, r2, r3, r4, r5, r6, r7, r8, r9);
84 nt->Fill(s1x, s1y, s1z, s2x, s2y, s2z, r7, r8, r9);
87 nt->Fill(r1, r2, r3, r4, r5, r6, r7, s3y, r9);
90 nt->Fill(s2x - 1, s2y - 1, s2z, s1x + .5, s1y + .5, s1z + .5, r7, r8, r9);
93 nt->Fill(r1, r2, r3, r4, r5, r6, r7, r8, r9);
96 nt->Fill(s1x + 1, s1y + 1, s1z + 1, s3x - 2, s3y - 2, s3z - 2, r7, r8, r9);
99 nt->Fill(r1, r2, r3, r4, r5, r6, s3x, r8, s3z);
106 nt->Draw(
"x:y:z:u:v:w:a:b:c",
"",
"para");
107 TParallelCoord *
const para1 = (TParallelCoord*)gPad->GetListOfPrimitives()->FindObject(
"ParaCoord");
108 assert(para1 != 0 &&
"parallelcoordtrans, 'ParaCoord' is null");
110 para1->SetLineColor(25);
111 TParallelCoordVar *pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"x");
112 pcv->SetHistogramHeight(0.);
114 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"y");
115 pcv->SetHistogramHeight(0.);
117 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"z");
118 pcv->SetHistogramHeight(0.);
120 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"a");
121 pcv->SetHistogramHeight(0.);
123 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"b");
124 pcv->SetHistogramHeight(0.);
126 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"c");
127 pcv->SetHistogramHeight(0.);
129 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"u");
130 pcv->SetHistogramHeight(0.);
132 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"v");
133 pcv->SetHistogramHeight(0.);
135 pcv = (TParallelCoordVar*)para1->GetVarList()->FindObject(
"w");
136 pcv->SetHistogramHeight(0.);
141 TColor *
const col26 = gROOT->GetColor(26);
142 assert(col26 != 0 &&
"parallelcoordtrans, color with index 26 not found");
144 col26->SetAlpha(0.01);
147 nt->Draw(
"x:y:z:u:v:w:a:b:c",
"",
"para");
148 TParallelCoord *
const para2 = (TParallelCoord*)gPad->GetListOfPrimitives()->FindObject(
"ParaCoord");
149 assert(para2 != 0 &&
"parallelcoordtrans, 'ParaCoord' is null");
151 para2->SetLineColor(26);
153 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"x");
154 pcv->SetHistogramHeight(0.);
156 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"y");
157 pcv->SetHistogramHeight(0.);
159 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"z");
160 pcv->SetHistogramHeight(0.);
162 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"a");
163 pcv->SetHistogramHeight(0.);
165 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"b");
166 pcv->SetHistogramHeight(0.);
168 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"c");
169 pcv->SetHistogramHeight(0.);
171 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"u");
172 pcv->SetHistogramHeight(0.);
174 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"v");
175 pcv->SetHistogramHeight(0.);
177 pcv = (TParallelCoordVar*)para2->GetVarList()->FindObject(
"w");
178 pcv->SetHistogramHeight(0.);