Overlaps between dipole and hall corrected.
[u/mrichter/AliRoot.git] / STRUCT / AliDIPOv3.cxx
index 160b20b6987c6c004056f4ee04200ded1ffbf4c6..650ad0536924abddeae13d5a28393813363f2818 100644 (file)
@@ -146,11 +146,14 @@ void AliDIPOv3::CreateSpectrometerDipole()
      
     TGeoBBox* shDDIP2 =  new TGeoBBox(164., 182., 36.);
     shDDIP2->SetName("shDDIP2");
-    TGeoTranslation* trDDIP2 = new TGeoTranslation("trDDIP2", 0., 0., kZDipole);
+    TGeoTranslation* trDDIP2 = new TGeoTranslation("trDDIP2", 0., 0., kZDipole - 12.);
     trDDIP2->RegisterYourself();
 
-    TGeoCompositeShape*  shDDIP = new TGeoCompositeShape("shDDIP", "shDDIP1+shDDIP2:trDDIP2");
+    TGeoTube* shDDIP3 =  new TGeoTube(0., 30., 40.);
+    shDDIP3->SetName("shDDIP3");
 
+
+    TGeoCompositeShape*  shDDIP = new TGeoCompositeShape("shDDIP", "shDDIP1+(shDDIP2:trDDIP2-shDDIP3:trDDIP2)");
     TGeoVolume*  voDDIP = new TGeoVolume("DDIP", shDDIP, kMedAir);
 //
 // Yoke
@@ -344,10 +347,10 @@ void AliDIPOv3::CreateSpectrometerDipole()
     asDCoilSupport->AddNode(voDCS04, 1, gGeoIdentity);    
     for (Int_t i = 0; i < 9; i++) 
     {
-       char name[16];
-       sprintf(name, "rotdcs%1d", i);
+       char nameR[16];
+       sprintf(nameR, "rotdcs%1d", i);
        Float_t phi = Float_t(i) * 3.75;
-       TGeoRotation* rot   = new TGeoRotation(name, 90., phi, 90., 90. + phi,    0.,   0.);    
+       TGeoRotation* rot   = new TGeoRotation(nameR, 90., phi, 90., 90. + phi,    0.,   0.);   
        asDCoilSupport->AddNode(voDCS021, i, new TGeoCombiTrans(0., 0., -(sW - coilH)/2., rot));    
     }
     
@@ -404,7 +407,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
     
     TGeoVolume* voHS1 = new TGeoVolume("DHS1", new TGeoBBox( 1.5, 12.5, hsLength/2.), kMedSteel);
     TGeoVolume* voHS2 = new TGeoVolume("DHS2", new TGeoBBox(12.5,  1.5, hsLength/2.), kMedSteel);
-    Float_t hsH = gapHeight/2. + blockHeight - (rmax1+rmax2)/2.;
+    Float_t hsH = gapHeight/2. + blockHeight - (rmax1+rmax2)/2. - 2.;
     
     TGeoVolume* voHS3 = new TGeoVolume("DHS3", new TGeoBBox(3.5/2., hsH/2., 25./2.),    kMedSteel);
 
@@ -412,7 +415,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
     asHS->AddNode(voHS1, 1, gGeoIdentity);
     asHS->AddNode(voHS2, 1, new TGeoTranslation(0., +14., 0.));
     asHS->AddNode(voHS2, 2, new TGeoTranslation(0., -14., 0.));
-    asHS->AddNode(voHS3, 1, new TGeoTranslation(0., -hsH/2. - 14., hsLength/2. - 25./2.));
+    asHS->AddNode(voHS3, 1, new TGeoTranslation(0., -hsH/2. - 14. -1.5, hsLength/2. - 25./2.));
     
     
 
@@ -449,7 +452,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
     // Hanger (Support)
     dy = gapHeight/2. + blockHeight + 14.;
     
-    asDipole->AddNode(asHS, 1, new TGeoTranslation(0., dy, ((zHanger2 - kZDipole - yokeLength/2.) + 25./2.)/2.));
+    asDipole->AddNode(asHS, 1, new TGeoTranslation(0., dy + 1.5, ((zHanger2 - kZDipole - yokeLength/2.) + 25./2.)/2.));
     
     
     asDipole->SetVisContainers(1);