*/
//______________________________________________________________________
-AliITSv11::AliITSv11() : AliITS() {
+AliITSv11::AliITSv11() : AliITS(),
+fEuclidOut(kFALSE),
+fGeomDetOut(kFALSE),
+fGeomDetIn(kFALSE),
+fMajorVersion(11),
+fMinorVersion(0),
+fDet1(0.0),
+fDet2(0.0),
+fChip1(0.0),
+fChip2(0.0),
+fRails(0),
+fFluid(1){
// Standard default constructor for the ITS version 11.
// Inputs:
// none.
// fcD = 0;
}
//______________________________________________________________________
-AliITSv11::AliITSv11(const char *title) : AliITS("ITS", title){
+AliITSv11::AliITSv11(const char *title) : AliITS("ITS", title),
+fEuclidOut(kFALSE),
+fGeomDetOut(kFALSE),
+fGeomDetIn(kFALSE),
+fMajorVersion(11),
+fMinorVersion(0),
+fDet1(0.0),
+fDet2(0.0),
+fChip1(0.0),
+fChip2(0.0),
+fRails(0),
+fFluid(1){
// Standard constructor for the ITS version 11.
// Inputs:
// const char *title The title of for this geometry.
// none.
// Return
// A Standard constructed AliITSv11 class.
-
- //fITSV = 0;
- //fcS = 0;
-// fcD = 0;
}
//______________________________________________________________________
AliITSv11::~AliITSv11() {
// none.
// Return
// none.
- TVector3 t(0.0,0.0,0.0);
+ //TVector3 t(0.0,0.0,0.0);
//if(fITSV==0) fITSV = new AliITSGeometryITSV(this,"ALIC");
//if(fcS==0) fcS = new AliITSGeometrySSDCone(this,t,"TSV",1);
const Double_t kcm = 1.0;
TGeoManager *mgr = gGeoManager;
- TGeoVolume *ALIC = mgr->GetTopVolume();
+ TGeoVolume *vALIC = mgr->GetTopVolume();
- TGeoPcon *itsv = new TGeoPcon("ITS Top Volume, Daughter of ALIC",
+ TGeoPcon *sITS = new TGeoPcon("ITS Top Volume, Daughter of ALIC",
0.0,360.0,2);
// DefineSection(section number, Z, Rmin, Rmax).
- itsv->DefineSection(0,-300.0*kcm,0.01*kcm,50.0*kcm);
- itsv->DefineSection(1,+300.0*kcm,0.01*kcm,50.0*kcm);
- TGeoVolume *ITSV = new TGeoVolume("ITSV",itsv,0);
- //mgr->AddVolume(ITSV);
- ITSV->SetVisibility(kFALSE);
- ALIC->AddNode(ITSV,1,0);
+ sITS->DefineSection(0,-300.0*kcm,0.01*kcm,50.0*kcm);
+ sITS->DefineSection(1,+300.0*kcm,0.01*kcm,50.0*kcm);
+ TGeoVolume *vITS = new TGeoVolume("ITSV",sITS,0);
+ mgr->AddVolume(vITS);
+ vITS->SetVisibility(kFALSE);
+ vALIC->AddNode(vITS,1,0);
//
AliITSv11GeometrySupport *sup = new AliITSv11GeometrySupport(GetDebug());
- //sup->SPDCone(ITSV);
- //sup->SDDCone(ITSV);
- sup->SSDCone(ITSV);
- //sup->ServicesCableSupport(ITSV);
+ sup->SPDCone(vITS);
+ sup->SPDThermalSheald(vITS);
+ sup->SDDCone(vITS);
+ sup->SSDCone(vITS);
+ sup->ServicesCableSupport(vITS);
}
//______________________________________________________________________
void AliITSv11::CreateMaterials(){
// none.
//TGeoMaterial *C = new TGeoMaterial("ITSCarbon",12.0,6.0,2.265);
- TGeoMaterial *Al = new TGeoMaterial("ITSAluminum",26.981539,13.0,2.07);
- TGeoMixture *Cfiber = new TGeoMixture("ITSCarbonFiber",6,1.930);
- TGeoMixture *Rohacell = new TGeoMixture("ITSRohacell",6,1.930);
- TGeoMixture *Staselite = new TGeoMixture("ITSStaselite4411w",6,1.930);
- TGeoMixture *Air = new TGeoMixture("ITSAir",6,1.205*1.E-3);
- TGeoMixture *Stainless = new TGeoMixture("ITSStainless",6,1.930);
+ TGeoMaterial *matAl = new TGeoMaterial("ITSAluminum",26.981539,13.0,2.07);
+ TGeoMixture *matCfiber = new TGeoMixture("ITSCarbonFiber",6,1.930);
+ TGeoMixture *matRohacell = new TGeoMixture("ITSRohacell",6,1.930);
+ TGeoMixture *matStaselite = new TGeoMixture("ITSStaselite4411w",6,1.930);
+ TGeoMixture *matAir = new TGeoMixture("ITSAir",6,1.205*1.E-3);
+ TGeoMixture *matStainless = new TGeoMixture("ITSStainless",6,1.930);
//
- Double_t SPDcone[20];
- SPDcone[0] = 1.0; // imat
- SPDcone[1] = 0.0; // isvol
- SPDcone[2] = gAlice->Field()->Integ(); // ifield
- SPDcone[3] = gAlice->Field()->Max(); // fieldm
- SPDcone[4] = 1.0; // tmaxfd [degrees]
- SPDcone[5] = 1.0; // stemax [cm]
- SPDcone[6] = 0.5; // deemax [fraction]
- SPDcone[7] = 1.0E-3; // epsil [cm]
- SPDcone[8] = 0.0; // stmin [cm]
- new TGeoMedium("ITSspdCarbonFiber",1,Cfiber,SPDcone);
- SPDcone[0] += 1.0;
- new TGeoMedium("ITSspdStaselite4411w",2,Staselite,SPDcone);
- SPDcone[0] += 1.0;
- new TGeoMedium("ITSspdRohacell50A",3,Rohacell,SPDcone);
- SPDcone[0] += 1.0;
- new TGeoMedium("ITSspdStainlesSteal",4,Stainless,SPDcone);
- SPDcone[0] += 1.0;
- new TGeoMedium("ITSspdAir",5,Air,SPDcone);
- SPDcone[0] += 1.0;
- new TGeoMedium("ITSspdAl",6,Al,SPDcone);
+ Double_t medSPDcone[20];
+ medSPDcone[0] = 1.0; // imat
+ medSPDcone[1] = 0.0; // isvol
+ medSPDcone[2] = gAlice->Field()->Integ(); // ifield
+ medSPDcone[3] = gAlice->Field()->Max(); // fieldm
+ medSPDcone[4] = 1.0; // tmaxfd [degrees]
+ medSPDcone[5] = 1.0; // stemax [cm]
+ medSPDcone[6] = 0.5; // deemax [fraction]
+ medSPDcone[7] = 1.0E-3; // epsil [cm]
+ medSPDcone[8] = 0.0; // stmin [cm]
+ new TGeoMedium("ITSspdCarbonFiber",1,matCfiber,medSPDcone);
+ medSPDcone[0] += 1.0;
+ new TGeoMedium("ITSspdStaselite4411w",2,matStaselite,medSPDcone);
+ medSPDcone[0] += 1.0;
+ new TGeoMedium("ITSspdRohacell50A",3,matRohacell,medSPDcone);
+ medSPDcone[0] += 1.0;
+ new TGeoMedium("ITSspdStainlesSteal",4,matStainless,medSPDcone);
+ medSPDcone[0] += 1.0;
+ new TGeoMedium("ITSspdAir",5,matAir,medSPDcone);
+ medSPDcone[0] += 1.0;
+ new TGeoMedium("ITSspdAl",6,matAl,medSPDcone);
//
- Double_t SSDcone[20];
- SSDcone[0] = 1.0; // imat
- SSDcone[1] = 0.0; // isvol
- SSDcone[2] = gAlice->Field()->Integ(); // ifield
- SSDcone[3] = gAlice->Field()->Max(); // fieldm
- SSDcone[4] = 1.0; // tmaxfd [degrees]
- SSDcone[5] = 1.0; // stemax [cm]
- SSDcone[6] = 0.5; // deemax [fraction]
- SSDcone[7] = 1.0E-3; // epsil [cm]
- SSDcone[8] = 0.0; // stmin [cm]
- new TGeoMedium("ITSssdCarbonFiber",1,Cfiber,SSDcone);
- SSDcone[0] += 1.0;
- new TGeoMedium("ITSssdStaselite4411w",2,Staselite,SSDcone);
- SSDcone[0] += 1.0;
- new TGeoMedium("ITSssdRohacell50A",3,Rohacell,SSDcone);
- SSDcone[0] += 1.0;
- new TGeoMedium("ITSssdStainlesSteal",4,Stainless,SSDcone);
- SSDcone[0] += 1.0;
- new TGeoMedium("ITSssdAir",5,Air,SSDcone);
- SSDcone[0] += 1.0;
- new TGeoMedium("ITSssdAl",6,Al,SSDcone);
+ Double_t medSSDcone[20];
+ medSSDcone[0] = 1.0; // imat
+ medSSDcone[1] = 0.0; // isvol
+ medSSDcone[2] = gAlice->Field()->Integ(); // ifield
+ medSSDcone[3] = gAlice->Field()->Max(); // fieldm
+ medSSDcone[4] = 1.0; // tmaxfd [degrees]
+ medSSDcone[5] = 1.0; // stemax [cm]
+ medSSDcone[6] = 0.5; // deemax [fraction]
+ medSSDcone[7] = 1.0E-3; // epsil [cm]
+ medSSDcone[8] = 0.0; // stmin [cm]
+ new TGeoMedium("ITSssdCarbonFiber",1,matCfiber,medSSDcone);
+ medSSDcone[0] += 1.0;
+ new TGeoMedium("ITSssdStaselite4411w",2,matStaselite,medSSDcone);
+ medSSDcone[0] += 1.0;
+ new TGeoMedium("ITSssdRohacell50A",3,matRohacell,medSSDcone);
+ medSSDcone[0] += 1.0;
+ new TGeoMedium("ITSssdStainlesSteal",4,matStainless,medSSDcone);
+ medSSDcone[0] += 1.0;
+ new TGeoMedium("ITSssdAir",5,matAir,medSSDcone);
+ medSSDcone[0] += 1.0;
+ new TGeoMedium("ITSssdAl",6,matAl,medSSDcone);
}
//______________________________________________________________________
void AliITSv11::InitAliITSgeom(){
sDs = new TGeoTube("ITS SPD Therm Screen Flange fill Ds",
ktscRinD+ktscarbonFiberThA,ktscRoutD-ktscarbonFiberThA,
0.5*ktscLengthD);
- PrintTube(sD);
- PrintTube(sDs);
sDw = new TGeoTubeSeg("ITS SPD Therm Screen Flange Wing Dw",
ktscRoutD,ktscRwingD ,0.5*ktscLengthD,
ktscAngleD0-0.5*ktscAngleDD,
ktscRoutD,ktscRwingD-ktscarbonFiberThA,
0.5*ktscLengthD,ktscAngleD0-0.5*ktscAngleDDs,
ktscAngleD0+0.5*ktscAngleDDs);
- PrintTubeSeg(sDw);
- PrintTubeSeg(sDws);
k = 0;
for(i=-1;i<2;i++){
th = ((Double_t)(i+1))*ktscAngle*fgkDegree;
sCh1->SetVertex(7,x7[0],y7[0]); // 7th point most be done last ???
sCh2->SetVertex(7,x7[1],y7[1]); // 7th point most be done last ???
sCh3->SetVertex(7,x7[2],y7[2]); // 7th point most be done last ???
- PrintArb8(sA1);
- PrintArb8(sAh1);
- PrintArb8(sA2);
- PrintArb8(sAh2);
- PrintArb8(sA3);
- PrintArb8(sAh3);
- PrintArb8(sB1);
- PrintArb8(sBh1);
- PrintArb8(sB2);
- PrintArb8(sBh2);
- PrintArb8(sB3);
- PrintArb8(sBh3);
- PrintArb8(sC1);
- PrintArb8(sCh1);
- PrintArb8(sC2);
- PrintArb8(sCh2);
- PrintArb8(sC3);
- PrintArb8(sCh3);
//
// Define Minimal volume to inclose this SPD Thermal Sheald.
sM1 = new TGeoPcon("ITSspdShealdVV",0.0,360.0,9);
sM2 = new TGeoTubeSeg("ITSspdShealdWingVV",
sM1->GetRmax(8),sDw->GetRmax(),sDw->GetDz(),
sDw->GetPhi1(),sDw->GetPhi2());
- PrintTubeSeg(sM2);
//
x = 0.5*(sM1->GetZ(8) + sM1->GetZ(7));
tranITSspdShealdVVt0 = new TGeoTranslation("ITSspdShealdVVt0",0.0,0.0,x);
"ITSspdShealdWingVV:ITSspdShealdVVt2)+"
"ITSspdShealdWingVV:ITSspdShealdVVt3");
//
+ if(GetDebug()){
+ tranITSspdShealdVVt0->Print();
+ rotITSspdShealdVVt1->Print();
+ rotITSspdShealdVVt2->Print();
+ rotITSspdShealdVVt3->Print();
+ sD->InspectShape();
+ sDs->InspectShape();
+ sDw->InspectShape();
+ sDws->InspectShape();
+ sA1->InspectShape();
+ sAh1->InspectShape();
+ sA2->InspectShape();
+ sAh2->InspectShape();
+ sA3->InspectShape();
+ sAh3->InspectShape();
+ sB1->InspectShape();
+ sBh1->InspectShape();
+ sB2->InspectShape();
+ sBh2->InspectShape();
+ sB3->InspectShape();
+ sBh3->InspectShape();
+ sC1->InspectShape();
+ sCh1->InspectShape();
+ sC2->InspectShape();
+ sCh2->InspectShape();
+ sC3->InspectShape();
+ sCh3->InspectShape();
+ sM1->InspectShape();
+ sM2->InspectShape();
+ sM->InspectShape();
+ } // end if GetDebug
+ //
TGeoManager *mgr = gGeoManager;
medSPDcf = mgr->GetMedium("ITSspdCarbonFiber");
medSPDfs = mgr->GetMedium("ITSspdStaselite4411w");
vDs->PrintNodes();
vDw->PrintNodes();
vDws->PrintNodes();
- //vM->PrintNodes();
+ vM->PrintNodes();
} // end if
}
//______________________________________________________________________
ktsOuterR-ktscarbonFiberth,0.5*ktsLength);
sD = new TGeoTube("ITS SDD CC M6 bolt end",0.0,0.5*ktsBoltDiameter,
0.5*ktsBoltDepth);
- PrintTube(sA);
- PrintTube(sB);
- PrintTube(sC);
- PrintTube(sD);
+ if(GetDebug()){
+ sA->InspectShape();
+ sB->InspectShape();
+ sC->InspectShape();
+ sD->InspectShape();
+ } // end if GetDebug
//
TGeoManager *mgr = gGeoManager;
medSDDcf = mgr->GetMedium("ITSssdCarbonFiber");
vA->SetLineColor(4);
vA->SetLineWidth(1);
vA->SetFillColor(vA->GetLineColor());
- vA->SetFillStyle(4000); // 0% transparent
+ vA->SetFillStyle(4030); // 30% transparent
vB = new TGeoVolume("ITSsddCentCylF",sB,medSDDfo);
vB->SetVisibility(kTRUE);
vB->SetLineColor(3);
vB->SetLineWidth(1);
vB->SetFillColor(vB->GetLineColor());
- vB->SetFillStyle(4000); // 0% transparent
+ vB->SetFillStyle(4050); // 50% transparent
vC = new TGeoVolume("ITSsddCentCylSt",sC,medSDDfs);
vC->SetVisibility(kTRUE);
vC->SetLineColor(2);
vC->SetLineWidth(1);
vC->SetFillColor(vC->GetLineColor());
- vC->SetFillStyle(4000); // 0% transparent
+ vC->SetFillStyle(4050); // 50% transparent
vD = new TGeoVolume("ITSsddCentCylSS",sD,medSDDss);
vD->SetVisibility(kTRUE);
vD->SetLineColor(1);
vD->SetLineWidth(1);
vD->SetFillColor(vD->GetLineColor());
- vD->SetFillStyle(4000); // 0% transparent
+ vD->SetFillStyle(4050); // 50% transparent
//
moth->AddNode(vA,1,0);
vA->AddNode(vC,1,0);
sE->Rmax(5) = RmaxFromZpCone(sE,4,kconTc,z);
RadiusOfCurvature(kconRcurv,90.-kconTc,0.0,sE->Rmin(5),90.0,z,rmin);
sE->Rmin(6) = rmin;
- PrintPcon(sE);
// Inner Core, Inserto material
sF = new TGeoPcon("ITSsddSuportConeInsertoStesaliteF",0.,360.0,9);
sF->Z(0) = sE->GetZ(0);
sF->Rmax(6) = RmaxFromZpCone(sF,4,kconTc,sF->GetZ(6));
sF->Rmax(7) = sF->GetRmax(6);
sF->Z(8) = ZFromRmaxpCone(sF,4,kconTc,sF->GetRmax(8),-kconCthick);
- PrintPcon(sF);
// Inner Core, Inserto material
sG = new TGeoPcon("ITSsddSuportConeFoamCoreG",0.0,360.0,4);
RadiusOfCurvature(kconRcurv+kconCthick,0.0,sF->GetZ(1),sF->GetRmin(1),
sG->Z(3) = sF->GetZ(5)+(kconThickness-2.0*kconCthick)*kCoskconTc;
sG->Rmax(3) = RmaxFromZpCone(sF,4,kconTc,sG->GetZ(3));
sG->Rmin(3) = sG->GetRmax(3);
- PrintPcon(sG);
//
sH = new TGeoPcon("ITSsddSuportConeHoleH",kconPhiHole1,kcondPhiHole1,4);
sH->Rmin(0) = kconRholeMax1;
sH->Rmin(3) = sH->GetRmin(2);
sH->Rmax(3) = sH->GetRmin(3);
sH->Z(3) = ZFromRminpCone(sE,3,kconTc,sH->GetRmin(3));
- PrintPcon(sH);
//
x = kconCthick/(0.5*(kconRholeMax1+kconRholeMin1));
t0 = kconPhiHole1 - x*fgkRadian;
sI->Rmin(3) = sI->GetRmin(2);
sI->Rmax(3) = sI->GetRmin(3);
sI->Z(3) = ZFromRmaxpCone(sF,4,kconTc,sI->GetRmax(3));
- PrintPcon(sI);
//
sJ = new TGeoPcon("ITSsddSuportConeHoleJ",kconPhiHole2,
kcondPhiHole2,4);
sJ->Rmin(3) = sJ->GetRmin(2);
sJ->Rmax(3) = sJ->GetRmin(3);
sJ->Z(3) = ZFromRmaxpCone(sE,4,kconTc,sJ->GetRmax(3));
- PrintPcon(sJ);
//
x = kconCthick/(0.5*(kconRholeMax2+kconRholeMin2));
t0 = kconPhiHole2 - x*fgkRadian;
sK->Rmin(3) = sK->GetRmin(2);
sK->Rmax(3) = sK->GetRmin(3);
sK->Z(3) = ZFromRmaxpCone(sF,4,kconTc,sK->GetRmax(3));
- PrintPcon(sK);
//
rot = new TGeoRotation("ITSsddRotZ30",0.0,0.0,30.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ60",0.0,0.0,60.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ90",0.0,0.0,90.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ120",0.0,0.0,120.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ150",0.0,0.0,150.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ180",0.0,0.0,180.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ210",0.0,0.0,210.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ240",0.0,0.0,240.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ270",0.0,0.0,270.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ300",0.0,0.0,300.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ330",0.0,0.0,330.0);
rot->RegisterYourself();
+ if(GetDebug()) rot->Print();
sL = new TGeoCompositeShape("ITS SDD Suport Cone","((((((((((((((((("
"ITSsddSuportConeCarbonFiberSurfaceE -"
"ITSsddSuportConeHoleH) -"
"ITSsddSuportConeHoleK:ITSsddRotZ240) -"
"ITSsddSuportConeHoleK:ITSsddRotZ300");
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ if(GetDebug()){
+ sE->InspectShape();
+ sF->InspectShape();
+ sG->InspectShape();
+ sH->InspectShape();
+ sI->InspectShape();
+ sJ->InspectShape();
+ sK->InspectShape();
+ sL->InspectShape();
+ sM->InspectShape();
+ sN->InspectShape();
+ } // end if GetDebug()
+ //
TGeoVolume *vL,*vM,*vN;
vL = new TGeoVolume("ITSsddConeL",sL,medSDDcf);
vL->SetVisibility(kTRUE);
moth->AddNode(vL,1,tran);
rot = new TGeoRotation("",0.0,180.0*fgkDegree,0.0);
rotran = new TGeoCombiTrans("",0.0,0.0,kconZ0,rot);
- delete rot;// rot not explicity used in AddNode functions.
moth->AddNode(vL,2,rotran);
if(GetDebug()){
+ tran->Print();
+ rot->Print();
+ rotran->Print();
vL->PrintNodes();
vM->PrintNodes();
vN->PrintNodes();
} // end if
+ delete rot;// rot not explicity used in AddNode functions.
}
//______________________________________________________________________
void AliITSv11GeometrySupport::SSDCone(TGeoVolume *moth){
const Int_t kcylNPin = 2;
//
TGeoPcon *sCA,*sCB;
- TGeoTube *sCC,*cD,*cE;
+ TGeoTube *sCC,*sCD,*sCE;
//
//Begin_Html
/*
</P>
*/
//End_Html
+ //
+ sCC = new TGeoTube("ITS SSD Thermal Centeral Rohacell CylinderCC",
+ kcylROuter-kcylCthick-kcylFoamThick,
+ kcylROuter-kcylCthick,0.5*kcylZFoamlength);
sCA = new TGeoPcon("ITS SSD Thermal Centeral Carbon Fiber CylinderCA",
0.0,360.0,6);
sCB = new TGeoPcon("ITS SSD Thermal Centeral Stesalite CylinderCB",
0.0,360.0,6);
- sCC = new TGeoTube("ITS SSD Thermal Centeral Rohacell CylinderCC",
- kcylROuter-kcylCthick-kcylFoamThick,
- kcylROuter-kcylCthick,0.5*kcylZFoamlength);
sCA->Z(0) = -0.5*kcylZlength;
sCA->Rmin(0) = kcylRInner;
sCA->Rmax(0) = kcylROuter;
sCB->Rmin(5) = sCA->GetRmin(5) + kcylCthick;
sCB->Rmax(5) = sCA->GetRmax(5) - kcylCthick;
//
- PrintPcon(sCA);
- PrintPcon(sCB);
- PrintTube(sCC);
- //
- cD = new TGeoTube("ITS SSD Thermal Centeral Cylinder M6 screwCD",
+ sCD = new TGeoTube("ITS SSD Thermal Centeral Cylinder M6 screwCD",
0.0,kcylRM6,0.5*kcylZM6);
- cE = new TGeoTube("ITS SSD Thermal Centeral Cylinder PinCE",
+ sCE = new TGeoTube("ITS SSD Thermal Centeral Cylinder PinCE",
0.0,kcylRPin,0.5*kcylZPin);
//
+ if(GetDebug()){
+ sCA->InspectShape();
+ sCB->InspectShape();
+ sCC->InspectShape();
+ sCD->InspectShape();
+ sCE->InspectShape();
+ } // end if GetDegut()
TGeoVolume *vCA,*vCB,*vCC,*vCD,*vCE;
vCA = new TGeoVolume("ITSssdCentCylCA",sCA,medSSDcf);
vCA->SetVisibility(kTRUE);
vCC->SetLineWidth(1);
vCC->SetFillColor(vCC->GetLineColor());
vCC->SetFillStyle(4050); // 50% transparent
- vCD = new TGeoVolume("ITSssdCentCylCD",cD,medSSDss);
+ vCD = new TGeoVolume("ITSssdCentCylCD",sCD,medSSDss);
vCD->SetVisibility(kTRUE);
vCD->SetLineColor(1); // black
vCD->SetLineWidth(1);
vCD->SetFillColor(vCD->GetLineColor());
vCD->SetFillStyle(4000); // 0% transparent
- vCE = new TGeoVolume("ITSssdCentCylCE",cE,medSSDss);
+ vCE = new TGeoVolume("ITSssdCentCylCE",sCE,medSSDss);
vCE->SetVisibility(kTRUE);
vCE->SetLineColor(1); // black
vCE->SetLineWidth(1);
vCA->PrintNodes();
vCB->PrintNodes();
vCC->PrintNodes();
+ vCD->PrintNodes();
+ vCE->PrintNodes();
} // end if
//
// SSD Cone
t = TanD(270.+kconT);
sA0->Rmax(12)= RmaxFrom2Points(sA0,11,14,sA0->GetZ(12));
sA0->Rmax(13)= sA0->GetRmax(12);
- PrintPcon(sA0);
//
// Poly-cone Volume B. Stesalite inside volume sA0.
// Now lets define the Inserto Stesalite 4411w material volume.
sB0->Rmax(10)= sB0->GetRmax(9);
sB0->Rmax(12)= RmaxFrom2Points(sB0,11,14,sB0->GetZ(12));
sB0->Rmax(13)= RmaxFrom2Points(sB0,11,14,sB0->GetZ(13));
- PrintPcon(sB0);
//
// Poly-cone Volume sC0. Foam inside volume sA0.
// Now lets define the Rohacell foam material volume.
sC0->Rmin(2) = sC0->GetRmin(3);
sC0->Z(2) = ZFromRminpCone(sB0,3,90.-kconT,sC0->GetRmin(2),0.0);
sC0->Rmax(2) = RmaxFromZpCone(sB0,11,90.0-kconT,sC0->GetZ(2),0.0);
- PrintPcon(sC0);
//
- // Poly-cone Volume sF. Second Foam inside volume sA0.
+ // Poly-cone Volume sF0. Second Foam inside volume sA0.
// Now lets define the Rohacell foam material volume.
sF0 = new TGeoPcon("ITSssdSuportConeRohacellCF0",0.0,360.0,4);
sF0->Z(2) = sB0->GetZ(8);
sF0->Rmax(3) = sF0->GetRmin(2)+(kconThick-2.0*kconCthick)*kCoskconTc;
sF0->Rmin(3) = sF0->GetRmax(3);
sF0->Z(3) = ZFromRmaxpCone(sB0,11,90.-kconT,sF0->GetRmax(3),0.0);
- PrintPcon(sF0);
// Holes for Cables to pass Through is created by the intersection
// between a cone segment and an Arb8, One for the volume sA0 and a
// larger one for the volumes sB0 and sC0, so that the surface is covered
(sBh2->GetVertices())[1+2*i]);
} // end for i
sAh3 = new TGeoBBox("ITSssdCoolingHoleAh3",0.5*kconCoolHoleWidth,
- 0.5*kconCoolHoleHight,0.5*kconZLength);
+ 0.5*kconCoolHoleHight,kconZLength);
sBh3 = new TGeoBBox("ITSssdCoolingHoleBh3",
0.5*kconCoolHoleWidth+kconCthick,
- 0.5*kconCoolHoleHight+kconCthick,0.5*kconZLength);
+ 0.5*kconCoolHoleHight+kconCthick,kconZLength);
sAh4 = new TGeoBBox("ITSssdMountingPostHoleAh4",0.5*kconMountHoleWidth,
0.5*kconMountHoleHight,0.5*kconZLength);
+ z = sF0->GetZ(0)-sF0->GetZ(sF0->GetNz()-1);
+ if(z<0.0) z = -z;
sBh4 = new TGeoBBox("ITSssdMountingPostHoleBh4",
0.5*kconMountHoleWidth+kconCthick,
- 0.5*kconMountHoleHight+kconCthick,0.5*kconZLength);
- PrintConeSeg(sAh1);
- PrintConeSeg(sBh1);
- PrintArb8(sAh2);
- PrintArb8(sBh2);
- PrintBBox(sAh3);
- PrintBBox(sBh3);
- PrintBBox(sAh4);
- PrintBBox(sBh4);
+ 0.5*kconMountHoleHight+kconCthick,0.5*z);
// SSD Cone Wings
sG = new TGeoConeSeg("ITSssdWingCarbonFiberSurfaceG",
0.5*kconWingThick,kconROuterMax-kconCthick,
(kconWingRmax-kconCthick))*fgkRadian,
kconWingPhi0+((0.5*kconWingWidth-kconCthick)/
(kconWingRmax-kconCthick))*fgkRadian);
- PrintConeSeg(sG);
- PrintConeSeg(sH);
// SDD support plate, SSD side.
//Poly-cone Volume sT.
sT = new TGeoTubeSeg("ITSssdsddMountingBracketT",ksupPRmin,ksupPRmax,
ksupPZ,ksupPPhi1,ksupPPhi2);
- PrintTubeSeg(sT);
//
TGeoRotation *rotZ225 =new TGeoRotation("ITSssdConeZ225", 0.0,0.0, 22.5);
rotZ225->RegisterYourself();
TGeoRotation *rotZ300 = new TGeoRotation("ITSssdConeZ300",0.0,0.0,300.0);
TGeoRotation *rotZ330 = new TGeoRotation("ITSssdConeZ330",0.0,0.0,330.0);
vl[0] = kconMountHoleRmin+0.5*kconMountHoleHight; vl[1] = 0.0; vl[2] = 0.0;
+ for(i=0;i<sF0->GetNz();i++) vl[2] += sF0->GetZ(i);
+ vl[2] /= (Double_t)(sF0->GetNz());
rotZ30->LocalToMaster(vl,vg);
- TGeoCombiTrans *rotranA30 = new TGeoCombiTrans("ITSssdConeTZ30",vl[0],
- vl[1],vl[2],rotZ30);
+ TGeoCombiTrans *rotranA30 = new TGeoCombiTrans("ITSssdConeTZ30",vg[0],
+ vg[1],vg[2],rotZ30);
rotranA30->RegisterYourself();
rotZ90->LocalToMaster(vl,vg);
TGeoCombiTrans *rotranA90 = new TGeoCombiTrans("ITSssdConeTZ90", vg[0],
TGeoCombiTrans *rotranBrTZ300 = new TGeoCombiTrans("ITSssdConeBrTZ300",
vg[0],vg[1],vg[2],rotZ300);
rotranBrTZ300->RegisterYourself();
+ if(GetDebug()){
+ rotZ225->Print();
+ rotZ675->Print();
+ rotZ90->Print();
+ rotZ1125->Print();
+ rotZ1575->Print();
+ rotZ180->Print();
+ rotZ2025->Print();
+ rotZ2475->Print();
+ rotZ270->Print();
+ rotZ2925->Print();
+ rotZ3375->Print();
+ rotranA225->Print();
+ rotranA675->Print();
+ rotranA1125->Print();
+ rotranA1575->Print();
+ rotranA2025->Print();
+ rotranA2475->Print();
+ rotranA2925->Print();
+ rotranA3375->Print();
+ rotZ60->Print();
+ rotZ300->Print();
+ rotranA30->Print();
+ rotranA90->Print();
+ rotranA150->Print();
+ rotranA210->Print();
+ rotranA270->Print();
+ rotranA330->Print();
+ rotranBrTZ60->Print();
+ rotranBrTZ180->Print();
+ rotranBrTZ300->Print();
+ } // end if GetDebug()
sA = new TGeoCompositeShape("ITSssdSuportConeCarbonFiberSurfaceA",
"(((((((((((((((((((((((((((("
"ITSssdSuportConeCarbonFiberSurfaceA0 +"
"ITSssdWingCarbonFiberSurfaceG:ITSssdConeZ90) +"
"ITSssdWingCarbonFiberSurfaceG:ITSssdConeZ180) +"
"ITSssdWingCarbonFiberSurfaceG:ITSssdConeZ270) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ225) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ675) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ1125) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ1575) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ2025) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ2475) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ2925) -"
- "(ITSssdCableHoleAh1*ITSssdCableHoleAh2):ITSssdConeZ3375) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ225*ITSssdCableHoleAh2:ITSssdConeZ225)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ675*ITSssdCableHoleAh2:ITSssdConeZ675)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ1125*ITSssdCableHoleAh2:ITSssdConeZ1125)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ1575*ITSssdCableHoleAh2:ITSssdConeZ1575)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ2025*ITSssdCableHoleAh2:ITSssdConeZ2025)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ2475*ITSssdCableHoleAh2:ITSssdConeZ2475)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ2925*ITSssdCableHoleAh2:ITSssdConeZ2925)) -"
+ "(ITSssdCableHoleAh1:ITSssdConeZ3375*ITSssdCableHoleAh2:ITSssdConeZ3375)) -"
"ITSssdCoolingHoleAh3:ITSssdConeTZ225) -"
"ITSssdCoolingHoleAh3:ITSssdConeTZ675) -"
"ITSssdCoolingHoleAh3:ITSssdConeTZ1125) -"
"ITSssdWingStaseliteH:ITSssdConeZ90) +"
"ITSssdWingStaseliteH:ITSssdConeZ180) +"
"ITSssdWingStaseliteH:ITSssdConeZ270) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ225) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ675) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ1125) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ1575) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ2025) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ2475) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ2925) -"
- "(ITSssdCableHoleBh1*ITSssdCableHoleBh2):ITSssdConeZ3375) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ225*ITSssdCableHoleBh2:ITSssdConeZ225)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ675*ITSssdCableHoleBh2:ITSssdConeZ675)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ1125*ITSssdCableHoleBh2:ITSssdConeZ1125)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ1575*ITSssdCableHoleBh2:ITSssdConeZ1575)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ2025*ITSssdCableHoleBh2:ITSssdConeZ2025)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ2475*ITSssdCableHoleBh2:ITSssdConeZ2475)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ2925*ITSssdCableHoleBh2:ITSssdConeZ2925)) -"
+ "(ITSssdCableHoleBh1:ITSssdConeZ3375*ITSssdCableHoleBh2:ITSssdConeZ3375)) -"
"ITSssdCoolingHoleBh3:ITSssdConeTZ225) -"
"ITSssdCoolingHoleBh3:ITSssdConeTZ675) -"
"ITSssdCoolingHoleBh3:ITSssdConeTZ1125) -"
"ITSssdsddMountingBracketT:ITSssdConeBrTZ300"
);
sC = new TGeoCompositeShape("ITSssdSuportConeRohacellC",
- "("
- "ITSssdSuportConeRohacellC0 -((((((("
- "ITSssdCableHoleBh1:ITSssdConeZ225*ITSssdCableHoleBh2:ITSssdConeZ225)-"
- "ITSssdCableHoleBh1:ITSssdConeZ675*ITSssdCableHoleBh2:ITSssdConeZ675)-"
- "ITSssdCableHoleBh1:ITSssdConeZ1125*ITSssdCableHoleBh2:ITSssdConeZ1125)-"
- "ITSssdCableHoleBh1:ITSssdConeZ1575*ITSssdCableHoleBh2:ITSssdConeZ1575)-"
- "ITSssdCableHoleBh1:ITSssdConeZ2025*ITSssdCableHoleBh2:ITSssdConeZ2025)-"
- "ITSssdCableHoleBh1:ITSssdConeZ2475*ITSssdCableHoleBh2:ITSssdConeZ2475)-"
- "ITSssdCableHoleBh1:ITSssdConeZ2925*ITSssdCableHoleBh2:ITSssdConeZ2925))"
+ "((((((("
+ "ITSssdSuportConeRohacellC0 -"
+ "ITSssdCableHoleBh1:ITSssdConeZ225*ITSssdCableHoleBh2:ITSssdConeZ225) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ675*ITSssdCableHoleBh2:ITSssdConeZ675) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ1125*ITSssdCableHoleBh2:ITSssdConeZ1125) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ1575*ITSssdCableHoleBh2:ITSssdConeZ1575) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ2025*ITSssdCableHoleBh2:ITSssdConeZ2025) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ2475*ITSssdCableHoleBh2:ITSssdConeZ2475) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ2925*ITSssdCableHoleBh2:ITSssdConeZ2925) -"
+ "ITSssdCableHoleBh1:ITSssdConeZ3375*ITSssdCableHoleBh2:ITSssdConeZ3375 "
);
sF = new TGeoCompositeShape("ITSssdSuportConeRohacellCF",
"((((("
- "ITSssdSuportConeRohacellCF0 -("
+ "ITSssdSuportConeRohacellCF0 -"
"ITSssdMountingPostHoleBh4:ITSssdConeTZ30) -"
"ITSssdMountingPostHoleBh4:ITSssdConeTZ90) -"
"ITSssdMountingPostHoleBh4:ITSssdConeTZ150) -"
"ITSssdMountingPostHoleBh4:ITSssdConeTZ210) -"
"ITSssdMountingPostHoleBh4:ITSssdConeTZ270) -"
- "ITSssdMountingPostHoleBh4:ITSssdConeTZ330)"
+ "ITSssdMountingPostHoleBh4:ITSssdConeTZ330"
);
//
// In volume SCB, th Inserto Stesalite 4411w material volume, there
sD = new TGeoTube("ITS Screw+stud used to mount things to the SSD "
"support cone",
0.0,kconRScrewM5by12,kconLScrewM5by12);
- PrintTube(sD);
sE = new TGeoTube("ITS pin used to mount things to the "
"SSD support cone",0.0,kconRPinO6,kconLPinO6);
- PrintTube(sE);
// Bolt heads holding the SSD-SDD tube to the SSD cone.
// Bolt -- PolyCone
//Poly-cone Volume sQ.
sQ->Z(0) = sA0->GetZ(12);
sQ->Rmin(0) = 0.0;
sQ->Rmax(0) = kcylRM6;
- sQ->Z(1) = sQ->GetZ(0) + kconZM6Head;
+ sQ->Z(1) = sQ->GetZ(0) - kconZM6Head;
sQ->Rmin(1) = 0.0;
sQ->Rmax(1) = kcylRM6;
sQ->Z(2) = sQ->GetZ(1);
sQ->Z(3) = sQ->GetZ(0)-ksupPZ;
sQ->Rmin(3) = 0.0;
sQ->Rmax(3) = 0.5*kconRM6Head;
- PrintPcon(sQ);
// air infront of bolt (stasolit Volume K) -- Tube
sR = new TGeoTube("ITS Air in front of bolt (in stasolit)R",
sQ->GetRmin(3),sQ->GetRmax(3),0.5*(ksupPZ-kconCthick));
// air infront of bolt (carbon fiber volume I) -- Tube
sS = new TGeoTube("ITS Air in front of Stainless Steal Screw end, M6S",
sQ->GetRmin(3),sQ->GetRmax(3),0.5*kconCthick);
- PrintTube(sS);
//
+ if(GetDebug()){
+ sA0->InspectShape();
+ sB0->InspectShape();
+ sC0->InspectShape();
+ sF0->InspectShape();
+ sQ->InspectShape();
+ sAh1->InspectShape();
+ sBh1->InspectShape();
+ sAh2->InspectShape();
+ sBh2->InspectShape();
+ sAh3->InspectShape();
+ sBh3->InspectShape();
+ sAh4->InspectShape();
+ sBh4->InspectShape();
+ sG->InspectShape();
+ sH->InspectShape();
+ sT->InspectShape();
+ sD->InspectShape();
+ sE->InspectShape();
+ sR->InspectShape();
+ sS->InspectShape();
+ sA->InspectShape();
+ sB->InspectShape();
+ sC->InspectShape();
+ sF->InspectShape();
+ } // end if GetDebug()
TGeoVolume *vA,*vB,*vC,*vD,*vE,*vF,*vQ,*vR,*vS,*vT;
//
vA = new TGeoVolume("ITSssdConeA",sA,medSSDcf); // Carbon Fiber
vA->SetLineColor(4); // blue
vA->SetLineWidth(1);
vA->SetFillColor(vA->GetLineColor());
- vA->SetFillStyle(4000); // 0% transparent
+ vA->SetFillStyle(4050); // 50% transparent
vB = new TGeoVolume("ITSssdConeB",sB,medSSDfs); // Staselite
vB->SetVisibility(kTRUE);
vB->SetLineColor(2); // red
vB->SetLineWidth(1);
vB->SetFillColor(vB->GetLineColor());
- vB->SetFillStyle(4010); // 10% transparent
+ vB->SetFillStyle(4050); // 50% transparent
vC = new TGeoVolume("ITSssdConeC",sC,medSSDfo); // Rohacell
vC->SetVisibility(kTRUE);
vC->SetLineColor(3); // green
vQ->SetLineColor(1); // black
vQ->SetLineWidth(1);
vQ->SetFillColor(vQ->GetLineColor());
- vQ->SetFillStyle(4000); // 00% transparent
+ vQ->SetFillStyle(4000); // 0% transparent
vR = new TGeoVolume("ITSssdConeR",sR,medSSDair);
vR->SetVisibility(kTRUE);
vR->SetLineColor(5); // yellow
0.5*kfrm24Width,kfrm24Phi0,kfrm24Phi1);
sB24 = new TGeoBBox("ITS sup Cable tray support frame Z section B24",
0.5*kfrm24Thss,0.5*kfrm24Hight,0.5*kfrm24ZssSection);
- PrintTubeSeg(sA24);
- PrintTubeSeg(sM24);
- PrintBBox(sB24);
+ if(GetDebug()){
+ sM24->InspectShape();
+ sA24->InspectShape();
+ sB24->InspectShape();
+ } // end if GetDebug()
TGeoVolume *vA24,*vB24,*vM24;
TGeoTranslation *tran;
TGeoRotation *rot;
sD24->GetVertices()[0*2+1]+kcb24ThSwall);
for(i=4;i<8;i++) sH24->SetVertex(i,sH24->GetVertices()[(i-4)*2+0],
sH24->GetVertices()[(i-4)*2+1]); //
- PrintArb8(sC24);
- PrintArb8(sD24);
- PrintTube(sE24);
- PrintArb8(sF24);
- PrintTube(sG24);
- PrintArb8(sH24);
+ if(GetDebug()){
+ sC24->InspectShape();
+ sD24->InspectShape();
+ sF24->InspectShape();
+ sH24->InspectShape();
+ sE24->InspectShape();
+ sG24->InspectShape();
+ } // end if GetDebug()
TGeoVolume *vC24,*vD24,*vE24,*vF24,*vGa24,*vGw24,*vH24;
//
vC24 = new TGeoVolume("ITSsupCableTrayC24",sC24,medSUPal);
vD24->AddNode(vF24,2,tran);
vC24->AddNode(vD24,1,0);
vC24->AddNode(vH24,1,0);
+ if(GetDebug()){
+ vC24->PrintNodes();
+ vD24->PrintNodes();
+ vE24->PrintNodes();
+ vF24->PrintNodes();
+ vGa24->PrintNodes();
+ vGw24->PrintNodes();
+ vH24->PrintNodes();
+ } // end if GetDebug()
//==================================================================
//
// RB 26 side
sB26->SetVertex(5,sA26[1]->GetRmax1()-r,-0.5*kfrm26Width);
sB26->SetVertex(6,sA26[1]->GetRmin1()-r,-0.5*kfrm26Width);
sB26->SetVertex(7,sA26[1]->GetRmin1()-r,+0.5*kfrm26Width);
- for(i=0;i<kfrm26NZsections+1;i++) PrintConeSeg(sA26[i]);
- PrintConeSeg(sM26);
- PrintArb8(sB26);
+ if(GetDebug()){
+ for(i=0;i<kfrm26NZsections+1;i++) sA26[i]->InspectShape();
+ sM26->InspectShape();
+ sB26->InspectShape();
+ } // end if GetDebug()
+ //
TGeoVolume *vA26[kfrm26NZsections+1],*vB26,*vM26;
//
for(i=0;i<kfrm26NZsections+1;i++){
TControlBar *bar=new TControlBar("vertical","ITS Geometry Display",10,10);
bar->AddButton("Set ITS Debug level 1","ISetits(0,1)","Debug on");
bar->AddButton("Set ITS Debug level 0","ISetits(0,0)","Debug off");
- bar->AddButton("Set ITS Theta,Phi cut on","ISetits(2,1)","Cut on");
- bar->AddButton("Set ITS Theta,Phi cut off","ISetits(2,0)","Cut off");
+ 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 Thermal Sheald","EngineeringSPDThS()",
"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 EngineeringSDDCylinder");
bar->AddButton("Display SUP RB26 side","EngineeringSupRB26()",
}
//----------------------------------------------------------------------
Int_t ISetits(Int_t t,Int_t v){
- static Int_t itsdebug=0,nsegments=80,cut=0,axis=1,perspective=0;
+ static Int_t itsdebug=1,nsegments=80,cut=0,axis=1,perspective=0,ray=0;
switch (t) {
case 0:
if(v<0) return perspective;
perspective = v;
break;
+ case 5:
+ if(v<0) return ray;
+ ray = v;
+ break;
}// end switch
return 0;
}
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);
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);
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);
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);
view4->Side();
if(ISetits(3,-1)!=0) view4->ShowAxis();
} // end if view4
+ if(ISetits(5,-1)==1) ALIC->Raytrace();
//
}
//----------------------------------------------------------------------
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.));
//
view1->Front();
if(ISetits(3,-1)!=0) view1->ShowAxis();
} // end if view1
+ if(ISetits(5,-1)==1) SPDThS->Raytrace();
//
c4->cd(2);
SPDThS->Draw();
view2->Top();
if(ISetits(3,-1)!=0) view2->ShowAxis();
} // end if view2
+ if(ISetits(5,-1)==1) SPDThS->Raytrace();
//
}
//----------------------------------------------------------------------
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.));
//
view1->Front();
if(ISetits(3,-1)!=0) view1->ShowAxis();
} // end if view1
+ if(ISetits(5,-1)==1) SDD->Raytrace();
//
c2->cd(2);
SDD->Draw();
view2->Top();
if(ISetits(3,-1)!=0) view2->ShowAxis();
} // end if view1
+ if(ISetits(5,-1)==1) SDD->Raytrace();
//
}
//----------------------------------------------------------------------
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.));
//
view1->Front();
if(ISetits(3,-1)!=0) view1->ShowAxis();
} // end if view1
- arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
+ if(ISetits(5,-1)==1) SDD->Raytrace();
+ //arrow->DrawArrow(1.01*Rmax,-Dz,1.01*Rmax,+Dz);
//
c3->cd(2);
SDD->Draw();
view2->Top();
if(ISetits(3,-1)!=0) view2->ShowAxis();
} // end if view2
- 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);
+ 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 = ((TGeoTube*)(SSD->GetShape()))->GetRmin();
+ Double_t Rmax = ((TGeoTube*)(SSD->GetShape()))->GetRmax();
+ Double_t Dz = ((TGeoTube*)(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 SDD Cylinder Geometry
+ // Display RB 24 side cable tray support structure Geometry
// Inputs:
// none.
// Outputs:
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.));
//
view1->Front();
if(ISetits(3,-1)!=0) view1->ShowAxis();
} // end if view1
+ if(ISetits(5,-1)==1) SUPRB24->Raytrace();
//
c4->cd(2);
SUPRB24->Draw();
view2->Top();
if(ISetits(3,-1)!=0) view2->ShowAxis();
} // end if view2
+ if(ISetits(5,-1)==1) SUPRB24->Raytrace();
//
}
//----------------------------------------------------------------------
void EngineeringSupRB26(){
- // Display SDD Cylinder Geometry
+ // Display RB 26 side cable tray support structure
// Inputs:
// none.
// Outputs:
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.));
//
view1->Front();
if(ISetits(3,-1)!=0) view1->ShowAxis();
} // end if view1
+ if(ISetits(5,-1)==1) SUPRB26->Raytrace();
//
c5->cd(2);
SUPRB26->Draw();
view2->Top();
if(ISetits(3,-1)!=0) view2->ShowAxis();
} // end if view2
+ if(ISetits(5,-1)==1) SUPRB26->Raytrace();
//
}