4. THOR Head Injury Criterion with Filtering Sensitivity

Why the Filter Class Changes the Number

THOR's head accelerometer channels are sampled at high rate (typically 10 kHz or more), and the raw signal carries both the physical head response and high-frequency content that is not relevant to injury assessment: sensor resonance, structural ringing of the dummy head skin and skull assembly, and electrical noise. Before HIC15 is computed, the resultant acceleration trace must be low-pass filtered. The filter class — defined by SAE J211 / ISO 6487 as a Channel Frequency Class (CFC) — sets the −3 dB cutoff and the roll-off characteristic. Because HIC15 is a time-integrated function of a2.5, it is disproportionately sensitive to peak amplitude: any filter that leaves more high-frequency energy in the trace will raise the peak and therefore raise HIC15.

The practical consequence is that the same raw THOR head data can produce materially different HIC15 values depending on whether it is processed at CFC 600, CFC 1000, or CFC 1800. The task in this case is not to compute HIC15 from scratch (that was the Hybrid III case) but to quantify that filter sensitivity and then select the CFC that the governing injury criterion protocol actually specifies — and to document the choice so the reported number is defensible.

Filter Classes and Their Cutoffs

SAE J211/1 defines CFC by the −3 dB cutoff frequency fc and a fourth-order (two-pole, two-zero) Butterworth-equivalent magnitude response. The classes relevant to dummy head data are:

CFC class−3 dB cutoff fcTypical use in dummy testing
CFC 180≈ 100 Hz (per J211 channel class table)Rarely used for head; sometimes for chest deflection
CFC 600≈ 600 HzCommon for Hybrid III head acceleration in older protocols
CFC 1000≈ 1000 HzFrequently specified for THOR head acceleration in current occupant protocols
CFC 1800≈ 1800 HzUsed where the protocol wants minimal attenuation of head impact transients

The exact cutoff for each class is fixed by the standard's channel-class table; do not substitute a generic "1000 Hz low-pass" for CFC 1000, because the J211 filter has a specific magnitude characteristic and a defined tolerance band. When a protocol says "CFC 1000," it means the J211 CFC 1000 filter, not an arbitrary digital low-pass at 1 kHz.

Worked Sensitivity Evaluation

Take a single THOR head resultant acceleration trace (already computed from the three orthogonal channels, units in g, time in ms) and process it through three CFC filters. The following Python fragment implements a J211-style fourth-order filter via a bilinear-transformed Butterworth approximation and computes HIC15 for each class. It is self-contained: the input trace is synthesized as a plausible damped half-sine impact so the procedure can be run and inspected without external data files.

import numpy as np
from scipy.signal import butter, filtfilt

# --- synthetic THOR head resultant acceleration (g), 10 kHz, 60 ms impact ---
fs = 10000.0
t = np.arange(0, 0.060, 1/fs)
A_peak, t_rise, t_decay = 180.0, 0.004, 0.012
a = np.where(t < t_rise,
             A_peak * (t / t_rise),
             A_peak * np.exp(-(t - t_rise) / t_decay))
a += 6.0 * np.sin(2*np.pi*2400*t) * np.exp(-t/0.010)   # high-freq content
a = np.clip(a, 0, None)

def j211_lowpass(x, fc, fs, order=4):
    # Butterworth approximation of the J211 magnitude class
    b, a_ = butter(order, fc / (fs/2), btype='low')
    return filtfilt(b, a_, x)

def hic15(acc_g, dt):
    # HIC15 = max over t1,t2 with t2-t1 <= 15 ms of (t2-t1)*mean(a)^2.5
    n = len(acc_g)
    win = int(round(0.015 / dt))
    best = 0.0
    for i in range(n):
        for j in range(i+1, min(i+win, n)):
            dt_ij = (j - i) * dt
            mean_a = np.mean(acc_g[i:j+1])
            val = dt_ij * mean_a**2.5
            if val > best:
                best = val
    return best

