code: private void calcReferenceVector() {
  		referenceVector = null;
  		if (rotationGroup.getPointGroup().startsWith("C")) {
  			referenceVector = getReferenceAxisCylic();
  		} else if (rotationGroup.getPointGroup().startsWith("D")) {
  			referenceVector = getReferenceAxisDihedral();
  		} else if (rotationGroup.getPointGroup().equals("T")) {
  			referenceVector = getReferenceAxisTetrahedral();
  		} else if (rotationGroup.getPointGroup().equals("O")) {
  			referenceVector = getReferenceAxisOctahedral();
  		} else if (rotationGroup.getPointGroup().equals("I")) {
  			referenceVector = getReferenceAxisIcosahedral();
  		} else if (rotationGroup.getPointGroup().equals("Helical")) {
  			// TODO what should the reference vector be??
  			referenceVector = getReferenceAxisCylic();
  		}
  
  		if (referenceVector == null) {
  			logger.warn("no reference vector found. Using y-axis.");
  			referenceVector = new Vector3d(Y_AXIS);
  		}
  		// make sure reference vector is perpendicular principal roation vector
  		referenceVector = orthogonalize(principalRotationVector, referenceVector);
  	}
docs: Returns a vector perpendicular to the principal rotation vector
  for the alignment of structures in the xy-plane
  @return reference vector