A method of mass spectrometry comprising: ionising a sample and obtaining mass spectral data relating to a plurality of ion detection events; applying match tolerances for mass to charge ratio (m/z) and at least one of: chromatographic retention time (t r); and ion mobility drift time (t d), to said ion detection events in order to determine possible charge state connections; constructing a tentative isotope chain and querying ion detection events for a match to said tentative isotope chain; wherein once a tentative isotope chain has been constructed, said method further comprises: determining a corresponding theoretical molecular mass and a corresponding theoretical isotopic distribution; characterised by: querying one or more lookup tables and returning one or more parameters (New X, New X') related to the fractional mass to charge ratio (f m/z) and at least one of: ion mobility drift time (t d); and nominal mass to charge ratio (N m/z); of said ion detection events; and using said one or more parameters (New X, New X') to determine a unique charge state of said ions; wherein said one or more parameters are New X = (f m/z - (t d + b)/m), and/or New X' = (f m/z - (N m/z + b)/m), wherein f m/z is the fractional mass to charge ratio, t d is the ion mobility drift time, N m/z is the integer or nominal mass to charge ratio, b is the y-intercept and m is the slope. ionising a sample and obtaining mass spectral data relating to a plurality of ion detection events; applying match tolerances for mass to charge ratio (m/z) and at least one of: chromatographic retention time (t r); and ion mobility drift time (t d), to said ion detection events in order to determine possible charge state connections; constructing a tentative isotope chain and querying ion detection events for a match to said tentative isotope chain; wherein once a tentative isotope chain has been constructed, said method further comprises: determining a corresponding theoretical molecular mass and a corresponding theoretical isotopic distribution; characterised by: querying one or more lookup tables and returning one or more parameters (New X, New X') related to the fractional mass to charge ratio (f m/z) and at least one of: ion mobility drift time (t d); and nominal mass to charge ratio (N m/z); of said ion detection events; and using said one or more parameters (New X, New X') to determine a unique charge state of said ions; wherein said one or more parameters are New X = (f m/z - (t d + b)/m), and/or New X' = (f m/z - (N m/z + b)/m), wherein f m/z is the fractional mass to charge ratio, t d is the ion mobility drift time, N m/z is the integer or nominal mass to charge ratio, b is the y-intercept and m is the slope. determining a corresponding theoretical molecular mass and a corresponding theoretical isotopic distribution; characterised by: querying one or more lookup tables and returning one or more parameters (New X, New X') related to the fractional mass to charge ratio (f m/z) and at least one of: ion mobility drift time (t d); and nominal mass to charge ratio (N m/z); of said ion detection events; and using said one or more parameters (New X, New X') to determine a unique charge state of said ions; wherein said one or more parameters are New X = (f m/z - (t d + b)/m), and/or New X' = (f m/z - (N m/z + b)/m), wherein f m/z is the fractional mass to charge ratio, t d is the ion mobility drift time, N m/z is the integer or nominal mass to charge ratio, b is the y-intercept and m is the slope. querying one or more lookup tables and returning one or more parameters (New X, New X') related to the fractional mass to charge ratio (f m/z) and at least one of: ion mobility drift time (t d); and nominal mass to charge ratio (N m/z); of said ion detection events; and using said one or more parameters (New X, New X') to determine a unique charge state of said ions; wherein said one or more parameters are New X = (f m/z - (t d + b)/m), and/or New X' = (f m/z - (N m/z + b)/m), wherein f m/z is the fractional mass to charge ratio, t d is the ion mobility drift time, N m/z is the integer or nominal mass to charge ratio, b is the y-intercept and m is the slope.