TXings Basics


TXings is the ACIS radiation monitor, running as a patch to the ACIS flight software. There have been three versions of the TXings flight software algorithm:

Currently TXings rev C runs six tests on the threshold crossing values: three types of tests (increasing, decreasing, and very high) for two types of CCDs (FI and BI). The most frequently triggered is the FI increasing test. Particle events have a much stronger signal in the FI CCDs, because they are thicker and not fully depleted, and the TXings rate limit parameters can be set closer to the quiescent value, because bright sources are usually put on the BI CCD S3. The FI very high test has triggered once, in November 2025. The decreasing test has never triggered in flight.

All versions of TXings have selectable parameters uplinked via writeBep commands. These WB commands are not interchangable between versions of TXings as the number of parameters and the memory locations have changed. Specifics about the addresses can be found in the ECOs linked below.

The TXing algorithm computes the average threshhold crossings rate for each CCD. In order to "trigger" each average CCD rate must exceed its limit, then the average of the FI & BI CCDs are compared to the six tests. If a single CCD produces elevated TXing values but other CCDs of the same type do not, the algorithm will not trigger. This helps to prevent triggers for a bright source or an anomaly on a single CCD, but requires multiple of each type of CCD to be in use and is less helpful for gratings observations which disperse bright sources over many CCDs.

When a TXings test has "triggered" (has met all the criteria in the parameters for a single test), the ACIS flight software bilevels are set to a specific bit pattern that is not seen in any other circumstance. The SW bilevels will not change again until a stopScience command is received. When RadMon is enabled, this happens relatively quickly. If RadMon is not enabled (as is true for an ECS observation in the belts), the abnormal bilevels will stick around until the end of the observation. (See A note on timing below for more) During a normal science run, the bilevels alternate between xxxx0100 and xxxx0101 (as seen in PMON). If TXings is triggered, they will read xxxx1101 and remain that way until the next stopScience. (If there is real-time telemetry, PMON will also show an alert in RED and send out alert emails.) The FSW will also dump BEP memory relevant to TXings.

Some of the text below has been borrowed from the memos and ECOs listed in the References section at the end of this page.

TXings Parameters:

TXings uses 3 memory blocks to store parameters, each as TX structures. The TX structure for rev B and rev C of TXings looks like this:
struct TX_B {
    unsigned MINUTES;                // averaging interval x 64 seconds
    unsigned TX_MODE;                // txings mode (flags to ignore CCDs, etc)
    unsigned MAX_TX_PER_ROW;         // max crossings per row
    unsigned CC_TICKS;               // ticks per frame in CC mode
    unsigned TRIGGER_COUNT[6];       // number of integration steps before trigger
    unsigned RATE_LIMIT[6];          // trigger thresholds/100-rows/sec
    unsigned TX_INCR[6];             // trigger threshold inc/decrements
};

Some of these parameters have always kept the same values.

The remaining parameters use optimal values. These values are found by running the TXings algorithm over the full mission timeline of "regions of interest" -- high radiation, bright sources, and instrument anomalies. The optimum values produce the largest number of real radiation triggers with no false triggers. Three of these parameters have different values for each of the six tests (TRIGGER_COUNT, RATE_LIMIT, and TX_INCR).

This TX parameter structure is saved in three memory blocks:

When we upload new optimal parameters, we update both TXinit and TXnext. To change the parameters for a single science run, like an observation of a bright source, only TXnext should be updated. The parameter update command must be sent before the startScience. In practice, putting it 4 seconds before the start of commanding for the observation is the simplest placement.

Optimal parameters:

These are the current optimal parameters, found in WBTXC32020.
TXinit.TX= {
  MINUTES         = 3 
  TX_MODE         = 0x00000000 
  MAX_TX_PER_ROW  = 512 
  CC_TICKS        = 291840 
  TRIGGER_COUNT   = { 4, 6, 5, 6, 2, 6 }
  RATE_LIMIT      = { 320, 20, 330, 45, 840, 4490 }
  TX_INCR         = { 6, 2, 4, 6, 0, 0 }
}

The parameter uplink command for WBTXC32020 is shown here. It contains an address for the memory location to be written to and a list of 44 hex numbers. The data is just the TXings parameters shown above, translated into hex, repeated twice. This places the new parameters into both the TXinit and TXnext memory blocks.

writeBep[0] = {
  commandLength              = 94 
  commandIdentifier          = 20386 
  commandOpcode              = 192 # CMDOP_WRITE_BEP 
  writeAddress               = 0x8003dc20 
  writeData                  = 0x00000003 0x00000000 0x00000200 0x00047400 
                               0x00000004 0x00000006 0x00000005 0x00000006 
                               0x00000002 0x00000006 0x00000140 0x00000014 
                               0x0000014a 0x0000002d 0x00000348 0x0000118a 
                               0x00000006 0x00000002 0x00000004 0x00000006 
                               0x00000000 0x00000000 0x00000003 0x00000000 
                               0x00000200 0x00047400 0x00000004 0x00000006 
                               0x00000005 0x00000006 0x00000002 0x00000006 
                               0x00000140 0x00000014 0x0000014a 0x0000002d 
                               0x00000348 0x0000118a 0x00000006 0x00000002 
                               0x00000004 0x00000006 0x00000000 0x00000000 
}

