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);
21 TGeoVolume *ITS = mgr2->MakeBox("ITSV",vacmed,99.,99.,199.);
22 TGeoVolumeAssembly *ITSspd = new TGeoVolumeAssembly("ITSspd");
23 ITS->AddNode(ITSspd,1);
27 AliITSv11 *its = new AliITSv11(0,3);
28 its->SetDebug(ISetits(0,-1));
29 its->GetSPDGeometry()->SetDebug(ISetits(0,-1));
30 its->GetSupGeometry()->SetDebug(ISetits(0,-1));
31 its->CreateMaterials();
32 its->CreateGeometry();
34 AliITSv11GeometrySPD *gspd = new AliITSv11GeometrySPD(0);
35 //AliITSv11GeometrySDD *gsdd = new AliITSv11GeometrySDD();
36 AliITSv11GeometrySupport *gsupp = new AliITSv11GeometrySupport(3);
37 //AliITSv11GeometrySSD *gssd = new AliITSv11GeometrySSD();
40 gspd->CreateSPDCenteralMaterials(imed,imat);
41 gspd->SPDSector(ITSspd,mgr2);
42 gsupp->SPDCone(ITS,mgr2);
44 gsupp->SDDCone(ITS,mgr2);
47 gsupp->SSDCone(ITS,mgr2);
48 gsupp->ServicesCableSupport(ITS);
50 mgr2->CloseGeometry();
52 TControlBar *bar=new TControlBar("vertical","ITS Geometry Display",10,10);
53 bar->AddButton("Set Clipping on","ISetits(2,1)","Clipping on");
54 bar->AddButton("Set Cllipping off","ISetits(2,0)","Clipping off");
55 bar->AddButton("Set axis on","ISetits(3,1)","Show Axis on");
56 bar->AddButton("Set axis off","ISetits(3,0)","Show Axis off");
57 bar->AddButton("Set perspective on","ISetits(4,1)","Perspective on");
58 bar->AddButton("Set perspective off","ISetits(4,0)","Perspective off");
59 bar->AddButton("Set RayTrace on","ISetits(5,1)","Perspective on");
60 bar->AddButton("Set RayTrace off","ISetits(5,0)","Perspective off");
61 bar->AddButton("Set circle/80","ISetits(1,80)","circles ~ by 80 lines");
62 bar->AddButton("Display Geometry","Displayit()","Run Displayit");
63 bar->AddButton("Display SPD Sector Volume","EngineeringSPDSector()",
64 "Run EngineeringSPDSector");
65 bar->AddButton("Display SPD Ceneral Volume","EngineeringSPDCenter()",
66 "Run EngineeringSPDCenter");
67 bar->AddButton("Display SPD Thermal Sheald","EngineeringSPDThS()",
68 "Run EngineeringSPDThS");
69 bar->AddButton("Display SDD Layer 3","EngineeringSDDLayer3()",
70 "Run EngineeringSDDLayer3");
71 bar->AddButton("Display SDD Layer 4","EngineeringSDDLayer4()",
72 "Run EngineeringSDDLayer4");
73 bar->AddButton("Display SDD Cone","EngineeringSDDCone()",
74 "Run EngineeringSDDCone");
75 bar->AddButton("Display SDD Centeral Cylinder","EngineeringSDDCylinder()",
76 "Run EngineeringSDDCylinder");
77 bar->AddButton("Display SSD Cone","EngineeringSSDCone()",
78 "Run EngineeringSSDCone");
79 bar->AddButton("Display SSD Centeral Cylinder","EngineeringSSDCylinder()",
80 "Run EngineeringSSDCylinder");
81 bar->AddButton("Display SUP RB24 side","EngineeringSupRB24()",
82 "Run EngineeringSupRB24");
83 bar->AddButton("Display Cable Trays RB24 side","EngineeringSupTrayRB24()",
84 "Run EngineeringSupTrayRB24");
85 bar->AddButton("Display SUP RB26 side","EngineeringSupRB26()",
86 "Run EngineeringSupRB26");
87 bar->AddButton("Save Geometry to File","ExportToFile()",
89 bar->AddButton("Quit/Exit",".q","Exit");
94 //----------------------------------------------------------------------
96 // Quirry file name and write geometry to a root file.
98 // const char* filename output file with the display in it
103 Char_t filename[100];
105 printf("Eneter File name:");
106 scanf("%s",filename);
108 gGeoManager->Export(filename);
110 //----------------------------------------------------------------------
111 Int_t ISetits(Int_t t,Int_t v){
112 static Int_t itsdebug=1,nsegments=80,cut=0,axis=1,perspective=0,ray=0;
116 if(v<0) return itsdebug;
120 if(v<0) return nsegments;
132 if(v<0) return perspective;
142 //----------------------------------------------------------------------
143 Double_t DSetits(Int_t t,Double_t v){
144 static Double_t phimincut=0.0,phimaxcut=180.0;
145 static Double_t longitude=90.0,latitude=0.0,psi=0.0;
149 if(v<0.) return phimincut;
153 if(v<0.) return phimaxcut;
157 if(v<0.) return longitude;
161 if(v<0.) return latitude;
165 if(v<0.) return latitude;
171 //----------------------------------------------------------------------
173 // Display AliITSv11 Geometry
175 // const char* filename output file with the display in it
182 TGeoManager *mgr2 = gGeoManager;
183 TGeoVolume *ALIC = mgr2->GetTopVolume();
185 if(!(c1 = (TCanvas*)gROOT->FindObject("C1")))
186 c1 = new TCanvas("C1","ITS Simulation Geometry",900,900);
189 mgr2->SetNsegments(ISetits(1,-1));
191 mgr2->SetVisLevel(6);
192 mgr2->SetVisOption(0);
193 //mgr2->CheckOverlaps(0.01);
194 //mgr2->PrintOverlaps();
195 if(ISetits(2,-1)==1){
196 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
197 mgr2->SetClippingShape(clip);
199 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
203 TPad *p1 = c1->GetPad(1);
204 TView *view1 = p1->GetView();
206 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
207 if(irr) cout <<"error="<<irr<<endl;
208 if(ISetits(4,-1)==0) view1->SetParallel();
209 else view1->SetPerspective();
211 if(ISetits(3,-1)!=0) view1->ShowAxis();
213 if(ISetits(5,-1)==1) ALIC->Raytrace();
216 TPad *p2 = c1->GetPad(2);
217 TView *view2 = p2->GetView();
219 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
220 if(irr) cout <<"error="<<irr<<endl;
221 if(ISetits(4,-1)==0) view2->SetParallel();
222 else view2->SetPerspective();
223 view2->RotateView(60.,30.);
224 if(ISetits(3,-1)!=0) view2->ShowAxis();
226 if(ISetits(5,-1)==1) ALIC->Raytrace();
229 c1->SetPhi(90.0); c1->SetTheta(90.0);
230 TPad *p3 = c1->GetPad(3);
231 TView *view3 = p3->GetView();
233 view3->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
234 if(irr) cout <<"error="<<irr<<endl;
235 if(ISetits(4,-1)==0) view3->SetParallel();
236 else view3->SetPerspective();
238 if(ISetits(3,-1)!=0) view3->ShowAxis();
240 if(ISetits(5,-1)==1) ALIC->Raytrace();
243 TPad *p4 = c1->GetPad(4);
244 TView *view4 = p4->GetView();
246 view4->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
247 if(irr) cout <<"error="<<irr<<endl;
248 if(ISetits(4,-1)==0) view4->SetParallel();
249 else view4->SetPerspective();
251 if(ISetits(3,-1)!=0) view4->ShowAxis();
253 if(ISetits(5,-1)==1) ALIC->Raytrace();
256 //----------------------------------------------------------------------
257 void EngineeringSPDSector(){
258 // Display SPD Sector Geometry
267 TGeoManager *mgr2 = gGeoManager;
268 TGeoVolume *ALIC = mgr2->GetTopVolume();
270 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
271 c4 = new TCanvas("C4","ITS SPD Layer Geometry Side View",500,500);
272 TGeoVolume *ITS,*ITSspd,*SPDLay=0;
274 TArrow *arrow=new TArrow();
276 node = ALIC->FindNode("ITSV_1");
277 ITS = node->GetVolume();
278 node = ITS->FindNode("ITSspd_1");
279 ITSspd = node->GetVolume();
280 node = ITSspd->FindNode("ITSSPDCarbonFiberSectorV_1");
281 //node = ITSspd->FindNode("ITSSPDTempSPDMotherVolume_1");
282 SPDLay = node->GetVolume();
284 mgr2->SetNsegments(ISetits(1,-1));
286 mgr2->SetVisLevel(6);
287 mgr2->SetVisOption(0);
288 //mgr2->CheckOverlaps(0.01);
289 //mgr2->PrintOverlaps();
290 if(ISetits(2,-1)==1){
291 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
292 mgr2->SetClippingShape(clip);
294 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
295 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
298 TView *view1 = c4->GetView();
300 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
301 if(irr) cout <<"error="<<irr<<endl;
302 if(ISetits(4,-1)==0) view1->SetParallel();
303 else view1->SetPerspective();
305 if(ISetits(3,-1)!=0) view1->ShowAxis();
307 if(ISetits(5,-1)==1) SPDLay->Raytrace();
309 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
310 c5 = new TCanvas("C5","ITS SPD Sector Geometry End View",500,500);
312 TView *view2 = c5->GetView();
314 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
315 if(irr) cout <<"error="<<irr<<endl;
316 if(ISetits(4,-1)==0) view2->SetParallel();
317 else view2->SetPerspective();
319 if(ISetits(3,-1)!=0) view2->ShowAxis();
321 if(ISetits(5,-1)==1) SPDLay->Raytrace();
324 //----------------------------------------------------------------------
325 void EngineeringSPDCenter(){
326 // Display SPD Centeral Geometry
335 TGeoManager *mgr2 = gGeoManager;
336 TGeoVolume *ALIC = mgr2->GetTopVolume();
338 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
339 c4 = new TCanvas("C4","ITS SPD Layer Geometry Side View",500,500);
340 TGeoVolume *ITS,*ITSspd,*SPDLay=0;
342 TArrow *arrow=new TArrow();
344 node = ALIC->FindNode("ITSV_1");
345 ITS = node->GetVolume();
346 node = ITS->FindNode("ITSspd_1");
347 ITSspd = node->GetVolume();
349 mgr2->SetNsegments(ISetits(1,-1));
351 mgr2->SetVisLevel(6);
352 mgr2->SetVisOption(0);
353 //mgr2->CheckOverlaps(0.01);
354 //mgr2->PrintOverlaps();
355 if(ISetits(2,-1)==1){
356 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
357 mgr2->SetClippingShape(clip);
359 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
360 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
363 TView *view1 = c4->GetView();
365 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
366 if(irr) cout <<"error="<<irr<<endl;
367 if(ISetits(4,-1)==0) view1->SetParallel();
368 else view1->SetPerspective();
370 if(ISetits(3,-1)!=0) view1->ShowAxis();
372 if(ISetits(5,-1)==1) SPDLay->Raytrace();
374 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
375 c5 = new TCanvas("C5","ITS SPD Centeral Geometry End View",500,500);
377 TView *view2 = c5->GetView();
379 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
380 if(irr) cout <<"error="<<irr<<endl;
381 if(ISetits(4,-1)==0) view2->SetParallel();
382 else view2->SetPerspective();
384 if(ISetits(3,-1)!=0) view2->ShowAxis();
386 if(ISetits(5,-1)==1) ITSspd->Raytrace();
389 //----------------------------------------------------------------------
390 void EngineeringSPDThS(){
391 // Display SPD Thermal Sheald Geometry
400 TGeoManager *mgr2 = gGeoManager;
401 TGeoVolume *ALIC = mgr2->GetTopVolume();
403 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
404 c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
406 TGeoVolume *ITS,*SPDThS=0;
408 TArrow *arrow=new TArrow();
410 node = ALIC->FindNode("ITSV_1");
411 ITS = node->GetVolume();
412 node = ITS->FindNode("ITSspdThermalShealdMother_1");
413 SPDThS = node->GetVolume();
415 mgr2->SetNsegments(ISetits(1,-1));
417 mgr2->SetVisLevel(6);
418 mgr2->SetVisOption(0);
419 //mgr2->CheckOverlaps(0.01);
420 //mgr2->PrintOverlaps();
421 if(ISetits(2,-1)==1){
422 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
423 mgr2->SetClippingShape(clip);
425 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
426 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
430 TPad *p1 = c4->GetPad(1);
431 TView *view1 = p1->GetView();
433 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
434 if(irr) cout <<"error="<<irr<<endl;
435 if(ISetits(4,-1)==0) view1->SetParallel();
436 else view1->SetPerspective();
438 if(ISetits(3,-1)!=0) view1->ShowAxis();
440 if(ISetits(5,-1)==1) SPDThS->Raytrace();
444 TPad *p2 = c4->GetPad(2);
445 TView *view2 = p2->GetView();
447 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
448 if(irr) cout <<"error="<<irr<<endl;
449 if(ISetits(4,-1)==0) view2->SetParallel();
450 else view2->SetPerspective();
452 if(ISetits(3,-1)!=0) view2->ShowAxis();
454 if(ISetits(5,-1)==1) SPDThS->Raytrace();
457 //----------------------------------------------------------------------
458 void EngineeringSDDLayer3(){
459 // Display SDD Layer 3 Geometry
468 TGeoManager *mgr2 = gGeoManager;
469 TGeoVolume *ALIC = mgr2->GetTopVolume();
471 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
472 c4 = new TCanvas("C4","ITS SDD Layer 3 Geometry Side View",500,500);
473 TGeoVolume *ITS,*SDDLay3=0;
475 TArrow *arrow=new TArrow();
477 node = ALIC->FindNode("ITSV_1");
478 ITS = node->GetVolume();
479 node = ITS->FindNode("ITSsddLayer3_1");
480 SDDLay3 = node->GetVolume();
482 mgr2->SetNsegments(ISetits(1,-1));
484 mgr2->SetVisLevel(6);
485 mgr2->SetVisOption(0);
486 //mgr2->CheckOverlaps(0.01);
487 //mgr2->PrintOverlaps();
488 if(ISetits(2,-1)==1){
489 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
490 mgr2->SetClippingShape(clip);
492 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
493 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
496 TView *view1 = c4->GetView();
498 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
499 if(irr) cout <<"error="<<irr<<endl;
500 if(ISetits(4,-1)==0) view1->SetParallel();
501 else view1->SetPerspective();
503 if(ISetits(3,-1)!=0) view1->ShowAxis();
505 if(ISetits(5,-1)==1) SDDLay3->Raytrace();
507 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
508 c5 = new TCanvas("C5","ITS SDD Layer 3 Geometry End View",500,500);
510 TView *view2 = c5->GetView();
512 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
513 if(irr) cout <<"error="<<irr<<endl;
514 if(ISetits(4,-1)==0) view2->SetParallel();
515 else view2->SetPerspective();
517 if(ISetits(3,-1)!=0) view2->ShowAxis();
519 if(ISetits(5,-1)==1) SDDLay3->Raytrace();
522 //----------------------------------------------------------------------
523 void EngineeringSDDLayer4(){
524 // Display SDD Layer 4 Geometry
533 TGeoManager *mgr2 = gGeoManager;
534 TGeoVolume *ALIC = mgr2->GetTopVolume();
536 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
537 c4 = new TCanvas("C4","ITS SDD Layer 4 Geometry Side View",500,500);
538 TGeoVolume *ITS,*SDDLay4=0;
540 TArrow *arrow=new TArrow();
542 node = ALIC->FindNode("ITSV_1");
543 ITS = node->GetVolume();
544 node = ITS->FindNode("ITSsddLayer4_1");
545 SDDLay4 = node->GetVolume();
547 mgr2->SetNsegments(ISetits(1,-1));
549 mgr2->SetVisLevel(6);
550 mgr2->SetVisOption(0);
551 //mgr2->CheckOverlaps(0.01);
552 //mgr2->PrintOverlaps();
553 if(ISetits(2,-1)==1){
554 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
555 mgr2->SetClippingShape(clip);
557 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
558 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
561 TView *view1 = c4->GetView();
563 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
564 if(irr) cout <<"error="<<irr<<endl;
565 if(ISetits(4,-1)==0) view1->SetParallel();
566 else view1->SetPerspective();
568 if(ISetits(3,-1)!=0) view1->ShowAxis();
570 if(ISetits(5,-1)==1) SDDLay4->Raytrace();
572 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
573 c5 = new TCanvas("C5","ITS SDD Layer 4 Geometry End View",500,500);
575 TView *view2 = c5->GetView();
577 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
578 if(irr) cout <<"error="<<irr<<endl;
579 if(ISetits(4,-1)==0) view2->SetParallel();
580 else view2->SetPerspective();
582 if(ISetits(3,-1)!=0) view2->ShowAxis();
584 if(ISetits(5,-1)==1) SDDLay4->Raytrace();
587 //----------------------------------------------------------------------
588 void EngineeringSDDCone(){
589 // Display SDD Cone Geometry
598 TGeoManager *mgr2 = gGeoManager;
599 TGeoVolume *ALIC = mgr2->GetTopVolume();
601 if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
602 c2 = new TCanvas("C2","ITS SDD Cone Geometry",900,450);
604 TGeoVolume *ITS,*SDD=0;
607 node = ALIC->FindNode("ITSV_1");
608 ITS = node->GetVolume();
609 node = ITS->FindNode("ITSsddConeL_1");
610 SDD = node->GetVolume();
612 mgr2->SetNsegments(ISetits(1,-1));
614 mgr2->SetVisLevel(6);
615 mgr2->SetVisOption(0);
616 //mgr2->CheckOverlaps(0.01);
617 //mgr2->PrintOverlaps();
618 if(ISetits(2,-1)==1){
619 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
620 mgr2->SetClippingShape(clip);
622 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
623 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
627 TPad *p1 = c2->GetPad(1);
628 TView *view1 = p1->GetView();
630 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
631 if(irr) cout <<"error="<<irr<<endl;
632 if(ISetits(4,-1)==0) view1->SetParallel();
633 else view1->SetPerspective();
635 if(ISetits(3,-1)!=0) view1->ShowAxis();
637 if(ISetits(5,-1)==1) SDD->Raytrace();
641 TPad *p2 = c2->GetPad(2);
642 TView *view2 = p2->GetView();
644 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
645 if(irr) cout <<"error="<<irr<<endl;
646 if(ISetits(4,-1)==0) view2->SetParallel();
647 else view2->SetPerspective();
649 if(ISetits(3,-1)!=0) view2->ShowAxis();
651 if(ISetits(5,-1)==1) SDD->Raytrace();
654 //----------------------------------------------------------------------
655 void EngineeringSDDCylinder(){
656 // Display SDD Cylinder Geometry
665 TGeoManager *mgr2 = gGeoManager;
666 TGeoVolume *ALIC = mgr2->GetTopVolume();
668 if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
669 c3 = new TCanvas("C3","ITS SDD Cylinder Geometry",900,450);
671 TGeoVolume *ITS,*SDD=0;
673 TArrow *arrow=new TArrow();
675 node = ALIC->FindNode("ITSV_1");
676 ITS = node->GetVolume();
677 node = ITS->FindNode("ITSsddCentCylCF_1");
678 SDD = node->GetVolume();
679 Double_t Rmin = ((TGeoTube*)(SDD->GetShape()))->GetRmin();
680 Double_t Rmax = ((TGeoTube*)(SDD->GetShape()))->GetRmax();
681 Double_t Dz = ((TGeoTube*)(SDD->GetShape()))->GetDz();
683 mgr2->SetNsegments(ISetits(1,-1));
685 mgr2->SetVisLevel(6);
686 mgr2->SetVisOption(0);
687 //mgr2->CheckOverlaps(0.01);
688 //mgr2->PrintOverlaps();
689 if(ISetits(2,-1)==1){
690 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
691 mgr2->SetClippingShape(clip);
693 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
694 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
698 TPad *p1 = c3->GetPad(1);
699 TView *view1 = p1->GetView();
701 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
702 if(irr) cout <<"error="<<irr<<endl;
703 if(ISetits(4,-1)==0) view1->SetParallel();
704 else view1->SetPerspective();
706 if(ISetits(3,-1)!=0) view1->ShowAxis();
708 if(ISetits(5,-1)==1) SDD->Raytrace();
709 //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
713 TPad *p2 = c3->GetPad(2);
714 TView *view2 = p2->GetView();
716 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
717 if(irr) cout <<"error="<<irr<<endl;
718 if(ISetits(4,-1)==0) view2->SetParallel();
719 else view2->SetPerspective();
721 if(ISetits(3,-1)!=0) view2->ShowAxis();
723 if(ISetits(5,-1)==1) SDD->Raytrace();
724 //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
725 //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
726 //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
729 //----------------------------------------------------------------------
730 void EngineeringSSDCone(){
731 // Display SSD Cone Geometry
740 TGeoManager *mgr2 = gGeoManager;
741 TGeoVolume *ALIC = mgr2->GetTopVolume();
743 if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
744 c2 = new TCanvas("C2","ITS SSD Cone Geometry",900,450);
746 TGeoVolume *ITS,*SSD=0;
749 node = ALIC->FindNode("ITSV_1");
750 ITS = node->GetVolume();
751 node = ITS->FindNode("ITSssdConeA_1");
752 SSD = node->GetVolume();
754 mgr2->SetNsegments(ISetits(1,-1));
756 mgr2->SetVisLevel(6);
757 mgr2->SetVisOption(0);
758 //mgr2->CheckOverlaps(0.01);
759 //mgr2->PrintOverlaps();
760 if(ISetits(2,-1)==1){
761 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
762 mgr2->SetClippingShape(clip);
764 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
765 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
769 TPad *p1 = c2->GetPad(1);
770 TView *view1 = p1->GetView();
772 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
773 if(irr) cout <<"error="<<irr<<endl;
774 if(ISetits(4,-1)==0) view1->SetParallel();
775 else view1->SetPerspective();
777 if(ISetits(3,-1)!=0) view1->ShowAxis();
779 if(ISetits(5,-1)==1) SSD->Raytrace();
783 TPad *p2 = c2->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) SSD->Raytrace();
796 //----------------------------------------------------------------------
797 void EngineeringSSDCylinder(){
798 // Display SSD Cylinder Geometry
807 TGeoManager *mgr2 = gGeoManager;
808 TGeoVolume *ALIC = mgr2->GetTopVolume();
810 if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
811 c3 = new TCanvas("C3","ITS SSD Cylinder Geometry",900,450);
813 TGeoVolume *ITS,*SSD=0;
815 TArrow *arrow=new TArrow();
817 node = ALIC->FindNode("ITSV_1");
818 ITS = node->GetVolume();
819 node = ITS->FindNode("ITSssdCentCylCA_1");
820 SSD = node->GetVolume();
821 //Double_t Rmin = ((TGeoPcon*)(SSD->GetShape()))->GetRmin();
822 //Double_t Rmax = ((TGeoPcon*)(SSD->GetShape()))->GetRmax();
823 //Double_t Dz = ((TGeoPcon*)(SSD->GetShape()))->GetDz();
825 mgr2->SetNsegments(ISetits(1,-1));
827 mgr2->SetVisLevel(6);
828 mgr2->SetVisOption(0);
829 //mgr2->CheckOverlaps(0.01);
830 //mgr2->PrintOverlaps();
831 if(ISetits(2,-1)==1){
832 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
833 mgr2->SetClippingShape(clip);
835 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
836 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
840 TPad *p1 = c3->GetPad(1);
841 TView *view1 = p1->GetView();
843 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
844 if(irr) cout <<"error="<<irr<<endl;
845 if(ISetits(4,-1)==0) view1->SetParallel();
846 else view1->SetPerspective();
848 if(ISetits(3,-1)!=0) view1->ShowAxis();
850 if(ISetits(5,-1)==1) SSD->Raytrace();
851 //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
855 TPad *p2 = c3->GetPad(2);
856 TView *view2 = p2->GetView();
858 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
859 if(irr) cout <<"error="<<irr<<endl;
860 if(ISetits(4,-1)==0) view2->SetParallel();
861 else view2->SetPerspective();
863 if(ISetits(3,-1)!=0) view2->ShowAxis();
865 if(ISetits(5,-1)==1) SSD->Raytrace();
866 //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
867 //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
868 //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
871 //----------------------------------------------------------------------
872 void EngineeringSupRB24(){
873 // Display RB 24 side cable tray support structure Geometry
882 TGeoManager *mgr2 = gGeoManager;
883 TGeoVolume *ALIC = mgr2->GetTopVolume();
885 if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
886 c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
888 TGeoVolume *ITS,*SUPRB24=0;
890 TArrow *arrow=new TArrow();
892 node = ALIC->FindNode("ITSV_1");
893 ITS = node->GetVolume();
894 node = ITS->FindNode("ITSsupFrameM24_1");
895 SUPRB24 = node->GetVolume();
897 mgr2->SetNsegments(ISetits(1,-1));
899 mgr2->SetVisLevel(6);
900 mgr2->SetVisOption(0);
901 //mgr2->CheckOverlaps(0.01);
902 //mgr2->PrintOverlaps();
903 if(ISetits(2,-1)==1){
904 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
905 mgr2->SetClippingShape(clip);
907 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
908 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
912 TPad *p1 = c4->GetPad(1);
913 TView *view1 = p1->GetView();
915 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
916 if(irr) cout <<"error="<<irr<<endl;
917 if(ISetits(4,-1)==0) view1->SetParallel();
918 else view1->SetPerspective();
920 if(ISetits(3,-1)!=0) view1->ShowAxis();
922 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
926 TPad *p2 = c4->GetPad(2);
927 TView *view2 = p2->GetView();
929 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
930 if(irr) cout <<"error="<<irr<<endl;
931 if(ISetits(4,-1)==0) view2->SetParallel();
932 else view2->SetPerspective();
934 if(ISetits(3,-1)!=0) view2->ShowAxis();
936 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
939 //----------------------------------------------------------------------
940 void EngineeringSupTrayRB24(){
941 // Display RB 24 side cable tray support structure Geometry
950 TGeoManager *mgr2 = gGeoManager;
951 TGeoVolume *ALIC = mgr2->GetTopVolume();
953 //if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
954 c4 = new TCanvas("C4","ITS RB24 Cable Trays and Patch Pannels",500,500);
956 TGeoVolume *ITS,*SUPRB24=0;
958 TArrow *arrow=new TArrow();
960 node = ALIC->FindNode("ITSV_1");
961 ITS = node->GetVolume();
962 node = ITS->FindNode("ITSsupCableTrayMotherMT24_1");
963 SUPRB24 = node->GetVolume();
965 mgr2->SetNsegments(ISetits(1,-1));
967 mgr2->SetVisLevel(6);
968 mgr2->SetVisOption(0);
969 //mgr2->CheckOverlaps(0.01);
970 //mgr2->PrintOverlaps();
971 if(ISetits(2,-1)==1){
972 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
973 mgr2->SetClippingShape(clip);
975 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
976 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
980 //TPad *p1 = c4->GetPad(1);
981 //TView *view1 = p1->GetView();
982 TView *view1 = c4->GetView();
984 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
985 if(irr) cout <<"error="<<irr<<endl;
986 if(ISetits(4,-1)==0) view1->SetParallel();
987 else view1->SetPerspective();
989 if(ISetits(3,-1)!=0) view1->ShowAxis();
991 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
994 c5 = new TCanvas("C5","ITS RB24 Cable Trays and Patch Pannels",500,500);
997 //TPad *p2 = c5->GetPad(1);
998 //TView *view2 = p2->GetView();
999 TView *view2 = c5->GetView();
1001 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1002 if(irr) cout <<"error="<<irr<<endl;
1003 if(ISetits(4,-1)==0) view2->SetParallel();
1004 else view2->SetPerspective();
1006 if(ISetits(3,-1)!=0) view2->ShowAxis();
1008 if(ISetits(5,-1)==1) SUPRB24->Raytrace();
1011 //----------------------------------------------------------------------
1012 void EngineeringSupRB26(){
1013 // Display RB 26 side cable tray support structure
1022 TGeoManager *mgr2 = gGeoManager;
1023 TGeoVolume *ALIC = mgr2->GetTopVolume();
1025 if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
1026 c5 = new TCanvas("C5","ITS SDD Cylinder Geometry",900,450);
1028 TGeoVolume *ITS,*SUPRB26=0;
1030 TArrow *arrow=new TArrow();
1032 node = ALIC->FindNode("ITSV_1");
1033 ITS = node->GetVolume();
1034 node = ITS->FindNode("ITSsupFrameM26_1");
1035 SUPRB26 = node->GetVolume();
1037 mgr2->SetNsegments(ISetits(1,-1));
1039 mgr2->SetVisLevel(6);
1040 mgr2->SetVisOption(0);
1041 //mgr2->CheckOverlaps(0.01);
1042 //mgr2->PrintOverlaps();
1043 if(ISetits(2,-1)==1){
1044 TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
1045 mgr2->SetClippingShape(clip);
1047 mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
1048 if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
1052 TPad *p1 = c5->GetPad(1);
1053 TView *view1 = p1->GetView();
1055 view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1056 if(irr) cout <<"error="<<irr<<endl;
1057 if(ISetits(4,-1)==0) view1->SetParallel();
1058 else view1->SetPerspective();
1060 if(ISetits(3,-1)!=0) view1->ShowAxis();
1062 if(ISetits(5,-1)==1) SUPRB26->Raytrace();
1066 TPad *p2 = c5->GetPad(2);
1067 TView *view2 = p2->GetView();
1069 view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
1070 if(irr) cout <<"error="<<irr<<endl;
1071 if(ISetits(4,-1)==0) view2->SetParallel();
1072 else view2->SetPerspective();
1074 if(ISetits(3,-1)!=0) view2->ShowAxis();
1076 if(ISetits(5,-1)==1) SUPRB26->Raytrace();