be the vector of all attenuation values at each energy for material $s \in \mathcal{M}$, and let $X^k(\cdot,j) = (\vec{x}_{j,E_1}^k, \ldots, \vec{x}_{j,E_C}^k)$ be the vector of all attenuation values of voxel $j$ at each channel. We compute the segmented image by computing for each voxel $j \in \{1, \ldots, n\}$ the label using a basic thresholding scheme: $$\begin{aligned}
\vec{y}_j^k &=  \operatorname*{arg\,min}_{s \in \mathcal{M}} ||X^k(\cdot, j) - \vec{\mu}(s)||_2 \label{eq8}.\end{aligned}$$ Essentially, this operation selects the material label for which the multi-dimensional difference between the material attenuation and voxel attenuations is smallest.

### Masking and boundary detection

The masking works exactly the same as in the single-channel case. Given the segmentation $\vec{y}^k$ the masking produces a set $U^k \cup B^k$ of voxel indices to be included in the multi-channel reconstructions.

### Multi-Channel Reconstructions

In the MC-DART algorithm the reconstructions are handled separately for each energy. Thus, in MC-DART iteration $k$ the ARM is invoked $C$ times to find $\overline{\vec{x}}_{E_c}^k$ for each channel $c$ in $$\begin{aligned}
\overline{\vec{W}}^k \overline{\vec{x}}_{E_c}^k     &= \overline{\vec{p}}_{E_c}^k \label{eq7}.\end{aligned}$$ The resulting (merged) reconstructions are then given by $\vec{X}^k := (\vec{x}_{E_1}^k, \ldots, \vec{x}_{E_C}^k) \in \mathbb{R}^{n \times C}$.

As with DART, the complexity of this framework depends on the reconstruction and segmentation methods that 