Пример #1
0
 public void AddBeam(ExternalPlanSetup currPln, Double gantryAng, String ptOrient, DRRCalculationParameters drrParam, int bmIdNo)
 {
     if (Double.IsNaN(gantryAng))  // Gantry angle = Nan for CBCT
     {
         Beam bm = currPln.AddSetupBeam(bmMachParam, new VRect <double>(-50.0, -50.0, 50.0, 50.0), 0.0, 0.0, 0.0, plnIso);
         bm.Id   = "C" + bmIdNo.ToString();
         bm.Name = "CBCT setup";
     }
     else  // kV beam
     {
         // adding 10 x 10 field, 0 coll rotation and 0 couch angle
         Beam   bm    = currPln.AddSetupBeam(bmMachParam, new VRect <double>(-50.0, -50.0, 50.0, 50.0), 0.0, gantryAng, 0.0, plnIso);
         String bmDir = CheckBeamDir(gantryAng, ptOrient);
         bm.Id   = bmDir[0].ToString().ToUpper() + bmIdNo.ToString();
         bm.Name = bmDir + " kV setup";
         // create DRR
         bm.CreateOrReplaceDRR(drrParam);
     }
 }
        public void SetupFieldsPerformUpdates()
        {
            Log.Initialize(_context);
            _context.Patient.BeginModifications();

            ExternalPlanSetup plan = _context.PlanSetup as ExternalPlanSetup;
            Beam           beam    = plan.Beams.FirstOrDefault();
            VRect <double> jaws    = new VRect <double>(-50, -50, 50, 50);
            ExternalBeamMachineParameters machineParams = new ExternalBeamMachineParameters(beam.TreatmentUnit.Id, beam.EnergyModeDisplayName, beam.DoseRate, "STATIC", "");

            int ap, pa, rtLat, ltLat;

            switch (PatientOrientation)
            {
            case "HeadFirstSupine":
                ap    = 0;
                pa    = 180;
                rtLat = 270;
                ltLat = 90;
                break;

            case "FeetFirstSupine":
                ap    = 0;
                pa    = 180;
                rtLat = 90;
                ltLat = 270;
                break;

            case "HeadFirstProne":
                ap    = 180;
                pa    = 0;
                rtLat = 90;
                ltLat = 270;
                break;

            case "FeetFirstProne":
                ap    = 180;
                pa    = 0;
                rtLat = 270;
                ltLat = 90;
                break;

            default:
                ap    = 0;
                pa    = 180;
                rtLat = 270;
                ltLat = 90;
                break;
            }


            if (!MvKvPairFlag)
            {
                if (CbctFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, 0, 0, beam.IsocenterPosition).Id = _cbctName;
                }
                if (ApFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, ap, 0, beam.IsocenterPosition).Id = _apName;
                }
                if (PaFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, pa, 0, beam.IsocenterPosition).Id = _paName;
                }
                if (RtLatFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, rtLat, 0, beam.IsocenterPosition).Id = _rtLatName;
                }
                if (LtLatFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, ltLat, 0, beam.IsocenterPosition).Id = _ltLatName;
                }
            }
            else
            {
                if (CbctFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, 0, 0, beam.IsocenterPosition).Id = _cbctName;
                }
                if (ApFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, ap, 0, beam.IsocenterPosition).Id = $"{_apName} {Suffix1}";
                    plan.AddSetupBeam(machineParams, jaws, 0, ap, 0, beam.IsocenterPosition).Id = $"{_apName} {Suffix2}";
                }
                if (PaFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, pa, 0, beam.IsocenterPosition).Id = $"{_paName} {Suffix1}";
                    plan.AddSetupBeam(machineParams, jaws, 0, pa, 0, beam.IsocenterPosition).Id = $"{_paName} {Suffix2}";
                }
                if (RtLatFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, rtLat, 0, beam.IsocenterPosition).Id = $"{_rtLatName} {Suffix1}";
                    plan.AddSetupBeam(machineParams, jaws, 0, rtLat, 0, beam.IsocenterPosition).Id = $"{_rtLatName} {Suffix2}";
                }
                if (LtLatFlag)
                {
                    plan.AddSetupBeam(machineParams, jaws, 0, ltLat, 0, beam.IsocenterPosition).Id = $"{_ltLatName} {Suffix1}";
                    plan.AddSetupBeam(machineParams, jaws, 0, ltLat, 0, beam.IsocenterPosition).Id = $"{_ltLatName} {Suffix2}";
                }
            }

            log.Info("Setup Fields");
            LogManager.Shutdown();
        }