Parameter uplink command name convention:

The convention for naming TXing parameter uplink commands has changed with each version. For the current rev C, the paradigm is: WBTXCXXXYY where XXX is the FI CCD ascending rate limit and YY is the BI CCD ascending rate limit in the parameters. The naming in rev B follows the same system, with WBTXB instead of WBTXC. For rev A, the commands were named WBTXING001 - WBTXING005.

To see what commands already exist in the ACIS tables, you simply have to do a search of command names with the appropriate convention. For example, to list all the parameter update commands for TXing rev C in the ACIS tables:

luke-v-104: cd /data/acis/cmdgen/sacgs/docs/
luke-v-105: cat mnemonics.hdr | grep WBTXC
WBTXC31015 20381 094WBTXC31015  20000
WBTXC31020 20382 094WBTXC31020  20000
WBTXC32015 20385 094WBTXC32015  20000
WBTXC32020 20386 094WBTXC32020  20000
WBTXC32025 20388 094WBTXC32025  20000
WBTXC33020 20391 094WBTXC33020  20000
WBTXC33025 20392 094WBTXC33025  20000
WBTXC34020 20395 094WBTXC34020  20000
WBTXC34025 20397 094WBTXC34025  20000
WBTXCQUIET 20379 008WBTXCQUIET  20000

The first two columns are the command name and the command sequence number (CmdID in pmon).

The associated CLD files use the ACIS command as part of the name as well.

[MacBook-Pro-9:~/acis_docs/command_load] cgrant% ls *WBTXC*
1AWBTXCQUIET_143.cld    1R_WBTXC32020.cld
1AWBTXCQUIET_143.txt    1R_WBTXC32020.txt

At the time of writing, the only TXC parameters that have been uplinked to the spacecraft are the set labelled with FI=320, BI=20.

Default parameters:

When the ACIS FSW first starts, such as after a warmboot, the TXings parameters will be set to the default values in the patch. These default values are intentionally set to be maximally protective of ACIS. The TXings parameters should be set to the current optimal values ASAP to prevent an undesired TXings radiation trigger. All TXings parameter update commands that have been used in flight should have an associated CLD file, which can be used to update the parameters via CAP (CAP 1788 is the most recent example). For completeness, the default values in TXing rev C are:

TXinit.TX= {
  MINUTES         = 3 
  TX_MODE         = 0x00000000 
  MAX_TX_PER_ROW  = 512 
  CC_TICKS        = 291840 
  TRIGGER_COUNT   = { 4, 6, 5, 6, 2, 6 }
  RATE_LIMIT      = { 320, 20, 330, 45, 1140, 4490 }
  TX_INCR         = { 5, 2, 4, 6, 0, 0 }
}

As we are now in solar maximum, the current optimum parameters are not hugely different from the defaults. That will not always be the case and it should still be a priority to uplink optimal parameters after the FSW is reset.

Auxiliary TXings commands:

Contents of the TXing dump file:

The RBTXING*LL command dumps the contents of the three TX memory blocks (TXinit, TXnext, TXblock) and the current values in the accumulation structure. If there has been a TXing driven shutdown, the FSW will dump TXblock and the accumulation structure. This is how you can determine which test caused the trigger. The telemetry processing code psci will put the contents of the dump into a "bepReadReply" file. These files can be found on emily/malang, if the dump was during real-time contact, or in the MIT pipeline archive on maaxnew. The ltxings tool creates a human readable version of the dump file.

An example TXing dump file, in this case after the radiation shutdown in November 2025:

maaxnew.mit.edu% ltxings acis131.bepReadReply.7.dat.gz
TXinit.TX= {
  MINUTES         = 3
  TX_MODE         = 0x00000000
  MAX_TX_PER_ROW  = 512
  CC_TICKS        = 291840
  TRIGGER_COUNT   = { 4, 6, 5, 6, 2, 6 }
  RATE_LIMIT      = { 320, 20, 330, 45, 840, 4490 }
  TX_INCR         = { 6, 2, 4, 6, 0, 0 }
}
txings.tx= {
  count           = 280
  triggered       = 16
  minutes         = 3
  ccd_rows        = 1024
  ccd_tx_max      = 524288
  ccd_ticks       = 316907
  increment       = 0
  trigger_count   = { 2, 2, 0, 0, 2, 0 }
  saved_rates     = { 3615, 234, 0, 0, 3615, 0 }
  threshold_accum = {        0,       0,       0, 3693432,       0,
                             0, 3921264,  488137, 3757388,       0  }
  exposure_accum  = {        0,       0,       0,10036288,       0,
                             0,10088672,20282048,10607932,       0  }
  exptime         = {        0,       0,       0,  313634,       0,
                             0,  315271,  316907,  311998,       0  }
  exptime2        = 0
}

