]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11GeometrySDD.cxx
Updates in Lc->V0bachelor analysis (Annalisa)
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySDD.cxx
index a8d48adcd1ac6445b05b80c0ec529428d6fcc8d0..be835f138e8709b127154f4ffe6a6f7c91bf52c0 100755 (executable)
 #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);
 }