@Override
    public ArrayList<DetectorHit> getHits(Path3D path) {        // Initialize the hit list array
        ArrayList<DetectorHit> hitList = new ArrayList<>();

        if (path == null) {
            return hitList;
        }

        // Create an intersect point object that will contain the line-face
        // insercetion coordinates, if there is an intersection, set by the
        // intersect method
        Point3D intersectPt1 = new Point3D();
        Point3D intersectPt2 = new Point3D();

        // Create an error point object which will remain (0,0,0) because we do
        // not have error data
        Point3D errorPt = new Point3D();

        // Use the path's points to create lines...
        // For each line:
        int nPathNodes = path.nodes();
        Line3D line = new Line3D();
        for (int node = 1; node < nPathNodes; node++) {
            line.set(path.getNode(node - 1), path.getNode(node));

            if (useBoundaryFilter) {
                boolean noHit = true;
                for(int f=0; f<boundary.size() && noHit; f++)
                    if (Face3D.intersection(boundary.face(f), line, errorPt))
                        noHit = false;
                if (noHit)
                    continue;
            }

            // For each paddle in the in the sector:
            for (DetectorPaddle paddle : paddles.values()) {

                // If the line intersects the front, back, or sides of the paddle
                if (paddle.intersectIgnoreEnds(line, intersectPt1, intersectPt2)) {
                    
                    // Create a descriptor for this paddle
                    DetectorDescriptor desc = new DetectorDescriptor(
                            detectorId, sectorId, superlayerId, layerId, paddle.getComponent());
                    
                    // Add the hits to the list
                    hitList.add(new DetectorHit(desc, intersectPt1, errorPt));
                    hitList.add(new DetectorHit(desc, intersectPt2, errorPt));
                }
            }
        }

        return hitList;
    }