diff --git a/.github/workflows/linux-eic-shell.yml b/.github/workflows/linux-eic-shell.yml index 27ab20edfd..6091e892b8 100644 --- a/.github/workflows/linux-eic-shell.yml +++ b/.github/workflows/linux-eic-shell.yml @@ -294,7 +294,7 @@ jobs: strategy: matrix: option: ['m'] #, 's'] # FIXME - detector_config: [epic_craterlake] # FIXME + detector_config: [epic_craterlake, epic_ip6_extended] # FIXME fail-fast: false steps: - uses: actions/checkout@v5 @@ -347,7 +347,11 @@ jobs: - build strategy: matrix: - detector_config: [epic_craterlake] + include: + - detector_config: epic_craterlake + tolerance_mm: 0.1 + - detector_config: epic_ip6_extended + tolerance_mm: 0.01 fail-fast: false steps: - uses: actions/checkout@v5 @@ -363,7 +367,7 @@ jobs: setup: install/bin/thisepic.sh run: | mkdir -p doc - python scripts/checkOverlaps.py -c ${DETECTOR_PATH}/${{ matrix.detector_config }}.xml | tee doc/overlap_check_geant4.out + python scripts/checkOverlaps.py -t ${{ matrix.tolerance_mm }} -c ${DETECTOR_PATH}/${{ matrix.detector_config }}.xml | tee doc/overlap_check_geant4.out noverlaps="$(grep -c GeomVol1002 doc/overlap_check_geant4.out || true)" if [[ "${noverlaps}" -gt "0" ]] ; then echo "${noverlaps} overlaps found!" && false ; fi diff --git a/compact/far_backward/beamline_extension_hadron.xml b/compact/far_backward/beamline_extension_hadron.xml index 6f52c61a85..adea244ea8 100644 --- a/compact/far_backward/beamline_extension_hadron.xml +++ b/compact/far_backward/beamline_extension_hadron.xml @@ -49,8 +49,8 @@ type="BeamPipeChain" wall_thickness="2*mm"> (x_det, _Unicode(vis), "BeamPipeVis"); double thickness = getAttrOrDefault(x_det, _Unicode(wall_thickness), 0); - double bendRadius = 0.00001; //Small bend radius to allow the construction of toruses + double bendRadius = 0.00001 * mm; //Small bend radius to allow the construction of toruses vector names; vector ids; @@ -94,12 +94,13 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector / // If there is an bend in the pipe, calculate the length reduction of the pipe and joint length for (uint i = 1; i < thetas.size(); i++) { + // Start at the join between the first two pipes ending at the join between the last two pipes N-1 - if (thetas[i - 1] == thetas[i]) { + double bendAngle = thetas[i] - thetas[i - 1]; + if (std::abs(bendAngle) < 0.01 * mrad) { bendLengths.push_back(0); } else // Correct for tubes, not yet cones so imperfect { - double bendAngle = thetas[i] - thetas[i - 1]; double bendLength = abs(rOuters1[i] * tan(bendAngle / 2)); bendLengths.push_back(bendLength + bendRadius); }