00001
00002
00003
00004
00005
00006 TEveQuadSet* quadset(Float_t x=0, Float_t y=0, Float_t z=0,
00007 Int_t num=100, Bool_t register=kTRUE)
00008 {
00009 TEveManager::Create();
00010
00011 TRandom r(0);
00012 gStyle->SetPalette(1, 0);
00013
00014 TEveRGBAPalette *pal = new TEveRGBAPalette(0, 130);
00015 TEveFrameBox *box = new TEveFrameBox();
00016 box->SetAAQuadXY(-10, -10, 0, 20, 20);
00017 box->SetFrameColor(kGray);
00018
00019 TEveQuadSet* q = new TEveQuadSet("RectangleXY");
00020 q->SetOwnIds(kTRUE);
00021 q->SetPalette(pal);
00022 q->SetFrame(box);
00023 q->Reset(TEveQuadSet::kQT_RectangleXY, kFALSE, 32);
00024 for (Int_t i=0; i<num; ++i)
00025 {
00026 q->AddQuad(r.Uniform(-10, 9), r.Uniform(-10, 9), 0,
00027 r.Uniform(0.2, 1), r.Uniform(0.2, 1));
00028 q->QuadValue(r.Uniform(0, 130));
00029 q->QuadId(new TNamed(Form("QuadIdx %d", i),
00030 "TNamed assigned to a quad as an indentifier."));
00031 }
00032 q->RefitPlex();
00033
00034 TEveTrans& t = q->RefMainTrans();
00035 t.RotateLF(1, 3, 0.5*TMath::Pi());
00036 t.SetPos(x, y, z);
00037
00038 TGLViewer* v = gEve->GetDefaultGLViewer();
00039 v->SetCurrentCamera(TGLViewer::kCameraOrthoZOY);
00040 TGLCameraOverlay* co = v->GetCameraOverlay();
00041 co->SetShowOrthographic(kTRUE);
00042 co->SetOrthographicMode(TGLCameraOverlay::kGridFront);
00043
00044
00045
00046
00047
00048 if (register)
00049 {
00050 gEve->AddElement(q);
00051 gEve->Redraw3D(kTRUE);
00052 }
00053
00054 Info("quadset", "use alt-left-mouse to select individual digits.");
00055
00056 return q;
00057 }
00058
00059 TEveQuadSet* quadset_emc(Float_t x=0, Float_t y=0, Float_t z=0,
00060 Int_t num=100)
00061 {
00062 TEveManager::Create();
00063
00064 TRandom r(0);
00065 gStyle->SetPalette(1, 0);
00066
00067 TEveQuadSet* q = new TEveQuadSet("EMC Supermodule");
00068 q->SetOwnIds(kTRUE);
00069 q->Reset(TEveQuadSet::kQT_RectangleXZFixedDimY, kFALSE, 32);
00070 q->SetDefWidth(8);
00071 q->SetDefHeight(8);
00072
00073 for (Int_t i=0; i<num; ++i)
00074 {
00075 q->AddQuad(r.Uniform(-100, 100), r.Uniform(-100, 100));
00076 q->QuadValue(r.Uniform(0, 130));
00077 q->QuadId(new TNamed(Form("Cell %d", i), "Dong!"));
00078 }
00079 q->RefitPlex();
00080
00081 TEveTrans& t = q->RefMainTrans();
00082 t.SetPos(x, y, z);
00083
00084 gEve->AddElement(q);
00085 gEve->Redraw3D();
00086
00087 return q;
00088 }
00089
00090 TEveQuadSet* quadset_circ()
00091 {
00092 TEveManager::Create();
00093
00094 TRandom rnd(0);
00095 gStyle->SetPalette(1, 0);
00096
00097 Float_t R = 10, dW = 1, dH = .5;
00098
00099 TEveFrameBox *box = new TEveFrameBox();
00100 {
00101 Float_t frame[3*36];
00102 Float_t *p = frame;
00103 for (Int_t i = 0; i < 36; ++i, p += 3) {
00104 p[0] = 11 * TMath::Cos(TMath::TwoPi()*i/36);
00105 p[1] = 11 * TMath::Sin(TMath::TwoPi()*i/36);
00106 p[2] = 0;
00107 }
00108 box->SetQuadByPoints(frame, 36);
00109 }
00110 box->SetFrameColor(kGray);
00111
00112 TEveQuadSet* q = new TEveQuadSet("Pepe");
00113 q->SetFrame(box);
00114 q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
00115
00116 for (Float_t r = R; r > 2; r *= 0.8)
00117 {
00118 Int_t maxI = 2.0*TMath::Pi()*r / 2;
00119 for (Int_t i = 0; i < maxI; ++i)
00120 {
00121 Float_t x = r * TMath::Cos(TMath::TwoPi()*i/maxI);
00122 Float_t y = r * TMath::Sin(TMath::TwoPi()*i/maxI);
00123 q->AddHexagon(x, y, rnd.Uniform(-1, 1), rnd.Uniform(0.2, 1));
00124 q->QuadValue(rnd.Uniform(0, 130));
00125 }
00126 }
00127 q->RefitPlex();
00128
00129 TEveTrans& t = q->RefMainTrans();
00130 t.RotateLF(1, 3, 0.5*TMath::Pi());
00131
00132 gEve->AddElement(q);
00133 gEve->Redraw3D();
00134
00135 return q;
00136 }
00137
00138 TEveQuadSet* quadset_hex(Float_t x=0, Float_t y=0, Float_t z=0,
00139 Int_t num=100, Bool_t register=kTRUE)
00140 {
00141 TEveManager::Create();
00142
00143 TRandom r(0);
00144 gStyle->SetPalette(1, 0);
00145
00146 {
00147 TEveQuadSet* q = new TEveQuadSet("HexagonXY");
00148 q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
00149 for (Int_t i=0; i<num; ++i)
00150 {
00151 q->AddHexagon(r.Uniform(-10, 10),
00152 r.Uniform(-10, 10),
00153 r.Uniform(-10, 10),
00154 r.Uniform(0.2, 1));
00155 q->QuadValue(r.Uniform(0, 120));
00156 }
00157 q->RefitPlex();
00158
00159 TEveTrans& t = q->RefMainTrans();
00160 t.SetPos(x, y, z);
00161
00162 if (register)
00163 {
00164 gEve->AddElement(q);
00165 gEve->Redraw3D();
00166 }
00167 }
00168
00169 {
00170 TEveQuadSet* q = new TEveQuadSet("HexagonYX");
00171 q->Reset(TEveQuadSet::kQT_HexagonYX, kFALSE, 32);
00172 for (Int_t i=0; i<num; ++i)
00173 {
00174 q->AddHexagon(r.Uniform(-10, 10),
00175 r.Uniform(-10, 10),
00176 r.Uniform(-10, 10),
00177 r.Uniform(0.2, 1));
00178 q->QuadValue(r.Uniform(0, 120));
00179 }
00180 q->RefitPlex();
00181
00182 TEveTrans& t = q->RefMainTrans();
00183 t.SetPos(x, y, z);
00184
00185 if (register)
00186 {
00187 gEve->AddElement(q);
00188 gEve->Redraw3D();
00189 }
00190 }
00191
00192 return q;
00193 }
00194
00195 TEveQuadSet* quadset_hexid(Float_t x=0, Float_t y=0, Float_t z=0,
00196 Int_t num=100, Bool_t register=kTRUE)
00197 {
00198 TEveManager::Create();
00199
00200 TRandom r(0);
00201 gStyle->SetPalette(1, 0);
00202
00203 {
00204 TEveQuadSet* q = new TEveQuadSet("HexagonXY");
00205 q->SetOwnIds(kTRUE);
00206 q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
00207 for (Int_t i=0; i<num; ++i)
00208 {
00209 q->AddHexagon(r.Uniform(-10, 10),
00210 r.Uniform(-10, 10),
00211 r.Uniform(-10, 10),
00212 r.Uniform(0.2, 1));
00213 q->QuadValue(r.Uniform(0, 120));
00214 q->QuadId(new TNamed(Form("Quad with idx=%d", i),
00215 "This title is not confusing."));
00216 }
00217 q->RefitPlex();
00218
00219 TEveTrans& t = q->RefMainTrans();
00220 t.SetPos(x, y, z);
00221
00222 if (register)
00223 {
00224 gEve->AddElement(q);
00225 gEve->Redraw3D();
00226 }
00227 }
00228
00229
00230
00231
00232 gROOT->ProcessLine(".L quadset_callback.cxx+");
00233 quadset_set_callback(q);
00234
00235 return q;
00236 }
00237
00238 void quadset_hierarchy(Int_t n=4)
00239 {
00240 TEveManager::Create();
00241
00242 gStyle->SetPalette(1, 0);
00243
00244 TEveRGBAPalette* pal = new TEveRGBAPalette(20, 100);
00245 pal->SetLimits(0, 120);
00246
00247 TEveFrameBox* box = new TEveFrameBox();
00248 box->SetAABox(-10, -10, -10, 20, 20, 20);
00249 box->SetFrameColor(33);
00250
00251 TEveElementList* l = new TEveElementList("Parent/Dir");
00252 l->SetTitle("Tooltip");
00253
00254 gEve->AddElement(l);
00255
00256 for (Int_t i=0; i<n; ++i)
00257 {
00258 TEveQuadSet* qs = quadset_hexid(0, 0, 50*i, 50, kFALSE);
00259 qs->SetPalette(pal);
00260 qs->SetFrame(box);
00261 l->AddElement(qs);
00262 }
00263
00264 gEve->Redraw3D();
00265 }