code: public static CeSymmResult analyzeLevel(Atom[] atoms,
  			CESymmParameters params) throws StructureException {
  
  		if (atoms.length < 1)
  			throw new IllegalArgumentException("Empty Atom array given.");
  
  		CeSymmResult result = align(atoms, params);
  
  		if (result.isRefined()) {
  			// STEP 5: symmetry alignment optimization
  			if (result.getParams().getOptimization()) {
  				try {
  					MultipleAlignment msa = result.getMultipleAlignment();
  					SymmOptimizer optimizer = new SymmOptimizer(result);
  					msa = optimizer.optimize();
  					result.setMultipleAlignment(msa);
  				} catch (RefinerFailedException e) {
  					logger.debug("Optimization failed:" + e.getMessage());
  				}
  			}
  		}
  		return result;
  	}
docs: Analyze a single level of symmetry.
  
  @param atoms
  Atom array of the current level
  @return CeSymmResult
  @throws StructureException