1 //----------------------------------------------------------------------
3 AliITSv11GeometrySPD *gspd;
4 AliITSv11GeometrySDD *gsdd;
5 AliITSv11GeometrySupport *gsupp;
6 AliITSv11GeometrySSD *gssd;
8 //----------------------------------------------------------------------
9 void Displayv11(const char* filename=""){
10 // Display AliITSv11 Geometry
12 // const char* filename output file with the display in it
18 gSystem->Load("libGeom");
20 if(gGeoManager) delete gGeoManager;
21 mgr2 = gGeoManager = new TGeoManager("ITSGeometry",
22 " ITS Simulation Geometry Manager");
24 TGeoMaterial *vacmat = new TGeoMaterial("Vacume",0,0,0);
25 TGeoMedium *vacmed = new TGeoMedium("Vacume_med",1,vacmat);
26 TGeoVolume *ALIC = mgr2->MakeBox("ALIC",vacmed,1000.,1000.,2000.);
27 mgr2->SetTopVolume(ALIC);
28 TGeoVolume *ITS = mgr2->MakeBox("ITSV",vacmed,990.,990.,1990.);
29 TGeoVolumeAssembly *ITSspd = new TGeoVolumeAssembly("ITSspd");
30 ITS->AddNode(ITSspd,1);
34 AliITSv11 *its = new AliITSv11(0,3);
35 its->SetDebug(ISetits(0,-1));
36 its->GetSPDGeometry()->SetDebug(ISetits(0,-1));
37 its->GetSupGeometry()->SetDebug(ISetits(0,-1));
38 its->CreateMaterials();
39 its->CreateGeometry();
41 gspd = new AliITSv11GeometrySPD(0);
42 //gsdd = new AliITSv11GeometrySDD();
43 gsupp = new AliITSv11GeometrySupport(0);
44 //gssd = new AliITSv11GeometrySSD();
46 Int_t imat=1,imed=1,ireturn=0;
47 ireturn = gspd->CreateSPDCentralMaterials(imed,imat);
48 gspd->SPDSector(ITSspd,mgr2);
49 gsupp->SPDCone(ITS,mgr2);
51 gsupp->SDDCone(ITS,mgr2);
54 gsupp->SSDCone(ITS,mgr2);
55 gsupp->ServicesCableSupport(ITS);
57 mgr2->CloseGeometry();
59 TControlBar *bar=new TControlBar("vertical","ITS Geometry Display",10,10);
60 bar->AddButton("Set Clipping on","ISetits(2,1)","Clipping on");
61 bar->AddButton("Set Cllipping off","ISetits(2,0)","Clipping off");
62 bar->AddButton("Set axis on","ISetits(3,1)","Show Axis on");
63 bar->AddButton("Set axis off","ISetits(3,0)","Show Axis off");
64 bar->AddButton("Set perspective on","ISetits(4,1)","Perspective on");
65 bar->AddButton("Set perspective off","ISetits(4,0)","Perspective off");
66 bar->AddButton("Set RayTrace on","ISetits(5,1)","Perspective on");
67 bar->AddButton("Set RayTrace off","ISetits(5,0)","Perspective off");
68 bar->AddButton("Set circle/80","ISetits(1,80)","circles ~ by 80 lines");
69 bar->AddButton("Display Geometry","Displayit()","Run Displayit");
70 bar->AddButton("Display SPD Sector Volume","EngineeringSPDSector()",
71 "Run EngineeringSPDSector");
72 bar->AddButton("Display SPD Ceneral Volume","EngineeringSPDCenter()",
73 "Run EngineeringSPDCenter");
74 bar->AddButton("Display SPD Thermal Sheald","EngineeringSPDThS()",
75 "Run EngineeringSPDThS");
76 bar->AddButton("Display SPD Sector Cross Sections","EngineeringSPDSCS()",
77 "Run EngineeringSPDSCS");
78 bar->AddButton("Display SDD Layer 3","EngineeringSDDLayer3()",
79 "Run EngineeringSDDLayer3");
80 bar->AddButton("Display SDD Layer 4","EngineeringSDDLayer4()",
81 "Run EngineeringSDDLayer4");
82 bar->AddButton("Display SDD Cone","EngineeringSDDCone()",
83 "Run EngineeringSDDCone");
84 bar->AddButton("Display SDD Centeral Cylinder","EngineeringSDDCylinder()",
85 "Run EngineeringSDDCylinder");
86 bar->AddButton("Display SSD Cone","EngineeringSSDCone()",
87 "Run EngineeringSSDCone");
88 bar->AddButton("Display SSD Centeral Cylinder","EngineeringSSDCylinder()",
89 "Run EngineeringSSDCylinder");
90 bar->AddButton("Display SUP RB24 side","EngineeringSupRB24()",
91 "Run EngineeringSupRB24");
92 bar->AddButton("Display Cable Trays RB24 side","EngineeringSupTrayRB24()",
93 "Run EngineeringSupTrayRB24");
94 bar->AddButton("Display SUP RB26 side","EngineeringSupRB26()",
95 "Run EngineeringSupRB26");
96 bar->AddButton("Save Geometry to File","ExportToFile()",
98 bar->AddButton("Quit/Exit",".q","Exit");
100 gROOT->SaveContext();
103 //----------------------------------------------------------------------
105 // Quirry file name and write geometry to a root file.
107 // const char* filename output file with the display in it
112 Char_t filename[100];
114 printf("Eneter File name:");
115 scanf("%s",filename);
117 gGeoManager->Export(filename);
119 //----------------------------------------------------------------------
120 Int_t ISetits(Int_t t,Int_t v){
121 static Int_t itsdebug=1,nsegments=80,cut=0,axis=1,perspective=0,ray=0;
125 if(v<0) return itsdebug;
129 if(v<0) return nsegments;
141 if(v<0) return perspective;
151 //----------------------------------------------------------------------
152 Double_t DSetits(Int_t t,Double_t v){
153 static Double_t phimincut=0.0,phimaxcut=180.0;
154 static Double_t longitude=90.0,latitude=0.0,psi=0.0;
158 if(v<0.) return phimincut;
162 if(v<0.) return phimaxcut;
166 if(v<0.) return longitude;
170 if(v<0.) return latitude;
174 if(v<0.) return latitude;
180 //----------------------------------------------------------------------
182 // Display AliITSv11 Geometry
184 // const char* filename output file with the display in it
191 TGeoManager *mgr2 = gGeoManager;
192 TGeoVolume *ALIC = mgr2->GetTopVolume();
194 if(!(c1 = (TCanvas*)gROOT->FindObject("C1")))
195 c1 = new TCanvas("C1","ITS Simulation Geometry",900,900);
198 mgr2->SetNsegments(ISetits(1,-1));
200 mgr2->SetVisLevel(6);
201 mgr2->SetVisOption(0);
202 //mgr2->CheckOverlaps(0.01);
203 //mgr2->PrintOverlaps();
204 if(ISetits(2,-1)==1){
205 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
206 mgr2->SetClippingShape(clip);
208 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
212 TPad *p1 = c1->GetPad(1);
213 TView *view1 = p1->GetView();
215 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
216 if(irr) cout <<"error="<<irr<<endl;
217 if(ISetits(4,-1)==0) view1->SetParallel();
218 else view1->SetPerspective();
220 if(ISetits(3,-1)!=0) view1->ShowAxis();
222 if(ISetits(5,-1)==1) ALIC->Raytrace();
225 TPad *p2 = c1->GetPad(2);
226 TView *view2 = p2->GetView();
228 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
229 if(irr) cout <<"error="<<irr<<endl;
230 if(ISetits(4,-1)==0) view2->SetParallel();
231 else view2->SetPerspective();
232 view2->RotateView(60.,30.);
233 if(ISetits(3,-1)!=0) view2->ShowAxis();
235 if(ISetits(5,-1)==1) ALIC->Raytrace();
238 c1->SetPhi(90.0); c1->SetTheta(90.0);
239 TPad *p3 = c1->GetPad(3);
240 TView *view3 = p3->GetView();
242 view3->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
243 if(irr) cout <<"error="<<irr<<endl;
244 if(ISetits(4,-1)==0) view3->SetParallel();
245 else view3->SetPerspective();
247 if(ISetits(3,-1)!=0) view3->ShowAxis();
249 if(ISetits(5,-1)==1) ALIC->Raytrace();
252 TPad *p4 = c1->GetPad(4);
253 TView *view4 = p4->GetView();
255 view4->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
256 if(irr) cout <<"error="<<irr<<endl;
257 if(ISetits(4,-1)==0) view4->SetParallel();
258 else view4->SetPerspective();
260 if(ISetits(3,-1)!=0) view4->ShowAxis();
262 if(ISetits(5,-1)==1) ALIC->Raytrace();
265 //----------------------------------------------------------------------
266 void EngineeringSPDSCS(){
267 // Display SPD Carbon Fiber Sector Cross sections A and B
274 TPolyLine *a0,*a1,*b0,*b1;
280 a0 = new TPolyLine();
281 a1 = new TPolyLine();
282 b0 = new TPolyLine();
283 b1 = new TPolyLine();
284 p = new TPolyMarker();
288 b0->SetLineStyle(2); // dashed
290 b1->SetLineStyle(2); // dashed
291 p->SetMarkerColor(2);
292 p->SetMarkerStyle(5);
293 if(gspd->Make2DcrossSections(*a0,*a1,*b0,*b1,*p)==kFALSE) return;
294 for(i=0;i<a0->GetN();i++) {
295 if(TMath::Abs(a0->GetX()[i])>max) max = TMath::Abs(a0->GetX()[i]);
296 if(TMath::Abs(a0->GetY()[i])>max) max = TMath::Abs(a0->GetY()[i]);
298 for(i=0;i<a1->GetN();i++) {
299 if(TMath::Abs(a1->GetX()[i])>max) max = TMath::Abs(a0->GetX()[i]);
300 if(TMath::Abs(a1->GetY()[i])>max) max = TMath::Abs(a1->GetY()[i]);
302 for(i=0;i<b0->GetN();i++) {
303 if(TMath::Abs(b0->GetX()[i])>max) max = TMath::Abs(b0->GetX()[i]);
304 if(TMath::Abs(b0->GetY()[i])>max) max = TMath::Abs(b0->GetY()[i]);
306 for(i=0;i<b1->GetN();i++) {
307 if(TMath::Abs(b1->GetX()[i])>max) max = TMath::Abs(b1->GetX()[i]);
308 if(TMath::Abs(b1->GetY()[i])>max) max = TMath::Abs(b1->GetY()[i]);
311 cSPDSCS = gROOT->FindObject("cSPDSCS");
312 if(cSPDSCS==0) delete cSPDSCS;
313 cSPDSCS = new TCanvas("cSPDSCS","SPD Carbon Fiber Sector Cross sections",2);
314 cSPDSCS->Range(-max,-max,max,max);
315 //cSPDSCS->RangeAxis();
316 cSPDSCS->SetFixedAspectRatio(kTRUE);
326 //----------------------------------------------------------------------
327 void EngineeringSPDSector(){
328 // Display SPD Sector Geometry
337 TGeoManager *mgr2 = gGeoManager;
338 TGeoVolume *ALIC = mgr2->GetTopVolume();
340 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
341 c4 = new TCanvas("C4","ITS SPD Layer Geometry Side View",500,500);
342 TGeoVolume *ITS,*ITSspd,*SPDLay=0;
344 TArrow *arrow=new TArrow();
346 node = ALIC->FindNode("ITSV_1");
347 ITS = node->GetVolume();
348 node = ITS->FindNode("ITSspd_1");
349 ITSspd = node->GetVolume();
350 node = ITSspd->FindNode("ITSSPDCarbonFiberSectorV_1");
351 //node = ITSspd->FindNode("ITSSPDTempSPDMotherVolume_1");
352 SPDLay = node->GetVolume();
354 mgr2->SetNsegments(ISetits(1,-1));
356 mgr2->SetVisLevel(6);
357 mgr2->SetVisOption(0);
358 //mgr2->CheckOverlaps(0.01);
359 //mgr2->PrintOverlaps();
360 if(ISetits(2,-1)==1){
361 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
362 mgr2->SetClippingShape(clip);
364 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
365 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
368 TView *view1 = c4->GetView();
370 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
371 if(irr) cout <<"error="<<irr<<endl;
372 if(ISetits(4,-1)==0) view1->SetParallel();
373 else view1->SetPerspective();
375 if(ISetits(3,-1)!=0) view1->ShowAxis();
377 if(ISetits(5,-1)==1) SPDLay->Raytrace();
379 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
380 c5 = new TCanvas("C5","ITS SPD Sector Geometry End View",500,500);
382 TView *view2 = c5->GetView();
384 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
385 if(irr) cout <<"error="<<irr<<endl;
386 if(ISetits(4,-1)==0) view2->SetParallel();
387 else view2->SetPerspective();
389 if(ISetits(3,-1)!=0) view2->ShowAxis();
391 if(ISetits(5,-1)==1) SPDLay->Raytrace();
394 //----------------------------------------------------------------------
395 void EngineeringSPDCenter(){
396 // Display SPD Centeral Geometry
405 TGeoManager *mgr2 = gGeoManager;
406 TGeoVolume *ALIC = mgr2->GetTopVolume();
408 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
409 c4 = new TCanvas("C4","ITS SPD Layer Geometry Side View",500,500);
410 TGeoVolume *ITS,*ITSspd,*SPDLay=0;
412 TArrow *arrow=new TArrow();
414 node = ALIC->FindNode("ITSV_1");
415 ITS = node->GetVolume();
416 node = ITS->FindNode("ITSspd_1");
417 ITSspd = node->GetVolume();
419 mgr2->SetNsegments(ISetits(1,-1));
421 mgr2->SetVisLevel(6);
422 mgr2->SetVisOption(0);
423 //mgr2->CheckOverlaps(0.01);
424 //mgr2->PrintOverlaps();
425 if(ISetits(2,-1)==1){
426 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
427 mgr2->SetClippingShape(clip);
429 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
430 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
433 TView *view1 = c4->GetView();
435 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
436 if(irr) cout <<"error="<<irr<<endl;
437 if(ISetits(4,-1)==0) view1->SetParallel();
438 else view1->SetPerspective();
440 if(ISetits(3,-1)!=0) view1->ShowAxis();
442 if(ISetits(5,-1)==1) SPDLay->Raytrace();
444 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
445 c5 = new TCanvas("C5","ITS SPD Centeral Geometry End View",500,500);
447 TView *view2 = c5->GetView();
449 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
450 if(irr) cout <<"error="<<irr<<endl;
451 if(ISetits(4,-1)==0) view2->SetParallel();
452 else view2->SetPerspective();
454 if(ISetits(3,-1)!=0) view2->ShowAxis();
456 if(ISetits(5,-1)==1) ITSspd->Raytrace();
459 //----------------------------------------------------------------------
460 void EngineeringSPDThS(){
461 // Display SPD Thermal Sheald Geometry
470 TGeoManager *mgr2 = gGeoManager;
471 TGeoVolume *ALIC = mgr2->GetTopVolume();
473 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
474 c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
476 TGeoVolume *ITS,*SPDThS=0;
478 TArrow *arrow=new TArrow();
480 node = ALIC->FindNode("ITSV_1");
481 ITS = node->GetVolume();
482 node = ITS->FindNode("ITSspdThermalShealdMother_1");
483 SPDThS = node->GetVolume();
485 mgr2->SetNsegments(ISetits(1,-1));
487 mgr2->SetVisLevel(6);
488 mgr2->SetVisOption(0);
489 //mgr2->CheckOverlaps(0.01);
490 //mgr2->PrintOverlaps();
491 if(ISetits(2,-1)==1){
492 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
493 mgr2->SetClippingShape(clip);
495 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
496 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
500 TPad *p1 = c4->GetPad(1);
501 TView *view1 = p1->GetView();
503 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
504 if(irr) cout <<"error="<<irr<<endl;
505 if(ISetits(4,-1)==0) view1->SetParallel();
506 else view1->SetPerspective();
508 if(ISetits(3,-1)!=0) view1->ShowAxis();
510 if(ISetits(5,-1)==1) SPDThS->Raytrace();
514 TPad *p2 = c4->GetPad(2);
515 TView *view2 = p2->GetView();
517 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
518 if(irr) cout <<"error="<<irr<<endl;
519 if(ISetits(4,-1)==0) view2->SetParallel();
520 else view2->SetPerspective();
522 if(ISetits(3,-1)!=0) view2->ShowAxis();
524 if(ISetits(5,-1)==1) SPDThS->Raytrace();
527 //----------------------------------------------------------------------
528 void EngineeringSDDLayer3(){
529 // Display SDD Layer 3 Geometry
538 TGeoManager *mgr2 = gGeoManager;
539 TGeoVolume *ALIC = mgr2->GetTopVolume();
541 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
542 c4 = new TCanvas("C4","ITS SDD Layer 3 Geometry Side View",500,500);
543 TGeoVolume *ITS,*SDDLay3=0;
545 TArrow *arrow=new TArrow();
547 node = ALIC->FindNode("ITSV_1");
548 ITS = node->GetVolume();
549 node = ITS->FindNode("ITSsddLayer3_1");
550 SDDLay3 = node->GetVolume();
552 mgr2->SetNsegments(ISetits(1,-1));
554 mgr2->SetVisLevel(6);
555 mgr2->SetVisOption(0);
556 //mgr2->CheckOverlaps(0.01);
557 //mgr2->PrintOverlaps();
558 if(ISetits(2,-1)==1){
559 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
560 mgr2->SetClippingShape(clip);
562 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
563 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
566 TView *view1 = c4->GetView();
568 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
569 if(irr) cout <<"error="<<irr<<endl;
570 if(ISetits(4,-1)==0) view1->SetParallel();
571 else view1->SetPerspective();
573 if(ISetits(3,-1)!=0) view1->ShowAxis();
575 if(ISetits(5,-1)==1) SDDLay3->Raytrace();
577 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
578 c5 = new TCanvas("C5","ITS SDD Layer 3 Geometry End View",500,500);
580 TView *view2 = c5->GetView();
582 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
583 if(irr) cout <<"error="<<irr<<endl;
584 if(ISetits(4,-1)==0) view2->SetParallel();
585 else view2->SetPerspective();
587 if(ISetits(3,-1)!=0) view2->ShowAxis();
589 if(ISetits(5,-1)==1) SDDLay3->Raytrace();
592 //----------------------------------------------------------------------
593 void EngineeringSDDLayer4(){
594 // Display SDD Layer 4 Geometry
603 TGeoManager *mgr2 = gGeoManager;
604 TGeoVolume *ALIC = mgr2->GetTopVolume();
606 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
607 c4 = new TCanvas("C4","ITS SDD Layer 4 Geometry Side View",500,500);
608 TGeoVolume *ITS,*SDDLay4=0;
610 TArrow *arrow=new TArrow();
612 node = ALIC->FindNode("ITSV_1");
613 ITS = node->GetVolume();
614 node = ITS->FindNode("ITSsddLayer4_1");
615 SDDLay4 = node->GetVolume();
617 mgr2->SetNsegments(ISetits(1,-1));
619 mgr2->SetVisLevel(6);
620 mgr2->SetVisOption(0);
621 //mgr2->CheckOverlaps(0.01);
622 //mgr2->PrintOverlaps();
623 if(ISetits(2,-1)==1){
624 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
625 mgr2->SetClippingShape(clip);
627 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
628 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
631 TView *view1 = c4->GetView();
633 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
634 if(irr) cout <<"error="<<irr<<endl;
635 if(ISetits(4,-1)==0) view1->SetParallel();
636 else view1->SetPerspective();
638 if(ISetits(3,-1)!=0) view1->ShowAxis();
640 if(ISetits(5,-1)==1) SDDLay4->Raytrace();
642 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
643 c5 = new TCanvas("C5","ITS SDD Layer 4 Geometry End View",500,500);
645 TView *view2 = c5->GetView();
647 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
648 if(irr) cout <<"error="<<irr<<endl;
649 if(ISetits(4,-1)==0) view2->SetParallel();
650 else view2->SetPerspective();
652 if(ISetits(3,-1)!=0) view2->ShowAxis();
654 if(ISetits(5,-1)==1) SDDLay4->Raytrace();
657 //----------------------------------------------------------------------
658 void EngineeringSDDCone(){
659 // Display SDD Cone Geometry
668 TGeoManager *mgr2 = gGeoManager;
669 TGeoVolume *ALIC = mgr2->GetTopVolume();
671 if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
672 c2 = new TCanvas("C2","ITS SDD Cone Geometry",900,450);
674 TGeoVolume *ITS,*SDD=0;
677 node = ALIC->FindNode("ITSV_1");
678 ITS = node->GetVolume();
679 node = ITS->FindNode("ITSsddConeL_1");
680 SDD = node->GetVolume();
682 mgr2->SetNsegments(ISetits(1,-1));
684 mgr2->SetVisLevel(6);
685 mgr2->SetVisOption(0);
686 //mgr2->CheckOverlaps(0.01);
687 //mgr2->PrintOverlaps();
688 if(ISetits(2,-1)==1){
689 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
690 mgr2->SetClippingShape(clip);
692 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
693 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
697 TPad *p1 = c2->GetPad(1);
698 TView *view1 = p1->GetView();
700 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
701 if(irr) cout <<"error="<<irr<<endl;
702 if(ISetits(4,-1)==0) view1->SetParallel();
703 else view1->SetPerspective();
705 if(ISetits(3,-1)!=0) view1->ShowAxis();
707 if(ISetits(5,-1)==1) SDD->Raytrace();
711 TPad *p2 = c2->GetPad(2);
712 TView *view2 = p2->GetView();
714 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
715 if(irr) cout <<"error="<<irr<<endl;
716 if(ISetits(4,-1)==0) view2->SetParallel();
717 else view2->SetPerspective();
719 if(ISetits(3,-1)!=0) view2->ShowAxis();
721 if(ISetits(5,-1)==1) SDD->Raytrace();
724 //----------------------------------------------------------------------
725 void EngineeringSDDCylinder(){
726 // Display SDD Cylinder Geometry
735 TGeoManager *mgr2 = gGeoManager;
736 TGeoVolume *ALIC = mgr2->GetTopVolume();
738 if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
739 c3 = new TCanvas("C3","ITS SDD Cylinder Geometry",900,450);
741 TGeoVolume *ITS,*SDD=0;
743 TArrow *arrow=new TArrow();
745 node = ALIC->FindNode("ITSV_1");
746 ITS = node->GetVolume();
747 node = ITS->FindNode("ITSsddCentCylCF_1");
748 SDD = node->GetVolume();
749 Double_t Rmin = ((TGeoTube*)(SDD->GetShape()))->GetRmin();
750 Double_t Rmax = ((TGeoTube*)(SDD->GetShape()))->GetRmax();
751 Double_t Dz = ((TGeoTube*)(SDD->GetShape()))->GetDz();
753 mgr2->SetNsegments(ISetits(1,-1));
755 mgr2->SetVisLevel(6);
756 mgr2->SetVisOption(0);
757 //mgr2->CheckOverlaps(0.01);
758 //mgr2->PrintOverlaps();
759 if(ISetits(2,-1)==1){
760 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
761 mgr2->SetClippingShape(clip);
763 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
764 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
768 TPad *p1 = c3->GetPad(1);
769 TView *view1 = p1->GetView();
771 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
772 if(irr) cout <<"error="<<irr<<endl;
773 if(ISetits(4,-1)==0) view1->SetParallel();
774 else view1->SetPerspective();
776 if(ISetits(3,-1)!=0) view1->ShowAxis();
778 if(ISetits(5,-1)==1) SDD->Raytrace();
779 //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
783 TPad *p2 = c3->GetPad(2);
784 TView *view2 = p2->GetView();
786 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
787 if(irr) cout <<"error="<<irr<<endl;
788 if(ISetits(4,-1)==0) view2->SetParallel();
789 else view2->SetPerspective();
791 if(ISetits(3,-1)!=0) view2->ShowAxis();
793 if(ISetits(5,-1)==1) SDD->Raytrace();
794 //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
795 //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
796 //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
799 //----------------------------------------------------------------------
800 void EngineeringSSDCone(){
801 // Display SSD Cone Geometry
810 TGeoManager *mgr2 = gGeoManager;
811 TGeoVolume *ALIC = mgr2->GetTopVolume();
813 if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
814 c2 = new TCanvas("C2","ITS SSD Cone Geometry",900,450);
816 TGeoVolume *ITS,*SSD=0;
819 node = ALIC->FindNode("ITSV_1");
820 ITS = node->GetVolume();
821 node = ITS->FindNode("ITSssdConeA_1");
822 SSD = node->GetVolume();
824 mgr2->SetNsegments(ISetits(1,-1));
826 mgr2->SetVisLevel(6);
827 mgr2->SetVisOption(0);
828 //mgr2->CheckOverlaps(0.01);
829 //mgr2->PrintOverlaps();
830 if(ISetits(2,-1)==1){
831 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
832 mgr2->SetClippingShape(clip);
834 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
835 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
839 TPad *p1 = c2->GetPad(1);
840 TView *view1 = p1->GetView();
842 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
843 if(irr) cout <<"error="<<irr<<endl;
844 if(ISetits(4,-1)==0) view1->SetParallel();
845 else view1->SetPerspective();
847 if(ISetits(3,-1)!=0) view1->ShowAxis();
849 if(ISetits(5,-1)==1) SSD->Raytrace();
853 TPad *p2 = c2->GetPad(2);
854 TView *view2 = p2->GetView();
856 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
857 if(irr) cout <<"error="<<irr<<endl;
858 if(ISetits(4,-1)==0) view2->SetParallel();
859 else view2->SetPerspective();
861 if(ISetits(3,-1)!=0) view2->ShowAxis();
863 if(ISetits(5,-1)==1) SSD->Raytrace();
866 //----------------------------------------------------------------------
867 void EngineeringSSDCylinder(){
868 // Display SSD Cylinder Geometry
877 TGeoManager *mgr2 = gGeoManager;
878 TGeoVolume *ALIC = mgr2->GetTopVolume();
880 if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
881 c3 = new TCanvas("C3","ITS SSD Cylinder Geometry",900,450);
883 TGeoVolume *ITS,*SSD=0;
885 TArrow *arrow=new TArrow();
887 node = ALIC->FindNode("ITSV_1");
888 ITS = node->GetVolume();
889 node = ITS->FindNode("ITSssdCentCylCA_1");
890 SSD = node->GetVolume();
891 //Double_t Rmin = ((TGeoPcon*)(SSD->GetShape()))->GetRmin();
892 //Double_t Rmax = ((TGeoPcon*)(SSD->GetShape()))->GetRmax();
893 //Double_t Dz = ((TGeoPcon*)(SSD->GetShape()))->GetDz();
895 mgr2->SetNsegments(ISetits(1,-1));
897 mgr2->SetVisLevel(6);
898 mgr2->SetVisOption(0);
899 //mgr2->CheckOverlaps(0.01);
900 //mgr2->PrintOverlaps();
901 if(ISetits(2,-1)==1){
902 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
903 mgr2->SetClippingShape(clip);
905 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
906 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
910 TPad *p1 = c3->GetPad(1);
911 TView *view1 = p1->GetView();
913 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
914 if(irr) cout <<"error="<<irr<<endl;
915 if(ISetits(4,-1)==0) view1->SetParallel();
916 else view1->SetPerspective();
918 if(ISetits(3,-1)!=0) view1->ShowAxis();
920 if(ISetits(5,-1)==1) SSD->Raytrace();
921 //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
925 TPad *p2 = c3->GetPad(2);
926 TView *view2 = p2->GetView();
928 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
929 if(irr) cout <<"error="<<irr<<endl;
930 if(ISetits(4,-1)==0) view2->SetParallel();
931 else view2->SetPerspective();
933 if(ISetits(3,-1)!=0) view2->ShowAxis();
935 if(ISetits(5,-1)==1) SSD->Raytrace();
936 //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
937 //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
938 //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
941 //----------------------------------------------------------------------
942 void EngineeringSupRB24(){
943 // Display RB 24 side cable tray support structure Geometry
952 TGeoManager *mgr2 = gGeoManager;
953 TGeoVolume *ALIC = mgr2->GetTopVolume();
955 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
956 c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
958 TGeoVolume *ITS,*SUPRB24=0;
960 TArrow *arrow=new TArrow();
962 node = ALIC->FindNode("ITSV_1");
963 ITS = node->GetVolume();
964 node = ITS->FindNode("ITSsupFrameM24_1");
965 SUPRB24 = node->GetVolume();
967 mgr2->SetNsegments(ISetits(1,-1));
969 mgr2->SetVisLevel(6);
970 mgr2->SetVisOption(0);
971 //mgr2->CheckOverlaps(0.01);
972 //mgr2->PrintOverlaps();
973 if(ISetits(2,-1)==1){
974 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
975 mgr2->SetClippingShape(clip);
977 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
978 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
982 TPad *p1 = c4->GetPad(1);
983 TView *view1 = p1->GetView();
985 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
986 if(irr) cout <<"error="<<irr<<endl;
987 if(ISetits(4,-1)==0) view1->SetParallel();
988 else view1->SetPerspective();
990 if(ISetits(3,-1)!=0) view1->ShowAxis();
992 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
996 TPad *p2 = c4->GetPad(2);
997 TView *view2 = p2->GetView();
999 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1000 if(irr) cout <<"error="<<irr<<endl;
1001 if(ISetits(4,-1)==0) view2->SetParallel();
1002 else view2->SetPerspective();
1004 if(ISetits(3,-1)!=0) view2->ShowAxis();
1006 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
1009 //----------------------------------------------------------------------
1010 void EngineeringSupTrayRB24(){
1011 // Display RB 24 side cable tray support structure Geometry
1020 TGeoManager *mgr2 = gGeoManager;
1021 TGeoVolume *ALIC = mgr2->GetTopVolume();
1023 //if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
1024 c4 = new TCanvas("C4","ITS RB24 Cable Trays and Patch Pannels",500,500);
1026 TGeoVolume *ITS,*SUPRB24=0;
1028 TArrow *arrow=new TArrow();
1030 node = ALIC->FindNode("ITSV_1");
1031 ITS = node->GetVolume();
1032 node = ITS->FindNode("ITSsupCableTrayMotherMT24_1");
1033 SUPRB24 = node->GetVolume();
1035 mgr2->SetNsegments(ISetits(1,-1));
1037 mgr2->SetVisLevel(6);
1038 mgr2->SetVisOption(0);
1039 //mgr2->CheckOverlaps(0.01);
1040 //mgr2->PrintOverlaps();
1041 if(ISetits(2,-1)==1){
1042 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
1043 mgr2->SetClippingShape(clip);
1045 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
1046 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
1050 //TPad *p1 = c4->GetPad(1);
1051 //TView *view1 = p1->GetView();
1052 TView *view1 = c4->GetView();
1054 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1055 if(irr) cout <<"error="<<irr<<endl;
1056 if(ISetits(4,-1)==0) view1->SetParallel();
1057 else view1->SetPerspective();
1059 if(ISetits(3,-1)!=0) view1->ShowAxis();
1061 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
1064 c5 = new TCanvas("C5","ITS RB24 Cable Trays and Patch Pannels",500,500);
1067 //TPad *p2 = c5->GetPad(1);
1068 //TView *view2 = p2->GetView();
1069 TView *view2 = c5->GetView();
1071 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1072 if(irr) cout <<"error="<<irr<<endl;
1073 if(ISetits(4,-1)==0) view2->SetParallel();
1074 else view2->SetPerspective();
1076 if(ISetits(3,-1)!=0) view2->ShowAxis();
1078 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
1081 //----------------------------------------------------------------------
1082 void EngineeringSupRB26(){
1083 // Display RB 26 side cable tray support structure
1092 TGeoManager *mgr2 = gGeoManager;
1093 TGeoVolume *ALIC = mgr2->GetTopVolume();
1095 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
1096 c5 = new TCanvas("C5","ITS SDD Cylinder Geometry",900,450);
1098 TGeoVolume *ITS,*SUPRB26=0;
1100 TArrow *arrow=new TArrow();
1102 node = ALIC->FindNode("ITSV_1");
1103 ITS = node->GetVolume();
1104 node = ITS->FindNode("ITSsupFrameM26_1");
1105 SUPRB26 = node->GetVolume();
1107 mgr2->SetNsegments(ISetits(1,-1));
1109 mgr2->SetVisLevel(6);
1110 mgr2->SetVisOption(0);
1111 //mgr2->CheckOverlaps(0.01);
1112 //mgr2->PrintOverlaps();
1113 if(ISetits(2,-1)==1){
1114 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
1115 mgr2->SetClippingShape(clip);
1117 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
1118 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
1122 TPad *p1 = c5->GetPad(1);
1123 TView *view1 = p1->GetView();
1125 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1126 if(irr) cout <<"error="<<irr<<endl;
1127 if(ISetits(4,-1)==0) view1->SetParallel();
1128 else view1->SetPerspective();
1130 if(ISetits(3,-1)!=0) view1->ShowAxis();
1132 if(ISetits(5,-1)==1) SUPRB26->Raytrace();
1136 TPad *p2 = c5->GetPad(2);
1137 TView *view2 = p2->GetView();
1139 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1140 if(irr) cout <<"error="<<irr<<endl;
1141 if(ISetits(4,-1)==0) view2->SetParallel();
1142 else view2->SetPerspective();
1144 if(ISetits(3,-1)!=0) view2->ShowAxis();
1146 if(ISetits(5,-1)==1) SUPRB26->Raytrace();