Esempio n. 1
0
 public static double GetVolumeAtDose(this PlanningItem pitem, Structure structure, DoseValue dose, VolumePresentation requestedVolumePresentation)
 {
     if (pitem is PlanSetup)
     {
         //try catch statement to switch dose units to system presentation. Otherwise exception "Dose Units do not match to system settings
         try
         {
             return(((PlanSetup)pitem).GetVolumeAtDose(structure, dose, requestedVolumePresentation));
         }
         catch
         {
             if (dose.Unit.CompareTo(DoseValue.DoseUnit.cGy) == 0)
             {
                 return(((PlanSetup)pitem).GetVolumeAtDose(structure, new DoseValue(dose.Dose / 100, DoseValue.DoseUnit.Gy), requestedVolumePresentation));
             }
             else if (dose.Unit.CompareTo(DoseValue.DoseUnit.Gy) == 0)
             {
                 return(((PlanSetup)pitem).GetVolumeAtDose(structure, new DoseValue(dose.Dose * 100, DoseValue.DoseUnit.cGy), requestedVolumePresentation));
             }
             else
             {
                 return(((PlanSetup)pitem).GetVolumeAtDose(structure, dose, requestedVolumePresentation));
             }
         }
     }
     else
     {
         DVHData dvh = pitem.GetDVHCumulativeData(structure, DoseValuePresentation.Absolute, requestedVolumePresentation, 0.001);
         //convert dose unit to system unit: otherwise false output without warning
         try
         {
             ((PlanSum)pitem).PlanSetups.First().GetVolumeAtDose(structure, dose, requestedVolumePresentation);
             return(DvhExtensions.VolumeAtDose(dvh, dose.Dose));
         }
         catch
         {
             if (dose.Unit.CompareTo(DoseValue.DoseUnit.cGy) == 0)
             {
                 return(DvhExtensions.VolumeAtDose(dvh, dose.Dose / 100));
             }
             else if (dose.Unit.CompareTo(DoseValue.DoseUnit.Gy) == 0)
             {
                 return(DvhExtensions.VolumeAtDose(dvh, dose.Dose * 100));
             }
             else
             {
                 return(DvhExtensions.VolumeAtDose(dvh, dose.Dose));
             }
         }
     }
 }
Esempio n. 2
0
 public static DoseValue GetDoseAtVolume(this PlanningItem pitem, Structure structure, double volume, VolumePresentation volumePresentation, DoseValuePresentation requestedDosePresentation)
 {
     if (pitem is PlanSetup)
     {
         //return ((PlanSetup)pitem).GetDoseAtVolume(structure, volume, volumePresentation, requestedDosePresentation);
         DVHData dvh = pitem.GetDVHCumulativeData(structure, requestedDosePresentation, volumePresentation, 0.001);
         return(DvhExtensions.DoseAtVolume(dvh, volume));
     }
     else
     {
         if (requestedDosePresentation != DoseValuePresentation.Absolute)
         {
             throw new ApplicationException("Only absolute dose supported for Plan Sums");
         }
         DVHData dvh = pitem.GetDVHCumulativeData(structure, DoseValuePresentation.Absolute, volumePresentation, 0.001);
         return(DvhExtensions.DoseAtVolume(dvh, volume));
     }
 }