* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id $ */
+/* $Id$ */
//-------------------------------------------------------------------------
// The small angle absorber SAA (beam shield)
// The top volume
//
TGeoVolume* top = gGeoManager->GetVolume("ALIC");
-
-//
-// Translations
-//
- TGeoTranslation* vec0 = new TGeoTranslation(0., 0., 0.);
// Rotations
TGeoRotation* rot000 = new TGeoRotation("rot000", 90., 0., 90., 90., 0., 0.);
TGeoRotation* rot090 = new TGeoRotation("rot090", 90., 90., 90., 180., 0., 0.);
TGeoRotation* rot180 = new TGeoRotation("rot180", 90., 180., 90., 270., 0., 0.);
TGeoRotation* rot270 = new TGeoRotation("rot270", 90., 270., 90., 0., 0., 0.);
+ Float_t alhc = 0.794;
+ TGeoRotation* rotxzlhc = new TGeoRotation("rotxzlhc", 0., -alhc, 0.);
+ TGeoRotation* rotlhc = new TGeoRotation("rotlhc", 0., alhc, 0.);
+
//
// Media
//
TGeoMedium* kMedPb = gGeoManager->GetMedium("SHIL_PB_C0");
TGeoMedium* kMedPbSh = gGeoManager->GetMedium("SHIL_PB_C2");
//
- TGeoMedium* kMedConc = gGeoManager->GetMedium("SHIL_CC_C0");
+ TGeoMedium* kMedConcSh = gGeoManager->GetMedium("SHIL_CC_C2");
//
const Float_t kDegRad = TMath::Pi() / 180.;
const Float_t kAngle02 = TMath::Tan( 2.00 * kDegRad);
z = dzFaWTail;
shFaWTailI->DefineSection(3, z, rInFaWTailS, rInFaWTailS + dr);
TGeoVolume* voFaWTailI = new TGeoVolume("YFaWTailI", shFaWTailI, kMedNiWsh);
- voFaWTail->AddNode(voFaWTailI, 1, vec0);
+ voFaWTail->AddNode(voFaWTailI, 1, gGeoIdentity);
///////////////////////////////////
// //
// FA W-Ring 2 //
// Drawing ALIP2A__0220 //
///////////////////////////////////
- const Float_t kFaWring2Rinner = 15.40;
+ const Float_t kFaWring2Rinner = 15.41;
const Float_t kFaWring2Router = 18.40;
const Float_t kFaWring2HWidth = 3.75;
const Float_t kFaWring2Cutoffx = 3.35;
// FA W-Ring 3 //
// Drawing ALIP2A__0219 //
///////////////////////////////////
- const Float_t kFaWring3Rinner = 15.40;
+ const Float_t kFaWring3Rinner = 15.41;
const Float_t kFaWring3Router = 18.40;
const Float_t kFaWring3HWidth = 3.75;
const Float_t kFaWring3Cutoffx = 3.35;
// FA W-Ring 5 //
// Drawing ALIP2A__0221 //
///////////////////////////////////
- const Float_t kFaWring5Rinner = 15.40;
+ const Float_t kFaWring5Rinner = 15.41;
const Float_t kFaWring5Router = 18.67;
const Float_t kFaWring5HWidth = 1.08;
TGeoVolume* voFaWring5 = new TGeoVolume("YFA_WRING5", new TGeoTube(kFaWring5Rinner, kFaWring5Router, kFaWring5HWidth), kMedNiW);
dz = 0.;
dz += kFaWring2HWidth;
- asFaExtraShield->AddNode(voFaWring2, 1, new TGeoCombiTrans(0., 0., dz, rot090));
- asFaExtraShield->AddNode(voFaWring2, 2, new TGeoCombiTrans(0., 0., dz, rot270));
+ asFaExtraShield->AddNode(voFaWring2, 1, new TGeoCombiTrans(0., 0., dz, rot180));
+ asFaExtraShield->AddNode(voFaWring2, 2, new TGeoCombiTrans(0., 0., dz, rot000));
dz += kFaWring2HWidth;
dz += kFaDWrings;
dz += kFaWring3HWidth;
- asFaExtraShield->AddNode(voFaWring3, 1, new TGeoCombiTrans(0., 0., dz, rot000));
- asFaExtraShield->AddNode(voFaWring3, 2, new TGeoCombiTrans(0., 0., dz, rot180));
+ asFaExtraShield->AddNode(voFaWring3, 1, new TGeoCombiTrans(0., 0., dz, rot090));
+ asFaExtraShield->AddNode(voFaWring3, 2, new TGeoCombiTrans(0., 0., dz, rot270));
dz += kFaWring3HWidth;
dz += kFaWring5HWidth;
asFaExtraShield->AddNode(voFaWring5, 1, new TGeoTranslation(0., 0., dz));
dz += kFaWring5HWidth;
dz += kFaWring3HWidth;
- asFaExtraShield->AddNode(voFaWring3, 3, new TGeoCombiTrans(0., 0., dz, rot090));
- asFaExtraShield->AddNode(voFaWring3, 4, new TGeoCombiTrans(0., 0., dz, rot270));
+ asFaExtraShield->AddNode(voFaWring3, 3, new TGeoCombiTrans(0., 0., dz, rot180));
+ asFaExtraShield->AddNode(voFaWring3, 4, new TGeoCombiTrans(0., 0., dz, rot000));
dz += kFaWring3HWidth;
dz += kFaDWrings;
dz += kFaWring2HWidth;
- asFaExtraShield->AddNode(voFaWring2, 3, new TGeoCombiTrans(0., 0., dz, rot000));
- asFaExtraShield->AddNode(voFaWring2, 4, new TGeoCombiTrans(0., 0., dz, rot180));
+ asFaExtraShield->AddNode(voFaWring2, 3, new TGeoCombiTrans(0., 0., dz, rot090));
+ asFaExtraShield->AddNode(voFaWring2, 4, new TGeoCombiTrans(0., 0., dz, rot270));
dz += kFaWring2HWidth;
TGeoPcon* shFaSaa1 = new TGeoPcon(0., 360., 8);
z = 0;
// Flange FA side
- shFaSaa1->DefineSection( 0, z, rInFaSaa1F1, rOuFaSaa1F1);
+ shFaSaa1->DefineSection( 0, z, rInFaSaa1F1, rOuFaSaa1F1 - 0.01);
z += dzFaSaa1F1;
shFaSaa1->DefineSection( 1, z, rInFaSaa1F1, 40.0);
shFaSaa1->DefineSection( 2, z, rInFaSaa1S1, 40.0);
shFaSaa1->DefineSection( 6, z, rInFaSaa1F2, 40.0);
// Flange SAA1 side
z = dzFaSaa1;
- shFaSaa1->DefineSection( 7, z, rInFaSaa1F2, rOuFaSaa1E);
+ shFaSaa1->DefineSection( 7, z, rInFaSaa1F2, rOuFaSaa1E - 0.01);
// Outer 2 deg line
for (Int_t i = 1; i < 7; i++) {
- Double_t z = shFaSaa1->GetZ(i);
+ Double_t zp = shFaSaa1->GetZ(i);
Double_t r1 = shFaSaa1->GetRmin(i);
- Double_t r2 = 39.5/2. + z * TMath::Tan(2. * kDegRad) - 0.01;
- shFaSaa1->DefineSection(i, z, r1, r2);
+ Double_t r2 = 39.5/2. + zp * TMath::Tan(2. * kDegRad) - 0.01;
+ shFaSaa1->DefineSection(i, zp, r1, r2);
}
TGeoVolume* voFaSaa1 = new TGeoVolume("YFASAA1", shFaSaa1, kMedNiWsh);
//
// Outer region with lower transport cuts
- TGeoCone* shFaSaa1O = new TGeoCone(dzFaSaa1/2., rOuFaSaa1F1 - 3.5, rOuFaSaa1F1, rOuFaSaa1E - 3.5, rOuFaSaa1E);
+ TGeoCone* shFaSaa1O = new TGeoCone(dzFaSaa1/2., rOuFaSaa1F1 - 3.5, rOuFaSaa1F1 - 0.01, rOuFaSaa1E - 3.5, rOuFaSaa1E - 0.01);
TGeoVolume* voFaSaa1O = new TGeoVolume("YFASAA1O", shFaSaa1O, kMedNiW);
voFaSaa1->AddNode(voFaSaa1O, 1, new TGeoTranslation(0., 0., dzFaSaa1/2.));
// Radii
// 1
Float_t rOuSaa1StEnv1 = 40.4/2.;
- Float_t rInSaa1StEnv1 = rOuSaa1StEnv1 - dSt;
+ Float_t rInSaa1StEnv1 = rOuSaa1StEnv1 - dSt - 0.05;
// 2
Float_t rInSaa1StEnv2 = 41.7/2.;
- Float_t rOuSaa1StEnv2 = rInSaa1StEnv2 + dSt / TMath::Cos(2.0 * kDegRad);
+ Float_t rOuSaa1StEnv2 = rInSaa1StEnv2 + dSt / TMath::Cos(2.0 * kDegRad) - 0.05;
// 3
- Float_t rOuSaa1StEnv3 = 57.6/2.;
- Float_t rInSaa1StEnv3 = rOuSaa1StEnv3 - dSt;
+ Float_t rOuSaa1StEnv3 = 57.6/2.;
+ Float_t rInSaa1StEnv3 = rOuSaa1StEnv3 - dSt + 0.05;
// 4
Float_t rInSaa1StEnv4 = 63.4/2.;
- Float_t rOuSaa1StEnv4 = rInSaa1StEnv4 + dSt / TMath::Cos(1.6 * kDegRad);
+ Float_t rOuSaa1StEnv4 = rInSaa1StEnv4 + dSt / TMath::Cos(1.6 * kDegRad) - 0.05;
// end
Float_t rInSaa1StEnv5 = 74.28/2.;
- Float_t rOuSaa1StEnv5 = rInSaa1StEnv5 + dSt / TMath::Cos(1.6 * kDegRad);
+ Float_t rOuSaa1StEnv5 = rInSaa1StEnv5 + dSt / TMath::Cos(1.6 * kDegRad) - 0.05;
// Relative starting position
Float_t zSaa1StEnvS = 3.;
// Inner region with higher transport cuts
TGeoPcon* shSaa1PbCompI = MakeShapeFromTemplate(shSaa1PbComp, 0., -3.);
TGeoVolume* voSaa1PbCompI = new TGeoVolume("YSAA1_PbCompI", shSaa1PbCompI, kMedPbSh);
- voSaa1PbComp->AddNode(voSaa1PbCompI, 1, vec0);
+ voSaa1PbComp->AddNode(voSaa1PbCompI, 1, gGeoIdentity);
///////////////////////////////////
// SAA1 W-Cone //
Float_t dzSaa1 = 659.2;
//
TGeoPcon* shSaa1M = new TGeoPcon(0., 360., 20);
- Float_t kSec = 0.01; // security distance to avoid trivial extrusions
+ Float_t kSec = 0.2; // security distance to avoid trivial extrusions
Float_t rmin = rInSaa1InnerTube - dSaa1InnerTube - kSec;
rmax = rOuSaa1InnerTube - dSaa1InnerTube - kSec;
z = 0.;
shSaa1M->DefineSection(14, z, 0., rmaxSaa1);
shSaa1M->DefineSection(15, z, rmax, rmaxSaa1);
z = zSaa1StRing;
- shSaa1M->DefineSection(16, z, rmax, rOuSaa1String);
+ shSaa1M->DefineSection(16, z, rmax + 0.4, rOuSaa1String);
z += dzSaa1PbCompF1;
- shSaa1M->DefineSection(17, z, rmax, rOuSaa1String);
- shSaa1M->DefineSection(18, z, rmax, rOuSaa1PbCompF3);
+ shSaa1M->DefineSection(17, z, rmax + 0.4, rOuSaa1String);
+ shSaa1M->DefineSection(18, z, rmax + 0.4, rOuSaa1PbCompF3);
z += dzSaa1PbCompF2;
- shSaa1M->DefineSection(19, z, rmax, rOuSaa1PbCompF3);
+ shSaa1M->DefineSection(19, z, rmax + 0.4, rOuSaa1PbCompF3);
//
// Inner 1.69deg line
for (Int_t i = 2; i < 15; i++) {
- Double_t z = shSaa1M->GetZ(i);
+ Double_t zp = shSaa1M->GetZ(i);
Double_t r2 = shSaa1M->GetRmax(i);
- Double_t r1 = rmin + (z - 0.9) * TMath::Tan(1.69 / 2. * kDegRad) - kSec;
- shSaa1M->DefineSection(i, z, r1, r2);
+ Double_t r1 = rmin + (zp - 0.9) * TMath::Tan(1.686 / 2. * kDegRad) - kSec;
+ shSaa1M->DefineSection(i, zp, r1, r2);
}
TGeoVolume* voSaa1M = new TGeoVolume("YSAA1M", shSaa1M, kMedAir);
///////////////////////////////////
Float_t saa1Wring1Width = 5.85;
TGeoPcon* shSaa1Wring1 = new TGeoPcon(0., 360., 2);
- shSaa1Wring1->DefineSection(0, 0.00 , 20.30, 23.175);
- shSaa1Wring1->DefineSection(1, saa1Wring1Width, 20.30, 23.400);
+ shSaa1Wring1->DefineSection(0, 0.00 , 20.31, 23.175);
+ shSaa1Wring1->DefineSection(1, saa1Wring1Width, 20.31, 23.400);
TGeoVolume* voSaa1Wring1 = new TGeoVolume("YSAA1_WRING1", shSaa1Wring1, kMedNiW);
///////////////////////////////////
// SAA1 W-Ring 2 //
// Drawing ALIP2A__0055 //
///////////////////////////////////
- Float_t saa1Wring2Rinner = 20.30;
+ Float_t saa1Wring2Rinner = 20.31;
Float_t saa1Wring2Router = 23.40;
Float_t saa1Wring2HWidth = 3.75;
- Float_t saa1Wring2Cutoffx = 4.45;
- Float_t saa1Wring2Cutoffy = 4.45;
+ Float_t saa1Wring2Cutoffx = 4.9;
+ Float_t saa1Wring2Cutoffy = 4.9;
TGeoTubeSeg* shSaa1Wring2a = new TGeoTubeSeg(saa1Wring2Rinner, saa1Wring2Router, saa1Wring2HWidth, 0., 90.);
shSaa1Wring2a->SetName("shSaa1Wring2a");
TGeoBBox* shSaa1Wring2b = new TGeoBBox(saa1Wring2Router / 2., saa1Wring2Router / 2., saa1Wring2HWidth);
// Drawing ALIP2A__0216 //
///////////////////////////////////
- Float_t saa1Wring3Rinner = 20.30;
+ Float_t saa1Wring3Rinner = 20.31;
Float_t saa1Wring3Router = 23.40;
Float_t saa1Wring3HWidth = 3.75;
Float_t saa1Wring3Cutoffx = 4.50;
- Float_t saa1Wring3Cutoffy = 4.40;
+ Float_t saa1Wring3Cutoffy = 4.50;
TGeoTubeSeg* shSaa1Wring3a = new TGeoTubeSeg(saa1Wring3Rinner, saa1Wring3Router, saa1Wring3HWidth, 0., 90.);
shSaa1Wring3a->SetName("shSaa1Wring3a");
TGeoBBox* shSaa1Wring3b = new TGeoBBox(saa1Wring3Router / 2., saa1Wring3Router / 2., saa1Wring3HWidth);
///////////////////////////////////
Float_t saa1Wring4Width = 5.85;
TGeoPcon* shSaa1Wring4 = new TGeoPcon(0., 360., 5);
- shSaa1Wring4->DefineSection(0, 0.00, 20.30, 23.40);
- shSaa1Wring4->DefineSection(1, 1.00, 20.30, 23.40);
- shSaa1Wring4->DefineSection(2, 1.00, 20.30, 24.50);
- shSaa1Wring4->DefineSection(3, 4.85, 20.30, 24.80);
+ shSaa1Wring4->DefineSection(0, 0.00, 20.31, 23.40);
+ shSaa1Wring4->DefineSection(1, 1.00, 20.31, 23.40);
+ shSaa1Wring4->DefineSection(2, 1.00, 20.31, 24.50);
+ shSaa1Wring4->DefineSection(3, 4.85, 20.31, 24.80);
shSaa1Wring4->DefineSection(4, 5.85, 24.10, 24.80);
TGeoVolume* voSaa1Wring4 = new TGeoVolume("YSAA1_WRING4", shSaa1Wring4, kMedNiW);
// SAA1 W-Ring 5 //
// Drawing ALIP2A__0218 //
///////////////////////////////////
- Float_t saa1Wring5Rinner = 20.30;
+ Float_t saa1Wring5Rinner = 20.31;
Float_t saa1Wring5Router = 23.40;
Float_t saa1Wring5HWidth = 0.85;
TGeoVolume* voSaa1Wring5 = new TGeoVolume("YSAA1_WRING5",
const Float_t saa1ExtraShieldL = 48;
//
// Assemble SAA1
- voSaa1M->AddNode(voSaa1StEnv, 1, vec0);
- voSaa1M->AddNode(voSaa1WPipe, 1, vec0);
- voSaa1M->AddNode(voSaa1PbComp, 1, vec0);
- voSaa1M->AddNode(voSaa1WCone, 1, vec0);
- voSaa1M->AddNode(voSaa1StRing, 1, vec0);
+ voSaa1M->AddNode(voSaa1StEnv, 1, gGeoIdentity);
+ voSaa1M->AddNode(voSaa1WPipe, 1, gGeoIdentity);
+ voSaa1M->AddNode(voSaa1PbComp, 1, gGeoIdentity);
+ voSaa1M->AddNode(voSaa1WCone, 1, gGeoIdentity);
+ voSaa1M->AddNode(voSaa1StRing, 1, gGeoIdentity);
voSaa1M->AddNode(voSaa1InnerTube, 1, new TGeoTranslation(0., 0., dzSaa1InnerTube + 0.9));
TGeoVolumeAssembly* voSaa1 = new TGeoVolumeAssembly("YSAA1");
- voSaa1->AddNode(voSaa1M, 1, vec0);
+ voSaa1->AddNode(voSaa1M, 1, gGeoIdentity);
///////////////////////////////////////
// SAA1/SAA2 Pb Joint //
TGeoPcon* shSaa1Saa2 = MakeShapeFromTemplate(shSaa1Saa2Pb, 0., rOuSaa1Saa2Steel-rOuSaa1Saa2);
TGeoVolume* voSaa1Saa2 = new TGeoVolume("YSAA1SAA2", shSaa1Saa2, kMedSteel);
- voSaa1Saa2->AddNode(voSaa1Saa2Pb, 1, vec0);
+ voSaa1Saa2->AddNode(voSaa1Saa2Pb, 1, gGeoIdentity);
//
// Inner region with higher transport cuts
//
TGeoPcon* shSaa1Saa2I = MakeShapeFromTemplate(shSaa1Saa2Pb, 0., -3.);
TGeoVolume* voSaa1Saa2I = new TGeoVolume("YSAA1_SAA2I", shSaa1Saa2I, kMedPbSh);
- voSaa1Saa2Pb->AddNode(voSaa1Saa2I, 1, vec0);
+ voSaa1Saa2Pb->AddNode(voSaa1Saa2I, 1, gGeoIdentity);
Float_t dzSaa2StEnv1 = 163.15;
Float_t rInSaa2StEnv1 = 65.8/2.;
// Length of the second section
- Float_t dzSaa2StEnv2 = 340.35;
+ Float_t dzSaa2StEnv2 = 340.35 - 4.;
Float_t rInSaa2StEnv2 = 87.2/2.;
// Rel. starting position
Float_t zSaa2StEnv = 3.;
// Section 1
z += dzSaa2PbComp1;
shSaa2PbComp->DefineSection( 6, z, rInSaa2PbComp1, rOuSaa2PbComp1);
+ shSaa2PbComp->DefineSection( 7, z, rInSaa2PbComp1, rOuSaa2PbComp2);
//
// Section 2
- shSaa2PbComp->DefineSection( 7, z, rInSaa2PbComp2, rOuSaa2PbComp2);
z += dzSaa2PbComp2;
shSaa2PbComp->DefineSection( 8, z, rInSaa2PbComp2, rOuSaa2PbComp2);
//
// Inner 1.89/2 deg line
Double_t zref = dzSaa2PbCompA1 + dzSaa2PbCompA2 + dzSaa2PbCompA3;
for (Int_t i = 4; i < 10; i++) {
- Double_t z = shSaa2->GetZ(i);
+ Double_t zp = shSaa2->GetZ(i);
Double_t r2 = shSaa2->GetRmax(i);
- Double_t r1 = rmin + (z - zref) * TMath::Tan(1.89 / 2. * kDegRad) - kSec;
- shSaa2->DefineSection(i, z, r1, r2);
+ Double_t r1 = rmin + (zp - zref) * TMath::Tan(1.89 / 2. * kDegRad) - kSec;
+ shSaa2->DefineSection(i, zp, r1, r2);
}
//
// Assemble SAA2
- voSaa2->AddNode(voSaa2StEnv, 1, vec0);
- voSaa2->AddNode(voSaa2PbRing, 1, vec0);
- voSaa2->AddNode(voSaa2PbComp, 1, vec0);
+ voSaa2->AddNode(voSaa2StEnv, 1, gGeoIdentity);
+ voSaa2->AddNode(voSaa2PbRing, 1, gGeoIdentity);
+ voSaa2->AddNode(voSaa2PbComp, 1, gGeoIdentity);
voSaa2->AddNode(voSaa2InnerTube, 1, new TGeoTranslation(0., 0., dzSaa2PbCompA1));
z = (dzSaa2PbComp - dzSaa2PbCompE4 - dzSaa2PbCompE5) + dzSaa2SteelRing;
voSaa2->AddNode(voSaa2SteelRing, 1, new TGeoTranslation(0., 0., z));
//
///////////////////////////////////
// SAA3 Outer Shape //
-// Drawing ALIP2A__0xxx //
+// Drawing ALIP2A__0288 //
///////////////////////////////////
-
TGeoVolumeAssembly* voSaa3 = new TGeoVolumeAssembly("YSAA3");
-
///////////////////////////////////
-// SAA3 Steel Components //
-// Drawing ALIP2A__0xxx //
+// SAA3 Concrete cone //
+// Drawing ALIP2A__0284 //
///////////////////////////////////
// Block
- TGeoBBox* shSaa3SteelBlockO = new TGeoBBox(220./2., 80./2., 100./2.);
- shSaa3SteelBlockO->SetName("Saa3SteelBlockO");
-
- TGeoPcon* shSaa3InnerRegion = new TGeoPcon(0., 360., 6);
- shSaa3InnerRegion->DefineSection( 0, -52.0, 0., 56.6/2.);
- shSaa3InnerRegion->DefineSection( 1, -45.0, 0., 56.6/2.);
- shSaa3InnerRegion->DefineSection( 2, -42.0, 0., 50.6/2.);
- shSaa3InnerRegion->DefineSection( 3, -30.0, 0., 50.6/2.);
- shSaa3InnerRegion->DefineSection( 4, 30.5, 0., 16.8/2.);
- shSaa3InnerRegion->DefineSection( 5, 52.0, 0., 16.8/2.);
+ TGeoBBox* shSaa3CCBlockO = new TGeoBBox(80./2., 80./2., 100./2.);
+ shSaa3CCBlockO->SetName("Saa3CCBlockO");
+
+ TGeoPcon* shSaa3InnerRegion = new TGeoPcon(0., 360., 4);
+ shSaa3InnerRegion->DefineSection( 0, -60.0, 0., 27.1);
+ shSaa3InnerRegion->DefineSection( 1, -23.0, 0., 27.1);
+ shSaa3InnerRegion->DefineSection( 2, 29.1, 0., 12.3);
+ shSaa3InnerRegion->DefineSection( 3, 60.0, 0., 12.3);
shSaa3InnerRegion->SetName("Saa3InnerRegion");
- TGeoCompositeShape* shSaa3SteelBlock = new TGeoCompositeShape("Saa3SteelBlock", "Saa3SteelBlockO-Saa3InnerRegion");
- TGeoVolume* voSaa3SteelBlock = new TGeoVolume("YSAA3SteelBlock", shSaa3SteelBlock, kMedSteel);
-
-
- voSaa3->AddNode(voSaa3SteelBlock, 1, vec0);
-// Plate 1: 220 cm x 100 cm x 10 cm (x 1)
- TGeoBBox* shSaa3SteelPlate1 = new TGeoBBox(220./2., 10./2., 100./2.);
- TGeoVolume* voSaa3SteelPlate1 = new TGeoVolume("YSAA3SteelPlate1", shSaa3SteelPlate1, kMedSteel);
- voSaa3->AddNode(voSaa3SteelPlate1, 1, new TGeoTranslation(0., -80./2. - 10./2., 0.));
-// Plate 2: 200 cm x 100 cm x 10 cm (x 6)
- TGeoBBox* shSaa3SteelPlate2 = new TGeoBBox(200./2., 60./2., 100./2.);
- TGeoVolume* voSaa3SteelPlate2 = new TGeoVolume("YSAA3SteelPlate2", shSaa3SteelPlate2, kMedSteel);
- voSaa3->AddNode(voSaa3SteelPlate2, 1, new TGeoTranslation(0., -80./2. - 10. - 60./2., 0.));
-// Plate 3: 200 cm x 100 cm x 10 cm (x 4)
- TGeoBBox* shSaa3SteelPlate3 = new TGeoBBox(200./2., 40./2., 100./2.);
- TGeoVolume* voSaa3SteelPlate3 = new TGeoVolume("YSAA3SteelPlate3", shSaa3SteelPlate3, kMedSteel);
- voSaa3->AddNode(voSaa3SteelPlate3, 1, new TGeoTranslation(0., +80./2. + 40/2., 0.));
-// Plate 4: 180 cm x 100 cm x 10 cm (x 1)
- TGeoBBox* shSaa3SteelPlate4 = new TGeoBBox(180./2., 10./2., 100./2.);
- TGeoVolume* voSaa3SteelPlate4 = new TGeoVolume("YSAA3SteelPlate4", shSaa3SteelPlate4, kMedSteel);
- voSaa3->AddNode(voSaa3SteelPlate4, 1, new TGeoTranslation(0., +80./2. + 40. + 10/2., 0.));
-// Plate 5: 150 cm x 100 cm x 10 cm (x 1)
- TGeoBBox* shSaa3SteelPlate5 = new TGeoBBox(150./2., 10./2., 100./2.);
- TGeoVolume* voSaa3SteelPlate5 = new TGeoVolume("YSAA3SteelPlate5", shSaa3SteelPlate5, kMedSteel);
- voSaa3->AddNode(voSaa3SteelPlate5, 1, new TGeoTranslation(0., +80./2. + 50. + 10/2., 0.));
-// Plate 6: 100 cm x 100 cm x 10 cm (x 1)
- TGeoBBox* shSaa3SteelPlate6 = new TGeoBBox(100./2., 10./2., 100./2.);
- TGeoVolume* voSaa3SteelPlate6 = new TGeoVolume("YSAA3SteelPlate6", shSaa3SteelPlate6, kMedSteel);
- voSaa3->AddNode(voSaa3SteelPlate6, 1, new TGeoTranslation(0., +80./2. + 60. + 10/2., 0.));
+ TGeoCompositeShape* shSaa3CCBlock = new TGeoCompositeShape("Saa3CCBlock", "Saa3CCBlockO-Saa3InnerRegion");
+ TGeoVolume* voSaa3CCBlock = new TGeoVolume("YSAA3CCBlock", shSaa3CCBlock, kMedConcSh);
-///////////////////////////////////
-// SAA3 Concrete Piece //
-// Drawing ALIP2A__0xxx //
-///////////////////////////////////
- TGeoPcon* shSaa3ConcPiece = new TGeoPcon(0., 360., 6);
- shSaa3ConcPiece->DefineSection( 0, 0.0, 57.4/2., 62./2.);
- shSaa3ConcPiece->DefineSection( 1, 5.0, 57.4/2., 62./2.);
- shSaa3ConcPiece->DefineSection( 2, 8.0, 51.4/2., 62./2.);
- shSaa3ConcPiece->DefineSection( 3, 20.0, 51.4/2., 62./2.);
- shSaa3ConcPiece->DefineSection( 4, 80.5, 17.6/2., 62./2.);
- shSaa3ConcPiece->DefineSection( 5, 100.0, 17.6/2., 62./2.);
- TGeoVolume* voSaa3ConcPiece = new TGeoVolume("YSAA2_ConcPiece", shSaa3ConcPiece, kMedConc);
- voSaa3SteelBlock->AddNode(voSaa3ConcPiece, 1, new TGeoTranslation(0., 0., -50.));
+
+ voSaa3->AddNode(voSaa3CCBlock, 1, gGeoIdentity);
+
+// Plate 1: 240 cm x 80 cm x 100 cm (x 2)
+ TGeoVolume* voSaa3SteelPlate1 = new TGeoVolume("YSAA3SteelPlate1",
+ new TGeoBBox(240./2., 80./2., 100./2.),
+ kMedSteelSh);
+ TGeoVolume* voSaa3SteelPlate11 = new TGeoVolume("YSAA3SteelPlate11",
+ new TGeoBBox(240./2., 80./2., 10./2.),
+ kMedSteel);
+ voSaa3SteelPlate1->AddNode(voSaa3SteelPlate11, 1, new TGeoTranslation(0., 0., -45.));
+ voSaa3->AddNode(voSaa3SteelPlate1, 1, new TGeoTranslation(0., +80., 0.));
+ voSaa3->AddNode(voSaa3SteelPlate1, 2, new TGeoTranslation(0., -80., 0.));
+
+
+// Plate 2: 80 cm x 80 cm x 100 cm (x 2)
+ TGeoVolume* voSaa3SteelPlate2 = new TGeoVolume("YSAA3SteelPlate2",
+ new TGeoBBox( 80./2., 80./2., 100./2.),
+ kMedSteelSh);
+ TGeoVolume* voSaa3SteelPlate21 = new TGeoVolume("YSAA3SteelPlate21",
+ new TGeoBBox( 80./2., 80./2., 10./2.),
+ kMedSteel);
+ voSaa3SteelPlate2->AddNode(voSaa3SteelPlate21, 1, new TGeoTranslation(0., 0., -45.));
+
+ voSaa3->AddNode(voSaa3SteelPlate2, 1, new TGeoTranslation(+80, 0., 0.));
+ voSaa3->AddNode(voSaa3SteelPlate2, 2, new TGeoTranslation(-80, 0., 0.));
-///////////////////////////////////
-// SAA3 InnerTube //
-// Drawing ALIP2A__0xxx //
-///////////////////////////////////
- TGeoPcon* shSaa3InnerTube = new TGeoPcon(0., 360., 6);
- shSaa3InnerTube->DefineSection( 0, 0.0, 56.6/2., 57.0/2.);
- shSaa3InnerTube->DefineSection( 1, 5.0, 56.6/2., 57.0/2.);
- shSaa3InnerTube->DefineSection( 2, 8.0, 50.6/2., 51.0/2.);
- shSaa3InnerTube->DefineSection( 3, 20.0, 50.6/2., 51.0/2.);
- shSaa3InnerTube->DefineSection( 4, 80.5, 16.8/2., 17.2/2.);
- shSaa3InnerTube->DefineSection( 5, 100.0, 16.8/2., 17.2/2.);
- TGeoVolume* voSaa3InnerTube = new TGeoVolume("YSAA2_InnerTube", shSaa3InnerTube, kMedSteelSh);
- voSaa3SteelBlock->AddNode(voSaa3InnerTube, 1, new TGeoTranslation(0., 0., -50.));
///////////////////////////////////
// Muon Filter //
TGeoBBox* shMuonFilterO = new TGeoBBox(550./2., 620./2., dzMuonFilter);
shMuonFilterO->SetName("FilterO");
- TGeoTube* shMuonFilterI = new TGeoTube(0., 50., dzMuonFilter + 5.);
+ TGeoCombiTrans* trFilter = new TGeoCombiTrans("trFilter", 0., -dzMuonFilter * TMath::Tan(alhc * kDegrad), 0., rotlhc);
+ trFilter->RegisterYourself();
+ TGeoTube* shMuonFilterI = new TGeoTube(0., 48.8, dzMuonFilter + 20.);
shMuonFilterI->SetName("FilterI");
- TGeoCompositeShape* shMuonFilter = new TGeoCompositeShape("MuonFilter", "FilterO-FilterI");
+ TGeoCompositeShape* shMuonFilter = new TGeoCompositeShape("MuonFilter", "FilterO-FilterI:trFilter");
//
// !!!!! Needs to be inclined
TGeoVolume* voMuonFilter = new TGeoVolume("YMuonFilter", shMuonFilter, kMedSteel);
shMuonFilterOH->SetName("FilterOH");
TGeoTube* shMuonFilterIH = new TGeoTube(0., 50., dzMuonFilterH + 5.);
shMuonFilterIH->SetName("FilterIH");
- TGeoCompositeShape* shMuonFilterH = new TGeoCompositeShape("MuonFilterH", "FilterOH-FilterIH");
+ TGeoCompositeShape* shMuonFilterH = new TGeoCompositeShape("MuonFilterH", "FilterOH-FilterIH:trFilter");
TGeoVolume* voMuonFilterH = new TGeoVolume("YMuonFilterH", shMuonFilterH, kMedSteelSh);
voMuonFilter->AddNode(voMuonFilterH, 1, gGeoIdentity);
// Position of the Muon Filter
Float_t zcFilter = 1465.9 + dzMuonFilter;
- printf("FaSaa1 %f %f \n", ziFaSaa1, zoFaSaa1);
- printf("Saa1 %f %f \n", ziSaa1, zoSaa1);
- printf("Saa1/Saa2 %f %f \n", ziSaa1Saa2, zoSaa1Saa2);
- printf("Saa2 %f %f \n", ziSaa2, zoSaa2);
-
voSaa->AddNode(voFaWTail, 1, new TGeoTranslation(0., 0., ziFaWTail));
voSaa->AddNode(voFaSaa1, 1, new TGeoTranslation(0., 0., ziFaSaa1));
voSaa->AddNode(voSaa1 , 1, new TGeoTranslation(0., 0., ziSaa1));
- voSaa->AddNode(voSaa1Saa2, 1, new TGeoTranslation(0., 0., ziSaa1Saa2));
+ voSaa->AddNode(voSaa1Saa2, 1, new TGeoTranslation(0., 0., ziSaa1Saa2 - 0.1));
voSaa->AddNode(voSaa2 , 1, new TGeoTranslation(0., 0., ziSaa2));
voSaa->AddNode(voSaa3, 1, new TGeoTranslation(0., 0., zcSaa3));
// Mother volume for muon stations 1+2 and shielding material placed between the quadrants
//
// Position of the dipole
- Float_t ziDipole = 724.45;
+ Float_t ziDipole = 741.;
- TGeoPcon* shYOUT1 = new TGeoPcon(0., 360., 25);
+ TGeoPcon* shYOUT1 = new TGeoPcon(0., 360., 24);
Float_t eps = 1.e-2;
// FA Tail Section
- for (Int_t iz = 0; iz < 9; iz++) {
+ for (Int_t iz = 1; iz < 9; iz++) {
z = shFaWTail->GetZ(iz+1);
if (iz == 8) z -= ozFaSaa1;
- shYOUT1->DefineSection(iz, z + ziFaWTail, shFaWTail->GetRmax(iz+1) + eps, 150.);
+ shYOUT1->DefineSection(iz-1, z + ziFaWTail, shFaWTail->GetRmax(iz+1) + eps, 150.);
}
// FA-SAA1 Joint
- z = shYOUT1->GetZ(8);
+ z = shYOUT1->GetZ(7);
for (Int_t iz = 9; iz < 17; iz++)
- shYOUT1->DefineSection(iz, z + shFaSaa1->GetZ(iz-9), shFaSaa1->GetRmax(iz-9) + eps, 150.);
+ shYOUT1->DefineSection(iz-1, z + shFaSaa1->GetZ(iz-9), shFaSaa1->GetRmax(iz-9) + eps, 150.);
- z = shYOUT1->GetZ(16) - ozSaa1;
+ z = shYOUT1->GetZ(15) - ozSaa1;
// SAA1 - Dipole
for (Int_t iz = 17; iz < 24; iz++)
- shYOUT1->DefineSection(iz, z + shSaa1M->GetZ(iz-13), shSaa1M->GetRmax(iz-13) + eps, 150.);
+ shYOUT1->DefineSection(iz-1, z + shSaa1M->GetZ(iz-13), shSaa1M->GetRmax(iz-13) + eps, 150.);
// Distance between dipole and start of SAA1 2deg opening cone
dz = ziDipole - (zSaa1StEnv[0] - dSt + zSaa1StEnvS + ziSaa1);
rOut = rOuSaa1StEnv2 + dz * TMath::Tan(2. * kDegRad);
- shYOUT1->DefineSection(24, ziDipole, rOut + eps, 150.);
+ shYOUT1->DefineSection(23, ziDipole, rOut + eps, 150.);
InvertPcon(shYOUT1);
TGeoVolume* voYOUT1 = new TGeoVolume("YOUT1", shYOUT1, kMedAirMu);
voYOUT1->SetVisibility(0);
voYOUT1->AddNode(asSaa1ExtraShield, 1, new TGeoCombiTrans(0., 0., - (100.7 + 62.2 + saa1ExtraShieldL / 2. + ziFaWTail), rotxz));
- voYOUT1->AddNode(asFaExtraShield, 1, new TGeoCombiTrans(0., 0., - (16.41 + kFaWring2HWidth + ziFaWTail), rotxz));
- top->AddNode(voYOUT1, 1, vec0);
+ voYOUT1->AddNode(asFaExtraShield, 1, new TGeoCombiTrans(0., 0., - (16.41 - 1.46 + kFaWring2HWidth + ziFaWTail), rotxz));
+ top->AddNode(voYOUT1, 1, gGeoIdentity);
//
// Mother volume for muon stations 4+5 and trigger stations.
//
- Float_t zoDipole = 1235.55;
+ Float_t zoDipole = 1249.;
- TGeoPcon* shYOUT2 = new TGeoPcon(0., 360., 14);
+ TGeoPcon* shYOUT21 = new TGeoPcon(0., 360., 14);
z = zoDipole;
- shYOUT2->DefineSection(0, z, rOuSaa1String, 252.);
+ shYOUT21->DefineSection(0, z, rOuSaa1String, 375.);
// Start of SAA1-SAA2
z = ziSaa1Saa2;
- shYOUT2->DefineSection(1, z, rOuSaa1String, 252.);
- shYOUT2->DefineSection(2, z, rOuSaa1Saa2Steel, 252.);
+ shYOUT21->DefineSection(1, z, rOuSaa1String, 375.);
+ shYOUT21->DefineSection(2, z, rOuSaa1Saa2Steel, 375.);
// End of SAA1-SAA2
z = ziSaa2;
- shYOUT2->DefineSection(3, z, rOuSaa1Saa2Steel, 252.);
+ shYOUT21->DefineSection(3, z, rOuSaa1Saa2Steel, 375.);
// SAA2
- shYOUT2->DefineSection( 4, z, rInSaa2StEnv1 + dSt, 252.);
+ shYOUT21->DefineSection( 4, z, rInSaa2StEnv1 + dSt, 375.);
z = ziSaa2 + zSaa2PbRing;
- shYOUT2->DefineSection( 5, z, rInSaa2StEnv1 + dSt, 252.);
+ shYOUT21->DefineSection( 5, z, rInSaa2StEnv1 + dSt, 375.);
// Pb Cone
- shYOUT2->DefineSection( 6, z, rOuSaa2PbRingF, 252.);
+ shYOUT21->DefineSection( 6, z, rOuSaa2PbRingF, 375.);
rmin = rOuSaa2PbRingF + (1380. - z) * TMath::Tan(1.6 * kDegRad);
- shYOUT2->DefineSection( 7, 1380., rmin, 252.);
- shYOUT2->DefineSection( 8, 1380., rmin, 304.);
+ shYOUT21->DefineSection( 7, 1380., rmin, 375.);
+ shYOUT21->DefineSection( 8, 1380., rmin, 375.);
z = ziSaa2 + zSaa2PbRing + dzSaa2PbRing;
- shYOUT2->DefineSection( 9, z, rOuSaa2PbRingR, 304.);
+ shYOUT21->DefineSection( 9, z, rOuSaa2PbRingR, 375.);
// Straight Sections
- shYOUT2->DefineSection(10, z, rInSaa2StEnv1 + dSt, 460.);
+ shYOUT21->DefineSection(10, z, rInSaa2StEnv1 + dSt, 460.);
z = ziSaa2 + dzSaa2StEnv1;
- shYOUT2->DefineSection(11, z, rInSaa2StEnv1 + dSt, 460.);
- shYOUT2->DefineSection(12, z, rInSaa2StEnv2 + dSt, 460.);
+ shYOUT21->DefineSection(11, z, rInSaa2StEnv1 + dSt, 460.);
+ shYOUT21->DefineSection(12, z, rInSaa2StEnv2 + dSt, 460.);
z += dzSaa2StEnv2;
- shYOUT2->DefineSection(13, z, rInSaa2StEnv2 + dSt, 460.);
+ shYOUT21->DefineSection(13, z, rInSaa2StEnv2 + dSt, 460.);
+
+ InvertPcon(shYOUT21);
+ shYOUT21->SetName("shYOUT21");
+
+ TGeoBBox* shYOUT22 = new TGeoBBox(460. , 200., 65. - 1.5);
+ shYOUT22->SetName("shYOUT22");
+
+ TGeoTranslation* tYOUT22 = new TGeoTranslation(0., -310. - 200., -zcFilter);
+ tYOUT22->SetName("tYOUT22");
+ tYOUT22->RegisterYourself();
+
+
+ TGeoCompositeShape* shYOUT2 = new TGeoCompositeShape("shYOUT2", "shYOUT21-shYOUT22:tYOUT22");
- InvertPcon(shYOUT2);
TGeoVolume* voYOUT2 = new TGeoVolume("YOUT2", shYOUT2, kMedAirMu);
- voYOUT2->SetVisibility(0);
- voYOUT2->AddNode(voMuonFilter, 1, new TGeoTranslation(0., 0., -zcFilter));
- top->AddNode(voYOUT2, 1, vec0);
+ voYOUT2->SetVisibility(1);
+ voYOUT2->AddNode(voMuonFilter, 1, new TGeoCombiTrans(0., dzMuonFilter * TMath::Tan(alhc * kDegrad), -zcFilter, rotxzlhc));
+ top->AddNode(voYOUT2, 1, gGeoIdentity);
}
void AliSHILv3::Init()
if(AliLog::GetGlobalDebugLevel()>0) {
printf("\n%s: ",ClassName());
for(i=0;i<35;i++) printf("*");
- printf(" SHILvTGeo_INIT ");
+ printf(" SHILv3_INIT ");
for(i=0;i<35;i++) printf("*");
printf("\n%s: ",ClassName());
//