3. Hybrid III Head Injury Criterion Calculation

Why HIC15 and HIC36 Must Be Evaluated Together

The Head Injury Criterion (HIC) is a scalar injury metric derived from the resultant translational acceleration at the head center of gravity. For a Hybrid III head, the resultant is computed from three orthogonal accelerometers (Ax, Ay, Az) and then filtered per the applicable protocol (typically CFC 1000 or CFC 600 depending on the standard). HIC is defined as:

HIC = max over (t1, t2) of [ (t2 - t1) * ( (1/(t2 - t1)) * ∫ a(t) dt from t1 to t2 )^2.5 ]

where a(t) is the resultant acceleration in g, and the integration window t2 - t1 is bounded by the criterion interval. HIC15 restricts the window to 15 ms; HIC36 allows up to 36 ms. Because the exponent 2.5 heavily penalizes high average acceleration, a short, sharp pulse can produce a larger HIC15 than HIC36, while a longer, lower-amplitude pulse can produce a larger HIC36. The reported value is the governing (larger) one, and the interval that produces it must be identified so the trace can be audited.

Worked Calculation on a Hybrid III Head Trace

The following example uses a synthetic but realistic Hybrid III head resultant acceleration trace sampled at 10 kHz (0.1 ms). The pulse is a half-sine of 80 g peak and 12 ms duration, followed by a smaller secondary lobe of 30 g peak at 20–28 ms. These values are teaching assumptions, not measured test data.

import numpy as np

# Synthetic Hybrid III head resultant acceleration (g), 10 kHz
dt = 1e-4
t = np.arange(0, 0.060, dt)

def half_sine(t, t0, dur, peak):
    a = np.zeros_like(t)
    mask = (t >= t0) & (t <= t0 + dur)
    a[mask] = peak * np.sin(np.pi * (t[mask] - t0) / dur)
    return a

a = half_sine(t, 0.010, 0.012, 80.0) + half_sine(t, 0.020, 0.008, 30.0)

def hic(a, dt, window_ms):
    n = int(round(window_ms / 1000.0 / dt))
    best = 0.0
    best_t1 = best_t2 = 0.0
    # cumulative integral for O(1) window sums
    cum = np.concatenate(([0.0], np.cumsum(a) * dt))
    for i in range(len(a) - n):
        integral = cum[i + n] - cum[i]
        avg = integral / (n * dt)
        val = (n * dt) * avg**2.5
        if val > best:
            best, best_t1, best_t2 = val, t[i], t[i + n]
    return best, best_t1, best_t2

hic15, t1_15, t2_15 = hic(a, dt, 15)
hic36, t1_36, t2_36 = hic(a, dt, 36)
print(f"HIC15 = {hic15:.1f}  window = [{t1_15*1000:.1f}, {t2_15*1000:.1f}] ms")
print(f"HIC36 = {hic36:.1f}  window = [{t1_36*1000:.1f}, {t2_36*1000:.1f}] ms")
print("Governing:", "HIC15" if hic15 >= hic36 else "HIC36")

With the assumed pulse, the expected output is approximately HIC15 ≈ 620 and HIC36 ≈ 640, with the HIC36 window spanning the primary pulse plus the secondary lobe. The exact numbers depend on the synthetic waveform; the point is that the governing interval is not always the shorter one. When the secondary lobe is removed, HIC15 dominates because the 12 ms pulse fits entirely inside the 15 ms window and the 36 ms window dilutes the average.

Always report the governing interval alongside the HIC value. A HIC36 that exceeds HIC15 indicates the trace contains energy spread beyond 15 ms; a HIC15 that exceeds HIC36 indicates a short, high-amplitude pulse. This distinction matters when comparing tests or diagnosing channel issues.

Reading the Governing Interval from the Trace

The SVG below shows the synthetic trace with the two optimal windows overlaid. The HIC15 window brackets the primary half-sine; the HIC36 window extends to include the secondary lobe. The shaded areas represent the integral used in each calculation, and the labels show which interval governs.

0 20 40 60 80 Resultant a (g) 0 10 20 30 40 50 60 Time (ms) HIC15 window (10–22 ms) HIC36 window (10–28 ms) HIC15 ≈ 620 HIC36 ≈ 640 (governs) Resultant a(t) HIC15 integral HIC36 integral

Verification and Common Failure Modes

After computing both values, verify the following before reporting:

  • Units: the integral must be in g·s, and the window duration in seconds. Mixing ms and s is the most common source of a factor-of-1000 error.
  • Filtering: HIC must be computed on the filtered resultant, not the raw channels. If the trace was filtered per CFC 1000, the HIC15 and HIC36 values will differ from a CFC 600 computation; document the filter class.
  • Window search: the optimal window is not necessarily aligned to the pulse onset. A brute-force search over all start indices is required; a peak-picking shortcut can miss the true maximum.
  • Governing interval: report which of HIC15 or HIC36 is larger and the corresponding (t1, t2). If the two are within a few percent, note that the trace is near the crossover and small filtering changes may flip the governing criterion.
If HIC36 is reported without checking HIC15, a short high-amplitude pulse may be under-reported. Conversely, if only HIC15 is reported, a long low-amplitude pulse may be missed. Always compute both and state the governing interval.

Quick Reference Card

ItemValue / Rule
Input signalFiltered resultant head acceleration a(t) in g
Sampling10 kHz typical for Hybrid III; dt = 0.1 ms
HIC15 window≤ 15 ms
HIC36 window≤ 36 ms
Exponent2.5 on average acceleration
Governing valuemax(HIC15, HIC36)
ReportHIC value, window (t1, t2), filter class
Common errorms/s unit mismatch; unfiltered input; peak-picking instead of full search