In time-of-flight mass spectrometers (TOFMS), a sample to be analyzed is ionized, the resulting ions are accelerated in a vacuum by an electrical pulse having a known potential, and the time of flight of the ions of different masses to an ion detector are measured. The more massive the ion, the longer is the time of flight. The relationship between the time of flight and the mass, m, of ions of a given mass can be written in the form:
time=k√{square root over (m)}+c
where k is a constant related to flight path and ion energy, and c is a small delay time that may be introduced by the signal cable and/or detection electronics. When the term mass is used in this disclosure in the context of mass spectrometry, it is to be understood to mean mass-to-charge ratio. The process of accelerating the ions of the sample and detecting the arrival times of the ions of different masses at the ion detector will be referred to herein as a mass scan operation.
The ion detector generates electrons in response to ions incident thereon. The electrons constitute an electrical signal whose amplitude is proportional to the number of electrons. There is only a statistical correlation between the number of electrons generated in response to a single ion incident on the ion detector. In addition, more than one ion at a time may be incident on the ion detector due to ion abundance.
In the mass spectrometer, an ion pulser generates a short burst of ions by applying what is referred to in the art as a transient to ions received from an ion source. A transient is a short-duration electrical pulse having a known voltage. Immediately after leaving the ion pulser, the ions are bunched together but, within the ion burst, ions of different masses travel at different speeds. The time of flight required for the ions of a given mass to reach the ion detector depends on the speed of the ions, which in turn, depends on the mass of the ions. Consequently, as the ion burst approaches the ion detector, the ion burst is separated in space and in time into discrete packets, each packet containing ions of a single mass. The packets reach the ion detector at different arrival times that depend on the mass of the ions therein.
The mass spectrometer generates what will be referred to as a mass scan signal in response to a single burst of ions accelerated by the ion pulser in response to a single transient. The mass scan signal is a digital signal that represents the output of the ion detector as a function of time. The time represents the time of flight of the ions from the ion pulser to the ion detector. The number of electrons generated by the ion detector in a given time interval constitutes an analog ion detection signal that is converted to the mass scan signal by an analog-to-digital converter (A/D converter). The mass scan signal represents the output of the ion detector as a function of the flight time taken by the ions to reach the ion detector. The mass scan signal is a temporal sequence of digital samples output by the A/D converter after the ions have been accelerated. The conversion time of the A/D converter effectively divides the time axis into discrete segments and the A/D converter outputs a single digital sample for each temporal segment.
Because the relationship between the amplitude of the ion detection signal output by the ion detector and the number of ions incident on the ion detector during the temporal segment is a statistical one, a single mass scan signal will not accurately represent the time-of-flight spectrum of the sample. In addition, the ion detection process is subject to noise from a number of different noise sources. Such noise causes the ion detector to generate an output signal even in the absence of ions incident on the ion detector. To overcome these problems, the mass spectrometer generates multiple mass scan signals and sums the most-recently generated mass scan signal with an accumulation of previously-generated mass scan signals to generate a time-of-flight spectrum having a defined statistical accuracy and signal-to-noise ratio. The time-of-flight spectrum is a set of data that represents the relationship between the accumulated ion intensities and time of flight. A mass spectrum is then obtained by subjecting the time-of-flight spectrum to processing such as that described in U.S. Pat. No. 7,412,334 of Fjeldsted et al., or in U.S. patent application Ser. No. 12/242,110 of Hidalgo et al., both assigned to the assignee of this disclosure.
In a conventional mass spectrometer, the ion pulser fires at a constant repetition rate chosen such that the minimum time that elapses between ion pulser firings is greater than the maximum time of flight of the mass spectrometer. This repetition rate will be referred to herein as a reference repetition rate. The maximum time of flight is typically the time of flight of the most massive ion species that the mass spectrometer is specified to measure. However, in embodiments in which the repetition rate can be adjusted, the maximum time of flight is the time of flight of the most massive ion species in the analyte. A repetition rate chosen as just described prevents a given mass scan signal from representing the times of flights of ions accelerated by different firings of the ion pulser, a phenomenon that will be referred to herein as aliasing.
A high mass resolution, a high sensitivity and a high productivity are desirable properties of a mass spectrometer. Increasing the distance between the ion pulser and the ion detector increases the mass resolution of the mass spectrometer, but undesirably increases the minimum time between consecutive firings of the ion pulser. A high sensitivity allows low-abundance ion species to be reliably detected. Increasing the number of mass scans contributing to each time-of-flight spectrum increases the sensitivity of the mass spectrometer but undesirably increases the acquisition time, i.e., the time needed to acquire each time-of-flight spectrum. Thus, in conventional mass spectrometers, mass resolution and sensitivity can be obtained only at the expense of decreased productivity.
Productivity-increasing techniques employing randomized firings of the ion pulser at an average repetition rate greater than the reference repetition rate together with active or passive de-aliasing have been known for many years. For example, U.S. Pat. No. 5,396,065 of Myerholtz et al, assigned to the assignee of this disclosure, discloses a mass spectrometer in which the minimum interval between consecutive firings of the ion pulser is less than that corresponding to the reference repetition rate. The ion pulser has a fixed repetition rate, but a random distribution is used to decide whether to fire the pulser or not. A de-aliasing technique employing a correlator is used to derive a time-of-flight spectrum from the detection signal produced by the ion detector. None of the known productivity-increasing techniques is currently in widespread use possibly because the increase in productivity is obtained at the expense of one or more of decreased accuracy, decreased sensitivity, decreased mass resolution and increased complexity.
Accordingly, what is needed is a mass spectrometer in which increased productivity is obtained without decreasing accuracy, sensitivity and mass resolution and with an acceptable increase in complexity.
Temporally-irregular ion pulser 110 operates in response to temporally-irregular transients to accelerate ions derived from an analyte sample along a flight path that ends at ion detector 120. The transients have an average repetition rate greater than the reference repetition rate of mass spectrometer 100, which causes ions accelerated by different firings of the ion pulser to overlap at detector 120. Typically, the average repetition rate is several times, e.g., ten times, the reference repetition rate. The reference repetition rate of mass spectrometer 100 is the reciprocal of the maximum time of flight between ion pulser 110 and ion detector 120. Typically, the maximum time of flight is the time of flight between ion pulser 110 and ion detector 120 of the most massive ion species that mass spectrometer 100 is specified to measure. However, in embodiments in which the average repetition rate can be adjusted, the maximum time of flight is the time of flight of the most massive ion species in the analyte. In response to each transient, ion pulser 110 accelerates a burst of ions along a path that ends at ion detector 120. Each of the transients has a respective transient time. The transients, or timing information regarding the transients, are additionally output to time of flight calculator 130 to provide the respective transient times of the transients to the intensity apportioner.
Ion detector 120 is operable to generate a detection signal DS in response to the ions accelerated towards it by ion pulser 110. Detection signal DS is composed of a series of digital samples. Typically, detection signal DS is composed of one sample for each period of clock signal CS received from clock 170. In an example in which the intensity of the ion detector output is statistically related to the number of ions incident on the detector on one period of clock signal CS, each sample has an intensity that represents the number of ions incident on ion detector 120 within one period of clock signal CS. Initially in this disclosure, each sample whose intensity is greater than a threshold value will be referred to as constituting a respective detection event. Each detection event has a respective intensity and a respective event time. The event time is the value of an elapsed time signal ET output by elapsed time counter 180 at the time that the ions detected by ion detector 120 as the detection event are detected. Later in this disclosure, embodiments in which each detection event is composed of multiple samples will be discussed.
Since the average repetition rate of the transients in ion source 110 is greater than that corresponding to the maximum time of flight of mass spectrometer 100, higher-mass ions accelerated by a given transient in ion pulser 110 may not have arrived at ion detector 120 by the time lower-mass ions accelerated by the next (or a later) transient applied to the ion pulser arrive at the ion detector. Consequently, detection signal DS output by ion detector 120 represents a number of superimposed mass scan signals temporally offset from one another in accordance with the timings of the transients. A time-of-flight spectrum that unambiguously represents the relationship between ion abundance and time of flight cannot be determined from detection signal DS in a manner similar to that used in the conventional mass spectrometer described above. In mass spectrometer 100, TOF calculator 130, intensity apportioner 140 and spectrum memory 150 operate to generate a time-of-flight spectrum from the superimposed mass scan signals represented by detection signal DS. The mass spectrum of the sample can then be obtained by subjecting the time-of-flight spectrum to conventional processing.
Spectrum memory 150 is structured to store a time-of-flight spectrum, i.e., a set of intensity accumulations, one for each possible time of flight between ion pulser 110 and ion detector 120. The time of flight of the ions of each ion species provides a measure of the mass of the ions of the ion species, as described above. Spectrum memory 150 is composed of a number of memory locations each corresponding to a respective time of flight. Each of such memory locations will be referred to herein as a time-of-flight bin, typically abbreviated herein as TOF bin. Each TOF bin stores an intensity accumulation obtained by accumulating intensity apportionments corresponding to the time of flight of the TOF bin. In the example shown, correspondence between the time-of-flight bins of spectrum memory 150 and respective times of flight is established by an addressing scheme. In an example, each time of flight directly addresses a respective time-of-flight bin. In another example, each time of flight is mapped to a respective time-of-flight bin. Other ways of establishing correspondence are possible and can be used.
TOF calculator 130 is connected to receive detection signal DS, transients T and elapsed time signal ET, and is operable in response to the transient times of the transients and the respective event time of the detection event to determine, for each detection event represented by the detection signal, respective allowed times of flight linked to the detection event. The allowed times of flight address respective TOF bins in spectrum memory 150. TOF calculator 130 can also be described as performing the function of calculating, using the transient times and a respective event time, respective allowed times of flight linked to each of the detection events represented by the detection signal. An exemplary structure for TOF calculator 130 will be described below with reference to
Intensity apportioner 140 is initially operable to use initial probabilities to determine an apportionment of the respective intensity of each detection event among the allowed times of flight linked to the detection event and, hence, among the TOF bins linked to the detection event. In some embodiments, the initial probabilities are the same for each of the allowed times of flight linked to the detection event. In other embodiments, the initial probabilities are respective probabilities for the times of flight linked to the detection event and are typically non-equal, as will be described in more detail below.
Intensity apportioner 140 is also initially operable to accumulate the apportionments of the intensities to each allowed time of flight to generate a respective intensity accumulation. The intensity accumulation for each allowed time of flight is stored in the respective TOF bin of spectrum memory 150 corresponding to the allowed TOF. In an example, intensity apportioner 140 causes spectrum memory 150 to read out the intensity accumulation stored in the TOF bin addressed by the allowed TOF, sums the intensity apportionment and the intensity accumulation received from the spectrum memory to generate a new intensity accumulation, and causes spectrum memory 150 to store the new intensity accumulation in the TOF bin addressed by the allowed TOF, replacing the old intensity accumulation. When no intensity accumulation has previously been stored in the TOF bin, the intensity accumulation read out from the TOF bin has a value of zero.
With reference to a detection event exclusively due to ions of the same ion species, only one of the allowed times of flight linked to a given detection event is the time of flight of the ions detected in the detection event. This time of flight will be referred to as the real time of flight for the detection event, and the TOF bin addressed by the real time of flight will be referred to the real TOF bin linked to the detection event. The remaining times of flight linked to the detection event differ from the time of flight of the ions. These times of flight will be referred to as alias times of flight, and the TOF bins respectively addressed by the alias times of flight will be referred to as alias TOF bins. Accordingly, the initial time-of-flight spectrum stored in spectrum memory 150 after the initial intensity apportionments and apportionment accumulations have been performed will typically appear quite different from the time-of-flight spectrum accumulated by a conventional mass spectrometer as described above. Specifically, due to the above-described aliasing, the initial time-of-flight spectrum will typically exhibit many more peaks than a conventional time-of-flight spectrum. Moreover, the major peaks will be smaller in amplitude and the smaller peaks will be hidden among the peaks due to the alias times of flight. The above description additionally applies to detection events that are due to ions of more than one, e.g., n ion species, except that there is one respective true allowed time of flight for each of the n ion species. The remaining allowed times of flight are alias times of flight.
Intensity apportioner 140 is additionally iteratively operable, for each detection event, to calculate revised probabilities using the intensity accumulations linked to the allowed times of flight, and to reapportion the respective intensity of the detection event among the allowed times of flight linked to the detection event using the revised probabilities. Reapportioning the intensity of the detection event changes intensity accumulations stored in the TOF bins of spectrum memory 150 linked to the detection event. For each detection event, each time the intensity apportioner performs the revised probability determining and intensity reapportioning processes, parts of the intensity apportionments are typically removed from the alias TOF bins linked to the detection event, and the removed intensity apportionments are typically contributed to the real TOF bin linked to the detection event. Intensity apportioner 140 performs the revised probability determining and intensity reapportioning processes iteratively until a termination condition is met.
Intensity apportioner 140 performs the function of determining, in accordance with initial probabilities, initial apportionments of the respective intensity of each of the detection events among the allowed TOFs linked thereto; accumulating the initial apportionments of the intensities to each one of the allowed times of flight to generate a respective intensity accumulation for storage in a respective one of the TOF bins corresponding to the one of the allowed times of flight; iteratively determining revised probabilities for each detection event using the intensity accumulations stored in the respective TOF bins corresponding to the allowed times of flight linked to the detection event; and reapportioning the respective intensity among the TOF bins corresponding to the allowed times of flight using the revised probabilities. Exemplary structures for intensity apportioner 140 and its constituent components will be described below with reference to FIGS. 11 and 13-20.
Intensity apportioner 140 performs the revised probability determining and intensity reapportioning processes iteratively until a termination is met. Then, the intensity accumulations stored in the TOF bins of spectrum memory 150 constitute a final time-of-flight spectrum of the sample from which the ions were derived. As the number of iterations increases, the final time-of-flight spectrum will typically converge with the time-of-flight spectrum generated by a conventional mass spectrometer having the same mass resolution and sensitivity. However, the measurement runs performed by mass spectrometer 100 typically have a duration that is a fraction of that of the measurement runs performed by a conventional mass spectrometer. Moreover, depending on the operational speed of TOF calculator 130, intensity apportioner 140 and spectrum memory 150, the total time required for mass spectrometer 100 to generate the final time-of-flight spectrum can be less than that required for a conventional mass spectrometer to generate the conventional time-of-flight spectrum. Even when the operational speed of TOF calculator 130, intensity apportioner 140 and spectrum memory 150 is less than that needed to generate a final time-of-flight spectrum in real time, at least the initial intensity apportioning can be performed in real time to enable real-time visualization of the initial time-of-flight spectrum.
Mass spectrometer 100 will now be described in greater detail. Temporally-irregular ion pulser 110 is composed of an electrode 112, an ion source 114 and a temporally-irregular transient source 116. Transient source 116 generates transients at temporally-irregular timings having an average repetition rate greater than the reference repetition rate corresponding to the reciprocal of the maximum time of flight of mass spectrometer 100. Typically, transient source 116 generates the transients with respective timings each of which differs from a timing corresponding to the average repetition rate by a difference within a specified difference range. The differences can be truly random, pseudo random, or irregular in some other way. In an example, a uniform distribution of pulser intervals between a minimum and a maximum is used. Circuits and software routines suitable for generating such transients are known in the art and can be used. Each transient is a short-duration, high-voltage electrical pulse.
Transient source 116 outputs the transients or timing information regarding the transients to TOF calculator 130 to provide the respective transient times of the transients for the TOF calculator to use in calculating the allowed times-of-flight corresponding to each transient. Transient source 116 additionally applies the transients between ion source 114 and electrode 112. Each transient applied between ion source 114 and electrode 112 accelerates a burst of ions along a path that ends at ion detector 120. In the example shown, the path is a straight line path. In other examples, the path is a zigzag path, a precessing elliptical path, or another path that starts at ion pulser 110 and ends at ion detector 120.
Transient source 116 operates in response to a start signal S received from controller 160. Controller 160 also supplies start signal S to intensity apportioner 140 and to elapsed time counter 180. In the absence of start signal S, elapsed time counter 180 is held in a reset state. At the start of each measurement run performed by mass spectrometer 100, controller 160 generates start signal S and provides the start signal to transient source 116, intensity apportioner 140 and elapsed time counter 180. Receipt of start signal S releases elapsed time counter 180 from its reset state and allows counter 180 to count clock signal CS received from clock 170 to generate elapsed time signal ET. Start signal S additionally causes transient source 116 to start generating transients T.
Elapsed time counter 180 supplies elapsed time signal ET to time of flight calculator 130. In some embodiments (not shown), elapsed time counter 180 additionally supplies elapsed time signal ET to transient source 116 to enable the transient source to provide transient times instead of transients to TOF calculator 130.
Ion detector 120 is implemented as a device such as a Faraday cup, a multichannel plate (MCP), an electron multiplier (continuous structure as well as dynode structure), a conversion dynode, a Daly ion detector, a combination thereof, or another suitable device that generates a signal whose intensity depends on the number of ions incident thereon in a defined interval of time. Typically, ion detector 120 generates an analog signal whose amplitude statistically depends on the number of ions incident on the ion detector during the defined time interval and includes an analog-to-digital converter (not shown) that converts the analog signal to the above-described digital detection signal DS whose intensity represents the amplitude of the analog signal. The analog-to-digital converter has a conversion rate and sampling time defined by clock signal CS received from clock 170.
Typically, the output of ion detector 120 is subject to thresholding in either the analog or digital domain to remove noise. As a result of such thresholding, in some embodiments, each non-zero intensity in detection signal DS can be regarded as constituting a respective detection event. In other embodiments, detection signal DS is subject to a more sophisticated analysis to identify the detection events. As noted above, each detection event has a respective intensity and a respective event time. The event time is the value of elapsed time signal ET output by elapsed time counter 180 at the time that the ions detected as the detection event are detected by ion detector 120. The intensity represents the number of ions incident on the ion detector during a defined time interval starting at the event time. As noted above, yet other embodiments employ multi-sample detection events in which each detection event is composed of a series of consecutive samples in detection signal DS, each sample having a respective intensity. The event time of a multi-sample detection event is the event time of one of the samples constituting the detection event. In an example, the event time is the event time of the first sample in the set. The number of samples constituting a multi-sample detection event is typically no more than that needed to represent the pulse width of the analog signal generated by ion detector 120.
Time of flight calculator 130 has a detection signal input connected to receive detection signal DS from ion detector 120, a transient input connected to receive transients T from irregular transient source 116, an elapsed time input connected to receive elapsed time signal ET from elapsed time counter 180, an event count output connected to provide event count EC to intensity apportioner 140, a start input connected to receive start signal S from controller 160, and an event flag output connected to provide event flags EF to intensity apportioner 140. Time of flight calculator 130 additionally has an event record output connected to provide an initial event record IER for each detection event to intensity apportioner 140.
Consider the detection event labelled k. Hypothetically, detection event k could be the result of detecting the ions accelerated by one any of the transients occurring at a time earlier than detection event k. However, mass spectrometer 100 is characterized by three time-of-flight parameters: a minimum time of flight TOFMIN, which is the time taken for a hydrogen ion to travel from ion pulser 110 to ion detector 120, a maximum time of flight TOFMAX, defined above, and an allowed time-of-flight range between the minimum time of flight and the maximum time of flight. The minimum time of flight, the maximum time of flight and the allowed time of flight range are shown above the upper row of
In the example shown in
Each TOF bin constituting spectrum memory 150 corresponds to a respective time of flight in the allowed TOF range. For a given detection event, such as detection event k, TOF calculator 130 links to the detection event only those TOF bins of spectrum memory 150 that correspond to the allowed times of flight linked to the detection event.
Referring again to
Ion pulser 110 continues to accelerate bursts of ions towards ion detector 120 until the end of the measurement run. The measurement run ends when ion pulser 110 has performed a sufficient number of pulsing operations for a time-of-flight spectrum having a specified accuracy to be obtained. In a conventional mass spectrometer, a measurement run that will provide a time-of-flight spectrum of a specified accuracy has a duration of approximately n×TOFMAX, where n is the number of pulsing operations needed to obtain the specified accuracy and TOFMAX is the maximum time of flight of mass spectrometer 100. In an embodiment of mass spectrometer 100 in accordance with an embodiment of the invention, a measurement run that will provide a time of flight mass spectrum of approximately the same specified accuracy is approximately TOFMAX+nτ, where τ is the average period of irregular transient source 116. Since τ is a relatively small fraction of TOFMAX, the time required to obtain a time-of-flight spectrum of a given accuracy using mass spectrometer 100 is substantially less than that using a conventional mass spectrometer.
In mass spectrometer 100, TOF calculator 130, intensity apportioner 140 and spectrum memory 150 generate a time-of-flight spectrum by processing detection signal DS output by ion detector 120 during the measurement run. As noted above, detection signal DS represents detection events each having a respective intensity and event time.
In block 216, a test is performed to determine whether a termination condition has been met. A YES result in block 216 causes execution to stop. A NO result in block 216 causes execution to return to block 212, and blocks 212, 214 and 216 are repeated at least once until the termination condition is met in block 216.
In mass spectrometer 100, block 202 is performed by ion pulser 110, block 204 is performed by ion detector 120, and the detection signal is detection signal DS. Block 206 is performed by TOF calculator 130, and blocks 208, 210, 212, 214 and 216 are performed by intensity apportioner 140 and spectrum memory 150.
Allowed times of flight determining process 206, initial intensity apportioning process 208 and apportionment accumulating process 210 are typically performed more or less concurrently with the measurement run that generates detection signal DS, and revised probability determining process 212 and intensity reapportioning process 214 are performed after the end of the measurement run. Alternatively, the intensity and event time of each detection event and the transient time of each transient are stored during the measurement run, allowed times of flight determining process 206, initial intensity apportioning process 208, apportionment accumulating process 210, revised probability determining process 212 and intensity reapportioning process 214 are all performed after the measurement run using the stored intensities, event times and transient times. In another alternative, allowed times of flight determining process 206, initial intensity apportioning process 208 and apportionment accumulating process 210 are performed concurrently with the measurement run and the resulting intensity and allowed times of flight for each detection event are stored. Revised probability determining process 212 and intensity reapportioning process 214 are then performed after the end of the measurement run (or later) using the stored intensities and allowed times of flight.
Regardless of whether initial intensity apportioning process 208 and apportionment accumulating process 210 are performed concurrently with or after the measurement run, initial intensity apportioning process 208 and apportionment accumulating process 210 generate an approximation of the time-of-flight spectrum of the sample. The approximation of the time-of-flight spectrum is composed of a respective intensity accumulation linked to each of the allowed times of flight determined in block 206. As the number of detection events subject to initial intensity apportioning process 208 and apportionment accumulating process 210 increases, constructive reinforcement of the true times of flight causes the intensity accumulations linked to the allowed times of flight that are the true times of flight of relatively high-abundance ion species to become substantially larger than those linked to allowed times of flight that are alias times of flight of all ion species or are true times of flight of low-abundance ion species. Thus, the time-of-flight spectrum that is generated as the initial intensity apportioning process and apportionment accumulating process are performed exhibits peaks corresponding to the times of flight of the high-abundance ion species even though the intensities of such peaks are approximately equal to the true intensities divided by the average number of alias times of flight linked to each detection event. The remaining apportionments of the intensities that should have been apportioned to the true times of flight are randomly distributed among the remaining allowed times of flight by the irregular firing of ion pulser 110. This generates a noise-like floor that hides the peaks that represent the lower-abundance ion species. The revised probability determining and intensity reapportioning processes performed in blocks 212 and 214 reapportion the intensity accumulations linked to the alias times of flight to the true allowed times of flight to increase the amplitude of the true peaks and to reduce the noise represented by the intensity accumulations linked to the alias times of flight.
To reduce the time needed to generate a time-of-flight spectrum of a defined accuracy, the ion acceleration process of block 202 is performed at irregular intervals to accelerate pulses of ions derived from an analyte sample. The transients that accelerate the ions have an average repetition rate greater than the above-described reference rate defined by the maximum time of flight. Consequently, the detection signal generated by detecting the ions represents a number of superimposed mass scan signals temporally offset from one another by temporal offsets that depend on the irregular timing of the transients used to accelerate the ions. The superimposition of the mass scan signals effectively obscures useful information regarding the sample conveyed by the detection signal. The processes described above with reference to blocks 206-216 of
Time-of-flight spectrum generating process 200 described above with reference to
Referring to
Within the per-transient-time loop, in block 224, a time of flight between the transient time of the transient and the event time of the detection event is calculated. In an embodiment, this is done by registering the value of elapsed time signal ET at the transient time of the transient to provide the transient time, registering the value of elapsed time signal ET at the time the detection event occurs to provide the event time, and subtracting the registered transient time from the registered event time. The resulting time of flight is expressed in terms of a number of cycles of clock signal CS.
In block 225, a test is performed to determine whether the time of flight calculated in block 224 is an allowed time of flight, i.e., a time of flight greater than the above-described minimum time of flight TOFMIN and less than above-described maximum time of flight TOFMAX. A time of flight less than TOFMIN need not be tested for exceeding TOFMAX. A NO result in block 225 causes the operation that will be described below with reference to block 228 to be performed. A YES result in block 225 causes the operations that will be described next with reference to blocks 226 and 227 to be performed.
In block 226, the time of flight calculated in block 224 is saved as an allowed time of flight linked to the detection event. In embodiments of mass spectrometer 100 in which the allowed time of flight calculated in block 224 directly addresses a respective one of the TOF bins in spectrum memory 150, the allowed time of flight calculated in block 224 is saved as an allowed TOF linked to the detection event. In embodiments of mass spectrometer 100 in which the time of flight calculated in block 224 is mapped to the address of a respective one of the TOF bins in spectrum memory 150, the address of the TOF bin to which the allowed time of flight calculated in block 224 is mapped is saved as an allowed TOF linked to the detection event. The address of the TOF bin is then used as a surrogate for the allowed time of flight. Regardless of whether the allowed TOF directly addresses a TOF bin or is mapped to the address of a TOF bin, the allowed TOF will be regarded addressing the TOF bin. Ways other than addressing may be used to link each allowed time of flight to its corresponding TOF bin.
In block 227, allowed TOF count TC is incremented. The allowed TOF count TC represents the number of allowed times of flight that have thus far been calculated for the detection event. The count is incremented each time the time of flight calculated in block 224 is determined in block 225 to be an allowed time of flight.
In block 228, a test is performed to determine whether a respective time of flight has been calculated for each of the transients within the defined temporal range described above with reference to block 223. A NO result causes execution to return to block 224 via block 229. Block 229 causes block 224 to calculate a respective time of flight for the next transient time.
A YES result in block 228 causes execution to advance to block 230, where intensity I and allowed TOF count TC for the detection event are stored linked to the detection event.
In block 231, a test is performed to determine whether allowed times of flight have been determined for all of the detection events represented by the detection signal. A NO result causes execution to return to block 222 via block 232. Block 232 causes allowed times of flight to be determined for the next detection event represented by the detection signal. A YES result causes execution to return to the main routine.
In another example, an additional test block (not shown) is interposed between blocks 224 and 225, a different test is performed in block 225, and block 228 is omitted. In this example, in block 223, the transient times are presented in temporal order with the most-recent transient time first so that the times of flight calculated for the detection event in block 224 increase as the number of executions of block 224 increases. In the additional test block, a test is performed to determine whether the time of flight calculated in block 224 is less than the above-described minimum time of flight TOFMIN. A YES result in the additional test block causes execution to return to block 224 via block 229. A NO result causes execution to advance to block 225. In block 225, a test is performed to determine whether the time of flight calculated in block 224 is greater than the above-described maximum time of flight TOFMAX. A YES result causes execution to advance to block 230. A NO result causes execution to advance to blocks 226 and 227, and then to return to block 224 via block 229.
The example of the event record for a single detection event shown is composed of the following fields: an intensity field I, an allowed TOF count field TC, allowed time of flight fields AT1 through ATTC equal in number to allowed TOF count TC, and intensity apportionment fields IP1 through IPTC also equal in number to allowed TOF count TC. The allowed TOF fields store the allowed times of flight linked to the detection event. Each intensity apportionment field and its respective allowed TOF field are addressed by a TOF index TI whose value ranges from 1 to allowed TOF count TC (or zero to TC−1). Each allowed TOF field AT contains a respective one of the allowed times of flight linked to the detection event. The intensity field, the allowed TOF count field and the allowed TOF fields are populated when the event record for the detection event is initially stored in detection event memory 502. Each intensity apportionment field contains a respective previous apportionment of the intensity I of the detection event. The intensity apportionment fields are populated with previous intensity apportionments after the event record has been stored in detection event memory 502, as will be described below with reference to block 255 of
Another example of the event record has a fixed number of allowed TOF fields and a fixed number of intensity apportionment fields. The fixed number of fields is greater than or equal to the maximum value of allowed TOF count TC. In event records in which the number of allowed times of flight is less than the maximum, not all of the allowed TOF fields and intensity apportionment fields are occupied. A fixed number of allowed TOF fields and intensity apportionment fields requires that detection event memory 502 be larger than when a variable number of fields is used, as described above, but using a fixed number of fields may simplify the operation of the detection event memory. In another example of the event record, probability fields are used instead of the above-described intensity apportionment fields. Probability fields are required to store fewer bits than corresponding intensity apportionment fields and therefore using probability fields reduces the size of detection event memory 502. However, an additional multiplication operation is needed to convert each probability read from the event record to a respective intensity apportionment. The possibility of this alternative should be borne in mind when reading the descriptions below.
In block 244, respective initial probabilities are used to determine apportionments of the intensity of the detection event among the allowed times of flight linked to the detection event and the apportionment of the intensity to each of the allowed times of flight is accumulated. Examples of the operations performed in block 244 will be described below with reference to
In block 246, a test is performed to determine whether apportionments of the intensities of all the detection events have been determined using respective initial probabilities. A NO result in block 246 causes execution to return to block 244 via block 248. Block 248 causes block 244 to be performed for the next detection event. A YES result in block 246 causes execution to return to the main routine.
After the allowed time of flight determining process described above with reference to
Referring to
In block 254, the intensity I for the detection event is multiplied by a respective initial probability to generate a respective intensity apportionment. The respective initial probability is respective to the allowed TOF.
In block 255, the intensity apportionment calculated in block 254 is saved as a previous intensity apportionment linked to the allowed TOF. In an example, the intensity apportionment is stored as a previous intensity apportionment in the intensity apportionment field IPn of the event record in detection event memory 502 pertaining to the detection event. Intensity apportionment field IPn is linked to allowed TOF field ATn. The previous intensity apportionment is previous in the sense that it provides a record of the previous apportionment of the intensity of the detection event to the intensity accumulation linked to the allowed TOF for use in the subsequently-performed revised probability determining process described above with reference to block 212 of
In block 256, the intensity accumulation (if any) linked to the allowed TOF is retrieved. Such intensity accumulation has been generated by accumulating intensity apportionments obtained from detection events whose intensities have been initially apportioned to the allowed TOF earlier in the measurement run. If the no detection event has had its intensity apportioned to the allowed TOF earlier in the measurement run, no intensity accumulation is linked to the allowed TOF, and an intensity accumulation of zero is retrieved. In an example, the allowed TOF is read out from the respective allowed TOF field of the event record of detection event memory 502 pertaining to the detection event and is output to spectrum memory 150 to provide the address of one of the TOF bins therein. The intensity accumulation (if any) is then read out from the TOF bin addressed by the allowed TOF.
In block 257, the intensity apportionment calculated in block 254 and the intensity accumulation retrieved in block 256 are summed to generate a new intensity accumulation.
In block 258, the new intensity accumulation generated in block 257 is saved. In an example, the new intensity accumulation written to the TOF bin in spectrum memory 150 from which the intensity accumulation was read out in the example set forth above in the description of block 256.
In block 259, a test is performed to determine whether a respective intensity apportionment has been made for each of the allowed times of flight linked to the detection event. A NO result causes execution to return to block 254 via block 260. Block 260 causes an intensity apportionment to be made for the next allowed TOF linked to the detection event. A NO result causes execution to return to the main routine shown in
Blocks 256, 257 and 258, in which the intensity apportionment linked to the allowed TOF and the retrieved intensity accumulation linked to the allowed TOF are summed and saved linked to the allowed TOF, constitute part of apportionment accumulating process 210 that accumulates the apportionments of the intensities of the detection events to each allowed TOF to generate a respective intensity accumulation linked to the allowed TOF. The intensity accumulations linked to the real allowed TOFs progressively increase as the number of detection events processed increases.
In another example, each intensity apportionment generated in block 254 is individually cached linked to the allowed TOF, and blocks 256, 257 and 258 are omitted. Then, when all the detection events represented by the detection signal have been processed, the intensity apportionments cached linked to each of the allowed TOFs are summed to generate the respective intensity accumulation linked to the allowed TOF. Each intensity accumulation is then saved linked to the respective allowed TOF. In an example, the allowed TOF is saved in the TOF bin of spectrum memory 150 addressed by the allowed TOF. This alternative is also suitable for use in the initial intensity apportioning processes described below with reference to
In yet another example, each intensity apportionment determined in block 254 is individually cached linked to the allowed TOF, and blocks 256, 257 and 258 are omitted. Then, when a predetermined number of the detection events represented by the detection signal have been processed, for each of the allowed TOFs, the respective intensity apportionments cached linked thereto are summed to generate a respective intensity accumulation linked to the allowed TOF, and the intensity accumulation is saved linked to the allowed TOF. Then, when further predetermined number of the detection events have been processed, for each of the allowed TOFs, the intensity apportionments cached linked thereto are summed together with the previous intensity accumulation (if any) linked thereto to generate a respective new intensity accumulation linked thereto, and the new intensity accumulation is saved linked to the respective allowed TOF. The operation just described is repeated until all the detection events represented by the detection signal have been processed. This alternative is suitable for use in the initial intensity apportioning processes described below with reference to
In some embodiments, the only initial probabilities that can be used in the initial intensity apportioning and apportionment accumulating processes are those that equally apportion the intensity for the detection event among the allowed times of flight linked to the detection event.
In the example shown, intensity I is divided by allowed TOF count TC to generate the common intensity apportionment directly. Alternatively, a common initial probability is calculated by dividing unity (1) by allowed TOF count TC, and intensity I is then multiplied by such common initial probability to generate the common intensity apportionment. The common initial probability is common in the sense that it is the initial probability used to determine the intensity apportionment for each of the allowed times of flight linked to the detection event.
Block 254 (
Other embodiments of the initial intensity apportioning process described above with reference to block 206 of
After block 251 is performed to read the intensity I and allowed TOF count TC for the detection event, block 271 sets an accumulation sum AS to zero. Blocks 272, 275 and 276 then establish a per-allowed-TOF loop that is performed for each allowed TOF linked to the detection event. In block 273, the intensity accumulation (if any) linked to the allowed TOF is retrieved. In an example, the allowed TOF is read out from the respective allowed TOF field of the event record of detection event memory 502 pertaining to the detection event and is output to spectrum memory 150 to provide the address of one of the TOF bins therein. The intensity accumulation (if any) stored in the TOF bin addressed by the allowed TOF is read out and. Typically, the retrieved intensity accumulation is cached linked to the allowed TOF for use in block 278, to be described below. Additionally, the allowed TOF is cached to provide the address of the TOF bin to which the revised intensity accumulation generated from the intensity accumulation retrieved in block 273 is written, as will be described below with reference to block 258. Alternatively, the allowed TOF is not cached, but is read out once more from detection event memory 502 in block 258.
In block 274, the intensity accumulation retrieved in block 273 and accumulation sum AS are summed to generate a new accumulation sum AS. The value of accumulation sum AS generated the final time block 274 is performed for the detection event will be referred to as the final value of accumulation sum AS.
In block 275, a test is performed to determine whether respective intensity accumulations have been retrieved for all of the allowed times of flight linked to the detection event. A NO result causes execution to return to block 273 via block 276. Block 276 causes blocks 273 and 274 to be performed for the next allowed TOF.
A YES result in block 275 causes execution to advance to block 277, where a test is performed to determine whether the final value of accumulation sum AS generated in block 274 is greater than zero. A final value of accumulation sum AS greater than zero indicates that a respective intensity accumulation greater than zero is linked to at least one of the allowed times of flight linked to the detection event, and that unequal initial probabilities can be used. A final value of accumulation sum AS equal to zero indicates that none of the allowed times of flight has an intensity accumulation greater than zero linked thereto, and that equal initial probabilities should be used.
A YES result in block 277 causes execution to advance to block 253, described above, which, together with blocks 259 and 260, described above, establish a per-allowed-TOF loop that is performed for each allowed TOF linked to the detection event. Within the loop, in block 278, the intensity accumulation linked to the allowed TOF is divided by the final value of accumulation sum AS generated in block 274 to generate a respective initial probability for the allowed TOF. In an example, the intensity accumulation cached linked to the allowed TOF in block 273 is used in this operation. Then, blocks 254, 255, 257 and 258 described above with reference to
A NO result in block 277 causes execution to advance to above-described block 252 where a common intensity apportionment is calculated by dividing intensity I for the detection event by allowed TOF count TC. As noted above, this operation is equivalent to calculating a common initial probability and multiplying intensity I by the common initial probability. Next, block 279, together with blocks 282 and 283 establish a per-allowed-TOF loop that is performed for each allowed TOF linked to the detection event. Within the loop, the operation described above with reference to block 255 of
In block 282, a test is performed to determine whether an instance of the common intensity apportionment has been saved linked to each of the allowed times of flight linked to the detection event. A NO result causes execution to return to block 280 via block 283. Block 283 causes blocks 280 and 281 to be performed for the next allowed TOF. A YES result causes execution to return to the main routine.
In some applications, multiple measurement runs are sequentially performed using the same sample, or a sample that slowly evolves over time. For example, multiple measurement runs are sequentially performed as the sample elutes from a liquid chromatograph. In such applications, because of the basic similarities between the time-of-flight spectra generated from the consecutive measurement runs, the time-of-flight spectrum generated from a given measurement run can be used to determine the initial probabilities used to determine the apportionments of the intensities of the detection events represented by the detection signal generated in the next measurement run.
To generate initial probabilities from the time-of-flight spectrum generated from the previous measurement run, the intensity accumulations generated from the previous measurement run are saved independently of the intensity accumulations generated from the current measurement run. To simplify the following explanation, the former will be said to be saved in first storage and the latter will be said to be saved in second storage. An example of mass spectrometer 100 capable of performing such an initial intensity apportioning process incorporates an additional spectrum memory nominally identical to spectrum memory 150 to provide the second storage. The spectrum memories are identically addressed such that a given allowed TOF provided to the spectrum memories will address corresponding TOF bins in both spectrum memories.
In the following description, it will be assumed that the time-of-flight spectrum generated from the previous measurement run is stored in the first storage, and that a value of zero was stored in each TOF bin in the second storage as the revised probability determining and intensity reapportioning processes were being performed following the previous measurement run. The operations shown in
Referring now to
A YES result in block 277 causes execution to advance to block 253 that, together with blocks 259 and 260, establishes a per-allowed-TOF loop in a manner similar to that described above with reference to
Blocks 257 and 287, in which the intensity apportionment linked to the allowed TOF and the intensity accumulation linked to the allowed TOF retrieved from the second storage are summed and are saved in the second storage linked to the allowed TOF, constitute part of apportionment accumulating process 210 that accumulates the apportionments of the intensities of the detection events to the allowed TOF to generate a respective intensity accumulation.
Finally, the operations described above with reference to blocks 259 and 260 of
A NO result in block 277 causes operations similar to those described above with reference to blocks 252, 279 and 255 of
The operations just described are repeated until the intensities of all of the detection events represented by the detection signal generated during the current measurement run have been initially apportioned and the resulting intensity accumulations have been saved in the second storage. One or more iterations of the revised probability determining and intensity reapportioning processes described above with reference to blocks 212 and 214 of
In the various examples described above with reference to
Referring to
Blocks 293, 295 and 296 establish a per-detection-event loop that is performed for each detection event represented by the detection signal generated during the current measurement run and for which an intensity and at least one linked allowed TOF has been saved as described above with reference to
In block 295, a test is performed to determine whether apportionments of the intensities of all the detection events represented by the current detection signal have been determined. A NO result in block 295 causes execution to return to block 294 via block 296. Block 296 causes the process described above with reference to
In block 297, the duplicate previous time-of-flight spectrum is subtracted from the modified time-of-flight spectrum generated by repetitively performing block 294. This effectively generates an initial intensity accumulation linked to each allowed TOF linked to each detection event represented by the current detection signal. In an example, blocks of the auxiliary memory and corresponding blocks of spectrum memory 150 are read, each block of the auxiliary memory is subtracted from the corresponding block of spectrum memory 150 and the resulting block of differences is stored back in spectrum memory 150. This is equivalent to, but faster than, subtracting the respective intensity accumulation stored in the TOF bin addressed by each allowed TOF in the auxiliary memory from the respective intensity accumulation stored in the TOF bin addressed by the same allowed TOF in spectrum memory 150 to leave in the TOF bin of spectrum memory 150 addressed by the allowed TOF the respective initial intensity accumulation obtained by accumulating the apportionments to the allowed TOF of the intensities of the detection events represented by the current detection signal.
In another example, in block 292, the duplicate previous time-of-flight spectrum is made by not clearing the detection event records generated during the previous measurement run prior to the current measurement run, and storing the detection event records generated during the current measurement run in addition thereto. The detection event records generated during the previous measurement run will be referred to as previous event records and those generated during the current measurement run will be referred to as current event records. The previous intensity apportionments (or the intensities and probabilities) stored in the previous event records linked to each allowed TOF, when accumulated, generate a respective intensity accumulation of the prior TOF spectrum. Thus, the previous intensity apportionments stored in the previous event records collectively constitute the duplicate previous time-of-flight spectrum.
Block 294 is performed as described above using initial probabilities generated from the modified time-of-flight spectrum that includes the previous time-of-flight spectrum. Then, in block 297, the duplicate previous time-of-flight spectrum is subtracted from the modified time-of-flight spectrum as follows: for each allowed TOF linked to each detection event, the previous intensity apportionment linked to the allowed TOF in the previous event record pertaining to the detection event is subtracted from the intensity accumulation linked to the allowed TOF in the modified time-of-flight spectrum. This effectively generates a respective initial intensity accumulation for each of the allowed TOFs linked to the detection events represented by the current detection signal.
In an example, the detection event memory in which the detection event records are stored is increased in size to accommodate both the previous event records and the current event records, and a single spectrum memory 150 is employed. Each previous intensity apportionment is read from the intensity apportionment field linked to the allowed TOF in the previous event record pertaining to the detection event, and the respective intensity accumulation is read from the TOF bin in spectrum memory 150 addressed by the allowed TOF.
In yet another example based on the example just described, the previous time-of-flight spectrum is generated from a predetermined number X of firings of ion pulser 110, and the detection event records from which the previous time-of-flight spectrum was generated are retained as previous detection records, as described above. Moreover, those of the previous detection event records that resulted from the first Y of those firings are identified as older event records and the detection event records that resulted from the remaining pulser firings are identified as newer event records. In an example, Y=X/2. In another example, Y=0.4X.
Then, during the current measurement run, Y pulser firings are performed and the detection event records for the resulting detection events are stored as additional event records in addition to the previous event records. In block 294, the intensities of the detection events represented by the additional event records are subject to the process described above with reference to
The event records that remain, i.e., the newer event records and the additional event records, are then subject to iterations of the revised probability determining and intensity reapportioning processes described above with reference to blocks 212 and 214 of
Other ways of deriving the initial probabilities from a previously-generated time-of-flight spectrum are possible and may be used.
Regardless of the operations used to perform initial intensity apportioning and apportionment accumulating processes 208 and 210, at the completion of the initial intensity apportioning and apportionment accumulating processes, apportionments of the intensity of each of the detection events represented by the detection signal among the allowed times of flight linked thereto have been determined, and the respective intensity apportionments to each allowed time of flight have been accumulated to generate a respective intensity accumulation linked to the allowed time of flight. Typically, a majority of the possible times of flight have no intensity accumulations linked thereto.
In other examples, intensity accumulations are used instead of depleted intensity accumulations to increase the speed of operation, but this typically yields a sub-optimum result. Alternatively, intensity accumulations are used in the initial iterations and depleted intensity accumulations are used in the final iterations to produce a closer-to-optimum result more quickly than when depleted intensity accumulations are used throughout.
The intensity reapportioning process reapportions the respective intensity of each detection event among the allowed times of flight linked to the detection event in accordance with the revised probabilities generated by the revised probability determining process. The intensity reapportioning process reapportions the intensity of each detection event away from the alias times of flight and towards the true time of flight linked to the detection event. The operations described with reference to
Referring to
In block 306, the respective intensity accumulation linked to each allowed TOF linked to the detection event is retrieved, the intensity accumulation is subject to a depletion operation that generates a respective depleted intensity accumulation, and the depleted intensity accumulations generated for all the allowed times of flight linked to the detection event are summed to generate a depleted accumulation sum. In the depletion operation, the previous apportionment of the intensity of the detection event to the allowed TOF is subtracted from the intensity accumulation linked to the allowed TOF to generate the respective depleted intensity accumulation. In an example, the intensity accumulation linked to the allowed TOF is read from the respective TOF bin of spectrum memory 150 addressed by the allowed TOF and the previous intensity apportionment is read from the intensity apportionment field of the event record in detection event memory 502 pertaining to the detection event. The intensity apportionment field from with the previous intensity apportionment is read is that linked to the allowed TOF.
Each depleted intensity accumulation generated by the depletion operation is the intensity accumulation linked to the respective allowed TOF from which is subtracted the previous intensity apportionment PIP previously contributed by the detection event to the intensity accumulation linked to the allowed TOF. The previous intensity apportionment is the intensity apportionment linked to the allowed TOF that was added to the intensity accumulation when block 257 of
In block 308, for each allowed TOF linked to the detection event, a respective revised probability is determined using the respective depleted intensity accumulation generated in block 306 for the allowed TOF and the depleted accumulation sum also generated in block 306 for the detection event. The revised probabilities are used to reapportion the intensity of the detection event among the allowed times of flight linked to the detection event.
In block 310, for each allowed TOF linked to the detection event, a revised intensity apportionment is calculated using the respective revised probability calculated in block 310 for the allowed TOF, and the revised intensity apportionment is saved as a previous intensity apportionment PIP linked to the allowed TOF, overwriting any previous intensity apportionment linked thereto.
In block 312, for each allowed TOF linked to the detection event, the respective depleted intensity accumulation calculated in block 306 is subject to an accumulation operation using the respective revised intensity apportionment calculated in block 310 and the resulting revised intensity accumulation is saved linked to the allowed TOF. In an example, the revised intensity accumulations are stored in the respective TOF bins of spectrum memory 150 addressed by the allowed TOFs linked to the detection event.
The operations performed in block 306 using the previous intensity apportionment and in block 312 using the revised intensity apportionment modify the intensity accumulations linked to the allowed times of flight linked to the detection event and hence reapportion the intensity of the detection event among the allowed times of flight linked thereto. Predominantly, the overall effect of these operations is to increase the intensity accumulation linked to the real allowed TOF linked to the detection event, and to decrease the intensity accumulations linked to the alias allowed TOFs linked to the detection event.
In block 314, a test is performed to determine whether revised probability determining and intensity reapportioning operations have been performed for all the detection events represented by the detection signal. A NO result causes execution to return to block 304 via block 316. Block 316 causes block 304 to read the intensity I and the allowed TOF count TC for the next detection event. A YES result causes execution to advance to block 318.
In block 318, a test is performed to determine whether a defined termination condition has been met. For example, in block 318, the test may determine whether it has been performed a predetermined number of times. In another example, a statistical criterion is tested to determine whether the termination condition has been met. For example, such criteria as an L1 norm, an L2 norm or an Linfinity norm are applied to changes in the intensity apportionments or the probabilities between successive executions of blocks 212 and 214 of
A YES result in block 318 causes execution to return to the main routine. Then, a read-out command will cause the time-of-flight spectrum composed of a respective intensity accumulation stored linked to each allowed TOF to be read out for conversion into a mass spectrum. Processes and systems for converting a time-of-flight spectrum to a mass spectrum are known in the art and will therefore not be described here.
In another example of operations 300, block 312 is omitted and the previous intensity apportionment that was subtracted from the intensity accumulation linked to the allowed TOF in block 306 is subtracted from the revised intensity apportionment calculated in block 310 to generate an apportionment difference that is individually cached linked to the allowed TOF. Then, when all the detection events represented by the detection signal have been processed (a YES result is obtained in block 314, described below), for each allowed TOF, the intensity apportionment saved linked thereto and the respective apportionment differences cached linked thereto are summed to generate the revised intensity accumulation linked thereto and the revised intensity accumulation is then saved linked to the allowed TOF. In an example, the revised intensity accumulation is saved in the TOF bin of spectrum memory 150 addressed by the allowed TOF. This alternative causes processing 300 to converge on the termination condition more slowly than when the processing includes block 312 because the intensity accumulations do not change until the summing operation just described has been performed after all the detection events have been processed.
In yet another example in which probabilities are saved instead of intensity apportionments, blocks 310 and 312 are omitted, and the previous probability linked to the allowed TOF and retrieved in block 306 is subtracted from the revised probability linked to the allowed TOF and determined in block 308 to generate a probability difference linked to the allowed TOF. The intensity for the detection event is multiplied by the probability difference linked to the allowed TOF to generate the above-mentioned apportionment difference that is cached linked to the allowed TOF, as described above. Other ways of calculating the revised intensity apportionments are possible and can be used.
Blocks 344, 354 and 356 establish a per-allowed-TOF loop that is performed for each allowed TOF linked to the detection event. A reference in the description of
Within the per-allowed-TOF loop, in block 346, the previous intensity apportionment linked to the allowed TOF is read. In an example, the previous intensity apportionment is read out from the respective field of the event record in detection event memory 502 pertaining to the detection event. The previous intensity apportionment was stored in the event record either during the initial intensity apportionment process described above with reference to block 244 of
In block 348, the intensity accumulation linked to the allowed TOF is retrieved. In an example, the allowed TOF is read out from the respective allowed TOF field in the event record of detection event memory 502 pertaining to the detection event and is output to spectrum memory 150. The intensity accumulation is read out from the TOF bin in spectrum memory 150 addressed by the allowed TOF. Additionally, the allowed TOF is cached to provide the address of the TOF bin to which the revised intensity accumulation generated from the intensity accumulation retrieved in block 348 is written, as will be described below with reference to block 368. Alternatively, the allowed TOF is not cached, but is read out once more from detection event memory 502 in block 368.
In block 350, a depletion operation is performed in which the previous intensity apportionment read in block 346 is subtracted from the intensity accumulation retrieved in block 348 to generate a respective depleted intensity accumulation. In an example, the depleted intensity accumulation is cached linked to the allowed TOF for later use in blocks 360 and 366, to be described below.
In block 352, the depleted intensity accumulation generated in block 350 for the allowed TOF is added to the depleted accumulation sum to generate a new depleted accumulation sum. When the depleted accumulation sum is the sum of the depleted intensity accumulations for all the allowed times of flight linked to the detection event, it will be referred to as a final depleted accumulation sum that is used in determining revised probabilities for the detection event.
In block 354, a test is performed to determine whether depleted intensity accumulations have been generated for all the allowed times of flight linked to the detection event. A NO result causes execution to return to block 346 via block 356. Block 356 causes a depleted intensity accumulation to be generated for the next allowed TOF linked to the detection event. A YES result causes execution to advance to block 358 shown in
Referring now to the portion of
Within the per-allowed-TOF loop, in block 360, the depleted intensity accumulation generated for the allowed TOF in block 350 is divided by the final depleted accumulation sum generated in block 352 to generate a respective revised probability for use in calculating a revised apportionment of the intensity of the detection event to the allowed TOF. In an example, the depleted intensity accumulation that was cached linked to the allowed TOF in block 350 is used in this operation.
In block 362, intensity I for the detection event is multiplied by the revised probability calculated in block 360 to generate a revised intensity apportionment. In block 364, the revised intensity apportionment calculated in block 362 is saved as a previous intensity apportionment linked to the allowed TOF. In an example, the revised intensity apportionment is stored as a previous intensity apportionment in the event record in detection event memory 502 pertaining to the detection event. Within the event record, the revised intensity apportionment is stored as a previous intensity apportionment in the intensity apportionment field IPn linked to the allowed TOF field ATn in which the allowed TOF is stored. The previous intensity apportionment overwrites the previous intensity apportionment stored in the same field in block 255 of
In block 366, an accumulation process is performed in which the revised intensity apportionment generated in block 362 and the depleted intensity accumulation linked to the allowed TOF generated in block 350 are summed to generate a revised intensity accumulation. In an example, the depleted intensity accumulation that was cached in block 350 linked to the allowed TOF is used in this operation.
In block 368, the revised intensity accumulation calculated in block 366 is saved linked to the allowed TOF. In an example, the allowed TOF cached in block 348 is read and is output to spectrum memory 150. Alternatively, the allowed TOF is read out from the respective allowed TOF field in the event record of detection event memory 502 pertaining to the detection event and is output to spectrum memory 150. The revised intensity accumulation generated in block 366 is then written to the TOF bin addressed by the allowed TOF. The revised intensity accumulation overwrites the intensity accumulation previously stored in the TOF bin.
In block 370, a test is performed to determine whether revised probabilities have been determined for all the allowed times of flight linked to the detection event. A NO result causes execution to return to block 362 via block 372. Block 372 causes a revised probability to be determined and an intensity reapportionment to be made for the next allowed TOF linked to the detection event. A YES result causes execution to return to the main routine described above with reference to
As noted above, in some embodiments, intensity accumulations may be used instead of depleted intensity accumulations and an accumulation sum is used instead of a depleted accumulation sum in at least some of the iterations of the revised probability determining process just described with reference to
Each time the operations described above with reference to
In the example described above with reference to
Common to all viable intensity reapportioning processes that employ depleted intensity accumulations is that the depletion operation performed in a given iteration of the process subtracts from the intensity accumulation exactly the same intensity apportionment as was added to the intensity accumulation by the accumulation operation performed in the previous iteration of the process. This property of the depletion and accumulation operations prevents residuals from the depletion and accumulation operations from undesirably accumulating in the intensity accumulation. However, in practice, differences in the subtractions and additions can be tolerated provided that they are sufficiently small that the residuals that accumulate in the intensity accumulations over the total number of iterations remain negligible.
A simplified example 400 of time of flight calculator 130 described above with reference to
Time of flight calculator 400 is composed of an event detector 410, a transient time register 412, a flight time calculator 414, a summing circuit 416, a data compactor 418, an event record register 420, an allowed flag bus 426 and an event counter 428. Time of flight calculator 400 additionally has a detection signal input 440, a transient input 442, an elapsed time input 444, an event count output 446, a start input 447, an event flag output 448 and an event record output 450.
Event detector 410 has a detection signal input, an intensity output and an event flag output. The detection signal input is connected to receive detection signal DS from detection signal input 440. The event flag output is connected to event flag output 448. Event detector 410 operates to detect each of the detection events represented by detection signal DS. In response to each detection event represented by the detection signal, event detector 410 outputs a respective intensity I and a respective event flag EF. Event detector 410 outputs event flag EF to event flag output 448.
Transient time register 412 is composed of a number of nominally-identical stages, an exemplary one of which is indicated by reference numeral 422. Reference numeral 422 will additionally be used to refer to the stages of transient time register 412 collectively. The number of stages 422 is greater than or equal to the maximum number S of allowed times of flight that the detection events can have. The maximum number of allowed times of flight depends on the maximum time of flight TOFMAX of mass spectrometer 100 and the minimum time between consecutive firings of the irregular pulse source 116 of mass spectrometer 100. Each of the stages 422 has a transient time output. Transient time register 412 additionally has a clock input and an elapsed time input. The clock input is connected to receive transients T from transient input 442. The elapsed time input is connected to receive elapsed time signal ET from elapsed time input 444. In the example shown, transient time register 412 is implemented using a serial in, parallel out, shift register having S stages 422.
The example of flight time calculator 414 shown is composed of nominally-identical blocks equal in number to the stages 422 constituting transient time register 412. An exemplary block is indicated by reference numeral 424, and reference numeral 424 will additionally be used to refer to the blocks collectively. Each of the blocks 424 has an elapsed time input, a transient time input, an allowed time of flight output and an allowed flag output. The elapsed time input of each block is connected to receive elapsed time ET from elapsed time input 444. The transient time input of each block is connected to receive a transient time TT from the transient time output of the respective stage 422 of transient time register 412.
Summing circuit 416 has allowed flag inputs (not individually shown) and an output. The allowed flag output of each block 424 of flight time calculator 414 is connected via a respective conductor of allowed flag bus 426 to a respective one of the allowed flag inputs.
Data compactor 418 has inputs and outputs equal in number to the stages of transient time register 412. Each input is connected to receive a respective allowed time of flight AT from the allowed time of flight output of a respective block 424 of flight time calculator 414. Data compactor 418 removes all invalid allowed times of flight from the times of flight AT received from flight time calculator 414. Invalid allowed times of flight are allowed times of flight having a value of zero or another value outside the permitted range of the times of flight. Additionally, data compactor 418 shifts the remaining allowed times of flight towards the left so that only the left-most TC allowed times of flight output by the data compactor are valid allowed times of flight. TC is the number of allowed times of flight. This minimizes the number of allowed time of flight fields that need be provided in the event record and ensures that each allowed time of flight field is occupied by a valid (>0) allowed time of flight. In embodiments in which the event records output by event record register 420 have a fixed number of allowed time of flight fields, data compactor 418 may be omitted.
In the example shown, the allowed times of flight AT output by flight time calculator 414 map directly to the address space of spectrum memory 150, and the allowed time of flight output of each block 424 is directly connected to deliver a respective allowed time of flight AT to a respective input of data compactor 418. In another example in which the allowed times of flight output by flight time calculator 414 do not map directly to the address space of spectrum memory 150, a mapping circuit (not shown) is interposed between the allowed time of flight output of each block 424 of flight time calculator 414 and the respective input of data compactor 418 to map the respective allowed time of flight output by flight time calculator 414 to the address of a respective TOF bin in the address space of the spectrum memory.
Event record register 420 has an intensity input, an allowed TOF count input, allowed TOF inputs equal in number to the stages of transient time register 412, an event flag input and an event record output. The intensity input is connected to receive the intensity of each detection event represented by detection signal DS from the intensity output of event detector 410. The allowed TOF count input is connected to receive allowed TOF count TC from the output of summing circuit 416. The event flag input is connected to receive event flag EF from the event flag output of event detector 410. The output is connected to provide an initial event record IER for each detection event to event record output 450. Each allowed TOF input is connected to receive an allowed time of flight from a respective output of data compactor 418.
Event counter 428 has a first input, a second input, a strobe input, a reset input and an event count output. The first input is connected to receive a representation of unity. The strobe input is connected to receive successive event flags EF from the event flag output of event detector 410. The reset input is connected to receive a start signal S from start input 447. The event count output is connected to deliver an event count EC to event count output 446 and to the second input of the event counter. At the end of each measurement run performed by mass spectrometer 100, event count EC represents the number of detection events detected by event detector 410 during the measurement run and, hence, the number of detection events whose initial event records are stored in detection event memory 502.
Referring additionally to
Referring again to
During the measurement run, time of flight calculator 400 receives detection signal DS at detection signal input 440, successive transients T at transient input 442, and elapsed time signal ET at elapsed time input 444. Event detector 410 receives detection signal DS from detection signal input 440 and detects the detection events represented by the detection signal. In an example, event detector 410 detects each sample of detection signal DS whose intensity is greater than a threshold value as a respective detection event. For each detection event detected by event detector 410, the event detector outputs event flag EF to the strobe input of event counter 428, to the event flag input of event record register 420 and to event flag output 448. Event detector 410 additionally outputs the respective intensity I for each detection event to event record register 420, where the intensity populates the intensity field of initial event record IER.
Additionally, transient time register 412, flight time calculator 414 and summing circuit 416 operate to input to event record register 420 respective allowed times of flight and an allowed time of flight count for each distinct value of elapsed time ET. Each transient T received at transient input 442 is input to the clock input of transient time register 412. Each transient causes transient time register 412 to perform a right shift operation in which the contents of each stage 422 are transferred to the next stage and the value of elapsed time signal ET is loaded into the now-vacant first stage 422. Each stage 422 outputs the elapsed time stored therein as a respective transient time TT to the transient time input of a respective block 424 of flight time calculator 414. The transient times output by transient time register 412 are those of the S most-recent transients generated by transient source 116, where S is the number of stages 422 of transient time register 412.
Referring now to
Comparator 464 compares time of flight TF with maximum time of flight TOFMAX, outputs a 1 state when time of flight TF is less than or equal to maximum time of flight TOFMAX, and otherwise outputs a 0 state. Comparator 466 compares time of flight TF with minimum time of flight TOFMIN, outputs a 1 state when time of flight TF is greater than or equal to minimum time of flight TOFMIN, and otherwise outputs a 0 state. AND logic gate 468 combines the outputs of comparators 464 and 466 to generate allowed flag AF. AND logic gate 468 generates allowed flag AF in a 1 state when time of flight TF is an allowed time of flight, and otherwise generates allowed flag AF in a 0 state. Time of flight TF is an allowed time of flight when it is greater than or equal to minimum time of flight TOFMIN, and is less than or equal to maximum time of flight TOFMAX, indicated by the comparison outputs of both comparators 464, 466 being in the 1 state. Only when time of flight TF is an allowed time of flight does AND gate 468 provide allowed flag AF to allowed flag output 482 and to the control input of AND data gate 470.
AND data gate 470 receives allowed flag AF at its control input and time of flight TF at its data input. Only when allowed flag AF is in its 1 state will AND data gate 470 output time of flight TF as a valid allowed time of flight AT to the allowed time of flight output 480 of block 460. Otherwise, allowed flag AF causes AND data gate 468 to output a value of zero as an invalid allowed time of flight AT to the allowed time of flight output 480 of block 460. Alternatively, AND data gate outputs another value outside the valid range of the allowed times of flight in response to allowed flag AF in its 0 state.
Referring again to
Additionally, respective conductors of allowed flag bus 426 convey the allowed flags AF received from the respective allowed flag outputs 482 of the blocks 424 of flight time calculator 414 to the input of summing circuit 416. Summing circuit 416 sums the allowed flags AF to determine allowed TOF count TC, which represents the number of allowed times of flight, and, hence, the number of allowed times of flight linked to the detection event. Summing circuit 416 outputs allowed TOF count TC to event record register 420.
For each period of clock signal CS (
In response to each event flag EF, event record register 420 forms the initial event record IER for the respective detection event and outputs the initial event record to intensity apportioner 140 via event record output 450. Initial event record IER is composed of an intensity field, an allowed time of flight count field, allowed time of flight fields equal in number to allowed time of flight count TC and intensity apportionment fields equal in number to allowed time of flight count TC. Event record register 420 inserts the intensity I received from event detector 410 into the intensity field and the allowed time of flight count TC received from summing circuit 416 into the allowed time of flight count field. Event record register 420 additionally inserts the valid allowed times of flight AT1-ATTC received from the TC left-most outputs of data compactor 418 into respective ones of the TC allowed time of flight fields, and inserts a value of zero into each of the TC intensity apportionment fields. Time of flight calculator 400 additionally outputs event flag EF to intensity apportioner 140 (
The allowed times of flight included in the initial event record for a given detection event are obtained by subtracting the transient times stored in transient time register 412 from the value of elapsed time ET that exists when event detector 410 outputs the respective event flag EF for the detection event. Such value of elapsed time ET is the event time of the detection event: consequently, the allowed times of flight are obtained by subtracting transient times TT from the event time for the detection event.
Detection event memory 502 performs the function of storing a respective event record pertaining to each of the detection events represented by the detection signal. The event record stores data comprising the intensity, the allowed TOFs linked to the detection event and, linked to each of the allowed TOFs, a respective previous intensity apportionment or a respective previous probability. Detection event memory 502 has an event record input connected to receive an initial event record IER for each detection event from event record input 520. Detection event memory 502 additionally has an intensity output, an allowed TOF count output, an allowed TOF output, a previous intensity apportionment output and a new intensity apportionment input. Finally, detection event memory 502 has a function designator input, a read/write input, an event designator input and a TOF index input. The allowed TOF output is connected to provide each allowed TOF AT read out from detection event memory 502 for each detection event to the address input of spectrum memory 150 via memory address output 534. In spectrum memory 150, the allowed TOF provides the address of a respective TOF bin from which a respective intensity accumulation IA is read or to which a respective intensity accumulation IAW is written. In some implementations, allowed TOF AT directly addresses the storage locations within spectrum memory 150 that constitute respective TOF bins; in other implementations, allowed TOF is mapped to the address space of spectrum memory 150 to address the storage locations therein.
Controller 504 has a start input, an event count input, an event flag input and an allowed TOF count input. The start input is connected to receive start signal S from start input 526. The event count input is connected to receive event count EC from time of flight calculator 130 via event count input 524. The event flag input is connected to receive event flags EF from the event flag output of time of flight calculator 130 via event flag output 522. The allowed TOF count input is connected to receive a respective allowed TOF count TC for each detection event from the allowed TOF count output of detection event memory 502. Controller 504 additionally has a function designator output, a read/write output, an event designator output, and a TOF index output respectively connected to like-named inputs of detection event memory 502 to provide addressing instructions and read/write instructions thereto. Controller 504 additionally has a strobe output, a mode output and a memory control output. The memory control output is connected to provide memory control signal MC to the control input of spectrum memory 150 via memory control output 528.
Apportioner 506 performs the function of apportioning, in accordance with the probabilities supplied by probability calculator 510, the respective intensity of each one of the detection events among the allowed TOFs linked to the detection event to generate the respective apportionments of the intensity among the allowed TOFs. Apportioner 506 has an intensity input, a probability input and intensity apportionment output. The intensity input is connected to receive the respective intensity I of each detection event from the intensity output of detection event memory 502. The intensity apportionment output is connected to the new intensity apportionment input of detection event memory 502 to provide each new intensity apportionment NIP generated by apportioner 506 to the detection event memory for storage therein linked to the detection event and the allowed TOF. New intensity apportionment NIP is an initial intensity apportionment or a revised intensity apportionment generated by apportioner 506 for each allowed TOF linked to each detection event.
Accumulator 508 performs the function of subjecting the intensity accumulation linked to each allowed TOF linked to the detection event to a respective depletion operation to generate a depleted intensity accumulation linked to the allowed TOF. Each depletion operation involves subtracting the previous intensity apportionment PIP received from detection event memory 502 and linked to the allowed TOF from the intensity accumulation received from spectrum memory 150 and linked to the allowed TOF. Accumulator 508 additionally performs the function of accumulating the intensity apportionments to each one of the allowed TOFs to generate a respective intensity accumulation for storage in a respective one of the TOF bins addressed by the one of the allowed TOFs. In an example, accumulator 508 performs successive accumulation operations using depleted intensity accumulations cached therein and new intensity apportionments NIP received from apportioner 506. In another example, accumulator 508 performs the function of summing the depleted intensity accumulation linked to the allowed TOF and the revised intensity apportionment linked to the allowed TOF to generate the revised intensity accumulation linked to the allowed TOF. Finally, accumulator 508 performs the function of accumulating the depleted intensity accumulations linked to all the allowed TOFs linked to the detection event to generate a depleted accumulation sum.
Accumulator 508 has a new intensity apportionment input, a previous intensity apportionment input, a TOF index input, a strobe input, a mode input, an accumulation sum output, an intensity accumulation output, a read input and a write output. The new intensity apportionment input is connected to receive from the intensity apportionment output of apportioner 506 the new intensity apportionment NIP generated by the apportioner for each allowed TOF linked to each detection event. Accumulator 508 uses each new intensity apportionment in a respective accumulation operation. New intensity apportionment NIP received from apportioner 506 is an initial apportionment or a revised apportionment. The previous intensity apportionment input is connected to receive from the previous intensity apportionment output of detection event memory 502 the respective previous intensity apportionment PIP stored in the detection event memory linked to each allowed TOF linked to each detection event. Accumulator 508 uses each previous intensity apportionment in a respective depletion operation.
The TOF index input is connected to receive the respective TOF index TI for each allowed TOF linked to each detection event from the TOF index output of controller 504. The strobe input and the mode input are connected to receive a strobe signal SS and a mode control signal M, respectively, from the strobe output and the mode output, respectively, of controller 504. The read input is connected receive from the read output 624 (
Probability calculator 510 performs the function of determining probabilities in accordance with which the respective intensity of each detection event is apportioned among the allowed TOFs linked to the detection event. Probability calculator 510 initially performs the function of determining the respective initial probabilities, and subsequently performs the function of iteratively determining the revised probabilities using the intensity accumulations stored in the respective TOF bins corresponding to the allowed TOFs linked to the detection event. Probability calculator 510 has an allowed TOF count input, a mode input, a strobe input, an accumulation sum input, an intensity accumulation input and a probability output. The allowed TOF count input is connected to receive a respective allowed TOF count TC for each detection event from the allowed TOF count output of detection event memory 502. The mode input and the strobe input are connected to receive mode control signal M and strobe signal SS, respectively, from the mode output and the strobe output, respectively, of controller 504. The accumulation sum input is connected to receive the respective accumulation sum AS or depleted accumulation sum DAS generated by accumulator 508 for each detection event from the accumulation sum output of the accumulator. The intensity accumulation input is connected to receive the respective intensity accumulation IA or depleted intensity accumulation DIA generated by accumulator 508 for each allowed TOF linked to each detection event from the intensity accumulation output of the accumulator. The probability output is connected to provide a respective probability P determined by probability calculator 508 for each allowed TOF linked to each detection event to the probability input of apportioner 506. Probability P is an initial probability or a revised probability.
Referring additionally to
Throughout the measurement run, controller 504 sets function designator FD to a write mode that causes detection event memory 502 to operate in response to each event flag EF received from time of flight calculator 130 to write a respective initial event record IER received at its event record input to a respective storage location therein. During the measurement run, detection event memory 502 operates in response to event designator ED and read/write signal R/W received from controller 504 to store the initial event record IER for each detection event in a respective storage location therein designated by event designator ED received from controller 504. Controller 504 uses the value of event counter EC received from time of flight calculator 130 as event designator ED and uses each event flag EF also received from the time of flight calculator as read/write signal R/W during the measurement run. At the end of the measurement run, controller 504 stores the final value of event count EC received from time-of-flight calculator 130 for use in indexing the per-detection-event processes that are performed for each detection event represented by detection signal DS and whose respective initial event record is stored in a respective storage location in detection event memory 502.
In the example shown, intensity apportioner 500 performs the initial intensity apportionments at the end of the measurement run. In another example, intensity apportioner 500 performs the initial intensity apportionments concurrently with the measurement run. In such example, controller 504 employs a write event designator and a read event designator. The write event designator tracks the detection events as their respective initial event records are stored in detection event memory 502. The read event designator tracks the event records as they are read from detection event memory 502. The following description applies to both examples. References below to event designator ED are to be taken to refer to the read event designator in the example having two event designators.
At the start of the initial intensity apportioning process, controller 504 resets event designator ED to cause detection event memory 502 to read the event record of the first detection event from its respective storage location. Controller 504 additionally causes accumulator 508 to reset accumulation sum AS as the event record for the first detection event, and that for each subsequent detection event, is read out from detection event memory 502. Detection event memory 502 outputs the intensity I and allowed TOF count TC from the event record pertaining to the first detection event at its intensity output and allowed TOF count output, respectively. Additionally, controller 504 provides to detection event memory 502 a value of TOF index TI that causes the detection event memory to output the first allowed TOF AT of the first detection event at its allowed TOF output. Detection event memory 502 supplies intensity I to apportioner 506, allowed TOF count TC to controller 504 and the first allowed TOF AT to memory address output 534. Allowed TOF count TC supplied to controller 504 defines the number of per-allowed-TOF operations to be performed for the first detection event. The first allowed TOF supplied to spectrum memory 150 provides the address of a first TOF bin in the spectrum memory linked to the detection event.
Additionally, detection event memory 502 supplies allowed TOF count TC to probability calculator 510 for possible use in determining an initial probability P for the allowed TOFs linked to the detection event, as will be described in greater detail below with reference to
Controller 504 then supplies mode control signal M and strobe signal SS to accumulator 508. In the initial apportioning operation, these control signals cause accumulator 508 to cache first intensity accumulation IA and to add first intensity accumulation IA to accumulation sum AS.
Controller 504 then successively increments TOF index TI by one until the TOF index is equal to allowed TOF count TC for the first detection event. Each time TOF index TI is incremented, detection event memory 502, controller 504, accumulator 508 and spectrum memory 150 repeat the operations just described to cache the respective intensity accumulation IA read from the TOF bin addressed by the allowed TOF corresponding to TOF index TI, and to add the respective intensity accumulation IA to accumulation sum AS.
Once respective intensity accumulations read out from the TOF bins linked to the first detection event have been cached and have been added to accumulation sum AS, controller 504 supplies mode control signal M and strobe signal SS to accumulator 508 to cause the accumulator to output accumulation sum AS to probability calculator 510. The value of accumulation sum AS determines the operations performed by probability calculator 510 to determine initial probabilities for apportioning the intensity of the detection event among the TOF bins linked thereto. A value of zero causes the probability calculator to generate equal probabilities by dividing unity by allowed TOF count TC. A value greater than zero causes the probability calculator to generate non-equal probabilities by dividing the respective intensity accumulation IA by accumulation sum AS. Unless a previously-generated time-of-flight spectrum is used to generate the initial probabilities, as described above with reference to
Controller 504 then resets TOF index TI, leaves event designator ED unchanged and sets function designator FD to a rewrite state in which the function designator causes detection event memory 502 to write an updated version of the event record pertaining to the first detection event in the storage location addressed by event designator ED. The new value of TOF index TI causes detection event memory 502 once more to output the first allowed TOF AT linked to the first detection event to spectrum memory 150 via memory address output 534.
Controller 504 additionally provides mode control signal M and strobe signal SS to accumulator 508 and to probability calculator 510. The control signals cause probability calculator 510 to calculate an initial probability for the first allowed TOF. As noted above, the initial probabilities are equal probabilities for the first detection event, but may be unequal for subsequent detection events. Probability calculator 510 outputs the initial probability for the first allowed TOF to apportioner 506 and the apportioner multiplies intensity I for the first detection event by the initial probability for the first allowed TOF to generate a respective new intensity apportionment NIP for the first allowed TOF linked to the first detection event. Apportioner 506 outputs the new intensity apportionment NIP to the new intensity apportionment inputs of detection event memory 502 and accumulator 508. In response to TOF index TI, detection event memory 502 inserts new intensity apportionment NIP into the first intensity apportionment field of the event record in the detection event memory pertaining to the first detection event, where the new intensity apportionment becomes a previous intensity apportionment PIP.
Controller 504 again supplies mode control signal M and strobe signal SS to accumulator 508. The control signals cause accumulator 508 to perform an accumulation operation in which it sums new intensity apportionment NIP received from apportioner 506 and intensity accumulation IA cached linked to the first allowed TOF to generate a new intensity accumulation IAW. Accumulator 508 outputs intensity accumulation IAW to spectrum memory 150 via write output 532. Controller 504 supplies memory control signal MC to spectrum memory 150 via memory control signal output 528. Memory control signal MC causes spectrum memory 150 to write intensity accumulation IAW to the TOF bin addressed by the first allowed TOF linked to the first detection event.
Controller 504 then successively increments TOF index TI by one until the TOF index is equal to allowed TOF count TC for the first detection event. Each time TOF index TI is incremented, detection event memory 502, controller 504, apportioner 506, accumulator 508, probability calculator 510 and spectrum memory 150 repeat the operations just described to generate a probability P, a new intensity apportionment NIP and an intensity accumulation IAW for the respective allowed TOF corresponding to TOF index TI, to write intensity accumulation IAW to the TOF bin in spectrum memory 150 addressed by the allowed TOF, and to insert the new intensity apportionment as a previous intensity apportionment into the respective intensity apportionment field of the event record in detection event memory 502 pertaining to the first detection event.
Once the above-described operations have been performed for all the allowed times of flight linked to the first detection event, controller 504 again provides read/write control signal R/W to detection event memory 502. The read/write control signal causes the detection event memory to write the updated event record pertaining to the first detection event in the storage location therein designated by event designator ED.
Controller 504 then successively increments event designator ED by one until the event designator is equal to event count EC received from time of flight calculator 130 at the end of the measurement run. Each time event designator ED is incremented, detection event memory 502, controller 504, apportioner 506, accumulator 508, probability calculator 510 and spectrum memory 150 repeat the operations just described to apportion the intensity of the respective detection event among the allowed TOFs linked to the detection event, to accumulate the intensity apportionments linked to the allowed TOFs, to write the resulting intensity accumulations to the respective TOF bins addressed by the allowed TOFs, and to update the event record pertaining to the detection event in detection event memory 502.
After initial intensity apportionments have been performed for all the detection events for which an event record is stored in detection event memory 502, intensity apportioner 500 uses the intensity accumulations stored in the respective TOF bins corresponding to the allowed TOFs linked to each detection event to determine revised probabilities for use in reapportioning the intensity of the detection event among the allowed TOFs linked to the detection event. Controller 504 resets event designator ED to cause detection event memory 502 once more to read out the event record for the first detection event. Controller 504 additionally causes accumulator 508 to reset depleted accumulation sum DAS as the event record for the first detection event, and for each subsequent detection event, is read out from detection event memory 502. Detection event memory 504 outputs the intensity I and allowed TOF count TC from the event record pertaining to the first detection event at its intensity output and allowed TOF count output, respectively. Additionally, controller 504 provides to detection event memory 502 a value of TOF index TI that causes the detection event memory to output the first allowed TOF AT linked to the first detection event at its allowed TOF output and to output the previous intensity apportionment PIP linked to the first allowed TOF at its previous intensity apportionment output. Detection event memory 502 outputs the first allowed TOF for the first detection event to memory address output 534 for input to spectrum memory 150. Detection event memory 502 additionally outputs previous intensity apportionment PIP to the previous intensity apportionment input of accumulator 508.
Controller 504 then provides memory control signal MC to spectrum memory 150 via memory control signal output 528. The memory control signal causes spectrum memory 150 to read out the intensity accumulation stored in the TOF bin addressed by allowed TOF AT received from detection event memory 502. Accumulator 508 receives the intensity accumulation IA read out from spectrum memory 150 via read input 530. Accumulator 508 additionally receives previous intensity apportionment PIP from detection event memory 502 at its previous intensity apportionment input. Controller 504 provides mode control signal M and strobe signal SS to accumulator 508. In the intensity reapportioning operation, these signals cause accumulator 508 to subject intensity accumulation IA to a depletion operation in which it subtracts previous intensity apportionment PIP from intensity accumulation IA to generate depleted intensity accumulation DIA. Accumulator 508 additionally caches depleted intensity accumulation DIA, and also adds the depleted intensity accumulation to depleted accumulation sum DAS (which has a value of zero) to generate a new depleted accumulation sum.
Controller 504 then successively increments TOF index TI by one until the TOF index is equal to allowed TOF count TC for the first detection event. Each time TOF index TI is incremented, detection event memory 502, controller 504, accumulator 508 and spectrum memory 150 repeat the operations just described to subject each intensity accumulation IA received from a respective TOF bin in spectrum memory 150 to a depletion operation, to cache the resulting depleted intensity accumulation DIA linked to TOF index TI, and to add the respective depleted intensity accumulation DIA to depleted accumulation sum DAS.
Once respective depleted intensity accumulations DIA for all the allowed times of flight linked to the first detection event have been cached and have been added to depleted accumulation sum DAS, controller 504 supplies mode control signal M and strobe signal SS to accumulator 508 to cause the accumulator to output the final depleted accumulation sum DAS to probability calculator 510 for use in determining revised probabilities. Controller 504 then resets TOF index TI, leaves event designator ED unchanged and maintains function designator FD in its rewrite state in which it causes detection event memory 504 to write an updated version of the event record pertaining to the first detection event in the storage location therein addressed by event designator ED. The new value of TOF index TI causes detection event memory 502 once more to output the first allowed TOF AT linked to the first detection event to spectrum memory 150 via memory address output 534.
Controller 504 additionally provides mode control signal M and strobe signal SS to accumulator 508 and to probability calculator 510. The control signals cause probability calculator 510 to calculate a revised probability for the first allowed TOF linked to the first detection event by dividing the depleted intensity accumulation DIA cached linked to the first allowed TOF by the final depleted accumulation sum DAS for the first detection event. Probability calculator 510 outputs the revised probability for the first allowed TOF to apportioner 506 and the apportioner multiplies intensity I for the first detection event by the revised probability for the first allowed TOF to generate a respective revised intensity apportionment NIP for the first allowed TOF linked to the first detection event. Apportioner 506 outputs revised intensity apportionment NIP to the new intensity apportionment inputs of detection event memory 502 and accumulator 508. In response to TOF index TI, detection event memory 502 inserts the revised intensity apportionment NIP as a previous intensity apportionment into the first intensity apportionment field of the event record pertaining to the first detection event to update the first intensity apportionment field. Alternatively, as described above, the event record may be updated with the revised probability linked to the first allowed TOF.
Controller 504 additionally supplies mode control signal M and strobe signal SS to accumulator 508. The control signals cause accumulator 508 to perform an accumulation operation in which it adds the revised intensity apportionment NIP received from apportioner 506 to depleted intensity accumulation DIA cached linked to the first allowed TOF to generate a revised intensity accumulation IAW. Accumulator 508 outputs revised intensity accumulation IAW to spectrum memory 150 via write output 532. Controller 504 supplies memory control signal MC to spectrum memory 150 via memory control signal output 528. Memory control signal MC causes spectrum memory 150 to write revised intensity accumulation IAW in the TOF bin addressed by the first allowed TOF AT linked to the first detection event.
Controller 504 then successively increments TOF index TI by one until the TOF index is equal to allowed TOF count TC for the first detection event. Each time TOF index TI is incremented, detection event memory 502, controller 504, apportioner 506, accumulator 508, probability calculator 510 and spectrum memory 150 repeat the operations just described to generate a revised probability P, a revised intensity apportionment NIP and a revised intensity accumulation IAW for the respective allowed TOF corresponding to the TOF index, to store revised intensity accumulation IAW in the respective TOF bin addressed by the allowed TOF, and to update the respective intensity apportionment field of the event record pertaining to the first detection event with the revised intensity apportionment. Once the above-described revised probability determining and intensity reapportioning operations have been performed for all the allowed times of flight linked to the first detection event, controller 504 provides read/write control signal R/W to detection event memory 502. The read/write control signal causes the detection event memory to write the updated event record pertaining to the first detection event to the storage location therein designated by event designator ED.
Controller 504 then successively increments event designator ED by one until the event designator is equal to event count EC received from time of flight calculator 130 at the end of the measurement run. Each time event designator ED is incremented, detection event memory 502, controller 504, apportioner 506, accumulator 508, probability calculator 510 and spectrum memory 150 repeat the operations just described to determine revised probabilities, to reapportion the intensity of the respective detection event among the allowed TOFs linked to the detection event using the revised probabilities, to revise the intensity accumulations linked to the detection event using the revised intensity apportionments, to store the revised intensity accumulations in the respective TOF bins in spectrum memory 150 addressed by the allowed TOFs linked to the detection event, and to update the respective event record in detection event memory 502 pertaining to the detection event.
Once the respective intensities of all of the detection events represented by detection signal DS have been reapportioned as just described, controller 504 performs a test to determine whether a termination condition has been met. In an embodiment, the termination condition is that the intensity reapportioning process has been performed a pre-determined number of times. In another embodiment, controller 504 performs a test on data generated by accumulator 508 during the revised probability determining and intensity reapportioning processes to determine whether a statistical criterion has been met, as described above with reference to
An example of memory 610 has one storage location for every period of clock signal CS generated by clock 170 during the above-mentioned maximum time of flight TOFMAX of mass spectrometer 100. An exemplary storage location is indicated by reference numeral 612 and the storage locations are labelled TOF BIN1 through TOF BINN, where N is the above-described number of periods of clock signal CS in the maximum time of flight. Reference numeral 612 will additionally be used to refer to the storage locations collectively. Storage locations 612 are structured such that each is capable of storing a value greater than the maximum intensity accumulation that can reasonably accumulate during the intensity reapportioning operations performed by intensity apportioner 140 and spectrum memory 150. Another example has one storage location 612 for every period of clock signal CS generated by clock 170 between the above-mentioned minimum time of flight TOFMIN and the above-mentioned maximum time of flight TOFMAX of mass spectrometer 100. In such an example, the number of storage locations 612 is reduced, but the allowed TOFs have to be mapped to the address space of the memory. Memory 610 additionally has a write bus 614 coupled to write input 622, and a read bus 616 coupled to read output 624 and to spectrum output 628. Each storage location 612 of memory 610 has a respective input coupled to write bus 614 and a respective output coupled to read bus 616.
Memory 610 additionally has an address input and a control input. Other implementations of memory 610 have a single read/write bus and/or a separate read address input and a separate write address input. Since memory 610 is addressed randomly, implementing memory 610 using static random access memory increases operational speed compared with using dynamic random access memory. Memory structures different from that exemplified may alternatively be used as spectrum memory 150.
In response to a WRITE command received as memory control signal MC at memory control input 626, and allowed time of flight AT received at address input 620, spectrum memory 600 stores an intensity accumulation IAW received at write input 622 in the storage location 612 of memory 610 addressed by allowed TOF AT. In response to a READ command received as memory control signal MC at memory control input 626 and an address signal TC received at address input 620, spectrum memory 600 reads an intensity accumulation IA from the storage location 612 of memory 610 addressed by allowed TOF AT and outputs the read-out intensity accumulation IA at read output 624. Moreover, in response to a sequence of allowed TOFs AT and respective READ commands collectively received as memory control signal MC at memory control input 626, spectrum memory 600 sequentially reads the intensity accumulations respectively stored in the storage locations 612 of memory 610 and outputs the resulting time-of-flight spectrum TS at spectrum output 628.
Intensity apportioner 500 described above with reference to
Memory 702 has input ports, output ports, a memory address input and a read-write input. The input ports are connected to write bus 710. The output ports are connected to read bus 712. The read/write input is connected to receive read/write signal R/W from read/write input 723. The memory address input is connected to receive event designator ED, or an address generated by mapping event designator ED to the address space of memory 702, from event designator input 724. Alternatively, memory 702 may have combined input/output ports (not shown). In this case, a single read/write bus to which the output of data selector 704 and the input of demultiplexer 706 are connected is substituted for write bus 710 and read bus 712.
Data selector 704 has a first input, a second input, a control input and a bus output. The first input is connected to receive the initial event records IER generated by time of flight calculator 130 from event record input 716. The control input is connected to receive function designator FD from function designator input 722. The bus output is connected to write bus 710.
Demultiplexer 706 has a bus input, a selector input, an intensity output, an allowed TOF count output, an allowed TOF output and a previous intensity apportionment output. The bus input is connected to read bus 712. The selector input is connected to receive TOF index TI from TOF index input 725. TOF index TI designates the one of the allowed TOF fields and the one of the intensity apportionment fields in the event record read out from memory 702 whose contents are output to the allowed TOF output and the previous intensity apportionment output, respectively. The intensity output, the allowed TOF count output, the allowed TOF output and the previous intensity apportionment output are respectively connected to intensity output 717, allowed TOF count output 718, allowed TOF output 719 and previous intensity apportionment output 720.
Cache 708 is structured to store each event record read out from memory 702 while the intensity apportionment field(s) of the event record are updated. Cache 708 has an intensity input, an allowed TOF count input and an allowed TOF input respectively connected to the like-named outputs of demultiplexer 706. Cache 708 additionally has a new intensity apportionment input connected to new intensity apportionment input 721. Cache 708 additionally has an event record output connected to provide an updated event record UER to the second input of data selector 704. Finally, cache 708 has a selector input connected to receive TOF index TI from TOF index input 725. TOF index TI received at the selector input designates the one of the allowed TOF fields and the one of the intensity apportionment fields of the updated event record stored in cache 708 in which are stored allowed TOF AT received at the allowed TOF input and new intensity apportionment IP received at the new intensity apportionment input, respectively, of the cache. Cache 708 and new intensity apportionment input 721 collectively perform the function of allowing each respective previous intensity apportionment linked to the detection event to be updated by a respective revised intensity apportionment generated using a respective one of the revised probabilities. In an embodiment in which detection event memory 700 stores previous probabilities instead of previous intensity apportionments, cache 708 and new intensity apportionment input 721 collectively perform the function of allowing each respective previous probability linked to the detection event to be updated by a respective one of the revised probabilities.
Detection event memory 700 operates during the above-described initial intensity apportioning process to receive a respective initial event record IER for each detection event from time of flight calculator 130 and to store such initial event record in memory 702. Detection event memory 700 additionally operates during the above-described revised probability determining and intensity reapportioning processes to read each event record stored in memory 702, to provide allowed TOFs and respective previous intensity apportionments to spectrum memory 150 and accumulator 508, respectively, to receive new intensity apportionments from apportioner 506 (
As noted above with reference to
In the example shown, intensity I, allowed TOF count TC, only one of the allowed times of flight AT selected by TOF index TI and previous intensity apportionment PIP linked to the allowed TOF are output at one time. In another example, the detection event memory has multiple allowed TOF outputs and multiple previous intensity apportionment outputs (not shown) that enable the detection event memory to output the entire event record at once.
During the measurement run, detection event memory 700 operates to store the initial event record IER pertaining to each detection event represented by detection signal DS as follows. Detection event memory receives function designator FD, read/write signal R/W and event designator ED from controller 504 via function designator input 722, read/write signal input 723 and event designator input 724, respectively. Function designator FD is in its write state that causes data selector 704 to connect its first input to its bus output. With data selector 704 so configured, each initial event record IER received at event record input 716 is presented to write bus 710. Event designator ED defines the storage location in which initial event record IER is to be written. Typically, the current value of event count EC output by allowed time of flight calculator 130 provides event designator ED. Read/write signal R/W is provided in a write state that causes memory 702 to write initial event record IER at the storage location 714 designated by event designator ED.
During the initial intensity apportioning process described above, the initial event records IER are sequentially read from memory 702. Detection event memory 700 receives function designator FD, read/write signal R/W, event designator ED and TOF index TI from controller 504 via function designator input 722, read/write signal input 723, event designator input 724 and TOF index input 725, respectively. Function designator FD is provided in its rewrite state that causes data selector 704 to connect the output of cache 708 to write bus 710. Event designator ED defines the storage location from which the event record will be read. Read/write signal R/W is provided in its read state that causes memory 702 to read out onto read bus 712 the initial event record IER from the storage location 714 designated by event designator ED.
From read bus 712, initial event record IER passes to demultiplexer 706. Demultiplexer 706 extracts intensity I and allowed TOF count TC from the event record, outputs intensity I to apportioner 506 via intensity output 717, and outputs allowed TOF count TC to controller 504 and probability calculator 510 via allowed TOF count output 718. Demultiplexer 706 additionally outputs intensity I and allowed TOF count TC to the intensity input and allowed TOF count input, respectively, of cache 708, and the cache stores the intensity and the allowed TOF count in respective fields of an updated event record UER. Additionally, during the initial intensity apportioning process, in response to successive values of TOF index TI, demultiplexer 706 extracts each allowed TOF AT from the initial event record and outputs the allowed TOF to memory address output 534 via allowed TOF output 719. Demultiplexer 706 additionally outputs each allowed TOF AT to the allowed TOF input of cache 708. The cache stores each allowed TOF AT in updated event record UER in a respective allowed TOF field designated by TOF index TI.
For each allowed TOF AT output to memory address output 534, detection event memory 700 receives from apportioner 506 a respective new intensity apportionment NIP at new intensity apportionment input 721. In the initial intensity apportioning process, each new intensity apportionment is an initial intensity apportionment. From new intensity apportionment input 721, each new intensity apportionment passes to the intensity apportionment input of cache 708. Cache 708 stores each new intensity apportionment NIP in updated event record UER in a respective intensity apportionment field designated by TOF index TI. Once new intensity apportionments for all the allowed times of flight linked to the detection event have been received and cached in cache 708, cache 708 outputs the updated event record UER pertaining to the detection event to data selector 704. Updated event record UER contains an initial intensity apportionment linked to each allowed TOF linked to the detection event. The updated event record passes through data selector 704 to write bus 710. Controller 504 then provides read/write signal R/W in its write state to cause memory 702 to write updated event record UER to the storage location 714 designated by event designator ED. The updated event record overwrites the initial event record previously stored at the storage location.
Detection event memory 700 operates in a manner similar to that just described during the revised probability determining and intensity reapportioning processes described above. The updated event records are again read from memory 702, each is demultiplexed and its constituents are output in a manner similar to that described above. In addition, cache 708 caches the intensity, allowed TOF count and each allowed TOF output by demultiplexer 706 as part of a further-updated event record UER. Since the updated event record read from memory 702 now includes a respective previous intensity apportionment linked to each allowed TOF, demultiplexer 706 additionally outputs a respective previous intensity apportionment PIP linked to each allowed TOF at its previous intensity apportionment output. Previous intensity apportionment PIP is output to the previous intensity apportionment input of accumulator 508 via previous intensity apportionment output 720.
For each allowed TOF output to memory address output 534, detection event memory 700 receives from apportioner 506 a respective revised intensity apportionment as a new intensity apportionment NIP at new intensity apportionment input 721. Cache 708 stores each revised intensity apportionment NIP in further-updated event record UER in a respective field designated by allowed TOF index TI. When a respective revised intensity apportionment has been received for each allowed TOF linked to the detection event, further-updated event record UER is stored in memory 702 in a manner similar to that described above.
Cache 742 has an accumulation input, an output, an address input and a control input. Cache 742 has one storage location for the maximum number S of allowed times of flight that can be linked to a detection event. The address input is connected to receive TOF index TI from TOF index input 756. TOF index TI defines the respective storage location to which an intensity accumulation received at the accumulation input is written or from which an intensity accumulation is read. Depending on the operational mode of accumulator 740, the intensity accumulation is an intensity accumulation IA received from read input 742 or a depleted intensity accumulation DIA generated by differencing circuit 744. The output is connected to provide each intensity accumulation read from cache 742 to accumulation output 761.
Cache 742 may additionally be structured to store the respective allowed TOF to which each intensity accumulation stored therein is linked. In this case, cache 742 has an additional input (not shown) connected to receive allowed TOFs AT from the allowed TOF output of detection event memory 502, and an additional output (not shown) via which the cache provides allowed TOFs AT to the address output 534 (
Differencing circuit 744 performs the function of subtracting the respective previous intensity apportionment linked to each allowed TOF linked to the detection event from the respective intensity accumulation linked to the allowed TOF to generate the respective depleted intensity accumulation linked to the allowed TOF. Differencing circuit 744 has an inverting input, a non-inverting input and an output. The inverting input is connected to receive the previous intensity apportionment PIP for each allowed TOF linked to each detection event from previous intensity apportionment input 755. The non-inverting input is connected to receive from read input 762 intensity accumulation IA read from the TOF bin addressed by the allowed TOF in spectrum memory 150.
Summing circuit 746 performs the function of summing the intensity accumulations IA linked to the detection event and respective intensity apportionments NIP to generate respective new intensity accumulations. Summing circuit 746 has a first input, a second input and an output. The first input is connected to receive the new intensity apportionment NIP for each allowed TOF linked to each detection event from new intensity apportionment input 752. The second input is connected to the output of cache 742 to receive each intensity accumulation IA or depleted intensity accumulation DIA read out from the cache. The output is connected to provide a revised intensity accumulation IAW generated by summing circuit 746 to write output 763 for writing in spectrum memory 150.
Sequencer 748 has a strobe input, a mode input, a multiplexer control output, a cache control output, a reset output and a strobe output. The strobe input and the mode input are respectively connected to receive strobe signal SS and mode control signal M from strobe input 757 and mode input 758, respectively. The cache control signal output is connected to provide cache control signal CC to the control input of cache 742. Cache control signal CC defines the read/write mode of the cache and the timing of such reading or writing.
Accumulating circuit 750 initially performs the function of accumulating the intensity accumulations IA linked to each detection event to generate a respective accumulation sum AS. Accumulating circuit 750 later performs the function of accumulating the depleted intensity accumulations DIA linked to all of the allowed TOFs linked to the detection event to generate a depleted accumulation sum DAS. Accumulating circuit 750 has a first input, a second input, a reset input, a strobe input and an output. The reset input and the strobe input are connected to receive a reset signal R and a strobe signal ST, respectively, from the strobe output and reset output, respectively, of sequencer 748. The output is connected to the second input and to accumulation sum output 759. In response to strobe signal ST, accumulating circuit 750 adds the intensity accumulation IA present at its first input to the accumulation sum present at its second input and transfers the resulting new accumulation sum to its output. The accumulation sum is accumulation sum AS or depleted accumulation sum DAS.
Multiplexer 752 has a first input, a second input, a control input and an output. The first input is connected to the output of differencing circuit 744 to receive each depleted intensity accumulation DIA generated by the differencing circuit. The second input is connected to receive each intensity accumulation IA received from spectrum memory 150 via read input 762. The output is connected to provide each depleted intensity accumulation DIA or each intensity accumulation IA received by the multiplexer to the accumulation input of cache 742 and to the first input of accumulating circuit 750. The control input is connected to receive multiplexer control signal MK from the multiplexer control output of sequencer 748. The state of multiplexer control signal MK determines whether multiplexer 752 outputs depleted intensity accumulation DIA or intensity accumulation IA to the accumulation input of cache 742.
The mode control signal M provided to sequencer 748 by controller 504 selects one of two operational modes in which accumulator 740 operates in response to receiving strobe signal SS from controller 504. The operational modes are (1) an initial accumulation mode in which accumulator 740 operates when it accumulates the initial intensity apportionments, as described above with reference to block 210 of
In the initial accumulation mode, accumulator 740 receives an intensity accumulation IA from a TOF bin in spectrum memory 150 addressed by each of the allowed TOFs linked to each detection event, caches the intensity accumulation linked to the allowed TOF and adds the intensity accumulation to an accumulation sum AS. The accumulator outputs the accumulation sum to probability calculator 510 for use in determining probabilities for apportioning the intensity of the detection event among the allowed TOFs linked to the detection event. Accumulator 740 also sums a respective new intensity apportionment NIP received from apportioner 506 for the allowed TOF and the cached intensity accumulation IA linked to the allowed TOF to generate a new intensity accumulation IAW and outputs new intensity accumulation IAW to the spectrum memory for writing back in the TOF bin addressed by the allowed TOF.
In the reapportioning mode, accumulator 740 subtracts a respective previous intensity apportionment PIP received from detection event memory 502 for each allowed TOF linked to each detection event from the intensity accumulation IA received from a TOF bin in spectrum memory 150 addressed by the allowed TOF to generate a depleted intensity accumulation DIA. Accumulator 740 additionally caches depleted intensity accumulation DIA linked to the allowed TOF and adds the depleted intensity accumulation to a depleted accumulation sum DAS. The accumulator outputs the depleted accumulation sum to probability calculator 510 for use in determining revised probabilities for apportioning the intensity of the detection event among the allowed TOFs. Finally, the accumulator adds a respective revised intensity apportionment NIP received from apportioner 506 and cached depleted intensity accumulation DIA to generate a revised intensity accumulation IAW and outputs revised intensity accumulation IAW to the spectrum memory for writing back in the defined TOF bin. In the reapportioning mode, accumulator 740 changes the intensity accumulation stored in the defined TOF bin.
Sequencer 748 operates in response to strobe signal SS to cause accumulator 740 to operate in its initial accumulation mode in which the accumulator sums the initial apportionments of the intensity of an exemplary detection event and the respective intensity accumulations stored in the TOF bins of spectrum memory 150 addressed by the allowed TOFs linked to the detection event to generate respective new intensity accumulations that are output to spectrum memory 150 for storage. The accumulator performs the operations just described, and described in more detail below, for each of the detection events represented by detection signal DS. Controller 504 sets TOF index TI to an initial value corresponding to the first allowed TOF linked to the detection event. This causes detection event memory 502, when commanded, to output the first allowed TOF AT to memory address output 534 (
Sequencer 748 provides reset signal R to accumulating circuit 750. Reset signal R sets accumulation sum AS output by accumulating circuit 750 to zero. Sequencer 748 also provides multiplexer control signal MK to multiplexer 752. Multiplexer control signal MK is in a state that causes the multiplexer to connect read input 762 to the accumulation input of cache 742 and the first input of accumulating circuit 750 so that intensity accumulation IA received from read input 762 is provided to the accumulation input of cache 742 and to the first input of accumulating circuit 750. Cache 742 operates in response to cache control signal CC to cache intensity accumulation IA at the memory location defined by TOF index TI. Optionally, as noted above, accumulator 740 additionally receives the first allowed TOF from detection event memory 502, and cache 742 operates in response to cache control signal CC to cache intensity accumulation IA for the first allowed TOF and the first allowed TOF itself at respective memory locations therein defined by TOF index TI.
Sequencer 748 additionally provides strobe signal ST to accumulating circuit 750. The strobe signal causes accumulating circuit 750 to perform a summing operation in which it sums intensity accumulation IA received at its first input and accumulation sum AS received at its second input to generate a new accumulation sum AS. Accumulating circuit 750 outputs the new accumulation sum to the second input of accumulating circuit 750 and to probability calculator 510 via accumulation sum output 759.
Controller 504, detection event memory 502, spectrum memory 150 and accumulator 748 then repeat the operations just described. On each repetition, controller 504 increments TOF index TI by one, which causes detection event memory 502, when commanded, to output the next allowed TOF linked to the detection event. The operations are repeated until intensity accumulations IA for all of the allowed times of flight linked to the detection event (and, optionally, the allowed times of flight in addition) have been cached in cache 742 and accumulation sum AS output by accumulating circuit 750 at accumulation sum output 759 is the sum of the intensity accumulations IA received from the respective TOF bins in spectrum memory 150 addressed by all the allowed TOFs linked to the detection event. The final value of accumulation sum AS is output to probability calculator 510 via accumulation sum output 759, where it is available for use in calculating the initial probabilities for apportioning the intensity of the detection event.
Controller 504 then resets TOF index TI to its initial value. This causes detection event memory 502, when commanded, to output the first allowed TOF AT linked to the detection event to memory address output 534 (
In probability calculator 510, intensity accumulation IA is available, together with accumulation sum AS, for use in calculating an initial probability for the first allowed TOF AT linked to the detection event. Controller 504 then commands probability calculator 510 to generate an initial probability for the first allowed TOF linked to the detection event, and apportioner 506 calculates an initial apportionment of the intensity of the detection event to the first allowed TOF linked to the detection event using the initial probability received from probability calculator 510. Accumulator 740 receives the initial intensity apportionment generated by apportioner 506 as a new intensity apportionment NIP at new intensity apportionment input 754. From the new intensity apportionment input, new intensity apportionment NIP passes to the first input of summing circuit 746.
Summing circuit 746 receives new intensity apportionment NIP at its first input and intensity accumulation IA read out from cache 742 at its second input. Summing circuit 746 sums new intensity apportionment NIP and intensity accumulation IA to generate a new intensity accumulation IAW. Summing circuit 746 outputs the new intensity accumulation to spectrum memory 150 via write output 763.
Spectrum memory 150 receives new intensity accumulation IAW from write output 763, and receives memory control signal MC from controller 504. Memory control signal MC commands the spectrum memory to write new intensity accumulation IAW to the TOF bin addressed by allowed TOF AT read out from detection event memory 504 or from cache 742.
Controller 504, probability calculator 510, apportioner 506, spectrum memory 150 and accumulator 748 repeat the operations just described. On each repetition, controller 504 increments TOF index TI by one, which causes detection event memory 502, when commanded, to output the next allowed TOF linked to the detection event. Optionally, the next allowed TOF linked to the detection event is read from cache 742 instead of from detection event memory 502, as described above. The operations are repeated until respective new intensity accumulations IAW have been written to the respective TOF bins addressed by all the allowed times of flight AT linked to the detection event.
Sequencer 748 operates in response to strobe signal SS to cause accumulator 740 to operate in its reapportioning mode in which the accumulator subtracts the previous intensity apportionments linked to an exemplary detection event from the respective intensity accumulations stored in the respective TOF bins of spectrum memory 150 addressed by the allowed TOFs linked to the detection event to generate respective depleted intensity accumulations. The accumulator caches the depleted intensity accumulations and generates a depleted accumulation sum from the depleted intensity accumulations for probability calculator 510 to use in determining revised probabilities. Then, accumulator 508 adds the revised intensity apportionments generated using the revised probabilities to the cached depleted intensity accumulations to generate respective revised intensity accumulations that are written to the respective TOF bins addressed by the allowed TOFs linked to the detection event. Accumulator 508 performs the operations just described, and described in more detail below, for each of the detection events represented by detection signal DS.
Sequencer 748 provides reset signal R to accumulating circuit 750. Reset signal R sets depleted accumulation sum DAS output by accumulating circuit 750 to zero. Sequencer 748 additionally provides multiplexer control signal MK to multiplexer 752. Multiplexer control signal MK is in a state that causes the multiplexer to connect the output of differencing circuit 744 to the accumulation input of cache 742 and to the first input of accumulating circuit 750.
Controller 504 resets TOF index TI to its initial value. This causes detection event memory 502, when commanded, to output the first allowed TOF AT linked to the detection event to memory address output 534 (
Differencing circuit 744 subtracts previous intensity apportionment PIP from intensity accumulation IA to generate depleted intensity accumulation DIA. Differencing circuit 744 outputs depleted intensity accumulation DIA to the accumulation input of cache 742 and the first input of accumulating circuit 750 via multiplexer 752. Cache 742 operates in response to cache control signal CC to cache depleted intensity accumulation DIA at the memory location therein defined by TOF index TI. Optionally, accumulator 740 additionally receives the first allowed TOF from detection event memory 502, and cache 742 operates in response to cache control signal CC to cache intensity accumulation IA for the first allowed TOF and the first allowed TOF itself at respective memory locations therein defined by TOF index TI.
Sequencer 748 additionally provides strobe signal ST to accumulating circuit 750. Strobe signal ST causes accumulating circuit 750 to perform an accumulating operation in which it adds depleted intensity accumulation DIA received at its first input and depleted accumulation sum DAS received at its second input to generate a new depleted accumulation sum. Accumulating circuit 750 outputs the new depleted accumulation sum to the second input of accumulating circuit 750 and to accumulation sum output 759.
Controller 504, detection event memory 502 spectrum memory 150 and accumulator 748 then repeat the operations just described. On each repetition, controller 504 increments TOF index TI by one, which causes detection event memory 502, when commanded, to output the next allowed TOF linked to the detection event and the previous intensity apportionment linked to the allowed TOF. The operations are repeated until depleted intensity accumulations DIA for all of the allowed times of flight linked to the detection event (and, optionally, the allowed times of flight in addition) have been cached in cache 742 and the depleted accumulation sum DAS output by accumulating circuit 750 at accumulation sum output 759 is the sum of all the respective depleted intensity accumulations generated by differencing circuit 744 for the detection event. The final value of depleted accumulation sum DAS is output from accumulation sum output 759 to probability calculator 510, where it is used to calculate revised probabilities for the detection event.
Controller 504 then resets TOF index TI to its initial value. This causes detection event memory 502, when commanded, to output once again the first allowed TOF AT linked to the detection event to memory address output 534 (
Controller 504 commands probability calculator 510 to calculate a revised probability for the first allowed TOF AT linked to the detection event using depleted intensity accumulation DIA and depleted accumulation sum DAS. Apportioner 506 then generates a revised apportionment of the intensity of the detection event to the first allowed TOF using the revised probability received from probability calculator 510. Accumulator 740 receives the revised intensity apportionment generated by apportioner 506 as a new intensity apportionment NIP at new intensity apportionment input 754. From the new intensity apportionment input, new intensity apportionment NIP passes to the first input of summing circuit 746.
Summing circuit 746 receives new intensity apportionment NIP at its first input and depleted intensity accumulation DIA read out from cache 742 at its second input. Summing circuit 746 sums new intensity apportionment NIP and depleted intensity accumulation DIA to generate a new intensity accumulation IAW. Summing circuit 746 outputs new intensity accumulation IAW to spectrum memory 150 via write output 763. Spectrum memory 150 operates in response to memory control signal MC received from controller 504 to write new intensity accumulation IAW to the TOF bin addressed by allowed TOF AT read out from detection event memory 504 or from cache 742.
Controller 504, probability calculator 510, apportioner 506, spectrum memory 150 and accumulator 748 repeat the operations just described. On each repetition, controller 504 increments TOF index TI by one, which causes detection event memory 502, when commanded, to output the next allowed TOF linked to the detection event and the previous intensity apportionment linked to the next allowed TOF. Optionally, the next allowed TOF linked to the detection event is read from cache 742 instead of from detection event memory 502, as described above. The operations are repeated until respective new intensity accumulations IAW have been written to the respective TOF bins addressed by all the allowed times of flight AT linked to the detection event.
In embodiments of mass spectrometer 100 in which only a common initial probability is used in the initial intensity apportioning process described above with reference to block 208 of
During the initial intensity apportioning process in which an apportionment of the intensity of each detection event among the allowed TOFs linked thereto is determined using initial probabilities, as described above with reference to block 208 of
In an alternative implementation, first divider 772 is replaced by a look-up table (not shown) in which is stored a respective reciprocal value for each of the S possible values of allowed TOF count TC. Such look-up table also performs the function of determining equal initial probabilities that depend on the number of allowed TOFs linked to the detection event. Upon receiving the allowed TOF count TC for the detection event from allowed TOF count input 781, the look-up table outputs the reciprocal of allowed TOF count TC to multiplexer 776 as the common initial probability.
During the above-mentioned initial intensity apportioning process, for a detection event whose accumulation sum AS is greater than zero, second divider 774 performs the function of determining, for each allowed TOF linked to the detection event, a respective initial probability for each allowed TOF linked to the detection event. The initial probability depends on the respective intensity accumulation IA linked to the allowed TOF. Moreover, during the revised probability determining process described above with reference to block 212 of
Second divider 774 has a dividend input, a divisor input and an output. The dividend input is connected to receive a respective intensity accumulation linked to the allowed TOF. The intensity accumulation is received from cache 742 in accumulator 508 via accumulation input 785. The cached accumulation is an intensity accumulation IA during the initial intensity apportioning process and a depleted intensity accumulation DIA during the revised probability determining process. The divisor input is connected to receive an accumulation sum for the detection event from accumulation sum input 784. The accumulation sum is an accumulation sum AS during the initial intensity apportioning process and a depleted accumulation sum DAS during the revised probability determining process.
Multiplexer 776 has a first input, a second input, an address input, a control input and an output. The first input is connected to the output of first divider 772. The second input is connected to the output of second divider 774. The output is connected to probability output 786.
Comparator 778 has a comparison input, a reference input, a control input and an output. The comparison input is connected to receive the above-described accumulation sum from accumulation sum input 784. The reference input is connected to receive a representation of zero. The output is connected to provide an address signal A to the address input of multiplexer 776.
Sequencer 780 has a mode input, a strobe input, a multiplexer control output and a comparator control output. The mode input is connected to receive mode control signal M from mode input 782. The strobe input is connected to receive strobe control signal SS from strobe input 783. The multiplexer control output is connected to provide a multiplexer control signal MX to the control input of multiplexer 776. The comparator control output is connected to provide a comparator control signal CM to the control input of comparator 778.
Another example of probability calculator 770 has a single divider and two multiplexers (not shown). The divider has a dividend input, a divisor input and an output. The output is connected to probability output 786. One of the multiplexers has an output connected to the dividend input of the divider, and inputs connected to accumulation input 785 and a representation of unity, respectively. The other of the multiplexers has an output connected to the divisor input of the divider, and inputs connected to accumulation sum input 784 and allowed TOF count input 781, respectively. Both multiplexers operate in response to address signal A and multiplexer control signal MX.
During the initial intensity apportioning process described above with reference to block 208 of
First divider 772 calculates the common initial probability by dividing a probability of unity by allowed TOF count TC, which represents the number of allowed times of flight linked to the detection event. First divider 772 receives at its divisor input the allowed TOF count TC read out of detection event memory 502 for the detection event. The divisor input receives allowed TOF count TC from allowed TOF input 781. First divider 772 additionally receives a numerical representation of unity at its dividend input. First divider 772 divides unity by allowed TOF count TC to generate a single initial probability IP for the detection event.
During the initial intensity apportioning process, second divider 774 calculates a respective initial probability for each allowed TOF linked to the detection event by dividing a respective intensity accumulation IA by accumulation sum AS for the detection event. Second divider 774 receives intensity accumulation IA for the allowed TOF at its dividend input and accumulation sum AS for the detection event at its divisor input, and divides intensity accumulation IA by accumulation sum AS to generate the respective initial probability.
To determine whether probability calculator 770 outputs the common initial probability calculated by first divider 772 for all allowed times of flight linked to the detection event or a respective initial probability calculated by second divider 774 for each allowed TOF linked to the detection event, sequencer 780 provides comparator control signal CM to the control input of comparator 778 after probability calculator 770 has received a final accumulation sum AS for the detection event from accumulator 508. In response to comparator control signal CM, comparator 778 compares accumulation sum AS received at its comparison input with a representation of zero received at its reference input. A value of accumulation sum AS equal to zero causes comparator 778 to output address signal A in a state that causes multiplexer 776 to connect the output of first divider 772 to probability output 786. Then, in response to multiplexer control signal MX, multiplexer 776 outputs the common initial probability calculated by first divider 772 to apportioner 506 as probability P. A value of accumulation sum AS greater than zero causes comparator 778 to output address signal A in a state that causes multiplexer 776 to connect the output of second divider 774 to probability output 786. Then, in response to multiplexer control signal MX, multiplexer 776 outputs the respective initial probability calculated by second divider 774 for each allowed TOF linked to the detection event to apportioner 506 as a respective probability P.
In an embodiment in which a single initial probability for each detection event is exclusively applied during the initial intensity apportioning process described above with reference to block 208 of
Probability calculator 770 operates as follows as intensity apportioner 140 performs the revised probability determining process described above with reference to block 212 of
During the revised probability determining process, for most detection events, at least one of the depleted intensity accumulations received from accumulator 508 is greater than zero and therefore the corresponding depleted accumulation sum will be greater than zero. In this case, comparator 778 generates address signal A in a state that causes multiplexer 776 to connect the output of second divider 774 to probability output 786. In response to multiplexer control signal MX, multiplexer 776 outputs the revised probability calculated by second divider 774 as a respective probability P for the allowed TOF linked to the detection event. Multiplexer 776 outputs the probability to apportioner 506 via probability output 786. Probability calculator 770 outputs to apportioner 506 a revised probability P for each allowed TOF linked to the detection event.
Occasionally, all of the depleted intensity accumulations received from accumulator 508 are equal to zero and therefore the corresponding depleted accumulation sum will be equal to zero. In this case, comparator 778 generates address signal A in a state that causes multiplexer 776 to connect the output of first divider 772 to probability output 786. In response to multiplexer control signal MX, multiplexer 776 outputs the revised probability calculated by first divider 774 as a respective probability P for the allowed TOF linked to the detection event. In this case, the revised probability is the same as the initial probability since it depends only on the number of allowed times of flight linked to the detection event. Multiplexer 776 outputs the unchanged revised probability to apportioner 506 via probability output 786. Probability calculator 770 outputs to apportioner 506 an unchanged revised probability P for each allowed TOF linked to the detection event.
With reference to an exemplary detection event, during the initial intensity apportioning process or the intensity reapportioning process described above with reference to block 208 and block 214, respectively, of
During an example of the above-described initial intensity apportioning process performed when accumulation sum AS (
Time of flight calculator 130, intensity apportioner 140 and spectrum memory 150 may be implemented in ways that differ from those exemplified above. Moreover the demarcation of circuitry among time of flight calculator 130, intensity apportioner 140 and spectrum memory 150 and among the constituent modules of time of flight calculator 130, intensity apportioner 140 and spectrum memory 150 may be different from that exemplified above. In one example, at least part of accumulator 508 is combined with spectrum memory 150. In another example, spectrum memory 150 constitutes part of intensity apportioner 140. Alternatively, circuitry different from that exemplified may be used to implement the processes described above with reference to
Time of flight calculator 130, intensity apportioner 140, spectrum memory 150 and their constituent elements can be implemented in hardware such as one or more integrated circuits having bipolar, N-MOS, P-MOS or CMOS devices. Design libraries comprising designs for implementing the above-described circuit elements in hardware are commercially available and can be used to design such hardware implementations.
Time of flight calculator 130, intensity apportioner 140, spectrum memory 150 and their constituent elements can alternatively be implemented in one or more pre-fabricated hardware devices such as application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs). Design libraries comprising designs for implementing the above-described circuit elements in such pre-fabricated hardware devices are commercially available and can be used to configure such pre-fabricated hardware devices to implement the above-described circuit elements.
Moreover, the above-mentioned time of flight calculator 130, intensity apportioner 140, spectrum memory 150 and their constituent elements can alternatively be implemented at least in part in software running on a suitable computational device such as a microprocessor, a digital signal processor (DSP) or a multi-thread graphics processor. The above-mentioned circuit elements may additionally constitute part of a digital signal processor that performs functions in addition to those described. Programming modules capable of programming a computational device to perform the operations performed by the above-described circuit elements are commercially available and may be used to program a computational device to provide a software implementation of the above-mentioned circuit elements. In such software implementations, the various circuit elements described in this disclosure are typically ephemeral, and exist only temporarily as the program executes.
BIOS memory 804 is a read-only memory that stores a program that causes computational device 802 to perform basic input/output operations. Program memory 806 is a memory in which a program that causes computational device 802 to perform the operations described above with reference to
Computational device 802 operates in response to a program stored in program memory 806 to transform the respective event records received from time of flight calculator 130 as described herein to generate a time-of-flight spectrum stored in spectrum memory 150.
In another embodiment, spectrum memory 150 or memory 610 (
In yet another embodiment, computational device 802 in intensity apportioner 800 additionally performs the operations described above as being performed by time of flight calculator 130 or, in more detail, by time of flight calculator 400 (
A desirable performance parameter for mass spectrometers is that at least the time-of-flight spectrum be generated more or less in real time. In mass spectrometer 100, useful information regarding the chemical composition of the sample cannot be discerned directly from detection signal DS. The processes described above with reference to blocks 206, 208 and 210 of
One way to speed up the transformation of the detection signal is to use parallel processing. While the descriptions above of the transformation operations assume the each detection event is processed before the next, nothing fundamental precludes multiple detection events being processed in parallel. In one exemplary implementation of parallel processing, intensity apportioner 140 is divided into a number of intensity apportioning modules that operate in parallel. Each intensity apportioning module is similar to intensity apportioner 140. The detection event records IER generated by time of flight calculator 130 are assigned to the intensity apportioning modules more or less equally. The intensity accumulations generated by the intensity apportioning modules are summed and the results are stored in spectrum memory 150, which is common to all the intensity apportioning modules.
One concern with parallel processing implementations is read and write conflicts and memory bandwidth in spectrum memory 150. Although such conflicts are typically rare because the time-of-flight spectrum is typically sparse, they should nevertheless be avoided. Spectrum memory 150 can be implemented using multiport memory that allows the intensity apportioning modules to read the spectrum memory simultaneously. However, lockouts are needed to prevent two or more intensity apportioning modules from simultaneously attempting to modify the intensity accumulation stored in a given TOF bin of the spectrum memory. In an implementation of such lockouts, each allowed TOF would have an in-use indicator and an intensity apportioning module would check the state of the respective in-use indicators of all the allowed TOFs linked to the detection event before performing an operation that would modify the contents of a TOF bin addressed by any one of the allowed TOFs. In the event that the in-use indicators of none of the allowed TOFs were set, the intensity apportioning module would then set the in-use indicators of all the allowed TOFs linked to the detection event before performing such modifying operation, and would release the in-use indicators once it had completed the operation. Any intensity apportioning module that found an allowed TOF with a set in-use indicator would have to wait until the in-use indicator was released. Rather than waiting, the intensity apportioning module could process another detection event whose allowed TOFs were available for processing before returning to process the detection event having one or more allowed TOFs that were in use. The need to check the status of the in-use indicators of the allowed TOFs, the need to set and release such in-use indicators, and the need to wait or process other detection events decrease the processing time reduction provided by parallel processing. One way to avoid the spectrum memory lockout issue is not to write the revised intensity apportionments to the spectrum memory until each above-described iteration of the revised probability determining and intensity reapportioning processes has been completed.
Intensity apportioning module 822A will now be described. The remaining intensity apportioning modules are similar and will not be described. As will be described in greater detail below, intensity apportioning module 822A generates revised intensity apportionments NIP using probability intensity accumulations IAP read from spectrum memory 150 and generates revised accumulation intensity accumulations IAW using accumulation intensity accumulations IAA. Accumulation intensity accumulations IAA are intensity accumulations read from partial spectrum cache 824A that intensity apportioning module 822A subjects to accumulation operations. Intensity apportioning module 822A is substantially similar in structure and operation to intensity apportioner 500 described above with reference to
Intensity apportioning module 822A has inputs and outputs similar to those of above-described intensity apportioner 500. To simplify
Accumulator 840 is composed of cache 742, differencing circuit 744, summing circuit 746, sequencer 748 and accumulating circuit 750 described above with reference to
Differencing circuit 744 has an inverting input, a non-inverting input and an output. The inverting input is connected to receive via previous intensity apportionment input 755 the previous intensity apportionment PIP for each allowed TOF linked to each detection event. The non-inverting input is connected to receive via probability read input 862 the probability intensity accumulation IAP read from the TOF bin in spectrum memory 150 addressed by the allowed TOF. The output is connected to provide a depleted intensity accumulation DIA to the accumulation input of cache 742 and to the first input of accumulating circuit 750.
Cache 842 is identical to cache 742 and has an accumulation input, an output, an address input and a control input. The accumulation input is connected to accumulation read input 762 to receive the accumulation intensity accumulations IAA read out from the respective TOF bins in partial spectrum cache 824A addressed by the allowed TOFs linked to the detection event. The address input is connected to receive TOF index TI from TOF index input 756. TOF index TI defines the respective storage location in cache 842 to which an accumulation intensity accumulation IAA received at the accumulation input is written or from which an accumulation intensity accumulation IAA is read. The control input is connected to receive cache control signal CC from the cache control output of sequencer 748. The output is connected to provide each accumulation intensity accumulation IAA read from cache 842 to the second input of summing circuit 746.
Referring once again to
Each partial spectrum cache 824A-824D is similar in structure, size and operation to spectrum memory 150 described above with reference to
Summing system 828 is composed of summing circuits 825, 826 and 827. When the intensities of all the detection events represented by detection signal DS have been initially apportioned or reapportioned, summing system 828 receives a respective partial time-of-flight spectrum 1PS, referred to herein as a 1/P partial spectrum, from each partial spectrum cache 824A-824D and sums the partial spectra to generate a full time of flight spectrum TS that is output to spectrum memory 150. Summing circuits 825, 826 and 827 each have two inputs and an output. The inputs of summing circuit 825 are connected to the respective spectrum outputs of partial spectrum caches 824A and 824B from which each receives a respective 1/P partial time-of-flight spectrum 1PS. The spectrum output of intensity apportioning module 824A is shown at 837. The inputs of summing circuit 826 are connected to the respective spectrum outputs (corresponding to spectrum output 837 of intensity apportioning module 824A) of intensity apportioning modules 824C and 824D from which each receives a respective 1/P partial spectrum 1PS. The inputs of summing circuit 827 are connected to the respective outputs of summing circuits 825 and 826 from which each receives a respective partial time-of-flight spectrum 2PS, referred to herein as a 2/P partial spectrum.
Spectrum memory 150 has inputs and outputs similar to those of the example of spectrum memory 150 described above with reference to
Probability read output 624 is connected to provide the probability intensity accumulations IAP read out from spectrum memory 150 to the probability read inputs of all of the intensity apportioning modules 822A-822D, including the probability read input 833 of intensity apportioning module 822A.
Each partial time-of-flight spectrum output by partial spectrum caches 824A-824D, respectively, is referred to herein as a 1/P partial spectrum since it is generated from approximately 1/P of the detection events represented by detection signal DS. Similarly, each partial time-of-flight spectrum output by summing circuits 825, 826, respectively, is referred to herein as a 2/P partial spectrum since it is generated from approximately 2/P of the detection events represented by detection signal DS. Full time-of-flight spectrum TS output by summing circuit 827 is full in the sense that it is generated from all of the detection events represented by detection signal DS. However, full time-of-flight spectrum TS is composed of no more intensity accumulations than the above-mentioned 1/P and 2/P partial spectra.
As noted above, the event records IER generated by time of flight calculator 130 during the measurement run are distributed substantially equally among intensity apportioning modules 822A-822D during the measurement run and are stored in the respective detection event memory (not shown) of each intensity apportioning module. In the initial intensity apportioning and apportionment accumulating processes described above with reference to blocks 208 and 210 of
Once intensity apportioning modules 822A-822D have collectively subjected the intensities of all the detection events represented by detection signal DS to initial intensity apportioning, partial spectrum caches 824A, 824B output the respective 1/P partial spectra 1PS stored therein to summing circuit 825 and summing circuit 825 sums the 1/P partial spectra to generate a respective 2/P partial spectrum 2PS. Similarly, partial spectrum caches 824C, 824D output the respective 1/P partial spectra stored therein to summing circuit 826 and summing circuit 826 sums the 1/P partial spectra to generate a respective 2/P partial spectrum 2PS. Summing circuit 827 then sums the respective 2/P partial spectra generated by summing circuits 825, 826 to generate full time-of-flight spectrum TS. Summing circuit 827 outputs full time-of-flight spectrum TS to spectrum memory 150, which stores the full time-of-flight spectrum. Since the operations performed by partial spectrum caches 824A-824D and spectrum memory 150 in generating full time-of-flight spectrum TS from partial spectra 1PS and 2PS involve sequentially reading, summing and writing large blocks of accumulation intensity accumulations, these operations can be performed much more quickly than the random read and write operations performed by partial spectrum caches 824A-824D. Moreover, each of the partial spectrum caches 824A-824D is written to only by its respective intensity apportioning module 822A-822D and spectrum memory 150 is only written to by summing circuit 827. Consequently, write conflicts are avoided without the need for in-use indicators. Once full time-of-flight spectrum TS has been stored in spectrum memory 150, partial spectrum caches 824A-824D are cleared, e.g., a value of zero is written to each TOF bin in each of the partial spectrum caches.
Operation of intensity apportioning module 822A and respective partial spectrum cache 824A to perform the revised probability determining and intensity reapportioning processes described above with reference to block 212 and block 214, respectively, of
In the following description, the elements of accumulator 840 described above with reference to
Once it has received probability intensity accumulations IAP and accumulation intensity accumulations IAA for all the allowed times of flight linked to the detection event, intensity apportioning module 822A operates in a manner similar to that described above with reference to block 360 of
The operations just described, when performed for all the event records stored in intensity apportioning module 822A, generate a respective revised partial spectrum 1PS in partial spectrum cache 824A. The remaining intensity apportioning modules 822B-822D operate similarly to and concurrently with intensity apportioning module 822A with respect to the event records distributed to them to generate respective revised partial spectra 1PS in partial spectrum caches 824B-824D, respectively.
Once intensity apportioning modules 822A-822D have performed revised probability determining and intensity reapportioning processes for all the detection events represented by detection signal DS, partial spectrum caches 824A-824D output the respective revised 1/P partial spectra 1PS stored therein to summing circuits 825-827 for summing and the resulting revised full time-of-flight spectrum TS is stored in spectrum memory 150. Revised full time-of-flight spectrum TS overwrites the previous time-of-flight spectrum stored in spectrum memory 150. Partial spectrum caches 824A-824D are once again cleared, as described above.
Intensity apportioning modules 822A-822D then perform iterations of the revised probability determining process and the intensity reapportioning process for all the detection events as just described until the above-described termination condition is met. At the end of each iteration, the partial spectra 1PS stored in partial spectrum caches 824A-824D are summed to generate a revised full time-of-flight spectrum TS, the revised full time-of-flight spectrum TS is stored in spectrum memory 150 and the partial spectrum caches are cleared. The iteration repeats as described above until the termination condition is met.
In intensity apportioner 860, a spectrum memory 850 is composed of P spectrum memory modules 868A-868D, where P is the number of intensity apportioning modules 822A-822D. Spectrum memory module 868A will now be described. Except as noted below, the remaining spectrum memory modules 868B-868D are similar and will therefore not be described. Spectrum memory module 868A is similar in structure and operation to spectrum memory 150 described above with reference to
Address input 870 is connected to receive allowed times of flight AT from the address output 830 of intensity apportioning module 822A. The respective address inputs of spectrum memory modules 868B-868D are connected to the address outputs of intensity apportioning modules 822B-822D, respectively. Write input 872 is connected to the output of summing circuit 827 from which it receives full time-of-flight spectrum TS, described above. The respective write inputs 872 of spectrum memory modules 868B-868D are also connected to the output of summing circuit 827. Thus, each of the spectrum memory modules 868A-868D receives a respective copy of full time-of-flight spectrum TS, described above, output by summing circuit 827. Probability read output 874 is connected to provide probability intensity accumulations IAP read out from spectrum memory module 868A to the probability read input 833 of intensity apportioning module 822A. The respective probability read outputs of spectrum memory modules 868B-868D are connected to provide probability intensity accumulations IAP read out from spectrum memory modules 868B-868D, respectively, to the probability read inputs of intensity apportioning modules 822B-822D, respectively. Providing each intensity apportioning module 822A-822D with its own copy of full time-of-flight spectrum TS stored in spectrum memory modules 868A-868D, respectively, reduces the bandwidth demands on spectrum memory modules 868A-868D compared with spectrum memory 150 in
Intensity apportioner 860 operates similarly to intensity apportioner 820 described above with reference to
The time-of-flight spectra generated by intensity apportioner 820 and intensity apportioner 860 described above with respect to
In addition to or instead of the intensity apportioners operating in parallel, the operational speed of mass spectrometer 100 can be increased by using parallel circuitry within each intensity apportioner. Parallel circuitry allows operations that are described above as being performed sequentially to be performed more or less simultaneously. In an example in which detection event memory 502 is configured to output all of the contents of a single event record at once, apportioner 506 is configured with multiple instances of multiplier 792; accumulator 508 is configured with a multi-channel instance of cache 742, multiple instances of differencing circuit 744, multiple instances of summing circuit 746, and a multi-input implementation of accumulating circuit 750; and probability calculator 510 is configured with multiple instances of first divider 772, multiple instances of second divider 774, and multiple instances of multiplexer 776 and multiple instances of comparator 778. When the number of instances of the circuit elements is equal to or greater than the maximum allowed TOF count TC, such an embodiment of intensity apportioner 140 can concurrently perform depletion operations for all the allowed times of flight linked to the detection event. Similarly, the revised probability determining operations, the revised intensity apportioning and the apportionment accumulating operations for all the allowed times of flight linked to the detection event can each be performed concurrently. Moreover, the intensity accumulations for the next detection event can be read from spectrum memory 150 and can be cached in a parallel-output cache within intensity apportioner 140 before the revised intensity accumulations for the current detection event are written to the spectrum memory. This ensures that the revised probability determining and intensity reapportioning processes performed on the next detection event do not have to wait while the intensity accumulations they need are read from spectrum memory 150. Similarly, as the revised intensity accumulations for the current detection event are generated, they can be cached in a parallel input cache and can be written to spectrum memory 150 while the revised probability determining and intensity reapportioning processes are performed for the next detection event.
Another way to reduce the time required to generate the time-of-flight spectrum or to reduce the speed at which intensity apportioner 140 has to operate to generate the time-of-flight spectrum in a specified time is to reduce the number of iterations of the revised probability determining and intensity reapportioning processes described above with reference to blocks 212 and 214 of
In an embodiment in which previous probabilities are saved instead of previous intensity apportionments, the previous probability read in block 346 of
To ensure that the revised probability determining and intensity reapportioning processes converge gracefully on the termination condition, an upper limit equal to intensity I of the detection event and a lower limit of zero should be imposed on the revised intensity apportionment before it is used in blocks 364 and 366. In an embodiment in which previous probabilities are saved instead of previous intensity apportionments, and the difference between the revised probability and the previous probability is multiplied by the amplification factor and the result is added to the previous probability to generate an amplified revised probability, the upper and lower limits imposed on the amplified revised probability are unity and zero.
The larger the amplification factor, the fewer the iterations of the revised probability determining and intensity reapportioning processes that are needed to converge on the termination condition but the greater the risk that the revised probability determining and intensity reapportioning processes will become unstable. The unamplified revised probability determining and intensity reapportioning processes described above with reference to
In
Ways of adapting the above-described processing of detection signal DS generated by ion detector 120 to deal with multi-sample detection events will now be described. A first way is to regard every sample of detection signal DS whose intensity I is greater than the threshold intensity as a separate detection event and to apply the above-described processing to such detection event. This approach will be referred to as a one sample, one detection event approach. In the example described above, the seven consecutive samples whose intensities I are greater than the threshold intensity would be treated as seven respective detection events. The process of initially apportioning the consecutive samples in the sets among the allowed times of flight would result in the samples being apportioned to blocks of seven consecutive allowed times of flight, the different blocks corresponding to respective transient times. The revised probability determining and intensity reapportioning processes would increase the apportionments to the block of real times of flight at the expense of the apportionments to the blocks of alias times of flight. Then, when the time-of-flight spectrum generated by the above-described revised probability determining and intensity reapportioning processes is processed to generate a respective mass spectrum, the intensity accumulations linked to the allowed TOFs in each block of consecutive allowed TOFs are processed to determine the respective mass they represent. Processes for making such determinations when conventional time-of-flight spectra are converted to respective mass spectra are known in the art and may be used.
Compared with treating a multi-sample detection event as a single detection event, the one sample, one detection event approach just described multiplies the number of detection events by the average number of samples with respective intensities greater than the threshold intensity resulting from the incidence of ions of a given ion species on the ion detector. The processing resources required to process a given detection event are proportional to the number of samples constituting the detection event plus a small overhead. Hence the processing resources needed to transform detection signal DS in accordance with the one sample, one detection event approach would not increase dramatically over those needed to process the samples constituting each detection event as a respective single detection event. The one sample, one detection event approach also has the advantage that there is no need to separate overlapped detection events. However, by treating each sample whose intensity is greater than a threshold intensity as a respective independent detection event instead of as a member of a set of samples representing the same detection event, the one sample, one detection event approach gives rise to an intrinsic information loss. Each block of consecutive allowed TOFs to which are linked the intensity accumulations relating to the same multi-sample detection event contains statistical information about the abundance of the ions of a given ion species that the one-sample, one detection event approach does not make use of to determine the revised probabilities during the above-described revised probability determining and intensity reapportioning processes.
A process that recognizes the statistical information carried by multi-sample detection events involves performing the revised probability determining process using the respective intensity accumulations linked to the block of consecutive allowed TOFs that includes an allowed TOF linked to an intensity accumulation that represents a peak in the time-of-flight spectrum. Such block of consecutive allowed TOFs will be referred to herein as an allowed TOF block. In an example, the detection event has a duration equal to seven periods of clock signal CS, and detection event memory 502 contains a respective event record that includes the respective intensities of seven consecutive samples of detection signal DS. The samples are numbered 1-7 with sample 4 having the peak intensity. The nominal detection event would be associated with sample 4, but the processing to which the multi-sample detection event is subject encompasses the set of samples that extends from three samples before to three samples after the peak sample. In practice, the detection event is typically associated with the first sample constituting the detection event and the duration of the detection event defines the last sample associated with the detection event. The intensities of the samples in the set of samples are apportioned among allowed TOF blocks linked to the detection event. Each allowed TOF block is composed of consecutive allowed TOFs equal in number to the samples in the set. The allowed TOFs in only one of the allowed TOF blocks are real allowed TOFs: the allowed TOFs in the remaining allowed TOF blocks are alias allowed TOFs.
A number of M consecutive samples constituting a detection event will be referred to herein as a sample set. Each sample set has a number of allowed TOFs linked to it, one corresponding to each transient within the allowed time of flight range (
The number M of consecutive allowed TOFs in each of the allowed TOF blocks linked to the detection event is equal to the number M of samples in the sample set constituting the detection event. Because of this 1:1 correspondence between samples in the sample set and allowed times of flight in the allowed TOF blocks, the term block size will be used to describe both the number M of consecutive allowed TOFs in the allowed TOF blocks and the number M of samples in the sample set.
In an example in which the reference sample is the first sample in the sample set of M samples constituting the detection event, the remaining M−1 samples in the sample set have allowed times of flight greater than the block TOF by increments corresponding to 1 through M−1, respectively, clock periods of clock signal CS (
In mass spectrometer 100, whereas each allowed TOF addresses a single TOF bin in spectrum memory 150, a block TOF addresses a block of M TOF bins in the spectrum memory. Typically, the block of M TOF bins is a block of M consecutive TOF bins, but other arrangements of TOF bins are possible and may be used. In an example in which the reference sample is the earliest sample in the sample set and a reference TOF bin is the first TOF bin of a block of M consecutive TOF bins addressed by the block TOF, the address of the respective TOF bin that corresponds to each of the allowed TOFs in the allowed TOF block is calculated by combining the block TOF that provides addresses the reference TOF bin of the block and above-described sample index m that represents the offset between the TOF bin being addressed and the reference TOF bin of the block. Sample index m denotes the position of the respective sample within the set of samples and also the position of the TOF bin within the block of TOF bins.
In the allowed times of flight determining process described above with reference to block 206 of
In the initial intensity apportioning and apportionment accumulating processes described above with reference to blocks 208 and 210 of
In the example shown in
An embodiment of detection event memory 502 (
In the revised probability determining and intensity reapportioning processes described above with reference to blocks 212 and 214 of
In block 904, block count KC and block size M for the detection event are read. In an example, block count KC is read from the block count field and block size M is read from the block size field of the event record in detection event memory 502 pertaining to the detection event.
In block 906, for each block TOF linked to the detection event, the respective intensity accumulation linked to each allowed TOF in the corresponding allowed TOF block is retrieved, each retrieved intensity accumulation is subject to a depletion operation using a respective previous intensity apportionment to generate a respective depleted intensity accumulation, and all the depleted intensity accumulations generated for the allowed TOF block linked to the block TOF are summed to generate a respective block depleted intensity accumulation linked to the block TOF. Block 906 will be described in greater detail below with reference to
In block 908, the block depleted intensity accumulations for all the block TOFs linked to the detection event are summed to generate an event depleted accumulation sum.
In block 910, for each block TOF linked to the detection event, the respective block depleted intensity accumulation is divided by the event depleted accumulation sum to calculate a respective revised block probability, and the revised block probability is saved linked to the block TOF.
In block 912, for each block TOF linked to the detection event, a respective revised apportionment of the intensity of each of the samples in the sample set to the respective allowed TOFs in the allowed TOF block linked to the block TOF is determined using the revised probability linked to the block TOF.
In block 914, for each block TOF linked to the detection event, the respective depleted intensity accumulation for each allowed TOF in the allowed TOF block linked to the block TOF is subject to an accumulation operation using the respective revised intensity apportionment to generate a respective revised intensity accumulation and the revised intensity accumulation is saved linked to the respective allowed TOF in the allowed TOF block linked to the block TOF. The processing performed in blocks 912 and 914 will be described in greater detail below with reference to
In block 916, a test is performed to determine whether revised block probability determining and intensity reapportioning processes have been performed for all the multi-sample detection events represented by the detection signal. A NO result causes execution to return to block 904 via block 918. Block 918 causes block 904 to read the block count KC and block size M for the next detection event. A YES result causes execution to advance to block 920.
In block 920, a test is performed to determine whether a defined termination condition has been met, as described above. A NO result in block 920 causes execution to return to block 904 via block 922. Block 922 resets the detection event counter so that the block count and block size for the first detection event are read once more in block 904. However, due to the operations performed in blocks 906-914, many of the intensity accumulations stored in spectrum memory 150 differ in value from the previous time the block count and block size for the first detection event were read in block 904. A YES result in block 920 causes execution to stop.
Blocks 935, 941 and 942 establish a per-sample loop that is performed for each sample in the sample set constituting the detection event. The samples are tracked by sample index m whose value indicates the position of each sample in the sample set and also indicates the position of the corresponding allowed TOF in the allowed TOF block addressed by the block TOF. A reference in the description of
In block 937, the intensity read in block 936 is multiplied by the previous block probability linked to the TOF block and read in block 934.
In block 938, the intensity accumulation linked to the block TOF and the sample index is retrieved. In an example, the block TOF and sample index m are summed to generate an allowed TOF in the allowed TOF block, and the intensity accumulation is read out from the TOF bin in spectrum memory 150 addressed by the allowed TOF. The TOF bin is the one in which is stored the intensity accumulation linked to the block TOF and the sample index. Additionally, the allowed TOF is cached to provide the address of the TOF bin to which the revised intensity accumulation generated from the intensity accumulation retrieved in block 938 will later be written, as will be described below with reference to block 972 of
In block 939, the previous intensity apportionment calculated in block 937 is subtracted from the intensity accumulation retrieved in block 938 to generate a depleted intensity accumulation. The depleted intensity accumulation is linked through the block TOF and the sample index to the allowed TOF to which the intensity accumulation retrieved in block 938 is linked. In an example, the depleted intensity accumulation is cached linked to the block TOF and the sample index for later use in block 970 of
In block 940, the depleted intensity accumulation generated in block 939 is added to the block depleted intensity accumulation linked to the block TOF to generate a new block depleted intensity accumulation. The block depleted intensity accumulation generated in the final execution of block 940 for the block TOF is a block depleted intensity accumulation linked to the block TOF.
In block 941, a test is performed to determine whether depletion operations have been performed for all of the samples in the sample set constituting the detection event. A NO result causes execution to return to block 936 via block 942. Block 942 causes block 936 to read the intensity of the sample linked to the detection event and the next value of the sample index. A YES result causes execution to advance to block 944.
In block 944, the block depleted intensity accumulation generated in the final execution of block 940 linked to the block TOF and the event depleted accumulation sum are summed to generate a new event depleted accumulation sum. The event depleted intensity accumulation sum generated in the final execution of block 944 for the detection event is the event depleted intensity accumulation linked to the detection event.
In block 945, a test is performed to determine whether respective block depleted intensity accumulations for all the block TOFs linked to the detection event have been summed with the event depletion accumulation sum. A NO result causes execution to return to block 933 via block 946. Block 946 causes block 933 to zero the block depleted intensity accumulation for the next block TOF. A YES result causes execution to return to the main routine.
Blocks 966, 974 and 975 establish a per-sample loop that is performed for each sample in the sample set constituting the detection event. The samples are tracked by sample index m whose value indicates the position of each sample in the sample set. A reference in the description of
In block 970, the revised intensity apportionment generated in block 968 and the depleted intensity accumulation linked to the block TOF and the sample index are summed to generate a revised intensity accumulation. In an example, the depleted intensity accumulation cached linked to the block TOF and the sample index in block 939 of
In block 972, the revised intensity accumulation generated in block 970 is saved linked to the allowed TOF identified by the block TOF and the sample index. In an example, the allowed TOF cached linked to the block TOF and the sample index in block 938 is read out from the cache and is output to spectrum memory 150. In another example, the block TOF is read from the block TOF field in the event record in detection event memory 502 pertaining to the detection event. The block TOF field is that addressed by allowed TOF block index a. The block TOF read from the detection event memory and the sample index are summed to generate an allowed TOF that addresses the TOF bin in spectrum memory in which the revised intensity accumulation is to be written, and the allowed TOF is output to spectrum memory 150. The revised intensity accumulation is saved in the TOF bin of spectrum memory 150 addressed by the allowed TOF.
In block 974, a test is performed to determine whether the per-sample loop has been performed for all the samples in the sample set constituting the detection event. A NO result causes execution to return to block 967 via block 975. Block 975 causes the per-sample loop to be performed for the next sample in the sample set. A YES result causes execution to advance to block 976.
In block 976, a test is performed to determine whether the per-block-TOF loop has been performed for all the block TOFs linked to the detection event. A NO result causes execution to return to block 964 via block 977. Block 977 causes the per-block-TOF loop to be performed for the next block TOF linked to the detection event. A YES result causes execution to return to the main routine.
Modifications to intensity apportioner 140 described above with reference to
This disclosure describes the invention in detail using illustrative embodiments. However, the invention defined by the appended claims is not limited to the precise embodiments described.