1function [forks, parents] = sortForks(sn, fjforkmap, fjclassmap, nonfjmodel)
2forks = zeros(length(sn.nodetype), max(fjclassmap));
3forks(find(sn.nodetype == NodeType.Fork), :) = 1;
4parents = zeros(1, length(sn.nodetype));
5parents(find(sn.nodetype == NodeType.Fork)) = find(sn.nodetype == NodeType.Fork);
6for f=find(sn.nodetype == NodeType.Fork)
'
7 joinIdx = find(sn.fj(f,:));
8 forkauxclasses = find(fjforkmap==f);
9 for s=forkauxclasses(:)'
11 discovered_forks = zeros(length(sn.nodetype), 1);
12 discovered_forks(find(sn.nodetype == NodeType.Fork)) = 1;
13 nested = nestedForks(f, joinIdx, nonfjmodel.getLinkedRoutingMatrix{r,r}, discovered_forks, sn);
14 forks(:, r) = forks(:, r) & nested;
15 parents(find(nested == 0)) = parents(f);
20function nested = nestedForks(startNode, endNode, conn, forks, sn)
21if startNode == endNode
26for i=find(conn(startNode, :))
27 if sn.nodetype(i) == NodeType.Fork
30 forks = forks & nestedForks(i, endNode, conn, forks, sn);