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; wherein step (A) further comprises the steps of (a) selecting a set L 1 of candidate first lattice plane normal vectors; (b) evaluating the fit of each candidate first lattice plane normal vector of the set L 1 with the set DV of 3D diffraction vectors; (c) selecting a subset SL 1 of the set L 1 comprising the N 1 candidate first lattice plane normal vectors having the best fit with the set DV of 3D diffraction vectors; (d) performing steps (d_a) to (d_g) for each candidate first lattice plane normal vector n of the subset SL 1 : (d_a) using said candidate first lattice plane normal vector n to select a subset SDV_n of the set DV of 3D diffraction vectors; (d_b) selecting a set L 2 _ n of candidate second lattice plane normal vectors; (d_c) evaluating the fit of each candidate second lattice plane normal vector of the set L 2 _ n with the subset SDV_n of 3D diffraction vectors; (d_d) selecting a subset SL 2 _ n of the set L 2 _ n comprising the N 2 candidate second lattice plane normal vectors having the best fit with the subset SDV_n of 3D diffraction vectors; (d_e) using said subset SL 2 _ n of candidate second lattice plane normal vectors to select a subset SSDV_n of the subset SDV_n of 3D diffraction vectors; (d_f) processing said subset SSDV_n of 3D diffraction vectors to determine a candidate unit cell CUC_n defined by three lattice vectors; (d_g) evaluating the fit of the candidate unit cell CUC_n with the set DV of 3D diffraction vectors; wherein the candidate unit cell of the N 1 candidate unit cells CUC_n (n=1 to N 1 ) having the best fit with the full set DV of 3D diffraction vectors is selected as the primary candidate unit cell PCUC.