Skip to content
Snippets Groups Projects

Fixed rp vacuum

Merged Whitney Armstrong requested to merge rp_fix into master
1 file
+ 7
5
Compare changes
  • Side-by-side
  • Inline
@@ -76,7 +76,7 @@ static Ref_t build_detector(Detector& dtor, xml_h e, SensitiveDetector sens) {
double rp_detector_tube_length = frame_x + pos_out; // TODO: Shortest possible tube given the RP dimensions. Will probably change in the future.
double rp_detector_tube_thickness = 5.0 * dd4hep::mm;
double rp_detector_tube_radius = 0.52*sqrt(frame_z * frame_z + frame_y * frame_y); // TODO: Tightest possible fit. Will probably change in the future.
double rp_detector_tube_radius = 0.55*sqrt(frame_z * frame_z + frame_y * frame_y); // TODO: Tightest possible fit. Will probably change in the future.
Tube rp_detector_vacuum_tube(0.0, rp_detector_tube_radius + rp_detector_tube_thickness, rp_detector_tube_length);
Tube rp_detector_vacuum_tube2(0.0, rp_detector_tube_radius, rp_detector_tube_length);
@@ -90,19 +90,21 @@ static Ref_t build_detector(Detector& dtor, xml_h e, SensitiveDetector sens) {
// properly transform the RP detector positions.
auto rot1 = rotated ? Rotation3D(RotationX(0.5*M_PI)) : Rotation3D(RotationY(0.5*M_PI));
auto rot2 = rotated ? Rotation3D(RotationX(-0.5*M_PI)) : Rotation3D(RotationY(-0.5*M_PI));
auto shift_pos1 = rotated ? Transform3D(RotationZ(0.5*M_PI) * Translation3D(curr_pos + 0.5*frame_x, 0.0, 0.0)) : Transform3D(Translation3D(curr_pos + 0.5*frame_x, 0, 0));
auto shift_pos2 = rotated ? Transform3D(RotationZ(-0.5*M_PI) * Translation3D(curr_pos + 0.5*frame_x, 0.0, 0.0)) : Transform3D(RotationZ(M_PI) * Translation3D(curr_pos + 0.5*frame_x, 0, 0));
auto shift_pos1 = rotated ? Transform3D(RotationZ(0.5 * M_PI) * Translation3D(curr_pos + 0.5 * frame_x, 0.0, 0.0))
: Transform3D(Translation3D(curr_pos + 0.5 * frame_x, 0, 0));
auto shift_pos2 = rotated ? Transform3D(RotationZ(-0.5 * M_PI) * Translation3D(curr_pos + 0.5 * frame_x, 0.0, 0.0))
: Transform3D(RotationZ(M_PI) * Translation3D(curr_pos + 0.5 * frame_x, 0, 0));
auto det_offset = Position(0.5*(pixel_x + delta - frame_x), 0, 0);
// Construct the RP enclosure shell.
Tube rp_beam_pipe_tube(rp_chamber_radius, rp_chamber_radius + rp_chamber_thickness, rp_chamber_length/2.0);
Tube rp_beam_vacuum_tube(0.0, rp_chamber_radius + rp_chamber_thickness, rp_chamber_length);
Tube rp_beam_vacuum_tube(0.0, rp_chamber_radius + rp_chamber_thickness, rp_chamber_length);
Tube rp_beam_vacuum_tube2(0.0, rp_chamber_radius, rp_chamber_length);
UnionSolid rp_chamber_tee_outer1(rp_beam_vacuum_tube, rp_detector_vacuum_tube, rot1);
UnionSolid rp_chamber_tee_outer(rp_chamber_tee_outer1, rp_detector_vacuum_tube, rot2);
UnionSolid rp_chamber_tee_inner1(rp_beam_vacuum_tube2, rp_detector_vacuum_tube2, rot1);
UnionSolid rp_chamber_tee_inner(rp_chamber_tee_inner1, rp_detector_vacuum_tube2, rot2);
SubtractionSolid shell(rp_chamber_tee_inner, rp_chamber_tee_outer);
SubtractionSolid shell(rp_chamber_tee_outer,rp_chamber_tee_inner);
Volume rp_chamber_vol("rp_chamber_walls_vol", shell, aluminum);
Volume rp_vacuum_vol("rp_chamber_vacuum_vol", rp_chamber_tee_inner, vacuum);
Loading