@@ -39,11 +39,11 @@ ShipMuonShield::ShipMuonShield()
3939
4040ShipMuonShield::ShipMuonShield (const char * name, const Int_t Design, const char * Title,
4141 Double_t Z, Double_t L0, Double_t L1, Double_t L2, Double_t L3, Double_t L4, Double_t L5, Double_t L6,
42- Double_t L7, Double_t L8, Double_t gap, Double_t LE, Double_t y, Double_t fl )
42+ Double_t L7, Double_t L8, Double_t gap, Double_t LE, Double_t y, Double_t floor, Double_t field )
4343 : FairModule(name ,Title)
4444{
4545 fDesign = Design;
46- fField = fl ;
46+ fField = field ;
4747 if (fDesign ==1 ){
4848 fMuonShieldLength = L1;
4949 }
@@ -77,6 +77,8 @@ ShipMuonShield::ShipMuonShield(const char* name, const Int_t Design, const char*
7777 2 * (dZ1 + dZ2 + dZ3 + dZ4 + dZ5 + dZ6 + dZ7 + dZ8) + LE;
7878 }
7979
80+ fFloor = (fDesign == 7 ) ? floor : 0 ;
81+
8082 zEndOfAbsorb = Z + dZ0 - fMuonShieldLength /2 .;
8183 if (fDesign ==6 ||fDesign ==7 ){zEndOfAbsorb = Z - fMuonShieldLength /2 .;}
8284 fY = y;
@@ -475,14 +477,13 @@ void ShipMuonShield::ConstructGeometry()
475477 // TODO split out into function/method?
476478 Double_t dymax = std::max (dYIn[nM] + dXIn[nM], dYOut[nM] + dXOut[nM]);
477479 Double_t dymin = std::min (dYIn[nM] + dXIn[nM], dYOut[nM] + dXOut[nM]);
478- Double_t floor = -5 . * m; // TODO use same variable for floor definition
479480 Double_t slope =
480481 (dYIn[nM] + dXIn[nM] - dYOut[nM] - dXOut[nM]) / (2 * dZf[nM]);
481482 Double_t w1 = 2 * dXIn[nM] + std::max (20 ., gapIn[nM]);
482483 Double_t w2 = 2 * dXOut[nM] + std::max (20 ., gapOut[nM]);
483484 Double_t anti_overlap = 0.1 ;
484- Double_t h1 = 0.5 * (floor + dYIn[nM] + dXIn[nM] + anti_overlap);
485- Double_t h2 = 0.5 * (floor + dYOut[nM] + dXOut[nM] + anti_overlap);
485+ Double_t h1 = 0.5 * (dYIn[nM] + dXIn[nM] + anti_overlap - fFloor );
486+ Double_t h2 = 0.5 * (dYOut[nM] + dXOut[nM] + anti_overlap - fFloor );
486487 std::vector<Double_t> verticesIn = {
487488 -w1, -h1,
488489 +w1, -h1,
@@ -512,10 +513,10 @@ void ShipMuonShield::ConstructGeometry()
512513 pillar1->SetLineColor (kGreen -5 );
513514 pillar2->SetLineColor (kGreen -5 );
514515 tShield->AddNode (pillar1, 1 , new TGeoTranslation (
515- 0 , -0.5 * (dYIn[nM] + dXIn[nM] - floor ),
516+ 0 , -0.5 * (dYIn[nM] + dXIn[nM] + fFloor ),
516517 Z[nM] - dZf[nM] + 0.5 * m));
517518 tShield->AddNode (pillar2, 1 , new TGeoTranslation (
518- 0 , -0.5 * (dYOut[nM] + dXOut[nM] - floor ),
519+ 0 , -0.5 * (dYOut[nM] + dXOut[nM] + fFloor ),
519520 Z[nM] + dZf[nM] - 0.5 * m));
520521 }
521522
@@ -552,15 +553,16 @@ void ShipMuonShield::ConstructGeometry()
552553 Double_t dZD = 100 *m + fMuonShieldLength ;
553554 TGeoBBox *box3 = new TGeoBBox (" box3" , 15 *m, 15 *m,dZD/2 .);
554555 TGeoBBox *box4 = new TGeoBBox (" box4" , 10 *m, 10 *m,dZD/2 .);
555- // cover also Tau nu area
556+
556557 if (fDesign == 7 ) {
557- TGeoBBox *box5 = new TGeoBBox (" shield_floor" , 10 * m, 2.5 * m,
558+ // Only add floor for new shield
559+ TGeoBBox *box5 = new TGeoBBox (" shield_floor" , 10 * m, fFloor / 2 .,
558560 fMuonShieldLength / 2 .);
559561 TGeoVolume *floor = new TGeoVolume (" floorM" , box5, concrete);
560562 floor->SetLineColor (11 ); // grey
561- top->AddNode (floor, 1 ,
562- new TGeoTranslation (
563- 0 , - 7.5 * m, zEndOfAbsorb + fMuonShieldLength / 2 .));
563+ top->AddNode (floor, 1 , new TGeoTranslation ( 0 , - 10 * m + fFloor / 2 .,
564+ zEndOfAbsorb +
565+ fMuonShieldLength / 2 .));
564566 }
565567 TGeoCompositeShape *compRockD =
566568 new TGeoCompositeShape (" compRockD" , " (box3-box4)" );
0 commit comments