]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/Displayv11.C
New geometry: SDD, cables and update on V11 (L. Gaudichet)
[u/mrichter/AliRoot.git] / ITS / Displayv11.C
index d85734233d6a249524a7d8dd4e9d35693f30590a..4a618669ef06b78698d4565b4b60c47d66e0b446 100644 (file)
@@ -1,8 +1,3 @@
-void SetViewVolumes(const char* opt){
-    //
-    if(!strstr(opt,"all")) return;
-    //
-}
 //----------------------------------------------------------------------
 void Displayv11(const char* filename=""){
     // Display AliITSv11 Geometry
@@ -15,33 +10,960 @@ void Displayv11(const char* filename=""){
 
     gSystem->Load("libGeom");
     //
-    TCanvas *c1 = new TCanvas("C1","ITS Simulation Geometry",400,400);
-    //
     if(gGeoManager) delete gGeoManager;
-    TGeoManager *mgr2 = gGeoManager = new TGeoManager("ITSGeometry",
-                                      " ITS Simulation Geometry Manager");
+    mgr2 = gGeoManager = new TGeoManager("ITSGeometry",
+                                         " ITS Simulation Geometry Manager");
     //
     TGeoMaterial *vacmat = new TGeoMaterial("Vacume",0,0,0);
     TGeoMedium   *vacmed = new TGeoMedium("Vacume_med",1,vacmat);
     TGeoVolume *ALIC = mgr2->MakeBox("ALIC",vacmed,100.,100.,200.);
     mgr2->SetTopVolume(ALIC);
     //
-    //AliITSv11 *its = new AliITSv11("ITS Simulation Volumes");
-    AliITSv11 *its = new AliITSv11();
-    its->SetDebug(1);
+    AliITSv11 *its = new AliITSv11(0,3);
+    its->SetDebug(ISetits(0,-1));
+    its->GetSPDGeometry()->SetDebug(ISetits(0,-1));
+    its->GetSupGeometry()->SetDebug(ISetits(0,-1));
     its->CreateMaterials();
     its->CreateGeometry();
-    //SetViewVolumes("all");
     //
     mgr2->CloseGeometry();
     //
-    //mgr2->SetVisOption(0);
+    TControlBar *bar=new TControlBar("vertical","ITS Geometry Display",10,10);
+    bar->AddButton("Set Clipping on","ISetits(2,1)","Clipping on");
+    bar->AddButton("Set Cllipping off","ISetits(2,0)","Clipping off");
+    bar->AddButton("Set axis on","ISetits(3,1)","Show Axis on");
+    bar->AddButton("Set axis off","ISetits(3,0)","Show Axis off");
+    bar->AddButton("Set perspective on","ISetits(4,1)","Perspective on");
+    bar->AddButton("Set perspective off","ISetits(4,0)","Perspective off");
+    bar->AddButton("Set RayTrace on","ISetits(5,1)","Perspective on");
+    bar->AddButton("Set RayTrace off","ISetits(5,0)","Perspective off");
+    bar->AddButton("Set circle/80","ISetits(1,80)","circles ~ by 80 lines");
+    bar->AddButton("Display Geometry","Displayit()","Run Displayit");
+    bar->AddButton("Display SPD Ceneral Volume","EngineeringSPDLayer()",
+                   "Run EngineeringSPDLayer");
+    bar->AddButton("Display SPD Thermal Sheald","EngineeringSPDThS()",
+                   "Run EngineeringSPDThS");
+    bar->AddButton("Display SDD Layer 3","EngineeringSDDLayer3()",
+                   "Run EngineeringSDDLayer3");
+    bar->AddButton("Display SDD Layer 4","EngineeringSDDLayer4()",
+                   "Run EngineeringSDDLayer4");
+    bar->AddButton("Display SDD Cone","EngineeringSDDCone()",
+                   "Run EngineeringSDDCone");
+    bar->AddButton("Display SDD Centeral Cylinder","EngineeringSDDCylinder()",
+                   "Run EngineeringSDDCylinder");
+    bar->AddButton("Display SSD Cone","EngineeringSSDCone()",
+                   "Run EngineeringSSDCone");
+    bar->AddButton("Display SSD Centeral Cylinder","EngineeringSSDCylinder()",
+                   "Run EngineeringSSDCylinder");
+    bar->AddButton("Display SUP RB24 side","EngineeringSupRB24()",
+                   "Run EngineeringSupRB24");
+    bar->AddButton("Display Cable Trays RB24 side","EngineeringSupTrayRB24()",
+                   "Run EngineeringSupTrayRB24");
+    bar->AddButton("Display SUP RB26 side","EngineeringSupRB26()",
+                   "Run EngineeringSupRB26");
+    bar->AddButton("Quit/Exit",".q","Exit");
+    bar->Show();
+    gROOT->SaveContext();
+         //Displayit();
+}
+//----------------------------------------------------------------------
+Int_t ISetits(Int_t t,Int_t v){
+    static Int_t itsdebug=1,nsegments=80,cut=0,axis=1,perspective=0,ray=0;
+
+    switch (t) {
+    case 0:
+        if(v<0) return itsdebug;
+        itsdebug = v;
+        break;
+    case 1:
+        if(v<0) return nsegments;
+        nsegments= v;
+        break;
+    case 2:
+        if(v<0) return cut;
+        cut = v;
+        break;
+    case 3:
+        if(v<0) return axis;
+        axis = v;
+        break;
+    case 4:
+        if(v<0) return perspective;
+        perspective = v;
+        break;
+    case 5:
+        if(v<0) return ray;
+        ray = v;
+        break;
+    }// end switch
+    return 0;
+}
+//----------------------------------------------------------------------
+Double_t DSetits(Int_t t,Double_t v){
+    static Double_t phimincut=0.0,phimaxcut=180.0;
+    static Double_t longitude=90.0,latitude=0.0,psi=0.0;
+
+    switch (t) {
+    case 0:
+        if(v<0.) return phimincut;
+        phimincut = v;
+        break;
+    case 1:
+        if(v<0.) return phimaxcut;
+        phimaxcut = v;
+        break;
+    case 2:
+        if(v<0.) return longitude;
+        longitude = v;
+        break;
+    case 3:
+        if(v<0.) return latitude;
+        latitude = v;
+        break;
+    case 4:
+        if(v<0.) return latitude;
+        latitude = v;
+        break;
+    }// end switch
+    return 0;
+}
+//----------------------------------------------------------------------
+void Displayit(){
+    // Display AliITSv11 Geometry
+    // Inputs:
+    //    const char* filename output file with the display in it
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c1;
+    if(!(c1 = (TCanvas*)gROOT->FindObject("C1")))
+        c1 = new TCanvas("C1","ITS Simulation Geometry",900,900);
+    c1->Divide(2,2);
     //
-    TView *view = gPad->GetView();
-    if(view){
-       view->RotateView(0,90);
-       view->ShowAxis();
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
     } // end if
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c1->cd(1);
+    ALIC->Draw();
+    TPad *p1 = c1->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) ALIC->Raytrace();
+    c1->cd(2);
     ALIC->Draw();
+    TPad *p2 = c1->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->RotateView(60.,30.);
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) ALIC->Raytrace();
+    c1->cd(3);
+    ALIC->Draw();
+    c1->SetPhi(90.0); c1->SetTheta(90.0);
+    TPad *p3 = c1->GetPad(3);
+    TView *view3 = p3->GetView();
+    if(view3){
+        view3->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view3->SetParralel();
+        else  view3->SetPerspective();
+        view3->Top();
+        if(ISetits(3,-1)!=0) view3->ShowAxis();
+    } // end if view3
+    if(ISetits(5,-1)==1) ALIC->Raytrace();
+    c1->cd(4);
+    ALIC->Draw();
+    TPad *p4 = c1->GetPad(4);
+    TView *view4 = p4->GetView();
+    if(view4){
+        view4->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view4->SetParralel();
+        else  view4->SetPerspective();
+        view4->Side();
+        if(ISetits(3,-1)!=0) view4->ShowAxis();
+    } // end if view4
+    if(ISetits(5,-1)==1) ALIC->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSPDLayer(){
+    // Display SPD Layer Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c4;
+    if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
+        c4 = new TCanvas("C4","ITS SPD Layer Geometry Side View",500,500);
+    TGeoVolume *ITS,*SPDLay=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSSPDTempSPDMotherVolume_1");
+    SPDLay = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    SPDLay->Draw();
+    TView *view1 = c4->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SPDLay->Raytrace();
+    //
+    if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
+        c5 = new TCanvas("C5","ITS SPD Layer Geometry End View",500,500);
+    SPDLay->Draw();
+    TView *view2 = c5->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SPDLay->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSPDThS(){
+    // Display SPD Thermal Sheald Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c4;
+    if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
+        c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
+    c4->Divide(2,1);
+    TGeoVolume *ITS,*SPDThS=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSspdThermalShealdMotherM_1");
+    SPDThS = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c4->cd(1);
+    SPDThS->Draw();
+    TPad *p1 = c4->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SPDThS->Raytrace();
+    //
+    c4->cd(2);
+    SPDThS->Draw();
+    TPad *p2 = c4->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SPDThS->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSDDLayer3(){
+    // Display SDD Layer 3 Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c4;
+    if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
+        c4 = new TCanvas("C4","ITS SDD Layer 3 Geometry Side View",500,500);
+    TGeoVolume *ITS,*SDDLay3=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsddLayer3_1");
+    SDDLay3 = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    SDDLay3->Draw();
+    TView *view1 = c4->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SDDLay3->Raytrace();
+    //
+    if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
+        c5 = new TCanvas("C5","ITS SDD Layer 3 Geometry End View",500,500);
+    SDDLay3->Draw();
+    TView *view2 = c5->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SDDLay3->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSDDLayer4(){
+    // Display SDD Layer 4 Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c4;
+    if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
+        c4 = new TCanvas("C4","ITS SDD Layer 4 Geometry Side View",500,500);
+    TGeoVolume *ITS,*SDDLay4=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsddLayer4_1");
+    SDDLay4 = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    SDDLay4->Draw();
+    TView *view1 = c4->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SDDLay4->Raytrace();
+    //
+    if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
+        c5 = new TCanvas("C5","ITS SDD Layer 4 Geometry End View",500,500);
+    SDDLay4->Draw();
+    TView *view2 = c5->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SDDLay4->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSDDCone(){
+    // Display SDD Cone Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c2;
+    if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
+        c2 = new TCanvas("C2","ITS SDD Cone Geometry",900,450);
+    c2->Divide(2,1);
+    TGeoVolume *ITS,*SDD=0;
+    TGeoNode *node;
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsddConeL_1");
+    SDD = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c2->cd(1);
+    SDD->Draw();
+    TPad *p1 = c2->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SDD->Raytrace();
+    //
+    c2->cd(2);
+    SDD->Draw();
+    TPad *p2 = c2->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SDD->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSDDCylinder(){
+    // Display SDD Cylinder Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c3;
+    if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
+        c3 = new TCanvas("C3","ITS SDD Cylinder Geometry",900,450);
+    c3->Divide(2,1);
+    TGeoVolume *ITS,*SDD=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsddCentCylCF_1");
+    SDD = node->GetVolume();
+    Double_t Rmin = ((TGeoTube*)(SDD->GetShape()))->GetRmin();
+    Double_t Rmax = ((TGeoTube*)(SDD->GetShape()))->GetRmax();
+    Double_t Dz   = ((TGeoTube*)(SDD->GetShape()))->GetDz();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c3->cd(1);
+    SDD->Draw();
+    TPad *p1 = c3->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SDD->Raytrace();
+    //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
+    //
+    c3->cd(2);
+    SDD->Draw();
+    TPad *p2 = c3->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SDD->Raytrace();
+    //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
+    //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
+    //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSSDCone(){
+    // Display SSD Cone Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c2;
+    if(!(c2 = (TCanvas*)gROOT->FindObject("C2")))
+        c2 = new TCanvas("C2","ITS SSD Cone Geometry",900,450);
+    c2->Divide(2,1);
+    TGeoVolume *ITS,*SSD=0;
+    TGeoNode *node;
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSssdConeA_1");
+    SSD = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c2->cd(1);
+    SSD->Draw();
+    TPad *p1 = c2->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Top();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SSD->Raytrace();
+    //
+    c2->cd(2);
+    SSD->Draw();
+    TPad *p2 = c2->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Front();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SSD->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSSDCylinder(){
+    // Display SSD Cylinder Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c3;
+    if(!(c3 = (TCanvas*)gROOT->FindObject("C3")))
+        c3 = new TCanvas("C3","ITS SSD Cylinder Geometry",900,450);
+    c3->Divide(2,1);
+    TGeoVolume *ITS,*SSD=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSssdCentCylCA_1");
+    SSD = node->GetVolume();
+    //Double_t Rmin = ((TGeoPcon*)(SSD->GetShape()))->GetRmin();
+    //Double_t Rmax = ((TGeoPcon*)(SSD->GetShape()))->GetRmax();
+    //Double_t Dz   = ((TGeoPcon*)(SSD->GetShape()))->GetDz();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c3->cd(1);
+    SSD->Draw();
+    TPad *p1 = c3->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SSD->Raytrace();
+    //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
+    //
+    c3->cd(2);
+    SSD->Draw();
+    TPad *p2 = c3->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SSD->Raytrace();
+    //arrow->DrawArrow(Rmax,0.0,Rmax,0.0);
+    //Double_t s = TMath::Sin(0.7),c = TMath::Cos(0.7);
+    //arrow->DrawArrow(-Rmin*c,-Rmin*s,Rmin*c,Rmin*s);
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSupRB24(){
+    // Display  RB 24 side cable tray support structure Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c4;
+    if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
+        c4 = new TCanvas("C4","ITS SDD Cylinder Geometry",900,450);
+    c4->Divide(2,1);
+    TGeoVolume *ITS,*SUPRB24=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsupFrameM24_1");
+    SUPRB24 = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c4->cd(1);
+    SUPRB24->Draw();
+    TPad *p1 = c4->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SUPRB24->Raytrace();
+    //
+    c4->cd(2);
+    SUPRB24->Draw();
+    TPad *p2 = c4->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SUPRB24->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSupTrayRB24(){
+    // Display  RB 24 side cable tray support structure Geometry
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c4,*c5;
+    //if(!(c4 = (TCanvas*)gROOT->FindObject("C4")))
+        c4 = new TCanvas("C4","ITS RB24 Cable Trays and Patch Pannels",500,500);
+    //c4->Divide(2,1);
+    TGeoVolume *ITS,*SUPRB24=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsupCableTrayMotherMT24_1");
+    SUPRB24 = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c4->cd(1);
+    SUPRB24->Draw();
+    //TPad *p1 = c4->GetPad(1);
+    //TView *view1 = p1->GetView();
+    TView *view1 = c4->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SUPRB24->Raytrace();
+    //
+    //c4->cd(2);
+        c5 = new TCanvas("C5","ITS RB24 Cable Trays and Patch Pannels",500,500);
+    c5->cd(1);
+    SUPRB24->Draw();
+    //TPad *p2 = c5->GetPad(1);
+    //TView *view2 = p2->GetView();
+    TView *view2 = c5->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SUPRB24->Raytrace();
+    //
+}
+//----------------------------------------------------------------------
+void EngineeringSupRB26(){
+    // Display RB 26 side cable tray support structure
+    // Inputs:
+    //    none.
+    // Outputs:
+    //    none.
+    // Retrurn:
+    //    none.
+    Int_t irr;
+    //
+    TGeoManager *mgr2 = gGeoManager;
+    TGeoVolume *ALIC = mgr2->GetTopVolume();
+    TCanvas *c5;
+    if(!(c5 = (TCanvas*)gROOT->FindObject("C5")))
+        c5 = new TCanvas("C5","ITS SDD Cylinder Geometry",900,450);
+    c5->Divide(2,1);
+    TGeoVolume *ITS,*SUPRB26=0;
+    TGeoNode *node;
+    TArrow *arrow=new TArrow();
+    //
+    node = ALIC->FindNode("ITSV_1");
+    ITS = node->GetVolume();
+    node = ITS->FindNode("ITSsupFrameM26_1");
+    SUPRB26 = node->GetVolume();
+    //
+    mgr2->SetNsegments(ISetits(1,-1));
+    //
+    mgr2->SetVisLevel(6);
+    mgr2->SetVisOption(0);
+    //mgr2->CheckOverlaps(0.01);
+    //mgr2->PrintOverlaps();
+    if(ISetits(2,-1)==1){
+        TGeoShape *clip = new TGeoTubeSeg(0, 1000, 2000, 45, 90);
+        mgr2->SetClippingShape(clip);
+    } // end if
+    mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    if(ISetits(2,-1)!=0) mgr2->SetPhiRange(DSetits(1,-1.),DSetits(0,-1.));
+    //
+    c5->cd(1);
+    SUPRB26->Draw();
+    TPad *p1 = c5->GetPad(1);
+    TView *view1 = p1->GetView();
+    if(view1){
+        view1->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view1->SetParralel();
+        else  view1->SetPerspective();
+        view1->Front();
+        if(ISetits(3,-1)!=0) view1->ShowAxis();
+    } // end if view1
+    if(ISetits(5,-1)==1) SUPRB26->Raytrace();
+    //
+    c5->cd(2);
+    SUPRB26->Draw();
+    TPad *p2 = c5->GetPad(2);
+    TView *view2 = p2->GetView();
+    if(view2){
+        view2->SetView(DSetits(2,-1.),DSetits(3,-1.),DSetits(4,-1.),irr);
+        if(irr) cout <<"error="<<irr<<endl;
+        if(ISetits(4,-1)==0) view2->SetParralel();
+        else  view2->SetPerspective();
+        view2->Top();
+        if(ISetits(3,-1)!=0) view2->ShowAxis();
+    } // end if view2
+    if(ISetits(5,-1)==1) SUPRB26->Raytrace();
     //
 }