]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11GeometrySPD.cxx
- AliITSv11GeometrySupport.cxx : the wings of the ITS support rings
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySPD.cxx
index cd879b052ff10d3065b564074951e0ffbab83af1..26d082759bc161c9d8b3a85eaa06c8447aa0b6e8 100644 (file)
@@ -566,7 +566,7 @@ void AliITSv11GeometrySPD::SPDSector(TGeoVolume *moth, TGeoManager *mgr)
     for(i = 0; i < kNSectorsTotal; i++) {
         shiftX = -radiusSector * TMath::Sin(angle/fgkRadian);
         shiftY =  radiusSector * TMath::Cos(angle/fgkRadian);
-        cout << "ANGLE = " << angle << endl; 
+        //cout << "ANGLE = " << angle << endl; 
         shiftX += 0.1094 * TMath::Cos((angle + 196.)/fgkRadian);
         shiftY += 0.1094 * TMath::Sin((angle + 196.)/fgkRadian);
         //shiftX -= 0.105;
@@ -2114,10 +2114,13 @@ TGeoVolume* AliITSv11GeometrySPD::CreateGroundingFoil(Bool_t isRight,
     // compute the volume shapes (thicknesses change from one to the other)
     Double_t kpLength, kpWidth, alLength, alWidth;
     TArrayD  kpSize, alSize, glSize;
-    Double_t kpThickness = fgkmm * 0.05;
-    Double_t alThickness = fgkmm * 0.02;
-    Double_t g0Thickness = fgkmm * 0.1175 - fgkGapHalfStave;
-    Double_t g1Thickness = fgkmm * 0.1175 - fgkGapLadder;
+    Double_t kpThickness = fgkmm * 0.04;
+    Double_t alThickness = fgkmm * 0.01;
+//cout << "AL THICKNESS" << alThickness << endl;
+    //Double_t g0Thickness = fgkmm * 0.1175 - fgkGapHalfStave;
+    //Double_t g1Thickness = fgkmm * 0.1175 - fgkGapLadder;
+    Double_t g0Thickness = fgkmm * 0.1275 - fgkGapHalfStave;
+    Double_t g1Thickness = fgkmm * 0.1275 - fgkGapLadder;
     TGeoCompositeShape *kpShape = CreateGroundingFoilShape(0,kpLength,kpWidth,
                                                           kpThickness, kpSize);
     TGeoCompositeShape *alShape = CreateGroundingFoilShape(1,alLength,alWidth,
@@ -2182,11 +2185,11 @@ TGeoVolume* AliITSv11GeometrySPD::CreateGroundingFoil(Bool_t isRight,
     z  = 0.5*(fullLength - kpLength) - shift;
     TGeoCombiTrans *glTrans1 = new TGeoCombiTrans(x, 0.0, z, rotCorr);
     
-    cout << fgkGapHalfStave << endl;
-    cout << g0Thickness << endl;
-    cout << kpThickness << endl;
-    cout << alThickness << endl;
-    cout << g1Thickness << endl;
+    //cout << fgkGapHalfStave << endl;
+    //cout << g0Thickness << endl;
+    //cout << kpThickness << endl;
+    //cout << alThickness << endl;
+    //cout << g1Thickness << endl;
 
     // add to container
     container->SetLineColor(kMagenta-10);
@@ -2963,7 +2966,7 @@ TGeoVolumeAssembly* AliITSv11GeometrySPD::CreatePixelBus
 }
 
 //______________________________________________________________________
-TGeoVolumeAssembly* AliITSv11GeometrySPD::CreateConeModule(TGeoManager *mgr) const
+TList* AliITSv11GeometrySPD::CreateConeModule(TGeoManager *mgr) const
 {
     TGeoMedium *medInox  = GetMedium("INOX$",mgr);
     TGeoMedium *medExt   = GetMedium("SDDKAPTON (POLYCH2)$", mgr);
@@ -3015,7 +3018,9 @@ TGeoVolumeAssembly* AliITSv11GeometrySPD::CreateConeModule(TGeoManager *mgr) con
         y[i] = -y[11 - i];
     }
     
-    TGeoVolumeAssembly *container = new TGeoVolumeAssembly("ITSSPDConeModule");
+    TGeoVolumeAssembly* container[2];
+    container[0] = new TGeoVolumeAssembly("ITSSPDConeModule");
+    container[1] = new TGeoVolumeAssembly("ITSSPDCoolingModule");
     
     TGeoXtru *shCable = new TGeoXtru(2);
     shCable->DefinePolygon(12, x, y);
@@ -3043,42 +3048,76 @@ TGeoVolumeAssembly* AliITSv11GeometrySPD::CreateConeModule(TGeoManager *mgr) con
     TGeoRotation *rot = new TGeoRotation(*gGeoIdentity);
     rot->RotateX(90.0);
     rot->RotateZ(90.0);
-    container->AddNode(volCable, 0, rot);
+    container[0]->AddNode(volCable, 0, rot);
     
     TGeoTranslation *combi = new TGeoTranslation(cableThickness + 0.5*mcmThickness, x[0] + 0.5*mcmLength, 0.0);
-    container->AddNode(volMCMExt, 0, combi);
+    container[0]->AddNode(volMCMExt, 0, combi);
     
     TGeoRotation *rot1 = new TGeoRotation(*gGeoIdentity);
-    rot1->RotateX(88.5);
-    TGeoCombiTrans *tr = new TGeoCombiTrans(1.0, x[0] + 0.5*(x[5] - x[0]), -3.0, rot1);
-    container->AddNode(volTube, 0, tr);
+    rot1->RotateX(87.5);
+    TGeoCombiTrans *tr = new TGeoCombiTrans(1.15, x[0] + 0.5*(x[5] - x[0]), -2.95, rot1);
+    container[1]->AddNode(volTube, 0, tr);
     
     TGeoTranslation *tr1 = new TGeoTranslation(0.5*plateThickness - 0.5*(plateThickness-thickness), x[3] - x[0] - 0.52*plateLength, 0.0);
-    container->AddNode(volPlate, 0, tr1);
+    container[0]->AddNode(volPlate, 0, tr1);
     
-    return container;
+    TList* conemodulelist = new TList();
+
+    conemodulelist->Add(container[0]);
+    conemodulelist->Add(container[1]);
+    
+    return conemodulelist;
 }
 
 //______________________________________________________________________
 void AliITSv11GeometrySPD::CreateCones(TGeoVolume *moth) const
 {
     
-    TGeoVolumeAssembly *module = CreateConeModule(gGeoManager);
-         
+    TList* modulelist = CreateConeModule(gGeoManager);
+    TGeoVolumeAssembly* module;
     //Double_t angle[10] = {18., 54., 90., 126., 162., -18., -54., -90., -126., -162.};
-    Double_t angle[10] = {18., 54., 90., 126., 162., 198.0, 234.0, 270.0, 306.0, 342.0};
+    // angleNm for cone modules (cables), angleNc for cooling tubes
+    Double_t angle1m[10] = {18., 54., 90., 129., 165., 201.0, 237.0, 273.0, 309.0, 345.0};
+    Double_t angle2m[10] = {18., 53., 90., 126., 162., 198.0, 233.0, 270.0, 309.0, 342.0};
+    Double_t angle1c[10] = {18., 54., 90., 129., 165., 201.0, 237.0, 273.0, 309.0, 345.0};
+    Double_t angle2c[10] = {18., 44., 90., 126., 162., 198.0, 223.0, 270.0, 309.0, 342.0};
+
+    // First add the cables
+    module = (TGeoVolumeAssembly*)modulelist->At(0);
+    for (Int_t i = 0; i < 10; i++) {
+        TGeoRotation *rot1 = new TGeoRotation(*gGeoIdentity);
+        rot1->RotateY(-90.0);
+        rot1->RotateX(43.7);
+       angle1m[i] -= 1.5;
+        rot1->RotateZ(90.0 - angle1m[i]);
+        TGeoCombiTrans *tr1 = new TGeoCombiTrans(0.0, 0.0, 40.4, rot1);
+        moth->AddNode(module, 2*i, tr1);
+        TGeoRotation *rot2 = new TGeoRotation(*gGeoIdentity);
+        rot2->RotateY(90.0);
+        rot2->RotateX(-43.7);
+       angle2m[i] -= 1.5;
+        rot2->RotateZ(90.0 - angle2m[i]);
+        TGeoCombiTrans *tr2 = new TGeoCombiTrans(0.0, 0.0, -40.4, rot2);
+        moth->AddNode(module, 2*i+1, tr2);
+    }
+
+    // Then the cooling tubes
+    module = (TGeoVolumeAssembly*)modulelist->At(1);
     for (Int_t i = 0; i < 10; i++) {
         TGeoRotation *rot1 = new TGeoRotation(*gGeoIdentity);
         rot1->RotateY(-90.0);
-        rot1->RotateX(45.0);
-        rot1->RotateZ(90.0 - angle[i]);
-        TGeoCombiTrans *tr1 = new TGeoCombiTrans(0.0, 0.0, 40.5, rot1);
+        rot1->RotateX(43.7);
+       angle1c[i] -= 1.5;
+        rot1->RotateZ(90.0 - angle1c[i]);
+        TGeoCombiTrans *tr1 = new TGeoCombiTrans(0.0, 0.0, 40.4, rot1);
         moth->AddNode(module, 2*i, tr1);
         TGeoRotation *rot2 = new TGeoRotation(*gGeoIdentity);
         rot2->RotateY(90.0);
-        rot2->RotateX(-45.0);
-        rot2->RotateZ(90.0 - angle[i]);
-        TGeoCombiTrans *tr2 = new TGeoCombiTrans(0.0, 0.0, -40.5, rot2);
+        rot2->RotateX(-43.4);
+       angle2c[i] -= 1.5;
+        rot2->RotateZ(90.0 - angle2c[i]);
+        TGeoCombiTrans *tr2 = new TGeoCombiTrans(0.0, 0.0, -40.4, rot2);
         moth->AddNode(module, 2*i+1, tr2);
     }
 }
@@ -3450,7 +3489,7 @@ Int_t layer,Int_t idxCentral,Int_t idxSide,TArrayD &sizes,TGeoManager *mgr)
                        sepLadderLadder+mcmLength;
     fullWidth     = ladderWidth;
     fullThickness = grndThickness + fgkGapLadder + mcmThickness + busThickness;
-    cout << "HSTAVE FULL THICKNESS = " << fullThickness << endl;
+    //cout << "HSTAVE FULL THICKNESS = " << fullThickness << endl;
 
     // ** MOVEMENTS **