+ Float_t rmin1, rmin2, rmax1, rmax2;
+
+ Float_t zHanger1 = 811.9;
+ TGeoBBox* shHanger11 = new TGeoBBox("shHanger11", 2.5/2., 250., 25./2.);
+
+ rmin1 = (zHanger1 - 13.) * TMath::Tan(2. * kDegrad);
+ rmin2 = rmin1 + 26. * TMath::Tan( 2.0 * kDegrad);
+ rmax1 = (zHanger1 - 13.) * TMath::Tan(9. * kDegrad);
+ rmax2 = rmax1 + 26. * TMath::Tan(9. * kDegrad);
+
+ TGeoCone* shHanger12 = new TGeoCone("shHanger12", 13., rmin1, rmax1, rmin2, rmax2);
+ TGeoCompositeShape* shHanger1 = new TGeoCompositeShape("shHanger1", "shHanger12*shHanger11:trHanger");
+ TGeoVolume* voHanger1 = new TGeoVolume("DHanger1", shHanger1, kMedSteel);
+ //
+ // SAA1 Support: Hanger 2
+ //
+ Float_t zHanger2 = 1171.9;
+ TGeoBBox* shHanger21 = new TGeoBBox("shHanger21", 3.5/2., 250., 25./2.);
+
+
+ rmin1 = 35.8 + (zHanger2 - 13. - zst - kZDipole) * TMath::Tan(2. * kDegrad);
+ rmin2 = rmin1 + 26. * TMath::Tan( 2.0 * kDegrad);
+ rmax1 = rcD1 + (zHanger2 - 13. - kZDipole) * TMath::Tan(10.1 * kDegrad);
+ rmax2 = rmax1 + 26. * TMath::Tan(10.1 * kDegrad);
+ TGeoCone* shHanger22 = new TGeoCone("shHanger22", 13., rmin1, rmax1, rmin2, rmax2);
+ TGeoCompositeShape* shHanger2 = new TGeoCompositeShape("shHanger2", "shHanger22*shHanger21:trHanger");
+
+ TGeoVolume* voHanger2 = new TGeoVolume("DHanger2", shHanger2, kMedSteel);
+ //
+ // Hanger support
+ Float_t hsLength = yokeLength + (zHanger2 - kZDipole - yokeLength/2.) + 25./2.;
+
+ 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.;
+
+ TGeoVolume* voHS3 = new TGeoVolume("DHS3", new TGeoBBox(3.5/2., hsH/2., 25./2.), kMedSteel);
+
+ TGeoVolumeAssembly* asHS = new TGeoVolumeAssembly("asHS");
+ 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.));
+
+
+
+ dz = zHanger1 - kZDipole;
+ dy = -(kZDipoleR - zHanger1) * TMath::Tan(alhc * kDegrad);
+ voDDIP->AddNode(voHanger1, 1, new TGeoCombiTrans(0., dy, dz, rotlhc));
+
+ dz = zHanger2 - kZDipole;
+ dy = -(kZDipoleR - zHanger2) * TMath::Tan(alhc * kDegrad);
+ voDDIP->AddNode(voHanger2, 1, new TGeoCombiTrans(0., dy, dz, rotlhc));
+
+
+
+
+ // Assembly everything
+
+ TGeoVolumeAssembly* asDipole = new TGeoVolumeAssembly("Dipole");
+ // Yoke
+ asDipole->AddNode(asYoke, 1, new TGeoTranslation(0., 0., -dzCoil));