Skip to main content

Scan Events

ScanEvent, ScanEventPreamble, Reaction, FractionCollector

21. ScanEvent

Describes the type and parameters of a scan. One ScanEvent per scan, stored in the scan event trailer stream at RunHeader.scan_trailer_addr.

The scan event trailer stream begins with a UInt32 count, followed by that many ScanEvent structures.

21.1 Pre-v66 Structure

OrderTypeFieldDescription
1ScanEventPreamblepreambleByte array of scan parameters (see §22)
2UInt32npNumber of precursor ions (0 for MS1)
3*Reaction[np]precursorsPrecursor list (only if np > 0)
4UInt32unknown_long[1]
5FractionCollectorfraction_collectorM/z acquisition range
6UInt32nparamNumber of conversion coefficients
7*Float64[nparam]coefficientsFrequency-to-M/z conversion (see §32)
8UInt32unknown_long[2]
9UInt32unknown_long[3]

21.2 Version 66 Structure

Version 66 has a significantly restructured ScanEvent layout:

Head:

OrderTypeField
1ScanEventPreamblepreamble
2UInt32unknown_long[0]
3UInt32n_reactions

If dependent scan (n_reactions > 0, i.e. MS2+):

OrderTypeField
4Reaction[n_reactions]precursors
5Float64unknown_double[0]
6Float64unknown_double[1]
7UInt32unknown_long[2]
8UInt32unknown_long[3]
9UInt32unknown_long[4]
10FractionCollectorfraction_collector
11UInt32nparam
12Float64[nparam]coefficients

If primary scan (n_reactions == 0, i.e. MS1):

OrderTypeField
4FractionCollectorfraction_collector[0]
5UInt32unknown_long[2]
6UInt32unknown_long[3]
7UInt32unknown_long[4]
8UInt32unknown_long[5]
9FractionCollectorfraction_collector
10UInt32unknown_long[6]
11UInt32unknown_long[7]
12UInt32unknown_long[8]
13FractionCollectorfraction_collector[2]
14UInt32nparam
15Float64[nparam]coefficients

Tail (both cases in v66):

OrderTypeField
last-4UInt32unknown_long[a]
last-3UInt32unknown_long[b]
last-2UInt32unknown_long[c]
last-1UInt32unknown_long[d]
lastUInt32unknown_long[e]

22. ScanEventPreamble

A byte array encoding the scan type, analyzer, polarity, ionization mode, and other scan parameters. Version-dependent size.

22.1 Common Fields (All Versions, bytes 0-40)

ByteFieldValues
0unknown_byte[0]
1unknown_byte[1]
2corona0=Off, 1=On
3detector0=Valid, 1=Undefined
4polarity0=Negative, 1=Positive, 2=Undefined
5scan_mode0=Centroid, 1=Profile, 2=Undefined
6ms_power0=Undefined, 1=MS1, 2=MS2, ... 8=MS8
7scan_type0=Full, 1=Zoom, 2=SIM, 3=SRM, 4=CRM, 5=Undefined, 6=Q1, 7=Q3
8unknown_byte[8]
9unknown_byte[9]
10dependent0=Primary (MS1), 1=Dependent (MS2+)
11ionization0=EI, 1=CI, 2=FABI, 3=ESI, 4=APCI, 5=NSI, 6=TSI, 7=FDI, 8=MALDI, 9=GDI
12-23unknown_byte[12-23]
24activation1=HCD, 4=CID
25-31unknown_byte[25-31]
32wideband0=Off, 1=On
33-39unknown_byte[33-39]
40analyzer0=ITMS, 1=TQMS, 2=SQMS, 3=TOFMS, 4=FTMS, 5=Sector

22.2 Size by Version

VersionTotal Bytes
v841
v57, v6080
v62120
v63, v64128
v66136

22.3 Filter Line Construction

A human-readable filter line can be constructed from the preamble:

{ANALYZER} {POLARITY} {SCAN_MODE} {IONIZATION}{DEPENDENT}{WIDEBAND} {SCAN_TYPE} {MS_POWER} [{LOW_MZ}-{HIGH_MZ}]

Example: FTMS + p NSI Full ms [350.00-1500.00] Example: FTMS + c NSI d Full ms2 542.30@hcd35.00 [100.00-1600.00]


23. Reaction

Precursor ion information for MS2+ scans. Stored as an array within ScanEvent.

OffsetSizeTypeFieldDescription
0x008Float64precursor_mzPrecursor M/z selected for fragmentation
0x088Float64unknown_doubleTypically 1.0
0x108Float64energyCollision/activation energy
0x184UInt32unknown_long[1]
0x1C4UInt32unknown_long[2]

Total size: 32 bytes

23.1 String Representation

{precursor_mz}@{activation_method}{energy}

Example: 542.30@hcd35.00, 480.25@cid30.00

The activation method name comes from the ScanEventPreamble activation field.


24. FractionCollector

M/z acquisition range for a scan event.

OffsetSizeTypeFieldDescription
0x008Float64low_mzLower M/z bound
0x088Float64high_mzUpper M/z bound

Total size: 16 bytes