From 9c8369f9420434b5e3da2f4850d90ef308f86a71 Mon Sep 17 00:00:00 2001 From: masera Date: Tue, 19 Oct 2010 20:11:13 +0000 Subject: [PATCH] Revision of material definitions and implementation of small chip cables to improve material budget. (M.Sitta) --- ITS/AliITSv11GeometrySDD.cxx | 196 +++++++++++++++++++++++++++++------ ITS/AliITSv11GeometrySDD.h | 7 ++ ITS/AliITSv11Hybrid.cxx | 62 +++++++++-- 3 files changed, 229 insertions(+), 36 deletions(-) diff --git a/ITS/AliITSv11GeometrySDD.cxx b/ITS/AliITSv11GeometrySDD.cxx index 80a95cbd75b..2948b650dac 100755 --- a/ITS/AliITSv11GeometrySDD.cxx +++ b/ITS/AliITSv11GeometrySDD.cxx @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -53,11 +54,12 @@ const char* AliITSv11GeometrySDD::fgSDDsensitiveVolName3 = "ITSsddSensitivL3"; const char* AliITSv11GeometrySDD::fgSDDsensitiveVolName4 = "ITSsddSensitivL4"; -const Double_t AliITSv11GeometrySDD::fgkSegmentLength = 37.2*2*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkSegmentLength = 37.21*2*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLadderWidth = 50.0*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLadderHeight = 30.0*fgkmm; -const Double_t AliITSv11GeometrySDD::fgkLadderSegBoxDW = 3.5*fgkmm; -const Double_t AliITSv11GeometrySDD::fgkLadderSegBoxDH = 3.*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkLadderSegBoxDW = 7.5*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkLadderSegBoxDH = 7.1*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkLadderSegBoxDHCorr= 2.1*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLadderBeamRadius = 0.6*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLadderLa = 3.*fgkmm; @@ -108,7 +110,7 @@ const Double_t AliITSv11GeometrySDD::fgkBTBHoleRefX = 10 *fgkmm; const Double_t AliITSv11GeometrySDD::fgkBTBHoleRefY = 6.5 *fgkmm; const Double_t AliITSv11GeometrySDD::fgkLay3Rmin = 129.*fgkmm; -const Double_t AliITSv11GeometrySDD::fgkLay3Rmax = 200.*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkLay3Rmax = 205.*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLay3Length = (524.+0.)*fgkmm; // ladder+supporting rings (length of the virtual tube) const Double_t AliITSv11GeometrySDD::fgkLay3LadderLength = 524.*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLay3DetShortRadius = 146.0*fgkmm; @@ -119,7 +121,7 @@ const Int_t AliITSv11GeometrySDD::fgkLay3Nladd = 14; const Double_t AliITSv11GeometrySDD::fgkLay3CoolPipeSuppH = 7.5*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLay4Rmin = 220.*fgkmm; -const Double_t AliITSv11GeometrySDD::fgkLay4Rmax = 286.*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkLay4Rmax = 291.*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLay4Length = (671.+0.)*fgkmm; // ladder+supporting rings (length of the virtual tube) const Double_t AliITSv11GeometrySDD::fgkLay4LadderLength = 671.*fgkmm; const Double_t AliITSv11GeometrySDD::fgkLay4DetShortRadius = 235.0*fgkmm; @@ -160,6 +162,10 @@ const Double_t AliITSv11GeometrySDD::fgkHybFLUpperLength = 59.878*fgkmm; const Double_t AliITSv11GeometrySDD::fgkHybFLUpperAlDZ = 11.183*fgkmm; const Double_t AliITSv11GeometrySDD::fgkHybFLUpperAldx = 2.307*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkHybCC2SensorLen = 12.000*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkHybCC2SensorWid = 1.490*fgkcm; //??? +const Double_t AliITSv11GeometrySDD::fgkHybCC2SensorAng = 40.0; + const Double_t AliITSv11GeometrySDD::fgkmu = 1*fgkmicron; // 1*fgkmicron; // can be increase for checking thin objects const Double_t AliITSv11GeometrySDD::fgkHybridThBridgeThick = 0.25*fgkmm; // ??? const Double_t AliITSv11GeometrySDD::fgkHybAlThick = 30*fgkmu; @@ -470,6 +476,9 @@ const Double_t AliITSv11GeometrySDD::fgkSectionCoolWaterEL = 0.3496; const Double_t AliITSv11GeometrySDD::fgkEndLadderEarthCableR = 0.5*fgkmm; // (sections are given in cm square) const Double_t AliITSv11GeometrySDD::fgkCableBendRatio = 1.3; // ??? this factor account for the bending of cables +const Double_t AliITSv11GeometrySDD::fgkHybridAlFoilThick = 0.1*fgkmm; // Thickness of Al foil on hybrid side - TO BE CHECKED +const Double_t AliITSv11GeometrySDD::fgkHybridAlFoilWide = 4.2*fgkmm; // Width of Al foil on hybrid side - from digitCableA +const Double_t AliITSv11GeometrySDD::fgkHybridAlFoilSide = 2.0*fgkmm; // Side length of Al foil on hybrid side const Double_t AliITSv11GeometrySDD::fgkConeSDDr1 = 11.87574*fgkcm; const Double_t AliITSv11GeometrySDD::fgkConeSDDr2 = 26.07574*fgkcm; @@ -819,9 +828,9 @@ void AliITSv11GeometrySDD::CreateBasicObjects() { TGeoMedium *carbonFiberLadderStruct = GetMedium("SDD C AL (M55J)$"); //ITSsddCarbonM55J TGeoMedium *polyhamideSDD = GetMedium("SDDKAPTON (POLYCH2)$");//ITSsddKAPTON_POLYCH2 TGeoMedium *alSDD = GetMedium("AL$"); //ITSal - TGeoMedium *stainless = GetMedium("INOX$"); // for screws, what is the material ??????????? + TGeoMedium *stainless = GetMedium("AISI304L$"); // for screws TGeoMedium *coolerMediumSDD = GetMedium("WATER$"); - TGeoMedium *raccordMedium = GetMedium("INOX$"); // ??? material of raccordo ??? + TGeoMedium *raccordMedium = GetMedium("INOX$"); // same as AISI 316-L //******************************************************************** // pieces of the carbon fiber structure @@ -2016,15 +2025,34 @@ TGeoVolume* AliITSv11GeometrySDD::CreateHybrid(Int_t iLRSide) { TGeoMedium *alSDD80p100 = GetMedium("AL$"); // to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TGeoMedium *alSDD50p100 = GetMedium("AL$"); // to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TGeoMedium *polyhamideSDD = GetMedium("SDDKAPTON (POLYCH2)$"); //ITSsddKAPTON_POLYCH2 - TGeoMedium *niSDD = GetMedium("COPPER$"); // to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *niSDD = GetMedium("NICKEL$"); TGeoMedium *glueAG = GetMedium("SDDKAPTON (POLYCH2)$"); // to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TGeoMedium *siliconSDD = GetMedium("SDD SI CHIP$"); //ITSsddSiChip - TGeoMedium *medSMD = GetMedium("SDD X7R capacitors$"); // SDDX7Rcapacitors TO CHECK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TGeoMedium *medSMDweld = GetMedium("SDD X7R capacitors$"); // SDDX7Rcapacitors TO CHECK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *medSMD = GetMedium("SDD X7R capacitors$"); // SDDX7Rcapacitors + TGeoMedium *medSMDweld = GetMedium("SDD X7R weld$"); //**************************************************** main volume : - TGeoBBox *hybridBox = new TGeoBBox("",fgkHybridWidth/2, volumeThick/2, - (fgkHybridLength)/2); +// TGeoBBox *hybridBox = new TGeoBBox("",fgkHybridWidth/2, volumeThick/2, +// (fgkHybridLength)/2); + Double_t xhybr[6],yhybr[6]; + xhybr[0] = -fgkHybridWidth/2; + yhybr[0] = -volumeThick/2; + xhybr[1] = fgkHybridWidth/2; + yhybr[1] = -volumeThick/2; + xhybr[2] = fgkHybridWidth/2; + yhybr[2] = volumeThick/2; + xhybr[3] = -fgkHybridWidth/2; + yhybr[3] = volumeThick/2; + xhybr[4] = xhybr[3] - 1.05*fgkHybCC2SensorLen*SinD(fgkHybCC2SensorAng); + yhybr[4] = yhybr[3] - 1.05*fgkHybCC2SensorLen*CosD(fgkHybCC2SensorAng); + xhybr[5] = xhybr[4]; + yhybr[5] = yhybr[4] - volumeThick; + + TGeoXtru *hybridBox = new TGeoXtru(2); + hybridBox->DefinePolygon(6, xhybr, yhybr); + hybridBox->DefineSection(0,-fgkHybridLength/2); + hybridBox->DefineSection(1, fgkHybridLength/2); + TGeoVolume *hybrid = new TGeoVolume("ITSsddHybridVol", hybridBox, airSDD); @@ -2134,7 +2162,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreateHybrid(Int_t iLRSide) { TGeoBBox *sAlBar2 = new TGeoBBox("sAlBar2", fgkHybridWidth/2, fgkHybAlThick/2, sideWidth2/2); - TGeoTranslation *upGlueBarTr2 = new TGeoTranslation("upGlueBarTr2", 0, + TGeoTranslation *upGlueBarTr2 = new TGeoTranslation("upGlueBarTr2", 0, lowLayerYmin+(fgkHybGlueLowThick+fgkHybUpThick)/2, (fgkHybridLength-sideWidth2)/2); TGeoTranslation *alBarTr2 = new TGeoTranslation("alBarTr2", 0, @@ -2325,6 +2353,48 @@ TGeoVolume* AliITSv11GeometrySDD::CreateHybrid(Int_t iLRSide) { ccLayer2.AddCheckPoint( hybrid, 0, x1, vX ); ccLayer2.AddCheckPoint( hybrid, 1, x2, vX ); ccLayer2.CreateAndInsertBoxCableSegment(1,-90); + + //**************************************************** CC to sensors: + // (alas, we cannot use GeomCableFlat here because section is not constant) + Double_t xcc[6],ycc[6]; + xcc[0] = -0.5*ccLayer1.GetWidth(); + ycc[0] = 0; + xcc[1] = 0.5*ccLayer1.GetWidth(); + ycc[1] = 0; + xcc[2] = xcc[1]; + ycc[2] = -fgkHybCC2SensorLen; + xcc[3] = xcc[2] - fgkHybCC2SensorWid; + ycc[3] = ycc[2]; + xcc[4] = xcc[3]; + ycc[4] = 0.8*ycc[3]; + xcc[5] = xcc[0]; + ycc[5] = 0.2*ycc[3]; + + TGeoXtru* ccToSensPoliSh = new TGeoXtru(2); + ccToSensPoliSh->DefinePolygon(6, xcc, ycc); + ccToSensPoliSh->DefineSection(0, 0.); + ccToSensPoliSh->DefineSection(1, ccLayer1.GetThickness()); + + sprintf(ch, "ccToSens%i", i); + TGeoVolume* ccToSensPoliVol = new TGeoVolume(ch, ccToSensPoliSh, polyhamideSDD); + ccToSensPoliVol->SetLineColor(fColorPolyhamide); + + TGeoXtru* ccToSensAlSh = new TGeoXtru(2); + ccToSensAlSh->DefinePolygon(6, xcc, ycc); + ccToSensAlSh->DefineSection(0, 0.); + ccToSensAlSh->DefineSection(1, fgkHybAlCCThick); + + sprintf(ch, "ccToSensAl%i", i); + TGeoVolume* ccToSensAlVol = new TGeoVolume(ch, ccToSensAlSh, alSDD50p100); + ccToSensAlVol->SetLineColor(fColorAl); + + ccToSensPoliVol->AddNode(ccToSensAlVol, 1, 0); + + Double_t coord[3]; + ccLayer1.GetPoint(0,coord); + hybrid->AddNode(ccToSensPoliVol, i+1, + new TGeoCombiTrans(coord[0], coord[1], coord[2], + new TGeoRotation("",-90-fgkHybCC2SensorAng, 90, 90))); }; //**************************************************** FL UP: @@ -2425,6 +2495,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { TGeoMedium *phynoxSDD = GetMedium("INOX$"); TGeoMedium *coolerMediumSDD = GetMedium("WATER$"); TGeoMedium *airSDD = GetMedium("SDD AIR$"); + TGeoMedium *alSDD = GetMedium("AL$"); Double_t tDY = fgkLadderSegBoxDH/2; //space left on top of the ladder Double_t segmentLength = fgkSegmentLength; @@ -2488,11 +2559,36 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { //TGeoVolumeAssembly *virtualSeg = new TGeoVolumeAssembly("ITSsddSegment"); - TGeoBBox *segBox = new TGeoBBox("ITSsddSegBox", - fgkLadderWidth/2+fgkPinSuppWidth+fgkLadderSegBoxDW, - fgkLadderHeight/2+fgkLadderSegBoxDH/2, - segmentLength/2); - +// TGeoBBox *segBox = new TGeoBBox("ITSsddSegBox", +// fgkLadderWidth/2+fgkPinSuppWidth+fgkLadderSegBoxDW, +// fgkLadderHeight/2+fgkLadderSegBoxDH/2, +// segmentLength/2); + // A shaped Xtru instead of a simple BBox to avoid overlaps and extrusions + TGeoXtru *segBox = new TGeoXtru(2); + segBox->SetName("ITSsddSegBox"); + + Double_t xseg[8],yseg[8]; + xseg[0] = -(fgkLadderWidth/2+fgkPinSuppWidth+fgkLadderSegBoxDW); + yseg[0] = fgkLadderHeight/2+fgkLadderSegBoxDH/2; + xseg[1] = xseg[0]; + yseg[1] = -yseg[0]; + xseg[2] = -xseg[1]; + yseg[2] = yseg[1]; + xseg[3] = xseg[2]; + yseg[3] = yseg[0]; + xseg[4] = 0.35*xseg[3]; + yseg[4] = yseg[3]; + xseg[5] = xseg[4]; + yseg[5] = yseg[4] + fgkLadderSegBoxDHCorr; + xseg[6] = -xseg[4]; + yseg[6] = yseg[5]; + xseg[7] = xseg[6]; + yseg[7] = yseg[0]; + + segBox->DefinePolygon(8, xseg, yseg); + segBox->DefineSection(0,-segmentLength/2); + segBox->DefineSection(1, segmentLength/2); + TGeoVolume *virtualSeg = new TGeoVolume("ITSsddSegment", segBox, airSDD); virtualSeg->SetVisibility(kFALSE); @@ -2575,7 +2671,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { virtualSeg->AddNode(fPinSupport, 7, transPS7); virtualSeg->AddNode(fPinSupport, 8, transPS8); - TGeoMedium *pinMed = GetMedium("SDDKAPTON (POLYCH2)$"); // medium ??? + TGeoMedium *pinMed = GetMedium("RYTON$"); Double_t fgkPinHeight = 4.5*fgkmm; TGeoTube *pineS = new TGeoTube("ITSsddPin",0,fgkPinR, fgkPinHeight/2.); @@ -2727,8 +2823,8 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { //*********** if (fAddCables) { // Starting from this segment - Double_t hybDz = ((TGeoBBox*)fHybrid->GetShape())->GetDZ(); - Double_t hybDx = ((TGeoBBox*)fHybrid->GetShape())->GetDX(); + Double_t hybDz = ((TGeoXtru*)fHybrid->GetShape())->GetZ(1); + Double_t hybDx = ((TGeoXtru*)fHybrid->GetShape())->GetX(1); Double_t posDigitCableAlongHyb = shiftHyb+ hybDx - digitCableA->GetWidth()/2; Double_t distAxeToDigitCableCenter = distAxeToHybridCenter+hybDy @@ -2773,6 +2869,46 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { digitCableB[iCable].GetPoint( 1, coord); digitCableB[iCable].AddCheckPoint( virtualSeg, iPoint, coord, vZ); }; + + // Now the small Al foil on the same hybrid side + Double_t xfoil[5],yfoil[5]; + hybDx *= 0.95; + xfoil[0] = -fgkHybridAlFoilWide/2; + yfoil[0] = hybDx; + xfoil[1] = fgkHybridAlFoilWide/2; + yfoil[1] = yfoil[0]; + xfoil[2] = xfoil[1]; + yfoil[2] = -hybDx + (fgkHybridAlFoilWide - fgkHybridAlFoilSide); + xfoil[3] = xfoil[0] + fgkHybridAlFoilSide; + yfoil[3] = -hybDx; + xfoil[4] = xfoil[0]; + yfoil[4] = yfoil[3]; + + TGeoXtru* alFoilSh = new TGeoXtru(2); + alFoilSh->DefinePolygon(5, xfoil, yfoil); + alFoilSh->DefineSection(0,-fgkHybridAlFoilThick/2); + alFoilSh->DefineSection(1, fgkHybridAlFoilThick/2); + + TGeoVolume* alFoilVol = new TGeoVolume("ITSsddAlFoilHybSide", alFoilSh, alSDD); + alFoilVol->SetLineColor(fColorAl); + + Double_t zFoilTrans = cableSideSign*(hybDz + alFoilSh->GetX(1)); + TGeoRotation rotFoil3; + TGeoRotation rotFoil4; + if (cableSideSign > 0) { + rotFoil3 = TGeoRotation("", 90-fgkHybridAngle, -90, -90); + rotFoil4 = TGeoRotation("",-90+fgkHybridAngle, 90, 90); + } else { + rotFoil3 = TGeoRotation("", 90-fgkHybridAngle, 90, -90); + rotFoil4 = TGeoRotation("",-90+fgkHybridAngle, -90, 90); + } + TGeoCombiTrans *foiTr1 = new TGeoCombiTrans(*pipeTr2, rotFoil3); + TGeoCombiTrans *foiTr2 = new TGeoCombiTrans(*pipeTr1, rotFoil4); + AddTranslationToCombiTrans( foiTr1, -hybrVolX, hybrVolY, zFoilTrans); + AddTranslationToCombiTrans( foiTr2, hybrVolX, hybrVolY, zFoilTrans); + + virtualSeg->AddNode(alFoilVol, 1, foiTr1); + virtualSeg->AddNode(alFoilVol, 2, foiTr2); }; //********************************** @@ -2787,7 +2923,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreatePinSupport() { // Create a pine support and its pine // axis of rotation is the cone axis, center in its middle // - TGeoMedium *rytonSDD = GetMedium("SDD C AL (M55J)$"); //medium = ryton ? + TGeoMedium *rytonSDD = GetMedium("RYTON$"); TGeoCone *cone = new TGeoCone("ITSsddPinSuppCone",fgkPinSuppHeight/2., 0,fgkPinSuppRmax,0,fgkPinSuppRmax- @@ -2890,7 +3026,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreateCoolPipeSupportL() { axe->InspectShape(); }; - TGeoMedium *rytonSDD = GetMedium("SDD C AL (M55J)$"); //medium = ryton ? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *rytonSDD = GetMedium("RYTON$"); TGeoCompositeShape *coolPipeSuppShape = new TGeoCompositeShape( "ITSsddCoolPipeSuppShapeL", @@ -2990,7 +3126,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreateCoolPipeSupportR() { "+ITSsddCPSaxeBoxR:ITSsddCPSAxBoxTrR" "-ITSsddCPSaxeR:ITSsddCPSaxeTrR"); - TGeoMedium *rytonSDD = GetMedium("SDD C AL (M55J)$"); //medium = ryton ? To code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *rytonSDD = GetMedium("RYTON$"); TGeoVolume *coolPipeSupp = new TGeoVolume( "ITSsddCoolPipeSupportR", coolPipeSuppShape, rytonSDD); coolPipeSupp->SetLineColor(fColorRyton); @@ -3478,12 +3614,12 @@ TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateCarlosCard(Int_t iLay) { // (void) iLay; - TGeoMedium *glassFiber = GetMedium("SDD SI CHIP$");// glassFiber TO CODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *glassFiber = GetMedium("GLASS FIBER$");// glassFiber TGeoMedium *siliconChip = GetMedium("SDD SI CHIP$");// ITSsddSiChip TGeoMedium *plastiChip = GetMedium("SDDKAPTON (POLYCH2)$"); // ITSsddKAPTON_POLYCH2 TGeoMedium *copper = GetMedium("COPPER$"); TGeoMedium *alCu12SDD = GetMedium("INOX$"); // ITSsddAlCu12, to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TGeoMedium *stainless = GetMedium("INOX$"); // for screws, what is the material ??????????? + TGeoMedium *stainless = GetMedium("AISI304L$"); // for screws //========================================= // cooling support of the Carlos card (HeatBridge): @@ -3766,12 +3902,12 @@ Int_t AliITSv11GeometrySDD::CreateLVCard() { // Creates the assemblies containing the LV cards (left and right) // - TGeoMedium *glassFiber = GetMedium("SDD SI CHIP$");// glassFiber TO CODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *glassFiber = GetMedium("GLASS FIBER$");// glassFiber TGeoMedium *siliconChip = GetMedium("SDD SI CHIP$");// ITSsddSiChip TGeoMedium *plastiChip = GetMedium("SDDKAPTON (POLYCH2)$"); // ITSsddKAPTON_POLYCH2 TGeoMedium *copper = GetMedium("COPPER$"); TGeoMedium *alCu12SDD = GetMedium("INOX$"); // ITSsddAlCu12, to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TGeoMedium *stainless = GetMedium("INOX$"); // for screws, what is the material ??????????? + TGeoMedium *stainless = GetMedium("AISI304L$"); // for screws fCardLVL = new TGeoVolumeAssembly("ITSsddLVCardLeft"); fCardLVR = new TGeoVolumeAssembly("ITSsddLVCardRight"); @@ -4011,8 +4147,8 @@ TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateHVCard(Int_t iLay){ iLay = iLay; TGeoMedium *ceramic = GetMedium("CERAMICS$"); // ceramicHVcard - TGeoMedium *medSMDcapaMiddle = GetMedium("SDD X7R capacitors$"); // TO CODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TGeoMedium *medSMDcapaEnd = GetMedium("SDD X7R capacitors$"); // SDDX7RcapacitorsSDD TO CODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TGeoMedium *medSMDcapaMiddle = GetMedium("SDD X7R capacitors$"); // check if different + TGeoMedium *medSMDcapaEnd = GetMedium("SDD X7R capacitors$"); // check if different TGeoMedium *stainless = GetMedium("INOX$"); // ITSspdStainlesSteal ??????????? TGeoMedium *plastic = GetMedium("SDDKAPTON (POLYCH2)$"); // ITS_ITSsddKAPTON_POLYCH2 ??????????? TGeoMedium *alCu12SDD = GetMedium("INOX$"); // ITSsddAlCu12 : to code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/ITS/AliITSv11GeometrySDD.h b/ITS/AliITSv11GeometrySDD.h index f978dddcc57..dc13d297c7c 100755 --- a/ITS/AliITSv11GeometrySDD.h +++ b/ITS/AliITSv11GeometrySDD.h @@ -212,6 +212,7 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry { static const Double_t fgkLadderHeight; // including bottom beam static const Double_t fgkLadderSegBoxDW; // To include hybrids in box static const Double_t fgkLadderSegBoxDH; // To include hybrids in box + static const Double_t fgkLadderSegBoxDHCorr; // To include hybrids in box static const Double_t fgkLadderBeamRadius; // carbon fiber beam radius static const Double_t fgkLadderLa; // parameters defining @@ -309,6 +310,9 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry { static const Double_t fgkHybGlueUpThick; // === static const Double_t fgkHybAlCCThick; // === static const Double_t fgkHybUpCCThick; // === + static const Double_t fgkHybCC2SensorLen; // === + static const Double_t fgkHybCC2SensorWid; // === + static const Double_t fgkHybCC2SensorAng; // === static const Double_t fgkHybChipThick; // === static const Double_t fgkHybGlueAgThick; // === static const Double_t fgkHybUnderNiThick; // === @@ -582,6 +586,9 @@ class AliITSv11GeometrySDD : public AliITSv11Geometry { static const Double_t fgkSectionCoolWaterEL; // area of cooling water on End Ladders static const Double_t fgkEndLadderEarthCableR; // radius of the earth cable on End Ladders static const Double_t fgkCableBendRatio; // ??? this factor account for the bending of cables + static const Double_t fgkHybridAlFoilThick; // Thickness of Al foil on hybrid side + static const Double_t fgkHybridAlFoilWide; // Width of Al foil on hybrid side + static const Double_t fgkHybridAlFoilSide; // Side length of Al foil on hybrid side static const Double_t fgkConeSDDr1; // define SDD cone slope and pos static const Double_t fgkConeSDDr2; // define SDD cone slope and pos diff --git a/ITS/AliITSv11Hybrid.cxx b/ITS/AliITSv11Hybrid.cxx index 8b7ef1a7d2c..a21f7ad146a 100644 --- a/ITS/AliITSv11Hybrid.cxx +++ b/ITS/AliITSv11Hybrid.cxx @@ -5319,6 +5319,13 @@ void AliITSv11Hybrid::CreateMaterials(){ Float_t wINOX[9]={0.0003,0.02,0.01,0.00045,0.0003,0.12,0.17,0.025,0.654}; Float_t dINOX = 8.03; + //AISI 304 L (from F.Tosello's web page - M.S. 18 Oct 10) + + Float_t a304L[8]={12.0107,54.9380, 28.0855,30.9738,32.066,58.6928,51.9961,55.845}; + Float_t z304L[8]={6.,25.,14.,15.,16., 28.,24.,26.}; + Float_t w304L[8]={0.0003,0.02,0.01,0.00045,0.003,0.0925,0.19,0.6865}; + Float_t d304L = 8.03; + //SDD HV microcable Float_t aHVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538}; @@ -5347,12 +5354,19 @@ void AliITSv11Hybrid::CreateMaterials(){ Float_t wALVm[5]={0.392653705471,0.0128595919215,0.041626868025,0.118832707289, 0.431909}; Float_t dALVm = 2.0502; - //X7R capacitors + //X7R capacitors - updated from F.Tosello's web page - M.S. 18 Oct 10 + + Float_t aX7R[6]={137.327,47.867,15.9994,58.6928,63.5460,118.710}; + Float_t zX7R[6]={56.,22.,8.,28.,29.,50.}; + Float_t wX7R[6]={0.524732,0.176736,0.179282,0.079750,0.019750,0.019750}; + Float_t dX7R = 6.07914; - Float_t aX7R[7]={137.327,47.867,15.9994,58.6928,63.5460,118.710,207.2}; - Float_t zX7R[7]={56.,22.,8.,28.,29.,50.,82.}; - Float_t wX7R[7]={0.251639432,0.084755042,0.085975822,0.038244751,0.009471271,0.321736471,0.2081768}; - Float_t dX7R = 7.14567; + //X7R weld, i.e. Sn 60% Pb 40% (from F.Tosello's web page - M.S. 15 Oct 10) + + Float_t aX7Rweld[2]={118.71 , 207.20}; + Float_t zX7Rweld[2]={ 50. , 82. }; + Float_t wX7Rweld[2]={ 0.60 , 0.40}; + Float_t dX7Rweld = 8.52358; // AIR @@ -5466,6 +5480,27 @@ void AliITSv11Hybrid::CreateMaterials(){ Float_t wPPS[3] = { 6. , 4. , 1. }; Float_t dPPS = 1.35; + // Glass Fiber (from F.Tosello's web page - M.S. 15 Oct 10) + Float_t aGlass[11] = {15.9994 ,28.0855 ,40.078 ,26.981539,10.811 , + 24.305 ,39.0983 ,22.98977 ,18.9984 ,47.867 ,55.845}; + Float_t zGlass[11] = { 8. ,14. ,20 ,13 , 5 , + 12. ,19 ,11 , 9 ,22 ,26 }; + Float_t wGlass[11] = { 0.473610, 0.252415, 0.135791, 0.068803, 0.023293, + 0.015076, 0.008301, 0.007419, 0.007000, 0.004795, 0.003497}; + Float_t dGlass = 2.61; + + // Ryton R-4 04 (from F.Tosello's web page - M.S. 15 Oct 10) + Float_t aRyton[14] = {15.9994 ,28.0855 ,40.078 ,26.981539,10.811 , + 24.305 ,39.0983 ,22.98977 ,18.9984 ,47.867 , + 55.845 ,12.0107 , 1.00794 ,32.066 }; + Float_t zRyton[14] = { 8. ,14. ,20. ,13. , 5. , + 12. ,19. ,11. , 9. ,22. , + 26. , 6. , 1. ,16. }; + Float_t wRyton[14] = { 0.189445, 0.100966, 0.054316, 0.027521, 0.009317, + 0.006030, 0.003320, 0.002968, 0.002800, 0.001918, + 0.001399, 0.399760, 0.022365, 0.177875}; + Float_t dRyton = 1.65; + //SSD NiSn capacitor ends Float_t aNiSn[2] = { 56.6934,118.710}; Float_t zNiSn[2] = { 28., 50.}; @@ -5528,6 +5563,21 @@ void AliITSv11Hybrid::CreateMaterials(){ AliMixture(27,"GEN Air$",aAir,zAir,dAir,4,wAir); AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir); + AliMixture(39,"RYTON$",aRyton,zRyton,dRyton,14,wRyton); + AliMedium(39,"RYTON$",39,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); + + AliMixture(40,"GLASS FIBER$",aGlass,zGlass,dGlass,11,wGlass); + AliMedium(40,"GLASS FIBER$",40,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); + + AliMixture(41,"AISI304L$",a304L,z304L,d304L,8,w304L); + AliMedium(41,"AISI304L$",41,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); + + AliMaterial(42,"NICKEL$",0.58693E+02,0.28000E+02,0.89080E+01,0.14200E+01,0.99900E+03); + AliMedium(42,"NICKEL$",42,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); + + AliMixture(43,"SDD X7R weld$",aX7Rweld,zX7Rweld,dX7Rweld,2,wX7Rweld); + AliMedium(43,"SDD X7R weld$",43,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); + AliMixture(44,"PPS$",aPPS,zPPS,dPPS,-3,wPPS); AliMedium(44,"PPS$",44,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); @@ -5645,7 +5695,7 @@ void AliITSv11Hybrid::CreateMaterials(){ AliMixture(76,"SPDBUS(AL+KPT+EPOX)$",aSPDbus,zSPDbus,dSPDbus,5,wSPDbus); AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); - AliMixture(77,"SDD X7R capacitors$",aX7R,zX7R,dX7R,7,wX7R); + AliMixture(77,"SDD X7R capacitors$",aX7R,zX7R,dX7R,6,wX7R); AliMedium(77,"SDD X7R capacitors$",77,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin); AliMixture(78,"SDD ruby sph. Al2O3$",aAlOxide,zAlOxide,dAlOxide,2,wAlOxide); -- 2.43.0