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(); }