#include <TGeoCone.h>
#include <TGeoTube.h> // contaings TGeoTubeSeg
#include <TGeoArb8.h>
+#include <TGeoXtru.h>
#include <TGeoCompositeShape.h>
#include <TGeoMatrix.h>
#include "AliITSv11GeometrySupport.h"
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;
yco[6] = 0.0;
xci[6] = xci[5];
yci[6] = 0.0;
- if(GetDebug()){
+ if(AliDebugLevel()){
Info("SPDThermalSheald","i \t xo yo \t xi yi \t xbo "
"ybo \t xbi ybi \t xco yco \t xci yxi");
for(i=0;i<7;i++){
xbo[i],ybo[i],xbi[i],ybi[i],
xco[i],yco[i],xci[i],yci[i]);
} // end for i
- } // end if GetDebug()
+ } // end if AliDebugLevel()
//+++++++++++++++++++++++++
sA1->SetVertex(0,xo[0],yo[0]);
sA1->SetVertex(1,xo[1],yo[1]);
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(AliDebugLevel()){
+ 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 AliDebugLevel
+ //
TGeoManager *mgr = gGeoManager;
medSPDcf = mgr->GetMedium("ITSspdCarbonFiber");
medSPDfs = mgr->GetMedium("ITSspdStaselite4411w");
TGeoVolume *vB1,*vB2,*vB3,*vBh1,*vBh2,*vBh3;
TGeoVolume *vC1,*vC2,*vC3,*vCh1,*vCh2,*vCh3;
TGeoVolume *vD,*vDs,*vDw,*vDws,*vM;
- vM = new TGeoVolume("ITSspdThermalSheald",sM,medSPDair);
+ vM = new TGeoVolume("ITSspdThermalShealdMother",sM,medSPDair);
vM->SetVisibility(kTRUE);
vM->SetLineColor(7); // light Blue
vM->SetLineWidth(1);
vM->AddNode(vB3,7,new TGeoCombiTrans(*tranb,*rot));
vM->AddNode(vB3,8,new TGeoCombiTrans(*tranbm,*rot));
vM->AddNode(vC3,4,new TGeoCombiTrans(*tranc,*rot));
- if(GetDebug()){
+ if(AliDebugLevel()){
vA1->PrintNodes();
vAh1->PrintNodes();
vA2->PrintNodes();
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(AliDebugLevel()){
+ sA->InspectShape();
+ sB->InspectShape();
+ sC->InspectShape();
+ sD->InspectShape();
+ } // end if AliDebugLevel
//
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);
tran = new TGeoTranslation("",x,y,-z);
vC->AddNode(vD,i+n+1,tran);
} // end for i
- if(GetDebug()){
+ if(AliDebugLevel()){
vA->PrintNodes();
vB->PrintNodes();
vC->PrintNodes();
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(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ60",0.0,0.0,60.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ90",0.0,0.0,90.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ120",0.0,0.0,120.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ150",0.0,0.0,150.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ180",0.0,0.0,180.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ210",0.0,0.0,210.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ240",0.0,0.0,240.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ270",0.0,0.0,270.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ300",0.0,0.0,300.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
rot = new TGeoRotation("ITSsddRotZ330",0.0,0.0,330.0);
rot->RegisterYourself();
+ if(AliDebugLevel()) rot->Print();
sL = new TGeoCompositeShape("ITS SDD Suport Cone","((((((((((((((((("
"ITSsddSuportConeCarbonFiberSurfaceE -"
"ITSsddSuportConeHoleH) -"
"ITSsddSuportConeHoleK:ITSsddRotZ240) -"
"ITSsddSuportConeHoleK:ITSsddRotZ300");
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ if(AliDebugLevel()){
+ sE->InspectShape();
+ sF->InspectShape();
+ sG->InspectShape();
+ sH->InspectShape();
+ sI->InspectShape();
+ sJ->InspectShape();
+ sK->InspectShape();
+ sL->InspectShape();
+ sM->InspectShape();
+ sN->InspectShape();
+ } // end if AliDebugLevel()
+ //
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()){
+ if(AliDebugLevel()){
+ 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(AliDebugLevel()){
+ 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);
vCB->AddNode(vCC,1,0);
vCA->AddNode(vCB,1,0);
moth->AddNode(vCA,1,0);
- if(GetDebug()){
+ if(AliDebugLevel()){
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(AliDebugLevel()){
+ 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 AliDebugLevel()
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(AliDebugLevel()){
+ 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 AliDebugLevel()
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
vB->AddNode(vE,++nCopyvE,tran);
} // end for j
} // end for i
- if(GetDebug()){
+ if(AliDebugLevel()){
vA->PrintNodes();
vB->PrintNodes();
vC->PrintNodes();
medSUPwater = mgr->GetMedium("ITSssdWater");
//
Int_t i,j;
- Double_t x,y,z,t,t0,dt,di,r;
- // RB 24 side
+ Double_t x,y,z,t,t0,dt,di,r,l,local[3],master[3];
+ Char_t name[100];
+ Double_t r1,r2,m;
+ // RB 24, Open Side.
const Double_t kfrm24Z0 = 900*fgkmm;//SSup_203A.jpg
const Double_t kfrm24Thss = 5.0*fgkmm;
const Double_t kfrm24Rss = 444.5*fgkmm-kfrm24Thss; //SSup_204A.jpg
const Int_t kfrm24NZsections = 4;
const Int_t kfrm24NPhiSections = 4;
const Int_t kfrm24NPhi = 4;
- //
- TGeoTubeSeg *sM24,*sA24;
- TGeoBBox *sB24;
- sM24 = new TGeoTubeSeg("ITS sup Cable tray support frame mother volume "
- "M24",kfrm24Rss,kfrm24Rss+kfrm24Thss,
- 0.5*(4.*kfrm24ZssSection+5*kfrm24Width),
- kfrm24Phi0,kfrm24Phi1);
- sA24 = new TGeoTubeSeg("ITS sup Cable tray support frame radial section "
- "A24",kfrm24Rss,kfrm24Rss+kfrm24Thss,
- 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);
- TGeoVolume *vA24,*vB24,*vM24;
+ // These numbers are guessed at.
+ const Double_t kfrm24ZfracAngle = 0.55; // frational z length to brack
+ const Double_t kfrm24Angle = 10.0*fgkDegree; // Guessed at
+ //
+ TGeoTubeSeg *sA24[kfrm24NZsections+1];
+ TGeoArb8 *sB24[kfrm24NZsections+1];
+ TGeoPcon *sM24;
+ Double_t zA24[kfrm24NZsections+1];
+ l = 4.*kfrm24ZssSection+5*kfrm24Width;
+ j = 0;
+ for(i=0;i<kfrm24NZsections+1;i++){
+ sprintf(name,"ITS sup Cable tray support frame radial section A24[%d]",
+ i);
+ r1 = kfrm24Rss;
+ if(i==0) zA24[i] = kfrm24Width;
+ else zA24[i] = zA24[i-1] + kfrm24ZssSection + kfrm24Width;
+ if(zA24[i]>l*kfrm24ZfracAngle){ // break, radii get larger
+ r1 = kfrm24Rss + (zA24[i]-kfrm24ZfracAngle*l)*SinD(kfrm24Angle);
+ } // end if
+ r2 = r1+kfrm24Thss;
+ sA24[i] = new TGeoTubeSeg(name,r1,r2,0.5*kfrm24Width,kfrm24Phi0,
+ kfrm24Phi1);
+ if(i>0)if(sA24[i-1]->GetRmin()==sA24[i]->GetRmin()) j = i;
+ } // end for i
+ for(i=0;i<kfrm24NZsections;i++){
+ sprintf(name,"ITS sup Cable tray support frame Z section B24[%d]",i);
+ sB24[i] = new TGeoArb8(name,0.5*kfrm24ZssSection);
+ sB24[i]->SetVertex(0,sA24[i]->GetRmin(),0.5*kfrm24Hight);
+ sB24[i]->SetVertex(1,sA24[i]->GetRmax(),0.5*kfrm24Hight);
+ sB24[i]->SetVertex(2,sA24[i]->GetRmin(),-0.5*kfrm24Hight);
+ sB24[i]->SetVertex(3,sA24[i]->GetRmax(),-0.5*kfrm24Hight);
+ sB24[i]->SetVertex(4,sA24[i+1]->GetRmin(),0.5*kfrm24Hight);
+ sB24[i]->SetVertex(5,sA24[i+1]->GetRmax(),0.5*kfrm24Hight);
+ sB24[i]->SetVertex(6,sA24[i+1]->GetRmin(),-0.5*kfrm24Hight);
+ sB24[i]->SetVertex(7,sA24[i+1]->GetRmax(),-0.5*kfrm24Hight);
+ } // end for i
+ sM24 = new TGeoPcon("ITS sup Cable tray support frame mother volume M24",
+ kfrm24Phi0,kfrm24Phi1,3);
+ sM24->Z(0) = zA24[0] -kfrm24Width;
+ sM24->Rmin(0) = sA24[0]->GetRmin();
+ sM24->Rmax(0) = sA24[0]->GetRmax();
+ sM24->Z(1) = zA24[j];
+ sM24->Rmin(1) = sA24[j]->GetRmin();
+ sM24->Rmax(1) = sA24[j]->GetRmax();
+ sM24->Z(2) = zA24[kfrm24NZsections] + kfrm24Width;
+ sM24->Rmin(2) = sA24[kfrm24NZsections]->GetRmin();
+ sM24->Rmax(2) = sA24[kfrm24NZsections]->GetRmax();
+ if(AliDebugLevel()){
+ sM24->InspectShape();
+ for(i=0;i<kfrm24NZsections+1;i++) sA24[i]->InspectShape();
+ for(i=0;i<kfrm24NZsections;i++) sB24[i]->InspectShape();
+ } // end if AliDebugLevel()
+ TGeoVolume *vA24[kfrm24NZsections+1],*vB24[kfrm24NZsections],*vM24;
TGeoTranslation *tran;
- TGeoRotation *rot;
+ TGeoRotation *rot,*rot1;
TGeoCombiTrans *tranrot;
//
- vA24 = new TGeoVolume("ITSsupFrameA24",sA24,medSUPss);
- vA24->SetVisibility(kTRUE);
- vA24->SetLineColor(1); // black
- vA24->SetLineWidth(1);
- vA24->SetFillColor(vA24->GetLineColor());
- vA24->SetFillStyle(4000); // 0% transparent
- vB24 = new TGeoVolume("ITSsupFrameB24",sB24,medSUPss);
- vB24->SetVisibility(kTRUE);
- vB24->SetLineColor(1); // black
- vB24->SetLineWidth(1);
- vB24->SetFillColor(vB24->GetLineColor());
- vB24->SetFillStyle(4000); // 0% transparent
+ for(i=0;i<kfrm24NZsections+1;i++){
+ vA24[i] = 0;
+ sprintf(name,"ITSsupFrameA24[%d]",i);
+ vA24[i] = new TGeoVolume(name,sA24[i],medSUPss);
+ vA24[i]->SetVisibility(kTRUE);
+ vA24[i]->SetLineColor(1); // black
+ vA24[i]->SetLineWidth(1);
+ vA24[i]->SetFillColor(vA24[i]->GetLineColor());
+ vA24[i]->SetFillStyle(4000); // 0% transparent
+ } // end for i
+ for(i=0;i<kfrm24NZsections;i++){
+ vB24[i] = 0;
+ sprintf(name,"ITSsupFrameB24[%d]",i);
+ vB24[i] = new TGeoVolume(name,sB24[i],medSUPss);
+ vB24[i]->SetVisibility(kTRUE);
+ vB24[i]->SetLineColor(1); // black
+ vB24[i]->SetLineWidth(1);
+ vB24[i]->SetFillColor(vB24[i]->GetLineColor());
+ vB24[i]->SetFillStyle(4000); // 0% transparent
+ } // end for i
vM24 = new TGeoVolume("ITSsupFrameM24",sM24,medSUPair);
vM24->SetVisibility(kTRUE);
vM24->SetLineColor(7); // light blue
vM24->SetFillColor(vM24->GetLineColor());
vM24->SetFillStyle(4090); // 90% transparent
//
- Int_t ncopyA24=1,ncopyB24=1;
+ Int_t ncopyB24[kfrm24NPhiSections];
t0 = kfrm24Phi0;
dt = (kfrm24Phi1-kfrm24Phi0)/((Double_t)kfrm24NPhiSections);
for(i=0;i<=kfrm24NZsections;i++){
- di = (Double_t) i;
- z = -sM24->GetDz()+sA24->GetDz() + di*(kfrm24ZssSection+kfrm24Width);
+ z = zA24[i];
tran = new TGeoTranslation("",0.0,0.0,z);
- vM24->AddNode(vA24,ncopyA24++,tran);
- r = kfrm24Rss+sB24->GetDX();
- z = z + sA24->GetDz()+sB24->GetDZ();
- if(i<kfrm24NZsections) for(j=0;j<=kfrm24NPhiSections;j++){
- t = t0 + ((Double_t)j)*dt;
- rot = new TGeoRotation("",0.0,0.0,t);
- y = r*SinD(t);
- x = r*CosD(t);
- tranrot = new TGeoCombiTrans("",x,y,z,rot);
- delete rot;// rot not explicity used in AddNode functions.
- vM24->AddNode(vB24,ncopyB24++,tranrot);
- } // end for j
+ vM24->AddNode(vA24[i],1,tran);
+ if(i<kfrm24NZsections){
+ ncopyB24[i] = 1;
+ for(j=0;j<=kfrm24NPhiSections;j++){
+ t = t0 + ((Double_t)j)*dt;
+ rot = new TGeoRotation("",0.0,0.0,t);
+ tranrot = new TGeoCombiTrans("",0.0,0.0,z+sB24[i]->GetDz(),rot);
+ delete rot;// rot not explicity used in AddNode functions.
+ vM24->AddNode(vB24[i],ncopyB24[i]++,tranrot);
+ } // end for j
+ } // end if
} // end for i
- tran = new TGeoTranslation("",0.0,0.0,kfrm24Z0+sM24->GetDz());
+ tran = new TGeoTranslation("",0.0,0.0,kfrm24Z0);
moth->AddNode(vM24,1,tran);
for(i=1;i<kfrm24NPhi;i++){
di = (Double_t) i;
rot = new TGeoRotation("",0.0,0.0,90.0*di);
- tranrot = new TGeoCombiTrans("",0.0,0.0,kfrm24Z0+sM24->GetDz(),rot);
+ tranrot = new TGeoCombiTrans("",0.0,0.0,kfrm24Z0,rot);
delete rot;// rot not explicity used in AddNode functions.
moth->AddNode(vM24,i+1,tranrot);
} // end for i
- if(GetDebug()){
- vA24->PrintNodes();
- vB24->PrintNodes();
+ if(AliDebugLevel()){
+ for(i=0;i<kfrm24NZsections+1;i++) vA24[i]->PrintNodes();
+ for(i=0;i<kfrm24NZsections;i++) vB24[i]->PrintNodes();
vM24->PrintNodes();
} // end if
- // Cable support tray
- // Material is Aluminum
- //const Double_t kcsb24RSin = TMath::Max(kfrm24Rss,444.5*fgkmm);
- // SSup_204A & SSup_206A
- //const Double_t kcb24RSAirout = 459.5*fgkmm; // SSup_204A & SSup_206A
- //const Double_t kcb24RSout = 494.5*fgkmm; // SSup_206A & SSup_204A
- //const Double_t kcb24RSPPout = 550.0*fgkmm; // SSup_206A
- const Double_t kcb24LSPP = 350.0*fgkmm; // SSup_202A
- const Double_t kcb24LS = (2693.0-900.0)*fgkmm;//SSup_205A&SSup_207A
- const Double_t kcb24ThSwall = 1.0*fgkmm; // SSup_209A & SSup_210A
- const Double_t kcb24WbS = 42.0*fgkmm; // SSup_209A & SSup_210A
- //const Double_t kcb24WtS = 46.9*fgkmm; // SSup_209A & SSup_210A
- const Double_t kcb24WcapS = 50.0*fgkmm; // SSup_209A & SSup_210A
- //const Double_t kcb24WdS = 41.0*fgkmm; //SSup_209A ? should be 41.469387
- const Double_t kcb24HS = 50.0*fgkmm; // SSup_209A & SSup_210A
- const Double_t kcb24OutDcoolTub= 12.0*fgkmm; // SSup_209A
- const Double_t kcb24InDcoolTub = 10.0*fgkmm; // SSup_209A
- const Double_t kcbBlkNozInDS = 6.0*fgkmm; // SSup_209A
- // The following are deduced or guessed at
- //const Double_t kcb24LtopLipS = 6.0*fgkmm; // Guessed at.
- //const Double_t kcb24LdLipS = 6.0*fgkmm; // Guessed at.
- //const Double_t kcb24HdS = kcb24OutDcoolTub; //
- const Double_t kcb24BlkNozZS = 6.0*fgkmm; // Guessed at.
- // Simplifided exterior shape. The side wall size is 2.5*thicker than
- // it should be (due to simplification).
- TGeoArb8 *sC24,*sD24,*sF24,*sH24;
- TGeoTube *sE24,*sG24;
- //
- sC24 = new TGeoArb8("ITS Sup Cable Tray Element C24",0.5*kcb24LS);
- sC24->SetVertex(0,-0.5*kcb24WcapS,kcb24HS+kcb24ThSwall);
- sC24->SetVertex(1,+0.5*kcb24WcapS,kcb24HS+kcb24ThSwall);
- sC24->SetVertex(2,+0.5*kcb24WbS,0.0);
- sC24->SetVertex(3,-0.5*kcb24WbS,0.0);
- sC24->SetVertex(4,-0.5*kcb24WcapS,kcb24HS+kcb24ThSwall);
- sC24->SetVertex(5,+0.5*kcb24WcapS,kcb24HS+kcb24ThSwall);
- sC24->SetVertex(6,+0.5*kcb24WbS,0.0);
- sC24->SetVertex(7,-0.5*kcb24WbS,0.0);
- sD24 = new TGeoArb8("ITS Sup Cable Tray lower Element D24",0.5*kcb24LS);
- // Because of question about the value of WdS24, compute what it
- // should be assuming cooling tube fixes hight of volume.
- x = kcb24OutDcoolTub*(0.5*kcb24WcapS-0.5*kcb24WbS-kcb24ThSwall)/
- (kcb24HS-kcb24ThSwall);
- sD24->SetVertex(0,-x,kcb24OutDcoolTub+kcb24ThSwall);
- sD24->SetVertex(1,+x,kcb24OutDcoolTub+kcb24ThSwall);
- sD24->SetVertex(2,+0.5*kcb24WbS-kcb24ThSwall,kcb24ThSwall);
- sD24->SetVertex(3,-0.5*kcb24WbS+kcb24ThSwall,kcb24ThSwall);
- sD24->SetVertex(4,-x,kcb24OutDcoolTub+kcb24ThSwall);
- sD24->SetVertex(5,+x,kcb24OutDcoolTub+kcb24ThSwall);
- sD24->SetVertex(6,+0.5*kcb24WbS-kcb24ThSwall,kcb24ThSwall);
- sD24->SetVertex(7,-0.5*kcb24WbS+kcb24ThSwall,kcb24ThSwall);
- sE24 = new TGeoTube("ITS Sup Cooling Tube E24",0.5*kcb24InDcoolTub,
- 0.5*kcb24OutDcoolTub,0.5*kcb24LS-kcb24BlkNozZS);
- sF24 = new TGeoArb8("ITS Sup Cable Tray lower Element block F24",
- 0.5*kcb24BlkNozZS);
- for(i=0;i<8;i++) sF24->SetVertex(i,sD24->GetVertices()[i*2+0],
- sD24->GetVertices()[i*2+1]); //
- sG24 = new TGeoTube("ITS Sup Cooling Tube hole in block G24",
- 0.0,0.5*kcbBlkNozInDS,0.5*kcb24BlkNozZS);
- sH24 = new TGeoArb8("ITS Sup Cable Tray upper Element H24",
- 0.5*(kcb24LS- kcb24LSPP));
- sH24->SetVertex(0,sC24->GetVertices()[0*2+0]+2.*kcb24ThSwall,
- sC24->GetVertices()[0*2+1]-kcb24ThSwall);
- sH24->SetVertex(1,sC24->GetVertices()[1*2+0]-2.*kcb24ThSwall,
- sC24->GetVertices()[1*2+1]-kcb24ThSwall);
- sH24->SetVertex(2,sD24->GetVertices()[1*2+0]-kcb24ThSwall,
- sD24->GetVertices()[1*2+1]+kcb24ThSwall);
- sH24->SetVertex(3,sD24->GetVertices()[0*2+0]+kcb24ThSwall,
- 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);
- TGeoVolume *vC24,*vD24,*vE24,*vF24,*vGa24,*vGw24,*vH24;
- //
- vC24 = new TGeoVolume("ITSsupCableTrayC24",sC24,medSUPal);
- vC24->SetVisibility(kTRUE);
- vC24->SetLineColor(6); //
- vC24->SetLineWidth(1);
- vC24->SetFillColor(vC24->GetLineColor());
- vC24->SetFillStyle(4000); // 0% transparent
- vD24 = new TGeoVolume("ITSsupCableTrayLowerD24",sD24,medSUPair);
- vD24->SetVisibility(kTRUE);
- vD24->SetLineColor(6); //
- vD24->SetLineWidth(1);
- vD24->SetFillColor(vD24->GetLineColor());
- vD24->SetFillStyle(4000); // 0% transparent
- vE24 = new TGeoVolume("ITSsupCableTrayCoolTubeE24",sE24,medSUPss);
- vE24->SetVisibility(kTRUE);
- vE24->SetLineColor(6); //
- vE24->SetLineWidth(1);
- vE24->SetFillColor(vE24->GetLineColor());
- vE24->SetFillStyle(4000); // 0% transparent
- vF24 = new TGeoVolume("ITSsupCableTrayBlockF24",sF24,medSUPal);
- vF24->SetVisibility(kTRUE);
- vF24->SetLineColor(6); //
- vF24->SetLineWidth(1);
- vF24->SetFillColor(vF24->GetLineColor());
- vF24->SetFillStyle(4000); // 0% transparent
- vGw24 = new TGeoVolume("ITSsupCableTrayCoolantWaterG24",sG24,medSUPwater);
- vGw24->SetVisibility(kTRUE);
- vGw24->SetLineColor(6); //
- vGw24->SetLineWidth(1);
- vGw24->SetFillColor(vGw24->GetLineColor());
- vGw24->SetFillStyle(4000); // 0% transparent
- vGa24 = new TGeoVolume("ITSsupCableTrayCoolantAirG24",sG24,medSUPair);
- vGa24->SetVisibility(kTRUE);
- vGa24->SetLineColor(6); //
- vGa24->SetLineWidth(1);
- vGa24->SetFillColor(vGa24->GetLineColor());
- vGa24->SetFillStyle(4000); // 0% transparent
- vH24 = new TGeoVolume("ITSsupCableTrayUpperC24",sH24,medSUPair);
- vH24->SetVisibility(kTRUE);
- vH24->SetLineColor(6); //
- vH24->SetLineWidth(1);
- vH24->SetFillColor(vH24->GetLineColor());
- vH24->SetFillStyle(4000); // 0% transparent
- //
- tran = new TGeoTranslation("",-kcb24OutDcoolTub,
- kcb24OutDcoolTub+kcb24ThSwall,0.0);
- vF24->AddNode(vGw24,1,tran);
- vD24->AddNode(vE24,1,tran);
- tran = new TGeoTranslation("",0.0,kcb24OutDcoolTub+kcb24ThSwall,0.0);
- vF24->AddNode(vGw24,2,tran);
- vD24->AddNode(vE24,2,tran);
- tran = new TGeoTranslation("",+kcb24OutDcoolTub,
- kcb24OutDcoolTub+kcb24ThSwall,0.0);
- vF24->AddNode(vGw24,3,tran);
- vD24->AddNode(vE24,3,tran);
- tran = new TGeoTranslation("",0.0,0.0,0.5*kcb24LS-0.5*kcb24BlkNozZS);
- vD24->AddNode(vF24,1,tran);
- tran = new TGeoTranslation("",0.0,0.0,-(0.5*kcb24LS-0.5*kcb24BlkNozZS));
- vD24->AddNode(vF24,2,tran);
- vC24->AddNode(vD24,1,0);
- vC24->AddNode(vH24,1,0);
+ //==================================================================
+ // RB24 Cable Tray
+ const Double_t kct24WidthBottom = 44.0*fgkmm; // Serv-C_208.jpg
+ const Double_t kct24WidthTop = 46.0*fgkmm; // Serv-C_208.jpg
+ const Double_t kct24Hight = 51.0*fgkmm; // Serv-C_208.jpg
+ const Double_t kct24AlThick = 1.0*fgkmm; // Serv-C_208.jpg
+ const Double_t kct24CapWidth = 46.0*fgkmm; // Serv-C_208.jpg
+ const Double_t kct24CapEar = 5.0*fgkmm; // Guess
+ const Double_t kct24Rmin = 455.0*fgkmm; // Serv-C_203.jpg
+ const Double_t kct24CoolSectionH = 470.0*fgkmm-kct24Rmin;// Serv-C_203.jpg
+ const Double_t kct24CoolCableDivEar = 2.0*fgkmm; // Guess
+ const Int_t kct24Ntrays = 48; // Serv-C_205.jpg
+ //const Int_t kct24Ntubes = 3; // Serv-C_208.jpg
+ // Patch Pannels for RB 24 side
+ const Double_t kft24PPHightSPDFMD = 72.0*fgkmm; // Serv-C_SPD/FMD.jpg
+ const Double_t kft24PPHightSDDSSD = 104.0*fgkmm; // Serv-C_SDD/SSD.jpg
+ const Double_t kft24PPlength = 350.0*fgkmm;//Serv-C_SPD/SDD/SSD/FMD_1.jpg
+ const Double_t kft24Theta = 2.0*TMath::ATan2(kct24WidthBottom,
+ 2.0*kct24Rmin)*fgkRadian; //
+ const Int_t kft24NPatchPannels = 20; //
+ //
+ Double_t xp[12],yp[12];
+ TGeoPcon *sMT24;
+ TGeoXtru *sT24,*sTs24,*sTl24,*sTt24,*sU24,*sVl24,*sVs24,*sW24;
+ TGeoXtru *s3PP24,*s2PP24,*sV3PP24,*sV2PP24;
+ // Outer Tray Full
+ sT24 = new TGeoXtru(3);
+ sT24->SetName("ITS sup Full Cable Tray for RB24 Side T24");
+ xp[0] = -0.5*kct24WidthBottom;
+ yp[0] = sM24->GetRmax(0);
+ yp[1] = yp[0] + kct24Hight-kct24CapEar;
+ xp[1] = Xfrom2Points(xp[0],yp[0],-0.5*kct24WidthTop+kct24AlThick,
+ yp[0]+kct24Hight,yp[1]);
+ yp[2] = yp[1];
+ xp[2] = xp[1]-kct24AlThick;
+ xp[3] = -0.5*kct24CapWidth;
+ yp[3] = yp[0] + kct24Hight;
+ xp[4] = -xp[3];
+ yp[4] = yp[3];
+ xp[5] = -xp[2];
+ yp[5] = yp[2];
+ xp[6] = -xp[1];
+ yp[6] = yp[1];
+ xp[7] = -xp[0];
+ yp[7] = yp[0];
+ sT24->DefinePolygon(8,xp,yp);
+ sT24->DefineSection(0,sM24->GetZ(0));
+ sT24->DefineSection(1,sM24->GetZ(1));
+ sT24->DefineSection(2,zA24[kfrm24NZsections],0.0,
+ sA24[kfrm24NZsections]->GetRmin()-sA24[0]->GetRmin());
+ // RB 24 full tray no divider (for ALG and T0-V0 cables?)
+ sW24 = new TGeoXtru(3);
+ sW24->SetName("ITS sup Cable Tray No Divider for RB24 Side W24");
+ xp[0] = sT24->GetX(0) + kct24AlThick;
+ yp[0] = sT24->GetY(0) - kct24AlThick;
+ yp[1] = sT24->GetY(3) - kct24AlThick;
+ xp[1] = Xfrom2Points(sT24->GetX(0),sT24->GetY(0),sT24->GetX(1),
+ sT24->GetY(1),yp[1]) + kct24AlThick;
+ xp[2] = -xp[1];
+ yp[2] = yp[1];
+ xp[3] = -xp[0];
+ yp[3] = yp[0];
+ sW24->DefinePolygon(4,xp,yp);
+ for(i=0;i<sT24->GetNz();i++){
+ sW24->DefineSection(i,sT24->GetZ(i),sT24->GetXOffset(i),
+ sT24->GetYOffset(i),sT24->GetScale(i));
+ } // end for i
+ // Outer Tray Short
+ sTs24 = new TGeoXtru(3);
+ sTs24->SetName("ITS sup Short Cable Tray for RB24 Side Ts24");
+ yp[0] = sT24->GetY(0) + kct24CoolSectionH;
+ xp[0] = Xfrom2Points(sT24->GetX(0),sT24->GetY(0),sT24->GetX(1),
+ sT24->GetY(1),yp[0]);
+ for(i=1;i<7;i++){
+ xp[i] = sT24->GetX(i);
+ yp[i] = sT24->GetY(i);
+ } // end for i
+ xp[7] = -xp[0];
+ yp[7] = yp[0];
+ sTs24->DefinePolygon(8,xp,yp);
+ sTs24->DefineSection(0,sM24->GetZ(0)+kft24PPlength);
+ sTs24->DefineSection(1,sM24->GetZ(1));
+ sTs24->DefineSection(2,zA24[kfrm24NZsections],sT24->GetXOffset(2),
+ sT24->GetYOffset(2),sT24->GetScale(2));
+ // Outer Tray Long
+ sTl24 = new TGeoXtru(3);
+ sTl24->SetName("ITS sup Long Cable Tray for RB24 Side Tl24");
+ for(i=0;i<8;i++){
+ xp[i] = sTs24->GetX(i);
+ yp[i] = sTs24->GetY(i);
+ } // End for i
+ sTl24->DefinePolygon(8,xp,yp);
+ sTl24->DefineSection(0,sM24->GetZ(0));
+ sTl24->DefineSection(1,sM24->GetZ(1));
+ sTl24->DefineSection(2,zA24[kfrm24NZsections],0.0,
+ sA24[kfrm24NZsections]->GetRmin()-sA24[0]->GetRmin());
+ // Outer Tray for air Tubes
+ sTt24 = new TGeoXtru(3);
+ sTt24->SetName("ITS sup Long Air Tube Tray for RB24 Side Tt24");
+ xp[0] = sT24->GetX(0);
+ yp[0] = sT24->GetY(0);
+ xp[1] = sTl24->GetX(0);
+ yp[1] = sTl24->GetY(0);
+ xp[2] = -xp[1];
+ yp[2] = yp[1];
+ xp[3] = -xp[0];
+ yp[3] = yp[1];
+ sTt24->DefinePolygon(4,xp,yp);
+ sTt24->DefineSection(0,sM24->GetZ(0));
+ sTt24->DefineSection(1,sM24->GetZ(1));
+ sTt24->DefineSection(2,zA24[kfrm24NZsections],0.0,
+ sA24[kfrm24NZsections]->GetRmin()-sA24[0]->GetRmin());
+ // Inner opening for cooling (lower) {inside sTt24}
+ sU24 = new TGeoXtru(3);
+ sU24->SetName("ITS sup Cable Tray Cooling tube space RB24 Side U24");
+ xp[0] = sTt24->GetX(0) + kct24AlThick;
+ yp[0] = sTt24->GetY(0) + kct24AlThick;
+ xp[1] = sTt24->GetX(1) + kct24AlThick;
+ yp[1] = sTt24->GetY(1) - kct24AlThick;
+ xp[2] = -xp[1];
+ yp[2] = yp[1];
+ xp[3] = -xp[0];
+ yp[3] = yp[0];
+ sU24->DefinePolygon(4,xp,yp);
+ for(i=0;i<sTt24->GetNz();i++){
+ sU24->DefineSection(i,sTt24->GetZ(i),sTt24->GetXOffset(i),
+ sTt24->GetYOffset(i),sTt24->GetScale(i));
+ } // end for i
+ // Inner opening for cables (upper) {inside sTl24}
+ sVl24 = new TGeoXtru(3);
+ sVl24->SetName("ITS sup Cable Tray Cable space RB24 Side Vl24");
+ xp[0] = sTl24->GetX(0)+2.0*kct24AlThick;
+ yp[0] = sTl24->GetY(0);
+ yp[1] = yp[0] + kct24CoolCableDivEar;
+ xp[1] = Xfrom2Points(sTl24->GetX(0),sTl24->GetY(0),
+ sTl24->GetX(1),sTl24->GetY(1),yp[1])+2.0*kct24AlThick;
+ yp[2] = yp[1];
+ xp[2] = xp[1] - kct24AlThick;
+ yp[3] = sTl24->GetY(3) - kct24AlThick;
+ xp[3] = Xfrom2Points(sTl24->GetX(0),sTl24->GetY(0),sTl24->GetX(1),
+ sTl24->GetY(1),yp[3]) + kct24AlThick;
+ xp[4] = -xp[3];
+ yp[4] = yp[3];
+ xp[5] = -xp[2];
+ yp[5] = yp[2];
+ xp[6] = -xp[1];
+ yp[6] = yp[1];
+ xp[7] = -xp[0];
+ yp[7] = yp[0];
+ sVl24->DefinePolygon(8,xp,yp);
+ for(i=0;i<sTl24->GetNz();i++){
+ sVl24->DefineSection(i,sTl24->GetZ(i),sTl24->GetXOffset(i),
+ sTl24->GetYOffset(i),sTl24->GetScale(i));
+ } // end for i
+ // Inner opening for cables (upper) {inside sTs24}
+ sVs24 = new TGeoXtru(3);
+ sVs24->SetName("ITS sup Cable Tray Cable space RB24 Side Vs24");
+ sVs24->DefinePolygon(8,xp,yp);
+ for(i=0;i<8;i++){
+ xp[i] = sVl24->GetX(i);
+ yp[i] = sVl24->GetY(i);
+ } // end for i
+ for(i=0;i<sTl24->GetNz();i++){
+ sVs24->DefineSection(i,sTs24->GetZ(i),sTs24->GetXOffset(i),
+ sTs24->GetYOffset(i),sTs24->GetScale(i));
+ } // end for i
+ //------------------------------------------------------------------
+ // Patch Pannels on RB 24 Side
+ rot = new TGeoRotation("",0.0,0.0,-kft24Theta); // Gets Used later as well
+ rot1 = new TGeoRotation("",0.0,0.0,kft24Theta); // Gets Used later as well
+ s3PP24 = new TGeoXtru(2);
+ s3PP24->SetName("ITS sup 3 bay pach pannel RB24 side 3PP24");
+ yp[5] = sT24->GetY(7) + kct24CoolSectionH;
+ xp[5] = Xfrom2Points(sT24->GetX(7),sT24->GetY(7),sT24->GetX(6),
+ sT24->GetY(6),yp[6]);
+ yp[6] = sT24->GetY(0) + kct24CoolSectionH;
+ xp[6] = Xfrom2Points(sT24->GetX(0),sT24->GetY(0),sT24->GetX(1),
+ sT24->GetY(1),yp[9]);
+ local[0] = xp[6]; local[1] = yp[6]; local[2] = 0.0;
+ rot1->LocalToMaster(local,master);
+ xp[0] = master[0];
+ yp[0] = master[1];
+ local[0] = xp[6]; local[1] = yp[6] + kft24PPHightSDDSSD; local[2] = 0.0;
+ rot1->LocalToMaster(local,master);
+ xp[1] = master[0];
+ yp[1] = master[1];
+ xp[2] = -xp[1];
+ yp[2] = yp[1];
+ xp[3] = -xp[0];
+ yp[3] = yp[0];
+ local[0] = xp[6]; local[1] = yp[6]; local[2] = 0.0;
+ rot1->MasterToLocal(local,master);
+ xp[4] = master[0];
+ yp[4] = master[1];
+ local[0] = xp[5]; local[1] = yp[5]; local[2] = 0.0;
+ rot1->LocalToMaster(local,master);
+ xp[7] = master[0];
+ yp[7] = master[1];
+ s3PP24->DefinePolygon(8,xp,yp);
+ s3PP24->DefineSection(0,0.0);
+ s3PP24->DefineSection(1,kft24PPlength);
+ //
+ s2PP24 = new TGeoXtru(2);
+ s2PP24->SetName("ITS sup 2 bay pach pannel RB24 side 2PP24");
+ local[1] = sTl24->GetY(3); local[2] = 0.0;
+ local[0] = Xfrom2Points(sTl24->GetX(0),sTl24->GetY(0),
+ sTl24->GetX(1),sTl24->GetY(1),local[1]);
+ rot1->LocalToMaster(local,master);
+ xp[0] = master[0];
+ yp[0] = master[1];
+ local[1] = sTl24->GetY(3) + kft24PPHightSPDFMD; local[2] = 0.0;
+ local[0] = Xfrom2Points(sTl24->GetX(0),sTl24->GetY(0),
+ sTl24->GetX(1),sTl24->GetY(1),local[1]);
+ rot1->LocalToMaster(local,master);
+ xp[1] = master[0];
+ yp[1] = master[1];
+ yp[2] = sTl24->GetY(4) + kft24PPHightSPDFMD;
+ xp[2] = Xfrom2Points(sTl24->GetX(6),sTl24->GetY(6),
+ sTl24->GetX(7),sTl24->GetY(7),yp[2]);
+ yp[3] = sTl24->GetY(7);
+ xp[3] = Xfrom2Points(sTl24->GetX(6),sTl24->GetY(6),
+ sTl24->GetX(7),sTl24->GetY(7),yp[3]);
+ xp[4] = sTl24->GetX(3);
+ yp[4] = sTl24->GetY(3);
+ local[0] = sTl24->GetX(4);local[1] = sTl24->GetY(4); local[2] = 0.0;
+ rot1->LocalToMaster(local,master);
+ xp[5] = master[0];
+ yp[5] = master[1];
+ s2PP24->DefinePolygon(6,xp,yp);
+ s2PP24->DefineSection(0,0.0);
+ s2PP24->DefineSection(1,kft24PPlength);
+ //
+ sV3PP24 = new TGeoXtru(2);
+ sV3PP24->SetName("ITS sup Patch Pannel 3 Bay inside Rb24 side V3PP24");
+ xp[0] = s3PP24->GetX(0) + kct24AlThick;
+ yp[0] = s3PP24->GetY(0);
+ local[1] = s3PP24->GetY(6) + kft24PPHightSDDSSD - kct24AlThick;local[2]=0.;
+ local[0] = Xfrom2Points(sTl24->GetX(0),sTl24->GetY(0),
+ sTl24->GetX(1),sTl24->GetY(1),local[1]);
+ rot1->LocalToMaster(local,master);
+ xp[1] = master[0];
+ yp[1] = master[1];
+ xp[2] = -xp[1];
+ yp[2] = yp[1];
+ xp[3] = -xp[0];
+ yp[3] = yp[0];
+ xp[4] = s3PP24->GetX(4);
+ yp[4] = s3PP24->GetY(4);
+ xp[5] = s3PP24->GetX(5);
+ yp[5] = s3PP24->GetY(5);
+ xp[6] = s3PP24->GetX(6);
+ yp[6] = s3PP24->GetY(6);
+ xp[7] = s3PP24->GetX(7);
+ yp[7] = s3PP24->GetY(7);
+ sV3PP24->DefinePolygon(8,xp,yp);
+ sV3PP24->DefineSection(0,s3PP24->GetZ(0),s3PP24->GetXOffset(0),
+ s3PP24->GetYOffset(0),s3PP24->GetScale(0));
+ sV3PP24->DefineSection(1,s3PP24->GetZ(1),s3PP24->GetXOffset(1),
+ s3PP24->GetYOffset(1),s3PP24->GetScale(1));
+ //
+ sV2PP24 = new TGeoXtru(2);
+ sV2PP24->SetName("ITS sup Patch Pannel 2 Bay inside Rb24 side V2PP24");
+ xp[0] = s2PP24->GetX(0) + kct24AlThick;
+ yp[0] = s2PP24->GetY(0);
+ local[1] = sTl24->GetY(3) + kft24PPHightSPDFMD - kct24AlThick;local[2]=0.;
+ local[0] = Xfrom2Points(sTl24->GetX(0),sTl24->GetY(0),
+ sTl24->GetX(1),sTl24->GetY(1),local[1]);
+ rot1->LocalToMaster(local,master);
+ xp[1] = master[0];
+ yp[1] = master[1];
+ yp[2] = sTl24->GetY(4) + kft24PPHightSPDFMD - kct24AlThick;
+ xp[2] = Xfrom2Points(sTl24->GetX(6),sTl24->GetY(6),
+ sTl24->GetX(7),sTl24->GetY(7),yp[2]);
+ yp[3] = sTl24->GetY(4);
+ xp[3] = Xfrom2Points(sTl24->GetX(6),sTl24->GetY(6),
+ sTl24->GetX(7),sTl24->GetY(7),yp[3]);;
+ xp[4] = s2PP24->GetX(4);
+ yp[4] = s2PP24->GetY(4);
+ xp[5] = s2PP24->GetX(5);
+ yp[5] = s2PP24->GetY(5);
+ sV2PP24->DefinePolygon(6,xp,yp);
+ sV2PP24->DefineSection(0,s2PP24->GetZ(0),s2PP24->GetXOffset(0),
+ s2PP24->GetYOffset(0),s2PP24->GetScale(0));
+ sV2PP24->DefineSection(1,s2PP24->GetZ(1),s2PP24->GetXOffset(1),
+ s2PP24->GetYOffset(1),s2PP24->GetScale(1));
+ // RB 24 Tray Mother Volume
+ sMT24 = new TGeoPcon("ITS sup Cable Tray Mother Volume RB24 MT24",
+ 0.0,360.0,5);
+ sMT24->Z(0) = 0.0;
+ sMT24->Rmin(0) = sM24->GetRmax(0);
+ sMT24->Rmax(0) = TMath::Max(TMath::Hypot(s3PP24->GetX(1),s3PP24->GetY(1)),
+ TMath::Hypot(s2PP24->GetX(1),s2PP24->GetY(1)));
+
+ sMT24->Z(1) = sMT24->GetZ(0) + kft24PPlength;
+ sMT24->Rmin(1) = sMT24->GetRmin(0);
+ sMT24->Rmax(1) = sMT24->GetRmax(0);
+ sMT24->Z(2) = sMT24->GetZ(1);
+ sMT24->Rmin(2) = sMT24->GetRmin(0);
+ sMT24->Rmax(2) = sMT24->GetRmax(0) - kft24PPHightSPDFMD;
+
+ sMT24->Z(3) = sMT24->GetZ(0) + sM24->GetZ(1) - sM24->GetZ(0);
+ sMT24->Rmin(3) = sM24->GetRmax(1);
+ sMT24->Rmax(3) = TMath::Hypot(sT24->GetX(3),sT24->GetY(3));
+ sMT24->Z(4) = sMT24->GetZ(0) + sM24->GetZ(2) - sM24->GetZ(0);
+ sMT24->Rmin(4) = sM24->GetRmax(2);
+ sMT24->Rmax(4) = TMath::Hypot(sT24->GetX(3)+sT24->GetXOffset(2),
+ sT24->GetY(3)+sT24->GetYOffset(2));
+ //
+ if(AliDebugLevel()){
+ sT24->InspectShape();
+ sW24->InspectShape();
+ sTl24->InspectShape();
+ sTs24->InspectShape();
+ sTt24->InspectShape();
+ sU24->InspectShape();
+ sVl24->InspectShape();
+ sVs24->InspectShape();
+ s3PP24->InspectShape();
+ s2PP24->InspectShape();
+ sV3PP24->InspectShape();
+ sV2PP24->InspectShape();
+ sMT24->InspectShape();
+ } // end if AliDebugLevel()
+ //
+ TGeoVolume *vC24[kct24Ntrays],*vT24[kct24Ntrays],*vPP24[kft24NPatchPannels];
+ TGeoVolume *vWTV024,*vW24,*vU24,*vUFMD24,*vVl24,*vVlFMD24,*vVs24,*vMT24;
+ TGeoVolume *vV3PP24,*vV2PP24,*vV2PPFMD24;
+ vMT24 = new TGeoVolume("ITSsupCableTrayMotherMT24",sMT24,medSUPair);
+ vMT24->SetVisibility(kTRUE);
+ vMT24->SetLineColor(8); // white
+ vMT24->SetLineWidth(1);
+ vMT24->SetFillColor(vMT24->GetLineColor());
+ vMT24->SetFillStyle(4100); // 100% transparent
+ //
+ vU24 = new TGeoVolume("ITSsupCableTrayLowerU24",sU24,medSUPair);
+ vU24->SetVisibility(kTRUE);
+ vU24->SetLineColor(7); // light blue
+ vU24->SetLineWidth(1);
+ vU24->SetFillColor(vU24->GetLineColor());
+ vU24->SetFillStyle(4090); // 90% transparent
+ vUFMD24 = new TGeoVolume("FMDsupCableTrayLowerU24",sU24,medSUPair);
+ vUFMD24->SetVisibility(kTRUE);
+ vUFMD24->SetLineColor(7); // light blue
+ vUFMD24->SetLineWidth(1);
+ vUFMD24->SetFillColor(vUFMD24->GetLineColor());
+ vUFMD24->SetFillStyle(4090); // 90% transparent
+ vVl24 = new TGeoVolume("ITSsupCableTrayUpperV24",sVl24,medSUPair);
+ vVl24->SetVisibility(kTRUE);
+ vVl24->SetLineColor(7); // light blue
+ vVl24->SetLineWidth(1);
+ vVl24->SetFillColor(vVl24->GetLineColor());
+ vVl24->SetFillStyle(4090); // 90% transparent
+ vVlFMD24 = new TGeoVolume("FMDsupCableTrayUpperVl24",sVl24,medSUPair);
+ vVlFMD24->SetVisibility(kTRUE);
+ vVlFMD24->SetLineColor(7); // light blue
+ vVlFMD24->SetLineWidth(1);
+ vVlFMD24->SetFillColor(vVlFMD24->GetLineColor());
+ vVlFMD24->SetFillStyle(4090); // 90% transparent
+ vVs24 = new TGeoVolume("ITSsupCableTrayUpperVs24",sVs24,medSUPair);
+ vVs24->SetVisibility(kTRUE);
+ vVs24->SetLineColor(7); // light blue
+ vVs24->SetLineWidth(1);
+ vVs24->SetFillColor(vVs24->GetLineColor());
+ vVs24->SetFillStyle(4090); // 90% transparent
+ vW24 = new TGeoVolume("ITSsupCableTrayUpperW24",sW24,medSUPair);
+ vW24->SetVisibility(kTRUE);
+ vW24->SetLineColor(7); // light blue
+ vW24->SetLineWidth(1);
+ vW24->SetFillColor(vW24->GetLineColor());
+ vW24->SetFillStyle(4090); // 90% transparent
+ //
+ vWTV024 = new TGeoVolume("V0supCableTrayUpperWTV024",sW24,medSUPair);
+ vWTV024->SetVisibility(kTRUE);
+ vWTV024->SetLineColor(7); // light blue
+ vWTV024->SetLineWidth(1);
+ vWTV024->SetFillColor(vWTV024->GetLineColor());
+ vWTV024->SetFillStyle(4090); // 90% transparent
+ //
+ vV3PP24 = new TGeoVolume("ITSsup3BayPachPannelInsideV3PP24",sV3PP24,medSUPair);
+ vV3PP24->SetVisibility(kTRUE);
+ vV3PP24->SetLineColor(8); // white
+ vV3PP24->SetLineWidth(1);
+ vV3PP24->SetFillColor(vV3PP24->GetLineColor());
+ vV3PP24->SetFillStyle(4100); // 100% transparent
+ vV2PP24 = new TGeoVolume("ITSsup2BayPachPannelInsideV2PP24",sV2PP24,medSUPair);
+ vV2PP24->SetVisibility(kTRUE);
+ vV2PP24->SetLineColor(8); // white
+ vV2PP24->SetLineWidth(1);
+ vV2PP24->SetFillColor(vV2PP24->GetLineColor());
+ vV2PP24->SetFillStyle(4100); // 100% transparent
+ vV2PPFMD24 = new TGeoVolume("FMDsup2BayPachPannelInsideV2PP24",sV2PP24,medSUPair);
+ vV2PPFMD24->SetVisibility(kTRUE);
+ vV2PPFMD24->SetLineColor(8); // white
+ vV2PPFMD24->SetLineWidth(1);
+ vV2PPFMD24->SetFillColor(vV2PPFMD24->GetLineColor());
+ vV2PPFMD24->SetFillStyle(4100); // 100% transparent
+ //
+ delete rot;
+ delete rot1;
+ //
+ Double_t tha[kct24Ntrays],thb[kft24NPatchPannels];
+ for(i=0;i<kct24Ntrays/4;i++) {
+ if(i==0) tha[0] = 17.0+0.5*kft24Theta;
+ else tha[i] = tha[i-1] + kft24Theta;
+ tha[i+ kct24Ntrays/4] = 90.0 + tha[i];
+ tha[i+ kct24Ntrays/2] = 180.0 + tha[i];
+ tha[i+3*kct24Ntrays/4] = 270.0 + tha[i];
+ } // end for i
+ if(AliDebugLevel()) for(i=0;i<kct24Ntrays;i++) Info("ServicesCableSupport",
+ "tha[%d]=%f",i,tha[i]);
+ Char_t *airName[kct24Ntrays]={"FMD0","SDD0","SSD0","SSD1","SPD0","SPD1",
+ "TV00","SDD1","SDD2","SPD2","SPD3","ALG0",
+ "SPD4","SPD5","SSD2","SSD3","SPD6","SPD7",
+ "TV01","SDD3","SDD4","SPD8","SPD9","ALG1",
+ "FMD1","SDD5","SSD4","SSD5","SPDA","SPDB",
+ "TV02","SDD6","SDD7","SPDC","SPDD","ALG2",
+ "SPDE","SPDF","SSD6","SSD7","SPDG","SPDH",
+ "TV03","SDD8","SDD9","SPDI","SPDJ","ALG3"};
+ Char_t *trayName[kct24Ntrays]={"FMD0","SSD0","SSD1","SSD2","SSD3","SPD0",
+ "TV00","SDD0","SDD1","SDD2","SPD1","ALG0",
+ "SPD2","SSD4","SSD5","SSD6","SSD7","SPD3",
+ "TV01","SDD3","SDD4","SDD5","SPD4","ALG1",
+ "FMD1","SSD8","SSD9","SSDA","SSDB","SPD5",
+ "TV02","SDD6","SDD7","SDD8","SPD6","ALG2",
+ "SPD7","SSDC","SSDD","SSDE","SSDF","SPD8",
+ "TV03","SDD9","SDDA","SDDB","SPD9","ALG3"};
+ //
+ //Int_t ncopyW24=1,ncopyU24=1,ncopyV24=1;
+ j = 0;
+ for(i=0;i<kct24Ntrays;i++){
+ if(strncmp(trayName[i],"FMD",3)==0){
+ sprintf(name,"FMDsupCableTrayT24[%s]",trayName[i]);
+ vT24[i] = new TGeoVolume(name,sTl24,medSUPal);
+ vT24[i]->AddNode(vVlFMD24,1,0);
+ }else if(strncmp(trayName[i],"TV0",3)==0){
+ sprintf(name,"V0supCableTrayT24[%s]",trayName[i]);
+ vT24[i] = new TGeoVolume(name,sT24,medSUPal);
+ vT24[i]->AddNode(vWTV024,1,0);
+ }else if(strncmp(trayName[i],"ALG",3)==0){ // ITS Alignment Channel
+ sprintf(name,"ITSsupCableTrayT24[%s]",trayName[i]);
+ vT24[i] = new TGeoVolume(name,sT24,medSUPal);
+ vT24[i]->AddNode(vW24,1,0);
+ }else if(strncmp(trayName[i],"SPD",3)==0){ /*ITS SPD*/
+ sprintf(name,"ITSsupCableTrayT24[%s]",trayName[i]);
+ vT24[i] = new TGeoVolume(name,sTl24,medSUPal);
+ vT24[i]->AddNode(vVl24,1,0);
+ }else { /*ITS*/
+ sprintf(name,"ITSsupCableTrayT24[%s]",trayName[i]);
+ vT24[i] = new TGeoVolume(name,sTs24,medSUPal); /// replace solid
+ vT24[i]->AddNode(vVs24,1,0);
+ } // end if
+ vT24[i]->SetVisibility(kTRUE);
+ vT24[i]->SetLineColor(6); // purple
+ vT24[i]->SetLineWidth(1);
+ vT24[i]->SetFillColor(vT24[i]->GetLineColor());
+ vT24[i]->SetFillStyle(4000); // 0% transparent
+ rot = new TGeoRotation("",0.0,0.0,tha[i]-90.0);
+ if(AliDebugLevel()) rot->Print();
+ vMT24->AddNode(vT24[i],1,rot);
+ //
+ if(strncmp(trayName[i],"FMD",3)==0){
+ sprintf(name,"FMDsupAirTubeTrayT24[%s]",airName[i]);
+ vC24[j] = new TGeoVolume(name,sTt24,medSUPair);
+ vC24[j]->AddNode(vUFMD24,1,0);
+ }else if(strncmp(trayName[i],"TV0",3)==0){
+ continue;
+ }else if(strncmp(trayName[i],"ALG",3)==0){
+ continue;
+ }else{ /*ITS*/
+ sprintf(name,"ITSsupAirTubTrayT24[%s]",airName[i]);
+ vC24[j] = new TGeoVolume(name,sTt24,medSUPair);
+ vC24[j]->AddNode(vU24,1,0);
+ } // end if
+ vC24[j]->SetVisibility(kTRUE);
+ vC24[j]->SetLineColor(6); // purple
+ vC24[j]->SetLineWidth(1);
+ vC24[j]->SetFillColor(vC24[j]->GetLineColor());
+ vC24[j]->SetFillStyle(4000); // 0% transparent
+ vMT24->AddNode(vC24[j++],1,rot);
+ } // end for i
+ for(i=0;i<kft24NPatchPannels/4;i++) {
+ if(i==0) thb[0] = 17.0+0.5*kft24Theta;
+ else{
+ if(i%2) thb[i] = thb[i-1] + 3.0*kft24Theta;
+ else thb[i] = thb[i-1] + 2.0*kft24Theta;
+ } // end if-else
+ thb[i+ kft24NPatchPannels/4] = 90.0 + thb[i];
+ thb[i+ kft24NPatchPannels/2] = 180.0 + thb[i];
+ thb[i+3*kft24NPatchPannels/4] = 270.0 + thb[i];
+ } // end for i
+ Char_t *pachName[kft24NPatchPannels]={"FMD0","SSD0","SPD0","SDD0","SPD1",
+ "SPD2","SSD1","SPD3","SDD1","SPD4",
+ "FMD1","SSD2","SPD5","SDD2","SPD6",
+ "SPD7","SSD3","SPD8","SDD3","SPD9"};
+ for(i=0;i<kft24NPatchPannels;i++){
+ if(strncmp(pachName[i],"FMD",3)==0){
+ sprintf(name,"FMDsupPatchPannelPP24[%s]",pachName[i]);
+ vPP24[i] = new TGeoVolume(name,s2PP24,medSUPal);
+ vPP24[i]->AddNode(vV2PPFMD24,1,0);
+ }else if(strncmp(pachName[i],"SPD",3)==0){ /*ITS SPD*/
+ sprintf(name,"ITSsupPathcPannelPP24[%s]",pachName[i]);
+ vPP24[i] = new TGeoVolume(name,s2PP24,medSUPal);
+ vPP24[i]->AddNode(vV2PP24,1,0);
+ }else { /*ITS*/
+ sprintf(name,"ITSsupPathcPannelPP24[%s]",pachName[i]);
+ vPP24[i] = new TGeoVolume(name,s3PP24,medSUPal); /// replace solid
+ vPP24[i]->AddNode(vV3PP24,1,0);
+ } // end if
+ vPP24[i]->SetVisibility(kTRUE);
+ vPP24[i]->SetLineColor(6); // purple
+ vPP24[i]->SetLineWidth(1);
+ vPP24[i]->SetFillColor(vPP24[i]->GetLineColor());
+ vPP24[i]->SetFillStyle(4000); // 0% transparent
+ rot = new TGeoRotation("",0.0,0.0,thb[i]-90.0);
+ if(AliDebugLevel()) rot->Print();
+ vMT24->AddNode(vPP24[i],1,rot);
+ } // end for i
+ tran = new TGeoTranslation("",0.0,0.0,kfrm24Z0);
+ moth->AddNode(vMT24,1,tran);
+ if(AliDebugLevel()){
+ for(i=0;i<kct24Ntrays;i++) vT24[i]->PrintNodes();
+ for(i=0;i<kct24Ntrays-8;i++) vC24[i]->PrintNodes();
+ vU24->PrintNodes();
+ vUFMD24->PrintNodes();
+ vVl24->PrintNodes();
+ vVlFMD24->PrintNodes();
+ vVs24->PrintNodes();
+ vW24->PrintNodes();
+ vWTV024->PrintNodes();
+ vMT24->PrintNodes();
+ } // end if
//==================================================================
//
- // RB 26 side
+ // RB 26, Muon Absober side
const Double_t kfrm26Z0 = -900*fgkmm;//SSup_203A.jpg
const Double_t kfrm26Thss = 5.0*fgkmm;
const Double_t kfrm26R0ss = 444.5*fgkmm-kfrm26Thss; //SSup_204A.jpg
const Int_t kfrm26NPhi = 4;
TGeoConeSeg *sA26[kfrm26NZsections+1],*sM26;//Cylinderial support structure
TGeoArb8 *sB26; // Cylinderial support structure
- Char_t name[100];
- Double_t r1,r2,m;
sM26 = new TGeoConeSeg("ITS sup Cable tray support frame mother volume "
"M26",0.5*(4.*kfrm26ZssSection+5*kfrm26Width),
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(AliDebugLevel()){
+ for(i=0;i<kfrm26NZsections+1;i++) sA26[i]->InspectShape();
+ sM26->InspectShape();
+ sB26->InspectShape();
+ } // end if AliDebugLevel()
+ //
TGeoVolume *vA26[kfrm26NZsections+1],*vB26,*vM26;
//
for(i=0;i<kfrm26NZsections+1;i++){
delete rot; // rot not explicity used in AddNode functions.
moth->AddNode(vM26,i+1,tranrot);
} // end for i
- if(GetDebug()){
+ if(AliDebugLevel()){
for(i=0;i<kfrm26NZsections+1;i++) vA26[i]->PrintNodes();
vB26->PrintNodes();
vM26->PrintNodes();