Loading geom/EXACRAD.cc +0 −258 Original line number Diff line number Diff line Loading @@ -853,264 +853,6 @@ G4VPhysicalVolume* EXACRAD::ConstructGeometry(G4VPhysicalVolume* World_phys) { region_target->AddRootLogicalVolume(log_coating3); } if (coating1_type == 2){ // --------- mother target // mother height G4double mother_target_t = spo_plate_t_edge + spo_coating1_t_mean + spo_coating2_t; G4Box* mother_target = new G4Box("mother_target", plate_xside/2., plate_yside/2., mother_target_t/2.); G4LogicalVolume* log_mother_target = new G4LogicalVolume(mother_target, chamber_mat, "log_mother_target"); G4VPhysicalVolume* phys_mother_target = new G4PVPlacement(target_rotation, G4ThreeVector(0.0,0.0, -mother_target_t/2.), log_mother_target, "phys_mother_target", log_chamber, false, spo_mother_copyno); log_mother_target->SetVisAttributes (G4VisAttributes::GetInvisible()); // ----- plate volume G4Box* spo_plate = new G4Box("spo_plate", plate_xside/2., plate_yside/2., spo_plate_t/2.); G4LogicalVolume* log_spo_plate = new G4LogicalVolume(spo_plate, spo_plate_mat, "log_spo_plate"); G4VPhysicalVolume* phys_spo_plate = new G4PVPlacement(0, G4ThreeVector(0.0,0.0, -(mother_target_t/2.) + spo_plate_t_edge - spo_plate_t/2.), log_spo_plate, "phys_spo_plate", log_mother_target, false, spo_plate_copyno); G4VisAttributes* visPlate = new G4VisAttributes(G4Colour::Grey()); log_spo_plate->SetVisAttributes(visPlate); gm.AddXYZDetector( log_spo_plate); region_target->AddRootLogicalVolume(log_spo_plate); // ----- ribs // rib height G4double rib_t = spo_plate_t_edge - spo_plate_t; G4double rib_pitch = 2.148*mm; // -- external ribs - rib0 G4double rib0_side = 0.805*mm; G4Box* rib0 = new G4Box("rib0", plate_xside/2., rib0_side/2., rib_t/2.); G4LogicalVolume* log_rib0 = new G4LogicalVolume(rib0, spo_plate_mat, "log_rib0"); // rib0 - left G4VPhysicalVolume* phys_rib0_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib0, "phys_rib0_left", log_mother_target, false, spo_plate_copyno); // rib0 - right G4VPhysicalVolume* phys_rib0_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib0, "phys_rib0_right", log_mother_target, false, spo_plate_copyno); log_rib0->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib0); region_target->AddRootLogicalVolume(log_rib0); // -- internal ribs // rib1 G4double rib1_side = 0.290*mm; G4Box* rib1 = new G4Box("rib1", plate_xside/2., rib1_side/2., rib_t/2.); G4LogicalVolume* log_rib1 = new G4LogicalVolume(rib1, spo_plate_mat, "log_rib1"); // rib1 - left G4VPhysicalVolume* phys_rib1_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib1, "phys_rib1_left", log_mother_target, false, spo_plate_copyno); // rib1 - right G4VPhysicalVolume* phys_rib1_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib1, "phys_rib1_right", log_mother_target, false, spo_plate_copyno); log_rib1->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib1); region_target->AddRootLogicalVolume(log_rib1); // rib2 G4double rib2_side = 0.277*mm; G4Box* rib2 = new G4Box("rib2", plate_xside/2., rib2_side/2., rib_t/2.); G4LogicalVolume* log_rib2 = new G4LogicalVolume(rib2, spo_plate_mat, "log_rib2"); // rib2 - left G4VPhysicalVolume* phys_rib2_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib2, "phys_rib2_left", log_mother_target, false, spo_plate_copyno); // rib2 - right G4VPhysicalVolume* phys_rib2_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib2, "phys_rib2_right", log_mother_target, false, spo_plate_copyno); log_rib2->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib2); region_target->AddRootLogicalVolume(log_rib2); // rib3 G4double rib3_side = 0.263*mm; G4Box* rib3 = new G4Box("rib3", plate_xside/2., rib3_side/2., rib_t/2.); G4LogicalVolume* log_rib3 = new G4LogicalVolume(rib3, spo_plate_mat, "log_rib3"); // rib3 - left G4VPhysicalVolume* phys_rib3_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib3, "phys_rib3_left", log_mother_target, false, spo_plate_copyno); // rib3 - right G4VPhysicalVolume* phys_rib3_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib3, "phys_rib3_right", log_mother_target, false, spo_plate_copyno); log_rib3->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib3); region_target->AddRootLogicalVolume(log_rib3); // rib4 G4double rib4_side = 0.250*mm; G4Box* rib4 = new G4Box("rib4", plate_xside/2., rib4_side/2., rib_t/2.); G4LogicalVolume* log_rib4 = new G4LogicalVolume(rib4, spo_plate_mat, "log_rib4"); // rib4 - left G4VPhysicalVolume* phys_rib4_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib4, "phys_rib4_left", log_mother_target, false, spo_plate_copyno); // rib4 - right G4VPhysicalVolume* phys_rib4_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib4, "phys_rib4_right", log_mother_target, false, spo_plate_copyno); log_rib4->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib4); region_target->AddRootLogicalVolume(log_rib4); // rib5 G4double rib5_side = 0.236*mm; G4Box* rib5 = new G4Box("rib5", plate_xside/2., rib5_side/2., rib_t/2.); G4LogicalVolume* log_rib5 = new G4LogicalVolume(rib5, spo_plate_mat, "log_rib5"); // rib5 - left G4VPhysicalVolume* phys_rib5_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib5, "phys_rib5_left", log_mother_target, false, spo_plate_copyno); // rib5 - right G4VPhysicalVolume* phys_rib5_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side - rib_pitch - rib5_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib5, "phys_rib5_right", log_mother_target, false, spo_plate_copyno); log_rib5->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib5); region_target->AddRootLogicalVolume(log_rib5); // rib6 G4double rib6_side = 0.223*mm; G4Box* rib6 = new G4Box("rib6", plate_xside/2., rib6_side/2., rib_t/2.); G4LogicalVolume* log_rib6 = new G4LogicalVolume(rib6, spo_plate_mat, "log_rib6"); // rib6 - left G4VPhysicalVolume* phys_rib6_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib6, "phys_rib6_left", log_mother_target, false, spo_plate_copyno); // rib6 - right G4VPhysicalVolume* phys_rib6_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side - rib_pitch - rib5_side - rib_pitch - rib6_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib6, "phys_rib6_right", log_mother_target, false, spo_plate_copyno); log_rib6->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib6); region_target->AddRootLogicalVolume(log_rib6); // rib7 G4double rib7_side = 0.210*mm; G4Box* rib7 = new G4Box("rib7", plate_xside/2., rib7_side/2., rib_t/2.); G4LogicalVolume* log_rib7 = new G4LogicalVolume(rib7, spo_plate_mat, "log_rib7"); // rib7 - left G4VPhysicalVolume* phys_rib7_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib7, "phys_rib7_left", log_mother_target, false, spo_plate_copyno); // rib7 - right G4VPhysicalVolume* phys_rib7_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side - rib_pitch - rib5_side - rib_pitch - rib6_side - rib_pitch - rib7_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib7, "phys_rib7_right", log_mother_target, false, spo_plate_copyno); log_rib7->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib7); region_target->AddRootLogicalVolume(log_rib7); // rib8 G4double rib8_side = 0.197*mm; G4Box* rib8 = new G4Box("rib8", plate_xside/2., rib8_side/2., rib_t/2.); G4LogicalVolume* log_rib8 = new G4LogicalVolume(rib8, spo_plate_mat, "log_rib8"); // rib8 - left G4VPhysicalVolume* phys_rib8_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib8, "phys_rib8_left", log_mother_target, false, spo_plate_copyno); // rib8 - right G4VPhysicalVolume* phys_rib8_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - (rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side/2.), -(mother_target_t/2.) + rib_t/2.), log_rib8, "phys_rib8_right", log_mother_target, false, spo_plate_copyno); log_rib8->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib8); region_target->AddRootLogicalVolume(log_rib8); // rib9 G4double rib9_side = 0.184*mm; G4Box* rib9 = new G4Box("rib9", plate_xside/2., rib9_side/2., rib_t/2.); G4LogicalVolume* log_rib9 = new G4LogicalVolume(rib9, spo_plate_mat, "log_rib9"); // rib9 - left G4VPhysicalVolume* phys_rib9_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side + rib_pitch + rib9_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib9, "phys_rib9_left", log_mother_target, false, spo_plate_copyno); // rib9 - right G4VPhysicalVolume* phys_rib9_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - (rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side + rib_pitch + rib9_side/2.), -(mother_target_t/2.) + rib_t/2.), log_rib9, "phys_rib9_right", log_mother_target, false, spo_plate_copyno); log_rib9->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib9); region_target->AddRootLogicalVolume(log_rib9); // rib10 G4double rib10_side = 0.170*mm; G4Box* rib10 = new G4Box("rib10", plate_xside/2., rib10_side/2., rib_t/2.); G4LogicalVolume* log_rib10 = new G4LogicalVolume(rib10, spo_plate_mat, "log_rib10"); // rib10 - central G4VPhysicalVolume* phys_rib10 = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side + rib_pitch + rib9_side + rib_pitch + rib10_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib10, "phys_rib10", log_mother_target, false, spo_plate_copyno); log_rib10->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib10); region_target->AddRootLogicalVolume(log_rib10); // ----- coating 2 G4Trap* coating1 = new G4Trap("coating1", plate_yside, plate_xside, spo_coating1_t_max, spo_coating1_t_min); G4RotationMatrix* coating_rotation = new G4RotationMatrix; coating_rotation->rotateY(90.*degree); coating_rotation->rotateX(90.*degree); G4double coating1_shift = ((spo_coating1_t_min*spo_coating1_t_min) + (spo_coating1_t_max*spo_coating1_t_max) + (spo_coating1_t_min*spo_coating1_t_max))/(3.*(spo_coating1_t_min + spo_coating1_t_max)); G4LogicalVolume* log_coating1 = new G4LogicalVolume(coating1, spo_coating1_mat, "log_coating1"); G4VPhysicalVolume* phys_coating1 = new G4PVPlacement(coating_rotation, G4ThreeVector(0.0,0.0, -(mother_target_t/2.) + spo_plate_t_edge + coating1_shift), log_coating1, "phys_coating1", log_mother_target, false, spo_coating1_copyno); //-(mother_target_t/2.) + spo_plate_t_edge + spo_coating1_t_min G4VisAttributes* visCoating1 = new G4VisAttributes(G4Colour::Yellow()); log_coating1->SetVisAttributes(visCoating1); gm.AddXYZDetector( log_coating1); region_target->AddRootLogicalVolume(log_coating1); } } Loading Loading
geom/EXACRAD.cc +0 −258 Original line number Diff line number Diff line Loading @@ -853,264 +853,6 @@ G4VPhysicalVolume* EXACRAD::ConstructGeometry(G4VPhysicalVolume* World_phys) { region_target->AddRootLogicalVolume(log_coating3); } if (coating1_type == 2){ // --------- mother target // mother height G4double mother_target_t = spo_plate_t_edge + spo_coating1_t_mean + spo_coating2_t; G4Box* mother_target = new G4Box("mother_target", plate_xside/2., plate_yside/2., mother_target_t/2.); G4LogicalVolume* log_mother_target = new G4LogicalVolume(mother_target, chamber_mat, "log_mother_target"); G4VPhysicalVolume* phys_mother_target = new G4PVPlacement(target_rotation, G4ThreeVector(0.0,0.0, -mother_target_t/2.), log_mother_target, "phys_mother_target", log_chamber, false, spo_mother_copyno); log_mother_target->SetVisAttributes (G4VisAttributes::GetInvisible()); // ----- plate volume G4Box* spo_plate = new G4Box("spo_plate", plate_xside/2., plate_yside/2., spo_plate_t/2.); G4LogicalVolume* log_spo_plate = new G4LogicalVolume(spo_plate, spo_plate_mat, "log_spo_plate"); G4VPhysicalVolume* phys_spo_plate = new G4PVPlacement(0, G4ThreeVector(0.0,0.0, -(mother_target_t/2.) + spo_plate_t_edge - spo_plate_t/2.), log_spo_plate, "phys_spo_plate", log_mother_target, false, spo_plate_copyno); G4VisAttributes* visPlate = new G4VisAttributes(G4Colour::Grey()); log_spo_plate->SetVisAttributes(visPlate); gm.AddXYZDetector( log_spo_plate); region_target->AddRootLogicalVolume(log_spo_plate); // ----- ribs // rib height G4double rib_t = spo_plate_t_edge - spo_plate_t; G4double rib_pitch = 2.148*mm; // -- external ribs - rib0 G4double rib0_side = 0.805*mm; G4Box* rib0 = new G4Box("rib0", plate_xside/2., rib0_side/2., rib_t/2.); G4LogicalVolume* log_rib0 = new G4LogicalVolume(rib0, spo_plate_mat, "log_rib0"); // rib0 - left G4VPhysicalVolume* phys_rib0_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib0, "phys_rib0_left", log_mother_target, false, spo_plate_copyno); // rib0 - right G4VPhysicalVolume* phys_rib0_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib0, "phys_rib0_right", log_mother_target, false, spo_plate_copyno); log_rib0->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib0); region_target->AddRootLogicalVolume(log_rib0); // -- internal ribs // rib1 G4double rib1_side = 0.290*mm; G4Box* rib1 = new G4Box("rib1", plate_xside/2., rib1_side/2., rib_t/2.); G4LogicalVolume* log_rib1 = new G4LogicalVolume(rib1, spo_plate_mat, "log_rib1"); // rib1 - left G4VPhysicalVolume* phys_rib1_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib1, "phys_rib1_left", log_mother_target, false, spo_plate_copyno); // rib1 - right G4VPhysicalVolume* phys_rib1_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib1, "phys_rib1_right", log_mother_target, false, spo_plate_copyno); log_rib1->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib1); region_target->AddRootLogicalVolume(log_rib1); // rib2 G4double rib2_side = 0.277*mm; G4Box* rib2 = new G4Box("rib2", plate_xside/2., rib2_side/2., rib_t/2.); G4LogicalVolume* log_rib2 = new G4LogicalVolume(rib2, spo_plate_mat, "log_rib2"); // rib2 - left G4VPhysicalVolume* phys_rib2_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib2, "phys_rib2_left", log_mother_target, false, spo_plate_copyno); // rib2 - right G4VPhysicalVolume* phys_rib2_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib2, "phys_rib2_right", log_mother_target, false, spo_plate_copyno); log_rib2->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib2); region_target->AddRootLogicalVolume(log_rib2); // rib3 G4double rib3_side = 0.263*mm; G4Box* rib3 = new G4Box("rib3", plate_xside/2., rib3_side/2., rib_t/2.); G4LogicalVolume* log_rib3 = new G4LogicalVolume(rib3, spo_plate_mat, "log_rib3"); // rib3 - left G4VPhysicalVolume* phys_rib3_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib3, "phys_rib3_left", log_mother_target, false, spo_plate_copyno); // rib3 - right G4VPhysicalVolume* phys_rib3_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib3, "phys_rib3_right", log_mother_target, false, spo_plate_copyno); log_rib3->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib3); region_target->AddRootLogicalVolume(log_rib3); // rib4 G4double rib4_side = 0.250*mm; G4Box* rib4 = new G4Box("rib4", plate_xside/2., rib4_side/2., rib_t/2.); G4LogicalVolume* log_rib4 = new G4LogicalVolume(rib4, spo_plate_mat, "log_rib4"); // rib4 - left G4VPhysicalVolume* phys_rib4_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib4, "phys_rib4_left", log_mother_target, false, spo_plate_copyno); // rib4 - right G4VPhysicalVolume* phys_rib4_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib4, "phys_rib4_right", log_mother_target, false, spo_plate_copyno); log_rib4->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib4); region_target->AddRootLogicalVolume(log_rib4); // rib5 G4double rib5_side = 0.236*mm; G4Box* rib5 = new G4Box("rib5", plate_xside/2., rib5_side/2., rib_t/2.); G4LogicalVolume* log_rib5 = new G4LogicalVolume(rib5, spo_plate_mat, "log_rib5"); // rib5 - left G4VPhysicalVolume* phys_rib5_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib5, "phys_rib5_left", log_mother_target, false, spo_plate_copyno); // rib5 - right G4VPhysicalVolume* phys_rib5_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side - rib_pitch - rib5_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib5, "phys_rib5_right", log_mother_target, false, spo_plate_copyno); log_rib5->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib5); region_target->AddRootLogicalVolume(log_rib5); // rib6 G4double rib6_side = 0.223*mm; G4Box* rib6 = new G4Box("rib6", plate_xside/2., rib6_side/2., rib_t/2.); G4LogicalVolume* log_rib6 = new G4LogicalVolume(rib6, spo_plate_mat, "log_rib6"); // rib6 - left G4VPhysicalVolume* phys_rib6_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib6, "phys_rib6_left", log_mother_target, false, spo_plate_copyno); // rib6 - right G4VPhysicalVolume* phys_rib6_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side - rib_pitch - rib5_side - rib_pitch - rib6_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib6, "phys_rib6_right", log_mother_target, false, spo_plate_copyno); log_rib6->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib6); region_target->AddRootLogicalVolume(log_rib6); // rib7 G4double rib7_side = 0.210*mm; G4Box* rib7 = new G4Box("rib7", plate_xside/2., rib7_side/2., rib_t/2.); G4LogicalVolume* log_rib7 = new G4LogicalVolume(rib7, spo_plate_mat, "log_rib7"); // rib7 - left G4VPhysicalVolume* phys_rib7_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib7, "phys_rib7_left", log_mother_target, false, spo_plate_copyno); // rib7 - right G4VPhysicalVolume* phys_rib7_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - rib0_side - rib_pitch - rib1_side - rib_pitch - rib2_side - rib_pitch - rib3_side - rib_pitch - rib4_side - rib_pitch - rib5_side - rib_pitch - rib6_side - rib_pitch - rib7_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib7, "phys_rib7_right", log_mother_target, false, spo_plate_copyno); log_rib7->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib7); region_target->AddRootLogicalVolume(log_rib7); // rib8 G4double rib8_side = 0.197*mm; G4Box* rib8 = new G4Box("rib8", plate_xside/2., rib8_side/2., rib_t/2.); G4LogicalVolume* log_rib8 = new G4LogicalVolume(rib8, spo_plate_mat, "log_rib8"); // rib8 - left G4VPhysicalVolume* phys_rib8_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib8, "phys_rib8_left", log_mother_target, false, spo_plate_copyno); // rib8 - right G4VPhysicalVolume* phys_rib8_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - (rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side/2.), -(mother_target_t/2.) + rib_t/2.), log_rib8, "phys_rib8_right", log_mother_target, false, spo_plate_copyno); log_rib8->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib8); region_target->AddRootLogicalVolume(log_rib8); // rib9 G4double rib9_side = 0.184*mm; G4Box* rib9 = new G4Box("rib9", plate_xside/2., rib9_side/2., rib_t/2.); G4LogicalVolume* log_rib9 = new G4LogicalVolume(rib9, spo_plate_mat, "log_rib9"); // rib9 - left G4VPhysicalVolume* phys_rib9_left = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side + rib_pitch + rib9_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib9, "phys_rib9_left", log_mother_target, false, spo_plate_copyno); // rib9 - right G4VPhysicalVolume* phys_rib9_right = new G4PVPlacement(0, G4ThreeVector(0.0,+(plate_yside/2.) - (rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side + rib_pitch + rib9_side/2.), -(mother_target_t/2.) + rib_t/2.), log_rib9, "phys_rib9_right", log_mother_target, false, spo_plate_copyno); log_rib9->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib9); region_target->AddRootLogicalVolume(log_rib9); // rib10 G4double rib10_side = 0.170*mm; G4Box* rib10 = new G4Box("rib10", plate_xside/2., rib10_side/2., rib_t/2.); G4LogicalVolume* log_rib10 = new G4LogicalVolume(rib10, spo_plate_mat, "log_rib10"); // rib10 - central G4VPhysicalVolume* phys_rib10 = new G4PVPlacement(0, G4ThreeVector(0.0,-(plate_yside/2.) + rib0_side + rib_pitch + rib1_side + rib_pitch + rib2_side + rib_pitch + rib3_side + rib_pitch + rib4_side + rib_pitch + rib5_side + rib_pitch + rib6_side + rib_pitch + rib7_side + rib_pitch + rib8_side + rib_pitch + rib9_side + rib_pitch + rib10_side/2., -(mother_target_t/2.) + rib_t/2.), log_rib10, "phys_rib10", log_mother_target, false, spo_plate_copyno); log_rib10->SetVisAttributes(visPlate); gm.AddXYZDetector( log_rib10); region_target->AddRootLogicalVolume(log_rib10); // ----- coating 2 G4Trap* coating1 = new G4Trap("coating1", plate_yside, plate_xside, spo_coating1_t_max, spo_coating1_t_min); G4RotationMatrix* coating_rotation = new G4RotationMatrix; coating_rotation->rotateY(90.*degree); coating_rotation->rotateX(90.*degree); G4double coating1_shift = ((spo_coating1_t_min*spo_coating1_t_min) + (spo_coating1_t_max*spo_coating1_t_max) + (spo_coating1_t_min*spo_coating1_t_max))/(3.*(spo_coating1_t_min + spo_coating1_t_max)); G4LogicalVolume* log_coating1 = new G4LogicalVolume(coating1, spo_coating1_mat, "log_coating1"); G4VPhysicalVolume* phys_coating1 = new G4PVPlacement(coating_rotation, G4ThreeVector(0.0,0.0, -(mother_target_t/2.) + spo_plate_t_edge + coating1_shift), log_coating1, "phys_coating1", log_mother_target, false, spo_coating1_copyno); //-(mother_target_t/2.) + spo_plate_t_edge + spo_coating1_t_min G4VisAttributes* visCoating1 = new G4VisAttributes(G4Colour::Yellow()); log_coating1->SetVisAttributes(visCoating1); gm.AddXYZDetector( log_coating1); region_target->AddRootLogicalVolume(log_coating1); } } Loading