]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/Displayv11.C
update of V11 SPD and support geometry (B. Nilsen)
[u/mrichter/AliRoot.git] / ITS / Displayv11.C
1 //----------------------------------------------------------------------
2 void Displayv11(const char* filename=""){
3     // Display AliITSv11 Geometry
4     // Inputs:
5     //    const char* filename output file with the display in it
6     // Outputs:
7     //    none.
8     // Retrurn:
9     //    none.
10
11     gSystem->Load("libGeom");
12     //
13     if(gGeoManager) delete gGeoManager;
14     mgr2 = gGeoManager = new TGeoManager("ITSGeometry",
15                                          " ITS Simulation Geometry Manager");
16     //
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     ALIC->AddNode(ITS,1);
23     //
24     /*
25     AliITSv11 *its = new AliITSv11(0,3);
26     its->SetDebug(ISetits(0,-1));
27     its->GetSPDGeometry()->SetDebug(ISetits(0,-1));
28     its->GetSupGeometry()->SetDebug(ISetits(0,-1));
29     its->CreateMaterials();
30     its->CreateGeometry();
31     */
32     AliITSv11GeometrySPD *gspd = new AliITSv11GeometrySPD();
33     //AliITSv11GeometrySDD *gsdd = new AliITSgeometrySDD();
34     //AliITSv11GeometrySupport *gsupp = new AliITSGeometrySupport();
35     //AliITSv11GeometrySSD *gssd = new AliITSGeometrySSD();
36     //
37     Int_t imat=1,imed=1;
38     gspd->CreateSPDCenteralMaterials(imed,imat);
39     gspd->SPDSector(ITS,mgr2);
40     //
41     mgr2->CloseGeometry();
42     //
43     TControlBar *bar=new TControlBar("vertical","ITS Geometry Display",10,10);
44     bar->AddButton("Set Clipping on","ISetits(2,1)","Clipping on");
45     bar->AddButton("Set Cllipping off","ISetits(2,0)","Clipping off");
46     bar->AddButton("Set axis on","ISetits(3,1)","Show Axis on");
47     bar->AddButton("Set axis off","ISetits(3,0)","Show Axis off");
48     bar->AddButton("Set perspective on","ISetits(4,1)","Perspective on");
49     bar->AddButton("Set perspective off","ISetits(4,0)","Perspective off");
50     bar->AddButton("Set RayTrace on","ISetits(5,1)","Perspective on");
51     bar->AddButton("Set RayTrace off","ISetits(5,0)","Perspective off");
52     bar->AddButton("Set circle/80","ISetits(1,80)","circles ~ by 80 lines");
53     bar->AddButton("Display Geometry","Displayit()","Run Displayit");
54     bar->AddButton("Display SPD Ceneral Volume","EngineeringSPDLayer()",
55                    "Run EngineeringSPDLayer");
56     bar->AddButton("Display SPD Thermal Sheald","EngineeringSPDThS()",
57                    "Run EngineeringSPDThS");
58     bar->AddButton("Display SDD Layer 3","EngineeringSDDLayer3()",
59                    "Run EngineeringSDDLayer3");
60     bar->AddButton("Display SDD Layer 4","EngineeringSDDLayer4()",
61                    "Run EngineeringSDDLayer4");
62     bar->AddButton("Display SDD Cone","EngineeringSDDCone()",
63                    "Run EngineeringSDDCone");
64     bar->AddButton("Display SDD Centeral Cylinder","EngineeringSDDCylinder()",
65                    "Run EngineeringSDDCylinder");
66     bar->AddButton("Display SSD Cone","EngineeringSSDCone()",
67                    "Run EngineeringSSDCone");
68     bar->AddButton("Display SSD Centeral Cylinder","EngineeringSSDCylinder()",
69                    "Run EngineeringSSDCylinder");
70     bar->AddButton("Display SUP RB24 side","EngineeringSupRB24()",
71                    "Run EngineeringSupRB24");
72     bar->AddButton("Display Cable Trays RB24 side","EngineeringSupTrayRB24()",
73                    "Run EngineeringSupTrayRB24");
74     bar->AddButton("Display SUP RB26 side","EngineeringSupRB26()",
75                    "Run EngineeringSupRB26");
76     bar->AddButton("Save Geometry to File","ExportToFile()",
77                    "Run ExportToFile");
78     bar->AddButton("Quit/Exit",".q","Exit");
79     bar->Show();
80     gROOT->SaveContext();
81          //Displayit();
82 }
83 //----------------------------------------------------------------------
84 void ExportToFile(){
85     // Quirry file name and write geometry to a root file.
86     // Inputs:
87     //    const char* filename output file with the display in it
88     // Outputs:
89     //    none.
90     // Retrurn:
91     //    none.
92     Char_t filename[100];
93
94     printf("Eneter File name:");
95     scanf("%s",filename);
96
97     gGeoManager->Export(filename);
98 }
99 //----------------------------------------------------------------------
100 Int_t ISetits(Int_t t,Int_t v){
101     static Int_t itsdebug=1,nsegments=80,cut=0,axis=1,perspective=0,ray=0;
102
103     switch (t) {
104     case 0:
105         if(v<0) return itsdebug;
106         itsdebug = v;
107         break;
108     case 1:
109         if(v<0) return nsegments;
110         nsegments= v;
111         break;
112     case 2:
113         if(v<0) return cut;
114         cut = v;
115         break;
116     case 3:
117         if(v<0) return axis;
118         axis = v;
119         break;
120     case 4:
121         if(v<0) return perspective;
122         perspective = v;
123         break;
124     case 5:
125         if(v<0) return ray;
126         ray = v;
127         break;
128     }// end switch
129     return 0;
130 }
131 //----------------------------------------------------------------------
132 Double_t DSetits(Int_t t,Double_t v){
133     static Double_t phimincut=0.0,phimaxcut=180.0;
134     static Double_t longitude=90.0,latitude=0.0,psi=0.0;
135
136     switch (t) {
137     case 0:
138         if(v<0.) return phimincut;
139         phimincut = v;
140         break;
141     case 1:
142         if(v<0.) return phimaxcut;
143         phimaxcut = v;
144         break;
145     case 2:
146         if(v<0.) return longitude;
147         longitude = v;
148         break;
149     case 3:
150         if(v<0.) return latitude;
151         latitude = v;
152         break;
153     case 4:
154         if(v<0.) return latitude;
155         latitude = v;
156         break;
157     }// end switch
158     return 0;
159 }
160 //----------------------------------------------------------------------
161 void Displayit(){
162     // Display AliITSv11 Geometry
163     // Inputs:
164     //    const char* filename output file with the display in it
165     // Outputs:
166     //    none.
167     // Retrurn:
168     //    none.
169     Int_t irr;
170     //
171     TGeoManager *mgr2 = gGeoManager;
172     TGeoVolume *ALIC = mgr2->GetTopVolume();
173     TCanvas *c1;
174     if(!(c1 = (TCanvas*)gROOT->FindObject("C1")))
175         c1 = new TCanvas("C1","ITS Simulation Geometry",900,900);
176     c1->Divide(2,2);
177     //
178     mgr2->SetNsegments(ISetits(1,-1));
179     //
180     mgr2->SetVisLevel(6);
181     mgr2->SetVisOption(0);
182     //mgr2->CheckOverlaps(0.01);
183     //mgr2->PrintOverlaps();
184     if(ISetits(2,-1)==1){
185         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
186         mgr2->SetClippingShape(clip);
187     } // end if
188     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
189     //
190     c1->cd(1);
191     ALIC->Draw();
192     TPad *p1 = c1->GetPad(1);
193     TView *view1 = p1->GetView();
194     if(view1){
195         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
196         if(irr) cout <<"error="<<irr<<endl;
197         if(ISetits(4,-1)==0) view1->SetParallel();
198         else  view1->SetPerspective();
199         view1->Front();
200         if(ISetits(3,-1)!=0) view1->ShowAxis();
201     } // end if view1
202     if(ISetits(5,-1)==1) ALIC->Raytrace();
203     c1->cd(2);
204     ALIC->Draw();
205     TPad *p2 = c1->GetPad(2);
206     TView *view2 = p2->GetView();
207     if(view2){
208         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
209         if(irr) cout <<"error="<<irr<<endl;
210         if(ISetits(4,-1)==0) view2->SetParallel();
211         else  view2->SetPerspective();
212         view2->RotateView(60.,30.);
213         if(ISetits(3,-1)!=0) view2->ShowAxis();
214     } // end if view2
215     if(ISetits(5,-1)==1) ALIC->Raytrace();
216     c1->cd(3);
217     ALIC->Draw();
218     c1->SetPhi(90.0); c1->SetTheta(90.0);
219     TPad *p3 = c1->GetPad(3);
220     TView *view3 = p3->GetView();
221     if(view3){
222         view3->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
223         if(irr) cout <<"error="<<irr<<endl;
224         if(ISetits(4,-1)==0) view3->SetParallel();
225         else  view3->SetPerspective();
226         view3->Top();
227         if(ISetits(3,-1)!=0) view3->ShowAxis();
228     } // end if view3
229     if(ISetits(5,-1)==1) ALIC->Raytrace();
230     c1->cd(4);
231     ALIC->Draw();
232     TPad *p4 = c1->GetPad(4);
233     TView *view4 = p4->GetView();
234     if(view4){
235         view4->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
236         if(irr) cout <<"error="<<irr<<endl;
237         if(ISetits(4,-1)==0) view4->SetParallel();
238         else  view4->SetPerspective();
239         view4->Side();
240         if(ISetits(3,-1)!=0) view4->ShowAxis();
241     } // end if view4
242     if(ISetits(5,-1)==1) ALIC->Raytrace();
243     //
244 }
245 //----------------------------------------------------------------------
246 void EngineeringSPDLayer(){
247     // Display SPD Layer Geometry
248     // Inputs:
249     //    none.
250     // Outputs:
251     //    none.
252     // Retrurn:
253     //    none.
254     Int_t irr;
255     //
256     TGeoManager *mgr2 = gGeoManager;
257     TGeoVolume *ALIC = mgr2->GetTopVolume();
258     TCanvas *c4;
259     if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
260         c4 = new TCanvas("C4","ITS SPD Layer Geometry Side View",500,500);
261     TGeoVolume *ITS,*SPDLay=0;
262     TGeoNode *node;
263     TArrow *arrow=new TArrow();
264     //
265     node = ALIC->FindNode("ITSV_1");
266     ITS = node->GetVolume();
267     node = ITS->FindNode("ITSSPDCarbonFiberSectorV_1");
268     //node = ITS->FindNode("ITSSPDTempSPDMotherVolume_1");
269     SPDLay = node->GetVolume();
270     //
271     mgr2->SetNsegments(ISetits(1,-1));
272     //
273     mgr2->SetVisLevel(6);
274     mgr2->SetVisOption(0);
275     //mgr2->CheckOverlaps(0.01);
276     //mgr2->PrintOverlaps();
277     if(ISetits(2,-1)==1){
278         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
279         mgr2->SetClippingShape(clip);
280     } // end if
281     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
282     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
283     //
284     SPDLay->Draw();
285     TView *view1 = c4->GetView();
286     if(view1){
287         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
288         if(irr) cout <<"error="<<irr<<endl;
289         if(ISetits(4,-1)==0) view1->SetParralel();
290         else  view1->SetPerspective();
291         view1->Front();
292         if(ISetits(3,-1)!=0) view1->ShowAxis();
293     } // end if view1
294     if(ISetits(5,-1)==1) SPDLay->Raytrace();
295     //
296     if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
297         c5 = new TCanvas("C5","ITS SPD Layer Geometry End View",500,500);
298     SPDLay->Draw();
299     TView *view2 = c5->GetView();
300     if(view2){
301         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
302         if(irr) cout <<"error="<<irr<<endl;
303         if(ISetits(4,-1)==0) view2->SetParralel();
304         else  view2->SetPerspective();
305         view2->Top();
306         if(ISetits(3,-1)!=0) view2->ShowAxis();
307     } // end if view2
308     if(ISetits(5,-1)==1) SPDLay->Raytrace();
309     //
310 }
311 //----------------------------------------------------------------------
312 void EngineeringSPDThS(){
313     // Display SPD Thermal Sheald Geometry
314     // Inputs:
315     //    none.
316     // Outputs:
317     //    none.
318     // Retrurn:
319     //    none.
320     Int_t irr;
321     //
322     TGeoManager *mgr2 = gGeoManager;
323     TGeoVolume *ALIC = mgr2->GetTopVolume();
324     TCanvas *c4;
325     if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
326         c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
327     c4->Divide(2,1);
328     TGeoVolume *ITS,*SPDThS=0;
329     TGeoNode *node;
330     TArrow *arrow=new TArrow();
331     //
332     node = ALIC->FindNode("ITSV_1");
333     ITS = node->GetVolume();
334     node = ITS->FindNode("ITSspdThermalShealdMotherM_1");
335     SPDThS = node->GetVolume();
336     //
337     mgr2->SetNsegments(ISetits(1,-1));
338     //
339     mgr2->SetVisLevel(6);
340     mgr2->SetVisOption(0);
341     //mgr2->CheckOverlaps(0.01);
342     //mgr2->PrintOverlaps();
343     if(ISetits(2,-1)==1){
344         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
345         mgr2->SetClippingShape(clip);
346     } // end if
347     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
348     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
349     //
350     c4->cd(1);
351     SPDThS->Draw();
352     TPad *p1 = c4->GetPad(1);
353     TView *view1 = p1->GetView();
354     if(view1){
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();
359         view1->Front();
360         if(ISetits(3,-1)!=0) view1->ShowAxis();
361     } // end if view1
362     if(ISetits(5,-1)==1) SPDThS->Raytrace();
363     //
364     c4->cd(2);
365     SPDThS->Draw();
366     TPad *p2 = c4->GetPad(2);
367     TView *view2 = p2->GetView();
368     if(view2){
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();
373         view2->Top();
374         if(ISetits(3,-1)!=0) view2->ShowAxis();
375     } // end if view2
376     if(ISetits(5,-1)==1) SPDThS->Raytrace();
377     //
378 }
379 //----------------------------------------------------------------------
380 void EngineeringSDDLayer3(){
381     // Display SDD Layer 3 Geometry
382     // Inputs:
383     //    none.
384     // Outputs:
385     //    none.
386     // Retrurn:
387     //    none.
388     Int_t irr;
389     //
390     TGeoManager *mgr2 = gGeoManager;
391     TGeoVolume *ALIC = mgr2->GetTopVolume();
392     TCanvas *c4;
393     if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
394         c4 = new TCanvas("C4","ITS SDD Layer 3 Geometry Side View",500,500);
395     TGeoVolume *ITS,*SDDLay3=0;
396     TGeoNode *node;
397     TArrow *arrow=new TArrow();
398     //
399     node = ALIC->FindNode("ITSV_1");
400     ITS = node->GetVolume();
401     node = ITS->FindNode("ITSsddLayer3_1");
402     SDDLay3 = node->GetVolume();
403     //
404     mgr2->SetNsegments(ISetits(1,-1));
405     //
406     mgr2->SetVisLevel(6);
407     mgr2->SetVisOption(0);
408     //mgr2->CheckOverlaps(0.01);
409     //mgr2->PrintOverlaps();
410     if(ISetits(2,-1)==1){
411         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
412         mgr2->SetClippingShape(clip);
413     } // end if
414     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
415     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
416     //
417     SDDLay3->Draw();
418     TView *view1 = c4->GetView();
419     if(view1){
420         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
421         if(irr) cout <<"error="<<irr<<endl;
422         if(ISetits(4,-1)==0) view1->SetParralel();
423         else  view1->SetPerspective();
424         view1->Front();
425         if(ISetits(3,-1)!=0) view1->ShowAxis();
426     } // end if view1
427     if(ISetits(5,-1)==1) SDDLay3->Raytrace();
428     //
429     if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
430         c5 = new TCanvas("C5","ITS SDD Layer 3 Geometry End View",500,500);
431     SDDLay3->Draw();
432     TView *view2 = c5->GetView();
433     if(view2){
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();
438         view2->Top();
439         if(ISetits(3,-1)!=0) view2->ShowAxis();
440     } // end if view2
441     if(ISetits(5,-1)==1) SDDLay3->Raytrace();
442     //
443 }
444 //----------------------------------------------------------------------
445 void EngineeringSDDLayer4(){
446     // Display SDD Layer 4 Geometry
447     // Inputs:
448     //    none.
449     // Outputs:
450     //    none.
451     // Retrurn:
452     //    none.
453     Int_t irr;
454     //
455     TGeoManager *mgr2 = gGeoManager;
456     TGeoVolume *ALIC = mgr2->GetTopVolume();
457     TCanvas *c4;
458     if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
459         c4 = new TCanvas("C4","ITS SDD Layer 4 Geometry Side View",500,500);
460     TGeoVolume *ITS,*SDDLay4=0;
461     TGeoNode *node;
462     TArrow *arrow=new TArrow();
463     //
464     node = ALIC->FindNode("ITSV_1");
465     ITS = node->GetVolume();
466     node = ITS->FindNode("ITSsddLayer4_1");
467     SDDLay4 = node->GetVolume();
468     //
469     mgr2->SetNsegments(ISetits(1,-1));
470     //
471     mgr2->SetVisLevel(6);
472     mgr2->SetVisOption(0);
473     //mgr2->CheckOverlaps(0.01);
474     //mgr2->PrintOverlaps();
475     if(ISetits(2,-1)==1){
476         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
477         mgr2->SetClippingShape(clip);
478     } // end if
479     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
480     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
481     //
482     SDDLay4->Draw();
483     TView *view1 = c4->GetView();
484     if(view1){
485         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
486         if(irr) cout <<"error="<<irr<<endl;
487         if(ISetits(4,-1)==0) view1->SetParralel();
488         else  view1->SetPerspective();
489         view1->Front();
490         if(ISetits(3,-1)!=0) view1->ShowAxis();
491     } // end if view1
492     if(ISetits(5,-1)==1) SDDLay4->Raytrace();
493     //
494     if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
495         c5 = new TCanvas("C5","ITS SDD Layer 4 Geometry End View",500,500);
496     SDDLay4->Draw();
497     TView *view2 = c5->GetView();
498     if(view2){
499         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
500         if(irr) cout <<"error="<<irr<<endl;
501         if(ISetits(4,-1)==0) view2->SetParralel();
502         else  view2->SetPerspective();
503         view2->Top();
504         if(ISetits(3,-1)!=0) view2->ShowAxis();
505     } // end if view2
506     if(ISetits(5,-1)==1) SDDLay4->Raytrace();
507     //
508 }
509 //----------------------------------------------------------------------
510 void EngineeringSDDCone(){
511     // Display SDD Cone Geometry
512     // Inputs:
513     //    none.
514     // Outputs:
515     //    none.
516     // Retrurn:
517     //    none.
518     Int_t irr;
519     //
520     TGeoManager *mgr2 = gGeoManager;
521     TGeoVolume *ALIC = mgr2->GetTopVolume();
522     TCanvas *c2;
523     if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
524         c2 = new TCanvas("C2","ITS SDD Cone Geometry",900,450);
525     c2->Divide(2,1);
526     TGeoVolume *ITS,*SDD=0;
527     TGeoNode *node;
528     //
529     node = ALIC->FindNode("ITSV_1");
530     ITS = node->GetVolume();
531     node = ITS->FindNode("ITSsddConeL_1");
532     SDD = node->GetVolume();
533     //
534     mgr2->SetNsegments(ISetits(1,-1));
535     //
536     mgr2->SetVisLevel(6);
537     mgr2->SetVisOption(0);
538     //mgr2->CheckOverlaps(0.01);
539     //mgr2->PrintOverlaps();
540     if(ISetits(2,-1)==1){
541         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
542         mgr2->SetClippingShape(clip);
543     } // end if
544     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
545     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
546     //
547     c2->cd(1);
548     SDD->Draw();
549     TPad *p1 = c2->GetPad(1);
550     TView *view1 = p1->GetView();
551     if(view1){
552         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
553         if(irr) cout <<"error="<<irr<<endl;
554         if(ISetits(4,-1)==0) view1->SetParralel();
555         else  view1->SetPerspective();
556         view1->Front();
557         if(ISetits(3,-1)!=0) view1->ShowAxis();
558     } // end if view1
559     if(ISetits(5,-1)==1) SDD->Raytrace();
560     //
561     c2->cd(2);
562     SDD->Draw();
563     TPad *p2 = c2->GetPad(2);
564     TView *view2 = p2->GetView();
565     if(view2){
566         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
567         if(irr) cout <<"error="<<irr<<endl;
568         if(ISetits(4,-1)==0) view2->SetParralel();
569         else  view2->SetPerspective();
570         view2->Top();
571         if(ISetits(3,-1)!=0) view2->ShowAxis();
572     } // end if view1
573     if(ISetits(5,-1)==1) SDD->Raytrace();
574     //
575 }
576 //----------------------------------------------------------------------
577 void EngineeringSDDCylinder(){
578     // Display SDD Cylinder Geometry
579     // Inputs:
580     //    none.
581     // Outputs:
582     //    none.
583     // Retrurn:
584     //    none.
585     Int_t irr;
586     //
587     TGeoManager *mgr2 = gGeoManager;
588     TGeoVolume *ALIC = mgr2->GetTopVolume();
589     TCanvas *c3;
590     if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
591         c3 = new TCanvas("C3","ITS SDD Cylinder Geometry",900,450);
592     c3->Divide(2,1);
593     TGeoVolume *ITS,*SDD=0;
594     TGeoNode *node;
595     TArrow *arrow=new TArrow();
596     //
597     node = ALIC->FindNode("ITSV_1");
598     ITS = node->GetVolume();
599     node = ITS->FindNode("ITSsddCentCylCF_1");
600     SDD = node->GetVolume();
601     Double_t Rmin = ((TGeoTube*)(SDD->GetShape()))->GetRmin();
602     Double_t Rmax = ((TGeoTube*)(SDD->GetShape()))->GetRmax();
603     Double_t Dz   = ((TGeoTube*)(SDD->GetShape()))->GetDz();
604     //
605     mgr2->SetNsegments(ISetits(1,-1));
606     //
607     mgr2->SetVisLevel(6);
608     mgr2->SetVisOption(0);
609     //mgr2->CheckOverlaps(0.01);
610     //mgr2->PrintOverlaps();
611     if(ISetits(2,-1)==1){
612         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
613         mgr2->SetClippingShape(clip);
614     } // end if
615     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
616     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
617     //
618     c3->cd(1);
619     SDD->Draw();
620     TPad *p1 = c3->GetPad(1);
621     TView *view1 = p1->GetView();
622     if(view1){
623         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
624         if(irr) cout <<"error="<<irr<<endl;
625         if(ISetits(4,-1)==0) view1->SetParralel();
626         else  view1->SetPerspective();
627         view1->Front();
628         if(ISetits(3,-1)!=0) view1->ShowAxis();
629     } // end if view1
630     if(ISetits(5,-1)==1) SDD->Raytrace();
631     //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
632     //
633     c3->cd(2);
634     SDD->Draw();
635     TPad *p2 = c3->GetPad(2);
636     TView *view2 = p2->GetView();
637     if(view2){
638         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
639         if(irr) cout <<"error="<<irr<<endl;
640         if(ISetits(4,-1)==0) view2->SetParralel();
641         else  view2->SetPerspective();
642         view2->Top();
643         if(ISetits(3,-1)!=0) view2->ShowAxis();
644     } // end if view2
645     if(ISetits(5,-1)==1) SDD->Raytrace();
646     //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
647     //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
648     //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
649     //
650 }
651 //----------------------------------------------------------------------
652 void EngineeringSSDCone(){
653     // Display SSD Cone Geometry
654     // Inputs:
655     //    none.
656     // Outputs:
657     //    none.
658     // Retrurn:
659     //    none.
660     Int_t irr;
661     //
662     TGeoManager *mgr2 = gGeoManager;
663     TGeoVolume *ALIC = mgr2->GetTopVolume();
664     TCanvas *c2;
665     if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
666         c2 = new TCanvas("C2","ITS SSD Cone Geometry",900,450);
667     c2->Divide(2,1);
668     TGeoVolume *ITS,*SSD=0;
669     TGeoNode *node;
670     //
671     node = ALIC->FindNode("ITSV_1");
672     ITS = node->GetVolume();
673     node = ITS->FindNode("ITSssdConeA_1");
674     SSD = node->GetVolume();
675     //
676     mgr2->SetNsegments(ISetits(1,-1));
677     //
678     mgr2->SetVisLevel(6);
679     mgr2->SetVisOption(0);
680     //mgr2->CheckOverlaps(0.01);
681     //mgr2->PrintOverlaps();
682     if(ISetits(2,-1)==1){
683         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
684         mgr2->SetClippingShape(clip);
685     } // end if
686     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
687     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
688     //
689     c2->cd(1);
690     SSD->Draw();
691     TPad *p1 = c2->GetPad(1);
692     TView *view1 = p1->GetView();
693     if(view1){
694         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
695         if(irr) cout <<"error="<<irr<<endl;
696         if(ISetits(4,-1)==0) view1->SetParralel();
697         else  view1->SetPerspective();
698         view1->Top();
699         if(ISetits(3,-1)!=0) view1->ShowAxis();
700     } // end if view1
701     if(ISetits(5,-1)==1) SSD->Raytrace();
702     //
703     c2->cd(2);
704     SSD->Draw();
705     TPad *p2 = c2->GetPad(2);
706     TView *view2 = p2->GetView();
707     if(view2){
708         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
709         if(irr) cout <<"error="<<irr<<endl;
710         if(ISetits(4,-1)==0) view2->SetParralel();
711         else  view2->SetPerspective();
712         view2->Front();
713         if(ISetits(3,-1)!=0) view2->ShowAxis();
714     } // end if view1
715     if(ISetits(5,-1)==1) SSD->Raytrace();
716     //
717 }
718 //----------------------------------------------------------------------
719 void EngineeringSSDCylinder(){
720     // Display SSD Cylinder Geometry
721     // Inputs:
722     //    none.
723     // Outputs:
724     //    none.
725     // Retrurn:
726     //    none.
727     Int_t irr;
728     //
729     TGeoManager *mgr2 = gGeoManager;
730     TGeoVolume *ALIC = mgr2->GetTopVolume();
731     TCanvas *c3;
732     if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
733         c3 = new TCanvas("C3","ITS SSD Cylinder Geometry",900,450);
734     c3->Divide(2,1);
735     TGeoVolume *ITS,*SSD=0;
736     TGeoNode *node;
737     TArrow *arrow=new TArrow();
738     //
739     node = ALIC->FindNode("ITSV_1");
740     ITS = node->GetVolume();
741     node = ITS->FindNode("ITSssdCentCylCA_1");
742     SSD = node->GetVolume();
743     //Double_t Rmin = ((TGeoPcon*)(SSD->GetShape()))->GetRmin();
744     //Double_t Rmax = ((TGeoPcon*)(SSD->GetShape()))->GetRmax();
745     //Double_t Dz   = ((TGeoPcon*)(SSD->GetShape()))->GetDz();
746     //
747     mgr2->SetNsegments(ISetits(1,-1));
748     //
749     mgr2->SetVisLevel(6);
750     mgr2->SetVisOption(0);
751     //mgr2->CheckOverlaps(0.01);
752     //mgr2->PrintOverlaps();
753     if(ISetits(2,-1)==1){
754         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
755         mgr2->SetClippingShape(clip);
756     } // end if
757     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
758     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
759     //
760     c3->cd(1);
761     SSD->Draw();
762     TPad *p1 = c3->GetPad(1);
763     TView *view1 = p1->GetView();
764     if(view1){
765         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
766         if(irr) cout <<"error="<<irr<<endl;
767         if(ISetits(4,-1)==0) view1->SetParralel();
768         else  view1->SetPerspective();
769         view1->Front();
770         if(ISetits(3,-1)!=0) view1->ShowAxis();
771     } // end if view1
772     if(ISetits(5,-1)==1) SSD->Raytrace();
773     //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
774     //
775     c3->cd(2);
776     SSD->Draw();
777     TPad *p2 = c3->GetPad(2);
778     TView *view2 = p2->GetView();
779     if(view2){
780         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
781         if(irr) cout <<"error="<<irr<<endl;
782         if(ISetits(4,-1)==0) view2->SetParralel();
783         else  view2->SetPerspective();
784         view2->Top();
785         if(ISetits(3,-1)!=0) view2->ShowAxis();
786     } // end if view2
787     if(ISetits(5,-1)==1) SSD->Raytrace();
788     //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
789     //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
790     //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
791     //
792 }
793 //----------------------------------------------------------------------
794 void EngineeringSupRB24(){
795     // Display  RB 24 side cable tray support structure Geometry
796     // Inputs:
797     //    none.
798     // Outputs:
799     //    none.
800     // Retrurn:
801     //    none.
802     Int_t irr;
803     //
804     TGeoManager *mgr2 = gGeoManager;
805     TGeoVolume *ALIC = mgr2->GetTopVolume();
806     TCanvas *c4;
807     if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
808         c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
809     c4->Divide(2,1);
810     TGeoVolume *ITS,*SUPRB24=0;
811     TGeoNode *node;
812     TArrow *arrow=new TArrow();
813     //
814     node = ALIC->FindNode("ITSV_1");
815     ITS = node->GetVolume();
816     node = ITS->FindNode("ITSsupFrameM24_1");
817     SUPRB24 = node->GetVolume();
818     //
819     mgr2->SetNsegments(ISetits(1,-1));
820     //
821     mgr2->SetVisLevel(6);
822     mgr2->SetVisOption(0);
823     //mgr2->CheckOverlaps(0.01);
824     //mgr2->PrintOverlaps();
825     if(ISetits(2,-1)==1){
826         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
827         mgr2->SetClippingShape(clip);
828     } // end if
829     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
830     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
831     //
832     c4->cd(1);
833     SUPRB24->Draw();
834     TPad *p1 = c4->GetPad(1);
835     TView *view1 = p1->GetView();
836     if(view1){
837         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
838         if(irr) cout <<"error="<<irr<<endl;
839         if(ISetits(4,-1)==0) view1->SetParralel();
840         else  view1->SetPerspective();
841         view1->Front();
842         if(ISetits(3,-1)!=0) view1->ShowAxis();
843     } // end if view1
844     if(ISetits(5,-1)==1) SUPRB24->Raytrace();
845     //
846     c4->cd(2);
847     SUPRB24->Draw();
848     TPad *p2 = c4->GetPad(2);
849     TView *view2 = p2->GetView();
850     if(view2){
851         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
852         if(irr) cout <<"error="<<irr<<endl;
853         if(ISetits(4,-1)==0) view2->SetParralel();
854         else  view2->SetPerspective();
855         view2->Top();
856         if(ISetits(3,-1)!=0) view2->ShowAxis();
857     } // end if view2
858     if(ISetits(5,-1)==1) SUPRB24->Raytrace();
859     //
860 }
861 //----------------------------------------------------------------------
862 void EngineeringSupTrayRB24(){
863     // Display  RB 24 side cable tray support structure Geometry
864     // Inputs:
865     //    none.
866     // Outputs:
867     //    none.
868     // Retrurn:
869     //    none.
870     Int_t irr;
871     //
872     TGeoManager *mgr2 = gGeoManager;
873     TGeoVolume *ALIC = mgr2->GetTopVolume();
874     TCanvas *c4,*c5;
875     //if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
876         c4 = new TCanvas("C4","ITS RB24 Cable Trays and Patch Pannels",500,500);
877     //c4->Divide(2,1);
878     TGeoVolume *ITS,*SUPRB24=0;
879     TGeoNode *node;
880     TArrow *arrow=new TArrow();
881     //
882     node = ALIC->FindNode("ITSV_1");
883     ITS = node->GetVolume();
884     node = ITS->FindNode("ITSsupCableTrayMotherMT24_1");
885     SUPRB24 = node->GetVolume();
886     //
887     mgr2->SetNsegments(ISetits(1,-1));
888     //
889     mgr2->SetVisLevel(6);
890     mgr2->SetVisOption(0);
891     //mgr2->CheckOverlaps(0.01);
892     //mgr2->PrintOverlaps();
893     if(ISetits(2,-1)==1){
894         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
895         mgr2->SetClippingShape(clip);
896     } // end if
897     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
898     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
899     //
900     c4->cd(1);
901     SUPRB24->Draw();
902     //TPad *p1 = c4->GetPad(1);
903     //TView *view1 = p1->GetView();
904     TView *view1 = c4->GetView();
905     if(view1){
906         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
907         if(irr) cout <<"error="<<irr<<endl;
908         if(ISetits(4,-1)==0) view1->SetParralel();
909         else  view1->SetPerspective();
910         view1->Front();
911         if(ISetits(3,-1)!=0) view1->ShowAxis();
912     } // end if view1
913     if(ISetits(5,-1)==1) SUPRB24->Raytrace();
914     //
915     //c4->cd(2);
916         c5 = new TCanvas("C5","ITS RB24 Cable Trays and Patch Pannels",500,500);
917     c5->cd(1);
918     SUPRB24->Draw();
919     //TPad *p2 = c5->GetPad(1);
920     //TView *view2 = p2->GetView();
921     TView *view2 = c5->GetView();
922     if(view2){
923         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
924         if(irr) cout <<"error="<<irr<<endl;
925         if(ISetits(4,-1)==0) view2->SetParralel();
926         else  view2->SetPerspective();
927         view2->Top();
928         if(ISetits(3,-1)!=0) view2->ShowAxis();
929     } // end if view2
930     if(ISetits(5,-1)==1) SUPRB24->Raytrace();
931     //
932 }
933 //----------------------------------------------------------------------
934 void EngineeringSupRB26(){
935     // Display RB 26 side cable tray support structure
936     // Inputs:
937     //    none.
938     // Outputs:
939     //    none.
940     // Retrurn:
941     //    none.
942     Int_t irr;
943     //
944     TGeoManager *mgr2 = gGeoManager;
945     TGeoVolume *ALIC = mgr2->GetTopVolume();
946     TCanvas *c5;
947     if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
948         c5 = new TCanvas("C5","ITS SDD Cylinder Geometry",900,450);
949     c5->Divide(2,1);
950     TGeoVolume *ITS,*SUPRB26=0;
951     TGeoNode *node;
952     TArrow *arrow=new TArrow();
953     //
954     node = ALIC->FindNode("ITSV_1");
955     ITS = node->GetVolume();
956     node = ITS->FindNode("ITSsupFrameM26_1");
957     SUPRB26 = node->GetVolume();
958     //
959     mgr2->SetNsegments(ISetits(1,-1));
960     //
961     mgr2->SetVisLevel(6);
962     mgr2->SetVisOption(0);
963     //mgr2->CheckOverlaps(0.01);
964     //mgr2->PrintOverlaps();
965     if(ISetits(2,-1)==1){
966         TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
967         mgr2->SetClippingShape(clip);
968     } // end if
969     mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
970     if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
971     //
972     c5->cd(1);
973     SUPRB26->Draw();
974     TPad *p1 = c5->GetPad(1);
975     TView *view1 = p1->GetView();
976     if(view1){
977         view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
978         if(irr) cout <<"error="<<irr<<endl;
979         if(ISetits(4,-1)==0) view1->SetParralel();
980         else  view1->SetPerspective();
981         view1->Front();
982         if(ISetits(3,-1)!=0) view1->ShowAxis();
983     } // end if view1
984     if(ISetits(5,-1)==1) SUPRB26->Raytrace();
985     //
986     c5->cd(2);
987     SUPRB26->Draw();
988     TPad *p2 = c5->GetPad(2);
989     TView *view2 = p2->GetView();
990     if(view2){
991         view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
992         if(irr) cout <<"error="<<irr<<endl;
993         if(ISetits(4,-1)==0) view2->SetParralel();
994         else  view2->SetPerspective();
995         view2->Top();
996         if(ISetits(3,-1)!=0) view2->ShowAxis();
997     } // end if view2
998     if(ISetits(5,-1)==1) SUPRB26->Raytrace();
999     //
1000 }