/// <summary> /// Returns the sum of the volumes across the input structures at a given input dose /// </summary> /// <param name="pi">the current planning item</param> /// <param name="ss">the structures to query</param> /// <param name="dv">the dose value to query</param> /// <param name="vPres">the volume presentation to return</param> /// <returns>the volume at the requested presentation</returns> public static double GetVolumeAtDose(this PlanningItem pi, IEnumerable <Structure> ss, DoseValue dv, VolumePresentation vPres) { dv = dv.ConvertToSystemUnits(pi); var vol = ss.Sum(s => pi.GetVolumeAtDose(s, dv, VolumePresentation.AbsoluteCm3)); return(vPres == VolumePresentation.AbsoluteCm3 ? vol : vol / ss.Sum(s => s.Volume) * 100); }
/// <summary> /// Returns the volume of the input structure at a given input dose /// </summary> /// <param name="pi">the current planning item</param> /// <param name="s">the structure to query</param> /// <param name="dv">the dose value to query</param> /// <param name="vPres">the volume presentation to return</param> /// <returns>the volume at the requested presentation</returns> public static double GetVolumeAtDose(this PlanningItem pi, Structure s, DoseValue dv, VolumePresentation vPres) { dv = dv.ConvertToSystemUnits(pi); var dPres = dv.GetPresentation(); var dvhCurve = pi.GetComplexDVH(new List <Structure> { s }, vPres, dPres); return(dvhCurve.GetVolumeAtDose(dv)); }