code: private List<List<Integer>> calcOrbits() {
  		int n = subunits.getSubunitCount();
  		int fold = rotationGroup.getRotation(0).getFold();
  
  		List<List<Integer>> orbits = new ArrayList<List<Integer>>();
  		boolean[] used = new boolean[n];
  		Arrays.fill(used, false);
  
  		for (int i = 0; i < n; i++) {
  			if (! used[i]) {
  				// determine the equivalent subunits
  				List<Integer> orbit = new ArrayList<Integer>(fold);
  				for (int j = 0; j < fold; j++) {
  					List<Integer> permutation = rotationGroup.getRotation(j).getPermutation();
  					orbit.add(permutation.get(i));
  					used[permutation.get(i)] = true;
  				}
  				orbits.add(deconvolute(orbit));
  			}
  		}
  		return orbits;
  	}
docs: Returns a list of list of subunit ids that form an "orbit", i.e. they
  are transformed into each other during a rotation around the principal symmetry axis (z-axis)
  @return