/** * @file Phase1Container.cc * @author Ibrahin Pinera * @date 2016 SoLid - University of Antwerp */ #include "SolidMaterials.hh" #include "Phase1Container.hh" #include "Phase1ContainerISOFrame.hh" #include "G4Material.hh" #include "G4MaterialTable.hh" #include "G4ThreeVector.hh" #include "G4VisAttributes.hh" #include "G4Transform3D.hh" #include "G4UnionSolid.hh" #include "G4Box.hh" #include "G4SubtractionSolid.hh" #include "G4Tubs.hh" #include "G4PVPlacement.hh" #include "G4UnitsTable.hh" #include "G4SystemOfUnits.hh" #include "G4PhysicalConstants.hh" #include Phase1Container::Phase1Container(G4int verboseLevel) { m_verboseLevel = verboseLevel; containerISOFrame = new Phase1ContainerISOFrame(m_verboseLevel); m_outerLength = containerISOFrame->GetLength(); m_outerHeight = containerISOFrame->GetHeight(); m_outerWidth = containerISOFrame->GetWidth(); m_frameInnerLength = containerISOFrame->GetInnerLength(); m_frameInnerHeight = containerISOFrame->GetInnerHeight(); m_frameInnerWidth = containerISOFrame->GetInnerWidth(); m_innerOffSetX = containerISOFrame->GetInnerOffSetX(); m_innerOffSetY = containerISOFrame->GetInnerOffSetY(); m_innerOffSetZ = containerISOFrame->GetInnerOffSetZ(); m_footBaseLength = 200.*mm; m_footBaseWidth = 170.*mm; m_footBaseThickness = 8.*mm; m_footTubeDiam = 49.5*mm; m_footTubeHeight = 90.*mm - m_footBaseThickness; // m_footTubeHeight = 92.*mm + 22.98*mm; // aligning detector center with reactor core centerline m_insulationThickness = 100.*mm; m_insulationAlcoverThickness = 0.16*mm; m_AlFoilFloorThickness = 6.*mm + m_insulationAlcoverThickness; m_AlFoilWallsRoofThickness = 3.*mm + m_insulationAlcoverThickness; G4double totalInsulationThickness = m_insulationThickness + m_insulationAlcoverThickness + m_AlFoilWallsRoofThickness; m_innerLength = m_frameInnerLength - 2.*totalInsulationThickness; m_innerHeight = m_frameInnerHeight - 2.*m_insulationAlcoverThickness - 2.*m_insulationThickness - m_AlFoilWallsRoofThickness - m_AlFoilFloorThickness; m_innerWidth = m_frameInnerWidth - 2.*totalInsulationThickness; m_topPatchPanelLength = totalInsulationThickness; m_topPatchPanelHeight = containerISOFrame->GetTopPatchHeight(); m_topPatchPanelWidth = containerISOFrame->GetTopPatchWidth(); m_bottomPatchPanelLength = m_topPatchPanelLength; m_bottomPatchPanelHeight = containerISOFrame->GetBottomPatchHeight(); m_bottomPatchPanelWidth = containerISOFrame->GetBottomPatchWidth(); // PE plate below the container for shielding m_shieldingBottomPlaneLength = 2000.*mm; m_shieldingBottomPlaneHeight = 100.*mm; m_shieldingBottomPlaneWidth = m_outerWidth; // 3800.*mm // Cd sheets below the container for shielding m_CdThickness = 2.*mm; // maximum possible for bottom Cd m_CdBottomLength = 803.*mm; m_CdBottomHeight = m_CdThickness; m_CdBottomWidth = 3280.*mm; // Cd sheets on top of the container for shielding m_CdTopLength = 1640.*mm; m_CdTopHeight = m_CdThickness; m_CdTopWidth = m_outerWidth; // 3800.*mm; // Cd sheets on the back (-Z) of the container for shielding m_CdBackLength = m_innerLength; m_CdBackHeight = m_innerHeight - 110.*mm; m_CdBackWidth = m_CdThickness; m_totalLength = m_outerLength;// + m_footBaseLength - m_footTubeDiam; m_totalHeight = m_outerHeight + m_footTubeHeight + m_footBaseThickness; m_totalWidth = m_outerWidth;// + m_footBaseWidth - m_footTubeDiam; // m_totalHeight = m_outerHeight + m_footTubeHeight + m_footBaseThickness + m_CdThickness; // m_totalWidth = m_outerWidth + m_CdThickness; m_OffSetX = m_innerOffSetX; m_OffSetY = m_innerOffSetY + 0.5*(m_footBaseThickness + m_footTubeHeight); m_OffSetZ = m_innerOffSetZ; // m_containerOffSetX = containerISOFrame->GetOffSetX(); // internal face of ISO frame -X side wall m_containerOffSetX = containerISOFrame->GetOffSetX() + totalInsulationThickness; // internal face of insulation -X wall // m_containerOffSetY = -0.5*m_totalHeight; //with respect to the floor m_containerOffSetY = -0.5*m_innerHeight + m_OffSetY + 0.5*(m_AlFoilFloorThickness - m_AlFoilWallsRoofThickness); m_containerOffSetZ = -0.5*m_innerWidth + m_OffSetZ; // internal -Z wall of container if( m_verboseLevel > 0 ) { G4cout << "==============================================" << G4endl; G4cout << "external dimensions of the Full Container ISO frame: "; G4cout << m_outerLength << " x " << m_outerHeight << " x " << m_outerWidth << G4endl; G4cout << "internal dimensions of the Container ISO frame: "; G4cout << m_frameInnerLength << " x " << m_frameInnerHeight << " x " << m_frameInnerWidth << G4endl; G4cout << "total dimensions of the Container+Feet: "; G4cout << m_totalLength << " x " << m_totalHeight << " x " << m_totalWidth << G4endl; G4cout << "internal dimensions of the Container free space (incl. insulation): "; G4cout << m_innerLength << " x " << m_innerHeight << " x " << m_innerWidth << G4endl; G4cout << "OffSets of the Container+feet: "; G4cout << m_OffSetX << " x " << m_OffSetY << " x " << m_OffSetZ << G4endl; G4cout << "==============================================" << G4endl; } } Phase1Container::~Phase1Container() { } G4LogicalVolume *Phase1Container::ContainerConstruction() { G4Material * mate; // make colours ********************************************************* G4Colour white (1.0, 1.0, 1.0) ; G4Colour white_t (1.0, 1.0, 1.0, .95) ; G4Colour grey (0.5, 0.5, 0.5) ; G4Colour lgrey (.75, .75, .75) ; G4Colour red (1.0, 0.0, 0.0, 0.5) ; G4Colour blue (0.0, 0.0, 1.0) ; G4Colour blue_t (0.0, 0.0, 1.0, .75) ; G4Colour cyan (0.0, 1.0, 1.0, 0.5) ; G4Colour magenta (1.0, 0.0, 1.0) ; G4Colour yellow (1.0, 1.0, 0.0, 0.5) ; G4Colour lblue (0.0, 0.0, .75) ; G4Colour black (0.0, 0.0, 0.0) ; G4Colour green (0.0, 1.0, 0.0) ; G4Colour lgreen (0.0, .75, 0.0) ; // G4bool forceSolid = false; G4bool forceSolid = true; // construct Container box G4Box* containerBoxOuter = new G4Box("containerBoxOuter", 0.5*m_totalLength, 0.5*m_totalHeight, 0.5*m_totalWidth); G4Box* containerBoxInner = new G4Box("containerBoxInner", 0.5*m_innerLength, 0.5*m_innerHeight, 0.5*m_innerWidth); G4SubtractionSolid* ContainerBoxFull = new G4SubtractionSolid("ContainerBoxFull", containerBoxOuter, containerBoxInner, 0, G4ThreeVector(m_OffSetX, m_OffSetY + 0.5*(m_AlFoilFloorThickness - m_AlFoilWallsRoofThickness), m_OffSetZ)); mate = G4Material::GetMaterial("Air"); logContainer = new G4LogicalVolume(ContainerBoxFull, mate, "logContainer", 0, 0, 0); logContainer->SetVisAttributes(G4VisAttributes::Invisible); // top patch panels G4Box* topPatchPanelBox = new G4Box("topPatchPanelBox", 0.5*m_topPatchPanelLength, 0.5*m_topPatchPanelHeight, 0.5*m_topPatchPanelWidth); mate = G4Material::GetMaterial("CELOTEX"); G4VisAttributes* vatPannels= new G4VisAttributes(green); vatPannels->SetVisibility(true); vatPannels->SetForceSolid(forceSolid); logContainerTopPanel = new G4LogicalVolume(topPatchPanelBox, mate, "logContainerTopPanel", 0, 0, 0); logContainerTopPanel->SetVisAttributes(vatPannels); // bottom patch panel G4Box* bottomPatchPanelBox = new G4Box("bottomPatchPanelBox", 0.5*m_bottomPatchPanelLength, 0.5*m_bottomPatchPanelHeight, 0.5*m_bottomPatchPanelWidth); logContainerBottomPanel = new G4LogicalVolume(bottomPatchPanelBox, mate, "logContainerBottomPanel", 0, 0, 0); logContainerBottomPanel->SetVisAttributes(vatPannels); // place the container ISO frame logContainerISOFrame = containerISOFrame->ISOFrameConstruction(); physContainerISOFrame = new G4PVPlacement(0, G4ThreeVector( 0., 0.5*(m_totalHeight - m_outerHeight), 0. ), logContainerISOFrame, "physContainerISOFrame", logContainer, false, 0); // Al cover for CELOTEX insulation (outside insulator) G4double insulationAlcoverLength = m_frameInnerLength - 2.*m_insulationAlcoverThickness; G4double insulationAlcoverHeight = m_frameInnerHeight - 2.*m_insulationAlcoverThickness; G4double insulationAlcoverWidth = m_frameInnerWidth - 2.*m_insulationAlcoverThickness; G4Box* insulationAlcoverOuter = new G4Box("insulationAlcoverOuter", 0.5*m_frameInnerLength, 0.5*m_frameInnerHeight, 0.5*m_frameInnerWidth); G4Box* insulationAlcoverInner = new G4Box("insulationAlcoverInner", 0.5*insulationAlcoverLength, 0.5*insulationAlcoverHeight, 0.5*insulationAlcoverWidth); G4SubtractionSolid* insulationAlcoverBox = new G4SubtractionSolid("insulationAlcoverBox", insulationAlcoverOuter, insulationAlcoverInner, 0, G4ThreeVector(0., 0., 0.)); //patches in insulation Al cover G4double xPos = 0.5*(insulationAlcoverLength + m_insulationAlcoverThickness); G4double yPos1 = 0.5*m_outerHeight - 450.*mm; G4double zPos1 = 0.5*m_outerWidth - 1315.*mm; G4double zPosDel1 = 1360.*mm; G4double yPos2 = -0.5*m_outerHeight + 458.7*mm; G4double zPos2 = 0.5*m_outerWidth - 3180.*mm; insulationAlcoverBox = new G4SubtractionSolid("insulationAlcoverBox", insulationAlcoverBox, topPatchPanelBox, 0, G4ThreeVector(xPos, yPos1 - m_innerOffSetY, zPos1 - m_OffSetZ)); insulationAlcoverBox = new G4SubtractionSolid("insulationAlcoverBox", insulationAlcoverBox, topPatchPanelBox, 0, G4ThreeVector(xPos, yPos1 - m_innerOffSetY, zPos1 - zPosDel1 - m_OffSetZ)); insulationAlcoverBox = new G4SubtractionSolid("insulationAlcoverBox", insulationAlcoverBox, bottomPatchPanelBox, 0, G4ThreeVector(xPos, yPos2 - m_innerOffSetY, zPos2 - m_OffSetZ)); mate = G4Material::GetMaterial("Aluminium_6061"); G4VisAttributes* vatAlFoil= new G4VisAttributes(lgrey); vatAlFoil->SetVisibility(true); vatAlFoil->SetForceSolid(forceSolid); logContainerInsulationAlcover = new G4LogicalVolume(insulationAlcoverBox, mate, "logContainerInsulationAlcover", 0, 0, 0); logContainerInsulationAlcover->SetVisAttributes(vatAlFoil); physContainerInsulationAlcover = new G4PVPlacement(0, G4ThreeVector(m_OffSetX, m_OffSetY, m_OffSetZ), logContainerInsulationAlcover, "physContainerInsulationAlcover", logContainer, false, 0); // Celotex thermal insulation (inside container) G4double insulationLength = insulationAlcoverLength - 2.*m_insulationThickness; G4double insulationHeight = insulationAlcoverHeight - 2.*m_insulationThickness; G4double insulationWidth = insulationAlcoverWidth - 2.*m_insulationThickness; G4Box* insulationInner = new G4Box("insulationInner", 0.5*insulationLength, 0.5*insulationHeight, 0.5*insulationWidth); G4SubtractionSolid* insulationBox = new G4SubtractionSolid("insulationBox", insulationAlcoverInner, insulationInner, 0, G4ThreeVector(0., 0., 0.)); //patches in CELOTEX insulation xPos = 0.5*(insulationLength + m_insulationThickness); insulationBox = new G4SubtractionSolid("insulationBox", insulationBox, topPatchPanelBox, 0, G4ThreeVector(xPos, yPos1 - m_innerOffSetY, zPos1 - m_OffSetZ)); insulationBox = new G4SubtractionSolid("insulationBox", insulationBox, topPatchPanelBox, 0, G4ThreeVector(xPos, yPos1 - m_innerOffSetY, zPos1 - zPosDel1 - m_OffSetZ)); insulationBox = new G4SubtractionSolid("insulationBox", insulationBox, bottomPatchPanelBox, 0, G4ThreeVector(xPos, yPos2 - m_innerOffSetY, zPos2 - m_OffSetZ)); mate = G4Material::GetMaterial("CELOTEX"); G4VisAttributes* vatInsulation= new G4VisAttributes(magenta); vatInsulation->SetVisibility(true); vatInsulation->SetForceSolid(forceSolid); logContainerInsulation = new G4LogicalVolume(insulationBox, mate, "logContainerInsulation", 0, 0, 0); logContainerInsulation->SetVisAttributes(vatInsulation); physContainerInsulation = new G4PVPlacement(0, G4ThreeVector(m_OffSetX, m_OffSetY, m_OffSetZ), logContainerInsulation, "physContainerInsulation", logContainer, false, 0); // Al foil (inside insulator) G4double AlFoilLength = insulationLength - 2.*m_AlFoilWallsRoofThickness; G4double AlFoilHeight = insulationHeight - m_AlFoilFloorThickness - m_AlFoilWallsRoofThickness; G4double AlFoilWidth = insulationWidth - 2.*m_AlFoilWallsRoofThickness; G4Box* AlFoilInner = new G4Box("AlFoilInner", 0.5*AlFoilLength, 0.5*AlFoilHeight, 0.5*AlFoilWidth); G4SubtractionSolid* AlFoilBox = new G4SubtractionSolid("AlFoilBox", insulationInner, AlFoilInner, 0, G4ThreeVector(0., 0.5*(m_AlFoilFloorThickness - m_AlFoilWallsRoofThickness), 0.)); //patches in Al foil inside insulation xPos = 0.5*(AlFoilLength + m_AlFoilWallsRoofThickness); AlFoilBox = new G4SubtractionSolid("AlFoilBox", AlFoilBox, topPatchPanelBox, 0, G4ThreeVector(xPos, yPos1 - m_innerOffSetY, zPos1 - m_OffSetZ)); AlFoilBox = new G4SubtractionSolid("AlFoilBox", AlFoilBox, topPatchPanelBox, 0, G4ThreeVector(xPos, yPos1 - m_innerOffSetY, zPos1 - zPosDel1 - m_OffSetZ)); AlFoilBox = new G4SubtractionSolid("AlFoilBox", AlFoilBox, bottomPatchPanelBox, 0, G4ThreeVector(xPos, yPos2 - m_innerOffSetY, zPos2 - m_OffSetZ)); mate = G4Material::GetMaterial("Aluminium_6061"); logContainerAlFoil = new G4LogicalVolume(AlFoilBox, mate, "logContainerAlFoil", 0, 0, 0); logContainerAlFoil->SetVisAttributes(vatAlFoil); physContainerAlFoil = new G4PVPlacement(0, G4ThreeVector(m_OffSetX, m_OffSetY, m_OffSetZ), logContainerAlFoil, "physContainerAlFoil", logContainer, false, 0); G4cout << "Ypos of inner bottom floor of container: " << -0.5*AlFoilHeight + 0.5*(m_AlFoilFloorThickness - m_AlFoilWallsRoofThickness) + m_OffSetY << G4endl; // locating the patch panels xPos = 0.5*(m_innerLength + m_topPatchPanelLength); m_innerOffSetY = 0.5*(m_footTubeHeight + m_footBaseThickness); physContainerTopPanel = new G4PVPlacement(0, G4ThreeVector(xPos, yPos1 + m_innerOffSetY, zPos1), logContainerTopPanel, "physContainerTopPanel", logContainer, false, 0); physContainerTopPanel = new G4PVPlacement(0, G4ThreeVector(xPos, yPos1 + m_innerOffSetY, zPos1 - zPosDel1), logContainerTopPanel, "physContainerTopPanel", logContainer, false, 1); physContainerBottomPanel = new G4PVPlacement(0, G4ThreeVector(xPos, yPos2 + m_innerOffSetY, zPos2), logContainerBottomPanel, "physContainerBottomPanel", logContainer, false, 0); // Container Feet G4Box* footBase = new G4Box("footBase", 0.5*m_footBaseLength, 0.5*m_footBaseThickness, 0.5*m_footBaseWidth); G4Tubs* footTube = new G4Tubs("footTube", 0., 0.5*m_footTubeDiam, 0.5*m_footTubeHeight, 0., 360.*deg); G4RotationMatrix* rot = new G4RotationMatrix(); rot->rotateX(90*deg); G4UnionSolid* containerFoot = new G4UnionSolid("containerFoot", footBase, footTube, rot, G4ThreeVector(0., 0.5*(m_footBaseThickness + m_footTubeHeight), 0.)); mate = G4Material::GetMaterial("Steel_EN8"); G4VisAttributes* vatContainer = new G4VisAttributes(lblue); vatContainer->SetVisibility(true); vatContainer->SetForceSolid(forceSolid); logContainerFoot = new G4LogicalVolume(containerFoot, mate, "logContainerFoot", 0, 0, 0); logContainerFoot->SetVisAttributes(vatContainer); xPos = 0.5*(m_totalLength - m_footBaseLength); yPos1 = -0.5*(m_totalHeight - m_footBaseThickness); zPos1 = 0.5*(m_totalWidth - m_footBaseWidth); physContainerFoot = new G4PVPlacement(0, G4ThreeVector( -xPos, yPos1, -zPos1 ), logContainerFoot, "physContainerFoot", logContainer, false, 1); physContainerFoot = new G4PVPlacement(0, G4ThreeVector( -xPos, yPos1, zPos1 ), logContainerFoot, "physContainerFoot", logContainer, false, 2); physContainerFoot = new G4PVPlacement(0, G4ThreeVector( xPos, yPos1, -zPos1 ), logContainerFoot, "physContainerFoot", logContainer, false, 3); physContainerFoot = new G4PVPlacement(0, G4ThreeVector( xPos, yPos1, zPos1 ), logContainerFoot, "physContainerFoot", logContainer, false, 4); // PE planes below the container for shielding G4double shieldingBottomHeight1 = 0.75*m_shieldingBottomPlaneHeight; // 3 bottom planes G4double shieldingBottomHeight2 = 0.25*m_shieldingBottomPlaneHeight; // top plane G4double shieldingBottomWidth2 = 3000.*mm; // top plane G4Box* shieldingBox1 = new G4Box( "shieldingBox1", 0.5*m_shieldingBottomPlaneLength, 0.5*shieldingBottomHeight1, 0.5*m_shieldingBottomPlaneWidth ); G4Box* shieldingBox2 = new G4Box( "shieldingBox2", 0.5*m_shieldingBottomPlaneLength, 0.5*shieldingBottomHeight2, 0.5*shieldingBottomWidth2 ); G4UnionSolid* shieldingBox = new G4UnionSolid( "shieldingBoxv", shieldingBox1, shieldingBox2, 0, G4ThreeVector( 0., 0.5*m_shieldingBottomPlaneHeight, 0.5*(-m_shieldingBottomPlaneWidth + shieldingBottomWidth2) ) ); mate = G4Material::GetMaterial("HDPE"); G4VisAttributes* vatPE = new G4VisAttributes(black); vatPE->SetVisibility(true); vatPE->SetForceSolid(forceSolid); logShieldingBottomPlane = new G4LogicalVolume(shieldingBox, mate, "logShieldingBottomPlane", 0, 0, 0); logShieldingBottomPlane->SetVisAttributes(vatPE); xPos = 0.5*(-m_totalLength + m_shieldingBottomPlaneLength) + m_footBaseLength; yPos1 = -0.5*(m_totalHeight - shieldingBottomHeight1); zPos1 = 0.; physShieldingBottomPlane = new G4PVPlacement(0, G4ThreeVector( xPos, yPos1, zPos1 ), logShieldingBottomPlane, "physShieldingBottomPlane", logContainer, false, 0); // Cd sheets below the container for shielding // on top of the previous PE planes G4Box* bottomCdBox = new G4Box( "bottomCdBox", 0.5*m_CdBottomLength, 0.5*m_CdBottomHeight, 0.5*m_CdBottomWidth ); mate = G4Material::GetMaterial("G4_Cd"); G4VisAttributes* vatCd = new G4VisAttributes(green); vatCd->SetVisibility(true); vatCd->SetForceSolid(forceSolid); logShieldingBottomCd = new G4LogicalVolume(bottomCdBox, mate, "logShieldingBottomCd", 0, 0, 0); logShieldingBottomCd->SetVisAttributes(vatCd); xPos = -0.5*(m_totalLength - m_CdBottomLength) + m_footBaseLength; yPos1 = -0.5*(m_totalHeight - m_CdBottomHeight) + m_shieldingBottomPlaneHeight; zPos1 = -0.5*(m_totalWidth - m_CdBottomWidth); physShieldingBottomCd = new G4PVPlacement(0, G4ThreeVector( xPos, yPos1, zPos1 ), logShieldingBottomCd, "physShieldingBottomCd", logContainer, false, 0); // Cd sheets on top of the container for shielding G4Box* topCdBox = new G4Box( "topCdBox", 0.5*m_CdTopLength, 0.5*m_CdTopHeight, 0.5*m_CdTopWidth ); G4double topCdCutLength = 840.*mm; G4double topCdCutWidth = 560.*mm; G4Box* topCdBoxCut = new G4Box( "topCdBoxCut", 0.5*topCdCutLength, 0.5*m_CdTopHeight+0.5*mm, 0.5*topCdCutWidth ); G4SubtractionSolid* topCd = new G4SubtractionSolid( "topCd", topCdBox, topCdBoxCut, 0, G4ThreeVector( 0.5*(m_CdTopLength - topCdCutLength), 0., 0.5*(m_CdTopWidth - topCdCutWidth) ) ); logShieldingTopCd = new G4LogicalVolume(topCd, mate, "logShieldingTopCd", 0, 0, 0); logShieldingTopCd->SetVisAttributes(vatCd); xPos = -0.5*(m_totalLength - m_CdTopLength) + m_footBaseLength; yPos1 = 0.5*(m_totalHeight - m_CdTopHeight); zPos1 = -0.5*(m_totalWidth - m_CdTopWidth); physShieldingTopCd = new G4PVPlacement(0, G4ThreeVector( xPos, yPos1, zPos1 ), logShieldingTopCd, "physShieldingTopCd", logContainer, false, 0); // Cd sheets on the back (-Z) of the container for shielding G4Box* backCdBox = new G4Box( "backCdBox", 0.5*m_CdBackLength, 0.5*m_CdBackHeight, 0.5*m_CdBackWidth ); logShieldingBackCd = new G4LogicalVolume(backCdBox, mate, "logShieldingBackCd", 0, 0, 0); logShieldingBackCd->SetVisAttributes(vatCd); xPos = 0.; // yPos1 = -0.5*(m_totalHeight - m_CdBackHeight) + m_footTubeHeight + m_footBaseThickness; yPos1 = m_containerOffSetY + 0.5*m_CdBackHeight; zPos1 = -0.5*(m_totalWidth - m_CdBackWidth); physShieldingBackCd = new G4PVPlacement(0, G4ThreeVector( xPos, yPos1, zPos1 ), logShieldingBackCd, "physShieldingBackCd", logContainer, false, 0); if( m_verboseLevel > 0 ) { G4float containerBoxMass = logContainerISOFrame->GetMass()/g; G4float containerBoxVol = containerBoxMass / (mate->GetDensity()/(g/cm3)); G4float insulationAlcoverMass = logContainerInsulationAlcover->GetMass()/g; G4float insulationAlcoverVol = insulationAlcoverBox->GetCubicVolume()/cm3; G4float insulationMass = logContainerInsulation->GetMass()/g; G4float insulationVol = insulationBox->GetCubicVolume()/cm3; G4float AlfoilMass = logContainerAlFoil->GetMass()/g; G4float AlfoilVol = AlFoilBox->GetCubicVolume()/cm3; G4float topPatchMass = 2.*logContainerTopPanel->GetMass()/g; G4float topPatchVol = 2.*topPatchPanelBox->GetCubicVolume()/cm3; G4float bottomPatchMass = logContainerBottomPanel->GetMass()/g; G4float bottomPatchVol = bottomPatchPanelBox->GetCubicVolume()/cm3; G4float feetMass = 4.*logContainerFoot->GetMass()/g; G4float feetVol = 4.*containerFoot->GetCubicVolume()/cm3; G4float totalMass = containerBoxMass + insulationAlcoverMass + insulationMass + AlfoilMass + feetMass + topPatchMass + bottomPatchMass; G4float totalVol = containerBoxVol + insulationAlcoverVol + insulationVol + AlfoilVol + feetVol + topPatchVol + bottomPatchVol; G4cout << "**************VOLUME MASS****************" << G4endl; G4cout << " part:\t mass (g)\t volume (cm^3)" << G4endl; G4cout << " container steel ISO frame: " << containerBoxMass << ", \t" << containerBoxVol << G4endl; G4cout << " insulator Al cover: " << insulationAlcoverMass << ", \t" << insulationAlcoverVol << G4endl; G4cout << " insulation: " << insulationMass << ", \t" << insulationVol << G4endl; G4cout << " Al foil: " << AlfoilMass << ", \t" << AlfoilVol << G4endl; G4cout << " two top Patches: " << topPatchMass << ", \t" << topPatchVol << G4endl; G4cout << " bottom Patch: " << bottomPatchMass << ", \t" << bottomPatchVol << G4endl; G4cout << " four container feet: " << feetMass << ", \t" << feetVol << G4endl; G4cout << " ALL container total: " << totalMass << ", \t" << totalVol << G4endl; G4cout << "**********END VOLUME MASS****************" << G4endl; } return logContainer; }