X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSv11GeometrySDD.cxx;h=be835f138e8709b127154f4ffe6a6f7c91bf52c0;hb=ff12b981e8b8e9bc7063c1f26373e5264934d329;hp=a8d48adcd1ac6445b05b80c0ec529428d6fcc8d0;hpb=112d72a8c326ce61e7597b155e8d1db3823f8565;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSv11GeometrySDD.cxx b/ITS/AliITSv11GeometrySDD.cxx index a8d48adcd1a..be835f138e8 100755 --- a/ITS/AliITSv11GeometrySDD.cxx +++ b/ITS/AliITSv11GeometrySDD.cxx @@ -51,14 +51,13 @@ #include "AliITSv11GeomCableFlat.h" #include "AliITSv11GeomCableRound.h" -const char* AliITSv11GeometrySDD::fgSDDsensitiveVolName3 = "ITSsddSensitivL3"; -const char* AliITSv11GeometrySDD::fgSDDsensitiveVolName4 = "ITSsddSensitivL4"; +const char* AliITSv11GeometrySDD::fgkSDDsensitiveVolName3 = "ITSsddSensitivL3"; +const char* AliITSv11GeometrySDD::fgkSDDsensitiveVolName4 = "ITSsddSensitivL4"; 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 = 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; @@ -100,7 +99,7 @@ const Double_t AliITSv11GeometrySDD::fgkBTBthick = 0.25 *fgkmm; const Double_t AliITSv11GeometrySDD::fgkBTBlength = 55. *fgkmm; const Double_t AliITSv11GeometrySDD::fgkBTBwidth = 18*fgkmm; const Double_t AliITSv11GeometrySDD::fgkBTBaxisAtoBottom = 4*fgkmm; -const Double_t AliITSv11GeometrySDD::fgkBTBaxisAtoBase = 1.2*fgkmm; +const Double_t AliITSv11GeometrySDD::fgkBTBaxisAtoBase = 2.2*fgkmm; const Double_t AliITSv11GeometrySDD::fgkRadiusAminBTB = 1. *fgkmm; const Double_t AliITSv11GeometrySDD::fgkRadiusBminBTB = 0.53 *fgkmm; const Double_t AliITSv11GeometrySDD::fgkBTBHoleLength = 15 *fgkmm; @@ -135,7 +134,7 @@ const Double_t AliITSv11GeometrySDD::fgkEndLaddCardsShortRadiusLay4 = fgkLay4Det const Double_t AliITSv11GeometrySDD::fgkDistEndLaddCardsLadd = 0.*fgkmm; //hybrid -const Double_t AliITSv11GeometrySDD::fgkHybridAngle = 46; // approx !!! +const Double_t AliITSv11GeometrySDD::fgkHybridAngle = 48.5; // approx !!! // Origine taken at the hybrid corner : const Double_t AliITSv11GeometrySDD::fgkHybridLength = 65*fgkmm; const Double_t AliITSv11GeometrySDD::fgkHybridWidth = 41*fgkmm; @@ -161,9 +160,9 @@ 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::fgkHybCC2SensorLen = 9.500*fgkmm; const Double_t AliITSv11GeometrySDD::fgkHybCC2SensorWid = 1.490*fgkcm; //??? -const Double_t AliITSv11GeometrySDD::fgkHybCC2SensorAng = 40.0; +const Double_t AliITSv11GeometrySDD::fgkHybCC2SensorAng = 15.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; // ??? @@ -498,11 +497,8 @@ const Double_t AliITSv11GeometrySDD::fgkSDDCableR5 = 37*fgkcm; // third part const Double_t AliITSv11GeometrySDD::fgkSDDCableZ5 = 65*fgkcm; // third part of "cable cone" - - - - - +using std::endl; +using std::cout; ClassImp(AliITSv11GeometrySDD) //________________________________________________________________________ @@ -727,7 +723,7 @@ void AliITSv11GeometrySDD::SetParameters() { // Define display colors and the non constant geometry parameters // - Double_t detLadderDist = 8*fgkmm; + Double_t detLadderDist = 8.4*fgkmm; fLay3LadderUnderSegDH = detLadderDist - (fgkWaHVcableAlThick+fgkWaHVcablePolyThick); fLay4LadderUnderSegDH = detLadderDist - (fgkWaHVcableAlThick+fgkWaHVcablePolyThick); @@ -1060,7 +1056,7 @@ void AliITSv11GeometrySDD::CreateBasicObjects() { fLadderFoot = CreateLadderFoot(); CreateLVCard(); - fCardHV = CreateHVCard(0); + fCardHV = CreateHVCard(); fCardCarlos = CreateCarlosCard(0); //================== @@ -1182,7 +1178,7 @@ void AliITSv11GeometrySDD::ShowOnePiece(TGeoVolume *moth) { // TGeoVolumeAssembly *highVCard = CreateHVCard( 4 ); // moth->AddNode(highVCard, 1, 0); -// TGeoVolumeAssembly *supportRing = CreateSupportRing( 4 ); +// TGeoVolumeAssembly *supportRing = CreateSupportRing(); // moth->AddNode(supportRing, 1, 0); // TGeoVolume *endLadderCards = CreateEndLadderCardsV( 4 ); @@ -2355,22 +2351,26 @@ TGeoVolume* AliITSv11GeometrySDD::CreateHybrid(Int_t iLRSide) { //**************************************************** CC to sensors: // (alas, we cannot use GeomCableFlat here because section is not constant) - Double_t xcc[6],ycc[6]; + Double_t xcc[8],ycc[8]; 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[2] = -fgkHybCC2SensorLen*0.8; + xcc[3] = xcc[2] + 0.1*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]; + ycc[4] = -fgkHybCC2SensorLen; + xcc[5] = xcc[4] - fgkHybCC2SensorWid; + ycc[5] = ycc[4]; + xcc[6] = xcc[5]; + ycc[6] = 0.8*ycc[5]; + xcc[7] = xcc[0]; + ycc[7] = 0.2*ycc[5]; TGeoXtru* ccToSensPoliSh = new TGeoXtru(2); - ccToSensPoliSh->DefinePolygon(6, xcc, ycc); + ccToSensPoliSh->DefinePolygon(8, xcc, ycc); ccToSensPoliSh->DefineSection(0, 0.); ccToSensPoliSh->DefineSection(1, ccLayer1.GetThickness()); @@ -2379,7 +2379,9 @@ TGeoVolume* AliITSv11GeometrySDD::CreateHybrid(Int_t iLRSide) { ccToSensPoliVol->SetLineColor(fColorPolyhamide); TGeoXtru* ccToSensAlSh = new TGeoXtru(2); - ccToSensAlSh->DefinePolygon(6, xcc, ycc); + xcc[6] += 0.001; + ycc[7] -= 0.001; + ccToSensAlSh->DefinePolygon(8, xcc, ycc); ccToSensAlSh->DefineSection(0, 0.); ccToSensAlSh->DefineSection(1, fgkHybAlCCThick); @@ -2566,25 +2568,26 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { 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); + Double_t xseg[12],yseg[12]; + xseg[ 0] = -(fgkLadderWidth/2+fgkPinSuppWidth+fgkLadderSegBoxDW); + yseg[ 0] = fgkLadderHeight/2+fgkLadderSegBoxDH/2; + xseg[ 1] = xseg[0]; + yseg[ 1] = -yseg[0]; + xseg[ 2] = 0.87*xseg[1]; + yseg[ 2] = yseg[1]; + xseg[ 3] = 0.77*xseg[1]; + yseg[ 3] = -yseg[0] - 0.62*fgkHybCC2SensorLen; + xseg[ 4] = 0.72*xseg[1]; + yseg[ 4] = yseg[3]; + xseg[ 5] = 0.83*xseg[1]; + yseg[ 5] = yseg[1]; + + for (Int_t j=0; j<6; j++) { + xseg[6+j] = -xseg[5-j]; + yseg[6+j] = yseg[5-j]; + } + + segBox->DefinePolygon(12, xseg, yseg); segBox->DefineSection(0,-segmentLength/2); segBox->DefineSection(1, segmentLength/2); @@ -2798,7 +2801,7 @@ TGeoVolume* AliITSv11GeometrySDD::CreateLadderSegment(Int_t iLay, Int_t iSeg) { //************************* // the 2 hybrids : //************************* - Double_t hybDy = ((TGeoBBox*)fHybrid->GetShape())->GetDY(); + Double_t hybDy = ((TGeoXtru*)fHybrid->GetShape())->GetY(2); Double_t distAxeToHybridCenter = fgkBTBaxisAtoBase+hybDy; Double_t hybrVolX = ( distAxeToHybridCenter*CosD(fgkHybridAngle) @@ -3698,23 +3701,23 @@ TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateCarlosCard(Int_t iLay) { Double_t screw1z = ( aaa*sin(TMath::DegToRad()*fgkCarlosSuppAngle) + bbb*cos(TMath::DegToRad()*fgkCarlosSuppAngle) )-0.07; - TGeoRotation *CarlosSuppRot = (TGeoRotation *)fCommonTr[0]; + TGeoRotation *carlosSuppRot = (TGeoRotation *)fCommonTr[0]; TGeoCombiTrans* lScrewTr1 = new TGeoCombiTrans((fgkCarlosSuppX1+ fgkCarlosSuppX2+fgkCarlosSuppX3)/2, - screw1y,screw1z, CarlosSuppRot); + screw1y,screw1z, carlosSuppRot); TGeoCombiTrans* lScrewTr2 = new TGeoCombiTrans((fgkCarlosSuppX1+ fgkCarlosSuppX2+fgkCarlosSuppX3)/2, - screw1z,screw1y, CarlosSuppRot); + screw1z,screw1y, carlosSuppRot); TGeoCombiTrans *lScrewTr3 = new TGeoCombiTrans(-(fgkCarlosSuppX1+ fgkCarlosSuppX2+fgkCarlosSuppX3)/2, - screw1y,screw1z, CarlosSuppRot); + screw1y,screw1z, carlosSuppRot); TGeoCombiTrans *lScrewTr4 = new TGeoCombiTrans(-(fgkCarlosSuppX1+ fgkCarlosSuppX2+fgkCarlosSuppX3)/2, - screw1z,screw1y, CarlosSuppRot); + screw1z,screw1y, carlosSuppRot); assemblySupCarlos->AddNode(fCommonVol[0], 1, lScrewTr1); assemblySupCarlos->AddNode(fCommonVol[0], 2, lScrewTr2); @@ -4139,11 +4142,10 @@ Int_t AliITSv11GeometrySDD::CreateLVCard() { } //________________________________________________________________________ -TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateHVCard(Int_t iLay){ +TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateHVCard(){ // // return an assembly containing the HV card // - iLay = iLay; TGeoMedium *ceramic = GetMedium("CERAMICS$"); // ceramicHVcard TGeoMedium *medSMDcapaMiddle = GetMedium("SDD X7R capacitors$"); // check if different @@ -4421,7 +4423,6 @@ TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateHVCard(Int_t iLay){ return highVCard; } - //________________________________________________________________________ TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateEndLadderCards(Int_t iLay) { // @@ -4930,13 +4931,12 @@ TGeoVolume* AliITSv11GeometrySDD::CreateEndLadderCardsV(Int_t iLay) { } //________________________________________________________________________ -TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateSupportRing(Int_t iLay) { +TGeoVolumeAssembly* AliITSv11GeometrySDD::CreateSupportRing() { // // return an assembly of the support rings, attaching the ladders to the cone // - iLay = iLay; TGeoMedium *stainless = GetMedium("INOX$"); // To code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TGeoVolumeAssembly *supportRing = new TGeoVolumeAssembly("supportRing"); @@ -5080,7 +5080,7 @@ void AliITSv11GeometrySDD::CreateSDDsensor() { wafer3->SetLineColor(fColorSilicon); TGeoBBox *sensBox3 = new TGeoBBox("ITSsddSensorSensBox3", fgkWaferWidthSens/2, fgkWaferThickSens/2, fgkWaferLengthSens/2); - TGeoVolume *sensVol3 = new TGeoVolume(fgSDDsensitiveVolName3,sensBox3, siliconSDDsens); + TGeoVolume *sensVol3 = new TGeoVolume(fgkSDDsensitiveVolName3,sensBox3, siliconSDDsens); sensVol3->SetLineColor(fColorSilicon+5); wafer3->AddNode(sensVol3, 1, 0); fSDDsensor3->AddNode(wafer3, 1, 0); @@ -5089,7 +5089,7 @@ void AliITSv11GeometrySDD::CreateSDDsensor() { wafer4->SetLineColor(fColorSilicon); TGeoBBox *sensBox4 = new TGeoBBox("ITSsddSensorSensBox4", fgkWaferWidthSens/2, fgkWaferThickSens/2, fgkWaferLengthSens/2); - TGeoVolume *sensVol4 = new TGeoVolume(fgSDDsensitiveVolName4,sensBox4, siliconSDDsens); + TGeoVolume *sensVol4 = new TGeoVolume(fgkSDDsensitiveVolName4,sensBox4, siliconSDDsens); sensVol4->SetLineColor(fColorSilicon+5); wafer4->AddNode(sensVol4, 1, 0); fSDDsensor4->AddNode(wafer4, 1, 0); @@ -5589,7 +5589,7 @@ TGeoPcon* AliITSv11GeometrySDD::CreateConeConstSection(Double_t r1max, Double_t //________________________________________________________________________ Double_t AliITSv11GeometrySDD::GetConeZ(Double_t r, Double_t refR1, Double_t refR2, - Double_t refZ1, Double_t refZ2) { + Double_t refZ1, Double_t refZ2) const { // just a helping function return refZ1+(refZ2-refZ1)*(r-refR1)/(refR2-refR1); }