for cfc, fc in [("CFC 600", 600.0), ("CFC 1000", 1000.0), ("CFC 1800", 1800.0)]:
    af = j211_lowpass(a, fc, fs)
    print(f"{cfc:9s} fc={fc:6.0f} Hz  peak={af.max():7.2f} g  HIC15={hic15(af, 1/fs):8.1f}")

Running this on the synthetic trace produces a monotonic ordering: CFC 600 gives the lowest HIC15, CFC 1000 an intermediate value, and CFC 1800 the highest, because the 2.4 kHz component is progressively less attenuated. The exact numbers depend on the synthetic content and are illustrative only — the point is the direction and magnitude of the shift, which is what you must report. On real THOR data the spread between CFC 600 and CFC 1800 is commonly in the range of several percent to low tens of percent for sharp head impacts, and it is not a rounding error.

THOR head resultant → CFC filter → HIC15 Raw resultant a(t) 3 orthogonal ch. 10 kHz, g units + 2.4 kHz content CFC 600 fc ≈ 600 Hz CFC 1000 fc ≈ 1000 Hz CFC 1800 fc ≈ 1800 Hz HIC15 lowest most attenuation HIC15 mid protocol-typical HIC15 highest least attenuation Protocol check Which CFC does the criterion specify? → report that one HIC15 = max over t1,t2 (t2−t1 ≤ 15 ms) of (t2−t1)·[mean a]^2.5 — peak-sensitive, so filter class matters. Report the CFC mandated by the injury criterion protocol; never mix classes between compared tests.

Selecting the Filter Consistent with the Protocol

The sensitivity result is only half the task. The reported HIC15 must be computed at the CFC that the applicable injury criterion protocol specifies for THOR head acceleration. In practice this means:

  1. Identify the governing document. The protocol (e.g., a regulatory test procedure or a consumer-rating test protocol) states the channel class for each measurement. For THOR head acceleration, current occupant protocols commonly specify CFC 1000; older or different procedures may specify CFC 600 or CFC 1800. Do not infer the class from the dummy; read it from the protocol that defines the pass/fail criterion.
  2. Apply the J211 filter, not a generic low-pass. Use the standard's channel-class implementation (or a validated equivalent) so the magnitude response matches the tolerance band. A Butterworth approximation is acceptable for sensitivity exploration but should be verified against the reference filter before it is used for a reported value.
  3. Keep the class fixed across the comparison set. If you are comparing THOR runs, or comparing THOR against Hybrid III, every HIC15 in the comparison must be computed at the class the criterion specifies for that measurement. Mixing CFC 600 THOR data with CFC 1000 THOR data creates a difference that is an artifact of processing, not of the dummy or the impact.
  4. Record the class in the result. A HIC15 number without its CFC class is incomplete. State the class, the filter implementation, and the sampling rate alongside the value.
A common failure mode is applying the filter twice — once in the data-acquisition software and again in post-processing — which over-attenuates the trace and under-reports HIC15. Confirm whether the exported channel is already filtered before applying a CFC filter in your analysis script. If the export is pre-filtered at CFC 1000 and you then apply CFC 1000 again, the result is not CFC 1000.

Verification and Reporting

To confirm the evaluation is sound, check three things. First, the unfiltered peak should be higher than every filtered peak, and the filtered peaks should order monotonically with cutoff (600 < 1000 < 1800) for a trace containing high-frequency content — a non-monotonic result usually indicates a filter implementation error or a trace whose content sits below all cutoffs. Second, the HIC15 time window (t1, t2) should be inspected: if the governing interval shifts between filter classes, note it, because it signals that the filter is changing which part of the pulse dominates. Third, the reported value must carry its CFC class and the protocol reference that mandated it. The deliverable for this case is therefore not a single number but a short sensitivity table (CFC 600 / 1000 / 1800 HIC15 values) plus the selected class and its protocol justification — that is what makes the reported THOR HIC15 defensible.