]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliDIPOv3.cxx
//
[u/mrichter/AliRoot.git] / STRUCT / AliDIPOv3.cxx
index 650ad0536924abddeae13d5a28393813363f2818..40081f0bd1415c68f485b851e31676d011e6981e 100644 (file)
@@ -20,6 +20,7 @@
 #include <TGeoVolume.h>
 #include <TGeoMedium.h>
 #include <TGeoMatrix.h>
+#include <TGeoArb8.h>
 #include <TGeoBBox.h>
 #include <TGeoTube.h>
 #include <TGeoCone.h>
@@ -128,7 +129,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
     
  
     Float_t riD0 = (kZDipoleF - 5.)  * TMath::Tan(2. * kDegrad) + 0.2;
-    Float_t riD1 = 30.;
+    Float_t riD1 = 28.9;
     Float_t riD2 = 35.8;
     Float_t riD3 = riD2 + (kZDipoleR - zst)      * TMath::Tan(2. * kDegrad);
     Float_t riD4 = riD2 + (kZDipoleR - zst + 5.) * TMath::Tan(2. * kDegrad);
@@ -143,8 +144,24 @@ void AliDIPOv3::CreateSpectrometerDipole()
     shDDIP1->DefineSection(4,  zst            , riD2, rcst);
     shDDIP1->DefineSection(5,  kZDipoleR      , riD3, rcD2);
     shDDIP1->DefineSection(6, (kZDipoleR + 5.), riD4, rcD2);
-     
-    TGeoBBox* shDDIP2 =  new TGeoBBox(164., 182., 36.);
+
+         // JC Ch6 is 2x5cm longer than Ch5
+    //    TGeoBBox* shDDIP2 =  new TGeoBBox(164., 182., 36.);    
+         Double_t xD0 = 162.;
+         Double_t xD1 = 171.;
+         Double_t yD0 = 182.;
+         Double_t zD0 = 36.;
+       
+       Double_t xy[16] = {0};
+         xy[0]  = -xD0; xy[1]  = -yD0; 
+         xy[2]  = -xD0; xy[3]  =  yD0; 
+         xy[4]  =  xD0; xy[5]  =  yD0;
+         xy[6]  =  xD0; xy[7]  = -yD0;
+         xy[8]  = -xD1; xy[9]  = -yD0; 
+         xy[10] = -xD1; xy[11] =  yD0; 
+         xy[12] =  xD1; xy[13] =  yD0;
+         xy[14] =  xD1; xy[15] = -yD0; 
+         TGeoArb8* shDDIP2 =  new TGeoArb8(zD0, xy); 
     shDDIP2->SetName("shDDIP2");
     TGeoTranslation* trDDIP2 = new TGeoTranslation("trDDIP2", 0., 0., kZDipole - 12.);
     trDDIP2->RegisterYourself();
@@ -161,14 +178,14 @@ void AliDIPOv3::CreateSpectrometerDipole()
 
     TGeoVolumeAssembly* asYoke = new TGeoVolumeAssembly("DYoke");      
 // Base
-    char name[32];
+    char name[16];
     Float_t lx0 = gapWidthFront + 2. * blockHeight;
     Float_t lx  = lx0;
     
     TGeoVolumeAssembly* asYokeBase = new TGeoVolumeAssembly("DYokeBase");      
     for (Int_t i = 0; i < 7; i++) {
-       sprintf(name, "DYokeBaseBlock%1d", i);
-       TGeoVolume*  voBaseBlock = new TGeoVolume(name,
+      snprintf(name, 16, "DYokeBaseBlock%1d", i);
+      TGeoVolume*  voBaseBlock = new TGeoVolume(name,
                                                  new TGeoBBox(lx/2., blockHeight/2., blockLength/2.),
                                                  kMedSteel);
        asYokeBase->AddNode(voBaseBlock, 1, new TGeoTranslation(0., 0., Float_t(i - 3) * blockLength));
@@ -325,7 +342,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
                                         new TGeoTubeSeg(coilRo, coilRo + 3.125, sW/2., 21., 51.),
                                         kMedAlu);
     TGeoVolume* voDCS021 = new TGeoVolume("DCS021", 
-                                        new TGeoConeSeg(sW/2., coilRo, 320., coilRo, coilRo + 2., 21., 21.4),
+                                        new TGeoConeSeg(sW/2., coilRo + 3.124, 320., coilRo + 3.125, coilRo + 5.125, 21., 21.4),
                                         kMedAlu);
     
 
@@ -348,10 +365,10 @@ void AliDIPOv3::CreateSpectrometerDipole()
     for (Int_t i = 0; i < 9; i++) 
     {
        char nameR[16];
-       sprintf(nameR, "rotdcs%1d", i);
+       snprintf(nameR, 16, "rotdcs%1d", i);
        Float_t phi = Float_t(i) * 3.75;
        TGeoRotation* rot   = new TGeoRotation(nameR, 90., phi, 90., 90. + phi,    0.,   0.);   
-       asDCoilSupport->AddNode(voDCS021, i, new TGeoCombiTrans(0., 0., -(sW - coilH)/2., rot));    
+       asDCoilSupport->AddNode(voDCS021, i, new TGeoCombiTrans(0., 0.004, -(sW - coilH)/2., rot));    
     }