The value of "triggered" in txing.tx encodes which test caused the trigger. The possible values are:

Another example, from a standard RBTXINGCLL command:

maaxnew.mit.edu% ltxings acis131.bepReadReply.8.dat.gz
TXinit.TX= {
  MINUTES         = 3
  TX_MODE         = 0x00000000
  MAX_TX_PER_ROW  = 512
  CC_TICKS        = 291840
  TRIGGER_COUNT   = { 4, 6, 5, 6, 2, 6 }
  RATE_LIMIT      = { 320, 20, 330, 45, 840, 4490 }
  TX_INCR         = { 6, 2, 4, 6, 0, 0 }
}
TXnext.TX= {
  MINUTES         = 3
  TX_MODE         = 0x00000000
  MAX_TX_PER_ROW  = 512
  CC_TICKS        = 291840
  TRIGGER_COUNT   = { 4, 6, 5, 6, 2, 6 }
  RATE_LIMIT      = { 320, 20, 330, 45, 840, 4490 }
  TX_INCR         = { 6, 2, 4, 6, 0, 0 }
}
txings.TX= {
  MINUTES         = 3
  TX_MODE         = 0x00000000
  MAX_TX_PER_ROW  = 512
  CC_TICKS        = 291840
  TRIGGER_COUNT   = { 4, 6, 5, 6, 2, 6 }
  RATE_LIMIT      = { 320, 20, 330, 45, 840, 4490 }
  TX_INCR         = { 6, 2, 4, 6, 0, 0 }
}
txings.tx= {
  count           = 0
  triggered       = 0
  minutes         = 1
  ccd_rows        = 1024
  ccd_tx_max      = 524288
  ccd_ticks       = 321741
  increment       = 0
  trigger_count   = { 0, 0, 0, 0, 0, 0 }
  saved_rates     = { 0, 0, 0, 0, 0, 0 }
  threshold_accum = {   248965,  237559,  253553,  267945,       0,
                             0,  234319,   19119,       0,       0  }
  exposure_accum  = { 12675507,12611703,12547899,12803154,       0,
                             0,12484095,12739311,       0,       0  }
  exptime         = {   325013,  323377,  321741,  328286,       0,
                             0,  320105,  326649,       0,       0  }
  exptime2        = 0
}

Bright sources:

Bright sources have the potential to produce false triggers in TXings tests. A full discussion is beyond the scope of this page. Mitigation can include any combination of:

A note on timing:

TXings is only active when ACIS is taking event data. Between observations there is no data for TXings to examine. After the startScience for an observation, there are two wait periods, first for the bias to complete and then for the algorithm to accumulate enough data. After that point, TXings can be considered ready to trigger.

The bias time depends on a number of factors. The value for a given parameter block can be found in the ACIS tables and counts the time between the first commanding in the SI mode and the expected time for event data to start. This bias time is only an estimate, provided to help mission planning estimate exposure times. The bias time can be found by looking up the SI mode or the pblock on acisweb.mit.edu. For example, TE_006E6B has a bias time of 1337 seconds.

The second wait is for TXings to accumulate enough data. This depends on the values of the parameters and can be different for each of the six tests. Each test can trigger after MINUTES x (64 to 67 seconds) x TRIGGER_COUNT. With the current optimal parameters, this value can be as short as ~6.5 minutes (for the FI very high test) and as long as 19-20 minutes (for all of the BI tests).

After TXings has met one of the trigger criteria, ACIS FSW will set the flight software bilevels to a particular set of values. The OBC checks the status bits every 64 secs (2 major frames) and needs to see the TXings status bits twice before starting to run SCS107. According to the SCS handbook, the delay between the start of SCS107 execution and the stopScience should be roughly 67 seconds.

References (some links require SAO/MIT IP address):

The following Engineering Change Orders (ECO) describe the flight algorithm, in words and pseudo-code, along with reasons for the changes.

TXings revA: ECO 1044 (Dec 16, 2011)
TXings revB: ECO 1058 (Apr 20, 2022)
TXings revC: ECO 1065 (Feb 3, 2025)

Reports describing how optimal parameters are chosen:

Selecting optimal parameters for the txings patch (v 1.1) (Apr 12, 2012)
Optimal Parameters for Release B of the TXings Patch (v 1.5) (Jun 6, 2022)
Monitoring ACIS Background Rates for the TXings Patch (v 1.0) (Sep 12, 2022)

Last updated: 17 Feb 2026 by C. Grant