X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STRUCT%2FAliSHILv3.cxx;h=0867fd6565816cf5b45df6d72843eaf720e6e6ce;hb=6551594bacbfb878bf120d44d6bf9e5aff4675ad;hp=2db649c11b4b5940ea19364f1a52813c467d020d;hpb=1b1481916fe5a23e88e6f883a3c1d42c8ab2c7a8;p=u%2Fmrichter%2FAliRoot.git diff --git a/STRUCT/AliSHILv3.cxx b/STRUCT/AliSHILv3.cxx index 2db649c11b4..0867fd65658 100644 --- a/STRUCT/AliSHILv3.cxx +++ b/STRUCT/AliSHILv3.cxx @@ -13,7 +13,7 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* $Id $ */ +/* $Id$ */ //------------------------------------------------------------------------- // The small angle absorber SAA (beam shield) @@ -71,6 +71,10 @@ void AliSHILv3::CreateGeometry() 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 // @@ -86,7 +90,6 @@ void AliSHILv3::CreateGeometry() 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.; @@ -186,7 +189,7 @@ void AliSHILv3::CreateGeometry() // 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; @@ -205,7 +208,7 @@ void AliSHILv3::CreateGeometry() // 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; @@ -224,7 +227,7 @@ void AliSHILv3::CreateGeometry() // 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); @@ -239,25 +242,25 @@ void AliSHILv3::CreateGeometry() 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; @@ -300,7 +303,7 @@ void AliSHILv3::CreateGeometry() 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); @@ -316,19 +319,19 @@ void AliSHILv3::CreateGeometry() 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.)); @@ -347,19 +350,19 @@ void AliSHILv3::CreateGeometry() // 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.; @@ -606,7 +609,7 @@ void AliSHILv3::CreateGeometry() 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.; @@ -638,20 +641,20 @@ void AliSHILv3::CreateGeometry() 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); @@ -669,19 +672,19 @@ void AliSHILv3::CreateGeometry() /////////////////////////////////// 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); @@ -697,11 +700,11 @@ void AliSHILv3::CreateGeometry() // 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); @@ -718,10 +721,10 @@ void AliSHILv3::CreateGeometry() /////////////////////////////////// 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); @@ -729,7 +732,7 @@ void AliSHILv3::CreateGeometry() // 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", @@ -853,7 +856,7 @@ void AliSHILv3::CreateGeometry() 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.; @@ -983,9 +986,9 @@ void AliSHILv3::CreateGeometry() // 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); // @@ -1090,10 +1093,10 @@ void AliSHILv3::CreateGeometry() // 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); } // @@ -1116,32 +1119,28 @@ void AliSHILv3::CreateGeometry() // /////////////////////////////////// // 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* shSaa3CCBlockO = new TGeoBBox(80./2., 80./2., 100./2.); shSaa3CCBlockO->SetName("Saa3CCBlockO"); - TGeoPcon* shSaa3InnerRegion = new TGeoPcon(0., 360., 6); - shSaa3InnerRegion->DefineSection( 0, -60.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, 60.0, 0., 16.8/2.); + 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* shSaa3CCBlock = new TGeoCompositeShape("Saa3CCBlock", "Saa3CCBlockO-Saa3InnerRegion"); TGeoVolume* voSaa3CCBlock = new TGeoVolume("YSAA3CCBlock", shSaa3CCBlock, kMedConcSh); - + voSaa3->AddNode(voSaa3CCBlock, 1, gGeoIdentity); // Plate 1: 240 cm x 80 cm x 100 cm (x 2) @@ -1178,9 +1177,11 @@ void AliSHILv3::CreateGeometry() 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); @@ -1191,7 +1192,7 @@ void AliSHILv3::CreateGeometry() 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); @@ -1232,7 +1233,7 @@ void AliSHILv3::CreateGeometry() 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)); @@ -1243,31 +1244,31 @@ void AliSHILv3::CreateGeometry() // 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); @@ -1279,41 +1280,53 @@ void AliSHILv3::CreateGeometry() // // 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)); + voYOUT2->SetVisibility(1); + voYOUT2->AddNode(voMuonFilter, 1, new TGeoCombiTrans(0., dzMuonFilter * TMath::Tan(alhc * kDegrad), -zcFilter, rotxzlhc)); top->AddNode(voYOUT2, 1, gGeoIdentity); }