1. A method of determining one or more unit cells of a poly-crystalline sample and indexing a set DV of 3D diffraction vectors obtained by illuminating said poly-crystalline sample with an X-ray source at one or more orientations and recording diffraction spots using a at least one 2D or 3D X-ray detector for each of said one or more orientations, said set DV of 3D diffraction vectors being indexed into a plurality of grains, said method comprising the steps of: (A) obtaining a plurality of candidate first lattice plane normal vectors and a plurality of candidate second lattice plane normal vectors for a particular unknown grain; using said plurality of candidate first lattice plane normal vectors and said plurality of candidate second lattice plane normal vectors to select a plurality of subsets SSDV_n of the set DV of 3D diffraction vectors and processing said plurality of subsets SSDV_n of 3D diffraction vectors to determine a primary candidate unit cell PCUC defined by three lattice vectors; wherein the correspondence of the primary candidate unit cell PCUC is validated by evaluating the fit of the PCUC with the full set DV of 3D diffraction vectors; and (B) determining if the fit of primary candidate unit cell PCUC with the full set DV of 3D diffraction vectors is above a first threshold; wherein if the fit of the primary candidate unit cell PCUC is above said first threshold the primary candidate unit cell PCUC is used to identify a subset ST of the set DV of 3D diffraction vectors originating from a single grain in the poly-crystalline sample, said subset ST is indexed wherein the method returns to step (A) unless a predetermined criteria has been reached.