1 //----------------------------------------------------------------------
2 void Displayv11(const char* filename=""){
3 // Display AliITSv11 Geometry
5 // const char* filename output file with the display in it
11 gSystem->Load("libGeom");
13 if(gGeoManager) delete gGeoManager;
14 mgr2 = gGeoManager = new TGeoManager("ITSGeometry",
15 " ITS Simulation Geometry Manager");
17 TGeoMaterial *vacmat = new TGeoMaterial("Vacume",0,0,0);
18 TGeoMedium *vacmed = new TGeoMedium("Vacume_med",1,vacmat);
19 TGeoVolume *ALIC = mgr2->MakeBox("ALIC",vacmed,100.,100.,200.);
20 mgr2->SetTopVolume(ALIC);
22 AliITSv11 *its = new AliITSv11();
23 its->SetDebug(ISetits(0,-1));
24 its->CreateMaterials();
25 its->CreateGeometry();
27 mgr2->CloseGeometry();
29 TControlBar *bar=new TControlBar("vertical","ITS Geometry Display",10,10);
30 bar->AddButton("Set ITS Debug level 1","ISetits(0,1)","Debug on");
31 bar->AddButton("Set ITS Debug level 0","ISetits(0,0)","Debug off");
32 bar->AddButton("Set ITS Theta,Phi cut on","ISetits(2,1)","Cut on");
33 bar->AddButton("Set ITS Theta,Phi cut off","ISetits(2,0)","Cut off");
34 bar->AddButton("Set axis on","ISetits(3,1)","Show Axis on");
35 bar->AddButton("Set axis off","ISetits(3,0)","Show Axis off");
36 bar->AddButton("Set perspective on","ISetits(4,1)","Perspective on");
37 bar->AddButton("Set perspective off","ISetits(4,0)","Perspective off");
38 bar->AddButton("Set circle/80","ISetits(1,80)","circles ~ by 80 lines");
39 bar->AddButton("Display Geometry","Displayit()","Run Displayit");
40 bar->AddButton("Display SPD Thermal Sheald","EngineeringSPDThS()",
41 "Run EngineeringSPDThS");
42 bar->AddButton("Display SDD Cone","EngineeringSDDCone()",
43 "Run EngineeringSDDCone");
44 bar->AddButton("Display SDD Centeral Cylinder","EngineeringSDDCylinder()",
45 "Run EngineeringSDDCylinder");
46 bar->AddButton("Display SUP RB24 side","EngineeringSupRB24()",
47 "Run EngineeringSDDCylinder");
48 bar->AddButton("Display SUP RB26 side","EngineeringSupRB26()",
49 "Run EngineeringSupRB26");
50 bar->AddButton("Quit/Exit",".q","Exit");
55 //----------------------------------------------------------------------
56 Int_t ISetits(Int_t t,Int_t v){
57 static Int_t itsdebug=0,nsegments=80,cut=0,axis=1,perspective=0;
61 if(v<0) return itsdebug;
65 if(v<0) return nsegments;
77 if(v<0) return perspective;
83 //----------------------------------------------------------------------
84 Double_t DSetits(Int_t t,Double_t v){
85 static Double_t phimincut=0.0,phimaxcut=180.0;
86 static Double_t longitude=90.0,latitude=0.0,psi=0.0;
90 if(v<0.) return phimincut;
94 if(v<0.) return phimaxcut;
98 if(v<0.) return longitude;
102 if(v<0.) return latitude;
106 if(v<0.) return latitude;
112 //----------------------------------------------------------------------
114 // Display AliITSv11 Geometry
116 // const char* filename output file with the display in it
123 TGeoManager *mgr2 = gGeoManager;
124 TGeoVolume *ALIC = mgr2->GetTopVolume();
126 if(!(c1 = (TCanvas*)gROOT->FindObject("C1")))
127 c1 = new TCanvas("C1","ITS Simulation Geometry",900,900);
130 mgr2->SetNsegments(ISetits(1,-1));
132 mgr2->SetVisLevel(6);
133 mgr2->SetVisOption(0);
134 //mgr2->CheckOverlaps(0.01);
135 //mgr2->PrintOverlaps();
136 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
140 TPad *p1 = c1->GetPad(1);
141 TView *view1 = p1->GetView();
143 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
144 if(irr) cout <<"error="<<irr<<endl;
145 if(ISetits(4,-1)==0) view1->SetParralel();
146 else view1->SetPerspective();
148 if(ISetits(3,-1)!=0) view1->ShowAxis();
152 TPad *p2 = c1->GetPad(2);
153 TView *view2 = p2->GetView();
155 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
156 if(irr) cout <<"error="<<irr<<endl;
157 if(ISetits(4,-1)==0) view2->SetParralel();
158 else view2->SetPerspective();
159 view2->RotateView(60.,30.);
160 if(ISetits(3,-1)!=0) view2->ShowAxis();
164 c1->SetPhi(90.0); c1->SetTheta(90.0);
165 TPad *p3 = c1->GetPad(3);
166 TView *view3 = p3->GetView();
168 view3->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
169 if(irr) cout <<"error="<<irr<<endl;
170 if(ISetits(4,-1)==0) view3->SetParralel();
171 else view3->SetPerspective();
173 if(ISetits(3,-1)!=0) view3->ShowAxis();
177 TPad *p4 = c1->GetPad(4);
178 TView *view4 = p4->GetView();
180 view4->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
181 if(irr) cout <<"error="<<irr<<endl;
182 if(ISetits(4,-1)==0) view4->SetParralel();
183 else view4->SetPerspective();
185 if(ISetits(3,-1)!=0) view4->ShowAxis();
189 //----------------------------------------------------------------------
190 void EngineeringSPDThS(){
191 // Display SPD Thermal Sheald Geometry
200 TGeoManager *mgr2 = gGeoManager;
201 TGeoVolume *ALIC = mgr2->GetTopVolume();
203 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
204 c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
206 TGeoVolume *ITS,*SPDThS=0;
208 TArrow *arrow=new TArrow();
210 node = ALIC->FindNode("ITSV_1");
211 ITS = node->GetVolume();
212 node = ITS->FindNode("ITSspdThermalSheald_1");
213 SPDThS = node->GetVolume();
215 mgr2->SetNsegments(ISetits(1,-1));
217 mgr2->SetVisLevel(6);
218 mgr2->SetVisOption(0);
219 //mgr2->CheckOverlaps(0.01);
220 //mgr2->PrintOverlaps();
221 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
222 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
226 TPad *p1 = c4->GetPad(1);
227 TView *view1 = p1->GetView();
229 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
230 if(irr) cout <<"error="<<irr<<endl;
231 if(ISetits(4,-1)==0) view1->SetParralel();
232 else view1->SetPerspective();
234 if(ISetits(3,-1)!=0) view1->ShowAxis();
239 TPad *p2 = c4->GetPad(2);
240 TView *view2 = p2->GetView();
242 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
243 if(irr) cout <<"error="<<irr<<endl;
244 if(ISetits(4,-1)==0) view2->SetParralel();
245 else view2->SetPerspective();
247 if(ISetits(3,-1)!=0) view2->ShowAxis();
251 //----------------------------------------------------------------------
252 void EngineeringSDDCone(){
253 // Display SDD Cone Geometry
262 TGeoManager *mgr2 = gGeoManager;
263 TGeoVolume *ALIC = mgr2->GetTopVolume();
265 if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
266 c2 = new TCanvas("C2","ITS SDD Cone Geometry",900,450);
268 TGeoVolume *ITS,*SDD=0;
271 node = ALIC->FindNode("ITSV_1");
272 ITS = node->GetVolume();
273 node = ITS->FindNode("ITSsddConeL_1");
274 SDD = node->GetVolume();
276 mgr2->SetNsegments(ISetits(1,-1));
278 mgr2->SetVisLevel(6);
279 mgr2->SetVisOption(0);
280 //mgr2->CheckOverlaps(0.01);
281 //mgr2->PrintOverlaps();
282 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
283 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
287 TPad *p1 = c2->GetPad(1);
288 TView *view1 = p1->GetView();
290 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
291 if(irr) cout <<"error="<<irr<<endl;
292 if(ISetits(4,-1)==0) view1->SetParralel();
293 else view1->SetPerspective();
295 if(ISetits(3,-1)!=0) view1->ShowAxis();
300 TPad *p2 = c2->GetPad(2);
301 TView *view2 = p2->GetView();
303 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
304 if(irr) cout <<"error="<<irr<<endl;
305 if(ISetits(4,-1)==0) view2->SetParralel();
306 else view2->SetPerspective();
308 if(ISetits(3,-1)!=0) view2->ShowAxis();
312 //----------------------------------------------------------------------
313 void EngineeringSDDCylinder(){
314 // Display SDD Cylinder Geometry
323 TGeoManager *mgr2 = gGeoManager;
324 TGeoVolume *ALIC = mgr2->GetTopVolume();
326 if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
327 c3 = new TCanvas("C3","ITS SDD Cylinder Geometry",900,450);
329 TGeoVolume *ITS,*SDD=0;
331 TArrow *arrow=new TArrow();
333 node = ALIC->FindNode("ITSV_1");
334 ITS = node->GetVolume();
335 node = ITS->FindNode("ITSsddCentCylCF_1");
336 SDD = node->GetVolume();
337 Double_t Rmin = ((TGeoTube*)(SDD->GetShape()))->GetRmin();
338 Double_t Rmax = ((TGeoTube*)(SDD->GetShape()))->GetRmax();
339 Double_t Dz = ((TGeoTube*)(SDD->GetShape()))->GetDz();
341 mgr2->SetNsegments(ISetits(1,-1));
343 mgr2->SetVisLevel(6);
344 mgr2->SetVisOption(0);
345 //mgr2->CheckOverlaps(0.01);
346 //mgr2->PrintOverlaps();
347 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
348 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
352 TPad *p1 = c3->GetPad(1);
353 TView *view1 = p1->GetView();
355 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
356 if(irr) cout <<"error="<<irr<<endl;
357 if(ISetits(4,-1)==0) view1->SetParralel();
358 else view1->SetPerspective();
360 if(ISetits(3,-1)!=0) view1->ShowAxis();
362 arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
366 TPad *p2 = c3->GetPad(2);
367 TView *view2 = p2->GetView();
369 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
370 if(irr) cout <<"error="<<irr<<endl;
371 if(ISetits(4,-1)==0) view2->SetParralel();
372 else view2->SetPerspective();
374 if(ISetits(3,-1)!=0) view2->ShowAxis();
376 arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
377 Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
378 arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
381 //----------------------------------------------------------------------
382 void EngineeringSupRB24(){
383 // Display SDD Cylinder Geometry
392 TGeoManager *mgr2 = gGeoManager;
393 TGeoVolume *ALIC = mgr2->GetTopVolume();
395 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
396 c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
398 TGeoVolume *ITS,*SUPRB24=0;
400 TArrow *arrow=new TArrow();
402 node = ALIC->FindNode("ITSV_1");
403 ITS = node->GetVolume();
404 node = ITS->FindNode("ITSsupFrameM24_1");
405 SUPRB24 = node->GetVolume();
407 mgr2->SetNsegments(ISetits(1,-1));
409 mgr2->SetVisLevel(6);
410 mgr2->SetVisOption(0);
411 //mgr2->CheckOverlaps(0.01);
412 //mgr2->PrintOverlaps();
413 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
414 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
418 TPad *p1 = c4->GetPad(1);
419 TView *view1 = p1->GetView();
421 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
422 if(irr) cout <<"error="<<irr<<endl;
423 if(ISetits(4,-1)==0) view1->SetParralel();
424 else view1->SetPerspective();
426 if(ISetits(3,-1)!=0) view1->ShowAxis();
431 TPad *p2 = c4->GetPad(2);
432 TView *view2 = p2->GetView();
434 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
435 if(irr) cout <<"error="<<irr<<endl;
436 if(ISetits(4,-1)==0) view2->SetParralel();
437 else view2->SetPerspective();
439 if(ISetits(3,-1)!=0) view2->ShowAxis();
444 //----------------------------------------------------------------------
445 void EngineeringSupRB26(){
446 // Display SDD Cylinder Geometry
455 TGeoManager *mgr2 = gGeoManager;
456 TGeoVolume *ALIC = mgr2->GetTopVolume();
458 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
459 c5 = new TCanvas("C5","ITS SDD Cylinder Geometry",900,450);
461 TGeoVolume *ITS,*SUPRB26=0;
463 TArrow *arrow=new TArrow();
465 node = ALIC->FindNode("ITSV_1");
466 ITS = node->GetVolume();
467 node = ITS->FindNode("ITSsupFrameM26_1");
468 SUPRB26 = node->GetVolume();
470 mgr2->SetNsegments(ISetits(1,-1));
472 mgr2->SetVisLevel(6);
473 mgr2->SetVisOption(0);
474 //mgr2->CheckOverlaps(0.01);
475 //mgr2->PrintOverlaps();
476 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
477 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
481 TPad *p1 = c5->GetPad(1);
482 TView *view1 = p1->GetView();
484 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
485 if(irr) cout <<"error="<<irr<<endl;
486 if(ISetits(4,-1)==0) view1->SetParralel();
487 else view1->SetPerspective();
489 if(ISetits(3,-1)!=0) view1->ShowAxis();
494 TPad *p2 = c5->GetPad(2);
495 TView *view2 = p2->GetView();
497 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
498 if(irr) cout <<"error="<<irr<<endl;
499 if(ISetits(4,-1)==0) view2->SetParralel();
500 else view2->SetPerspective();
502 if(ISetits(3,-1)!=0) view2->ShowAxis();