File indexing completed on 2025-04-10 08:06:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #ifndef DicomBeamControlPoint__HH
0027 #define DicomBeamControlPoint__HH
0028
0029 #include "dcmtk/dcmrt/seq/drtcps.h" // for ControlPointSequence
0030
0031 #include <iostream>
0032 #include <vector>
0033 class DicomBeamDevicePos;
0034
0035 #include "G4ThreeVector.hh"
0036
0037 class DicomBeamControlPoint
0038 {
0039 public:
0040 DicomBeamControlPoint(DRTControlPointSequence::Item cpItem, DicomBeamControlPoint* point0);
0041 ~DicomBeamControlPoint() {};
0042
0043 public:
0044 void SetIndex(Sint32 dat) { theIndex = dat; }
0045 Sint32 GetIndex() const { return theIndex; }
0046 void SetNominalBeamEnergy(Float64 dat) { theNominalBeamEnergy = dat; }
0047 Float64 GetNominalBeamEnergy() const { return theNominalBeamEnergy; }
0048 void SetGantryAngle(Float64 dat) { theGantryAngle = dat; }
0049 void SetGantryRotationDirection(OFString dat) { theGantryRotationDirection = dat; }
0050 void SetBeamLimitingDeviceAngle(Float64 dat) { theBeamLimitingDeviceAngle = dat; }
0051 void SetBeamLimitingDeviceRotationDirection(OFString dat)
0052 {
0053 theBeamLimitingDeviceRotationDirection = dat;
0054 }
0055 void SetPatientSupportAngle(Float64 dat) { thePatientSupportAngle = dat; }
0056 void SetPatientSupportRotationDirection(OFString dat)
0057 {
0058 thePatientSupportRotationDirection = dat;
0059 }
0060 void SetTableTopEccentricAngle(Float64 dat) { theTableTopEccentricAngle = dat; }
0061 void SetTableTopEccentricRotationDirection(OFString dat)
0062 {
0063 theTableTopEccentricRotationDirection = dat;
0064 }
0065 void SetIsocenterPosition(G4ThreeVector dat) { theIsocenterPosition = dat; }
0066 void SetSourceToSurfaceDistance(Float64 dat) { theSourceToSurfaceDistance = dat; }
0067 void SetCumulativeMetersetWeight(Float64 dat) { theCumulativeMetersetWeight = dat; }
0068 void SetMetersetWeight(Float64 dat) { theMetersetWeight = dat; }
0069 void SetGantryPitchAngle(Float32 dat) { theGantryPitchAngle = dat; }
0070 void SetSurfaceEntryPoint(Float64 dat) { theSurfaceEntryPoint = dat; }
0071 void SetTableTopEccentricAxisDistance(Float64 dat) { theTableTopEccentricAxisDistance = dat; }
0072 void SetTableTopLateralPosition(Float64 dat) { theTableTopLateralPosition = dat; }
0073 void SetTableTopLongitudinalPosition(Float64 dat) { theTableTopLongitudinalPosition = dat; }
0074 void SetTableTopPitchAngle(Float32 dat) { theTableTopPitchAngle = dat; }
0075 void SetTableTopPitchRotationDirection(OFString dat)
0076 {
0077 theTableTopPitchRotationDirection = dat;
0078 }
0079 void SetTableTopRollAngle(Float32 dat) { theTableTopRollAngle = dat; }
0080 void SetTableTopRollRotationDirection(OFString dat) { theTableTopRollRotationDirection = dat; }
0081 void SetTableTopVerticalPosition(Float64 dat) { theTableTopVerticalPosition = dat; }
0082 OFString GetGantryRotationDirection() const { return theGantryRotationDirection; }
0083 Float64 GetBeamLimitingDeviceAngle() const { return theBeamLimitingDeviceAngle; }
0084 OFString GetBeamLimitingDeviceRotationDirection() const
0085 {
0086 return theBeamLimitingDeviceRotationDirection;
0087 }
0088 Float64 GetPatientSupportAngle() const { return thePatientSupportAngle; }
0089 OFString GetPatientSupportRotationDirection() const
0090 {
0091 return thePatientSupportRotationDirection;
0092 }
0093 Float64 GetTableTopEccentricAngle() const { return theTableTopEccentricAngle; }
0094 OFString GetTableTopEccentricRotationDirection() const
0095 {
0096 return theTableTopEccentricRotationDirection;
0097 }
0098 G4ThreeVector GetIsocenterPosition() const { return theIsocenterPosition; }
0099 Float64 GetSourceToSurfaceDistance() const { return theSourceToSurfaceDistance; }
0100 Float64 GetCumulativeMetersetWeight() const { return theCumulativeMetersetWeight; }
0101 Float64 GetMetersetWeight() const { return theMetersetWeight; }
0102 Float32 GetGantryPitchAngle() const { return theGantryPitchAngle; }
0103 Float64 GetSurfaceEntryPoint() const { return theSurfaceEntryPoint; }
0104 Float64 GetTableTopEccentricAxisDistance() const { return theTableTopEccentricAxisDistance; }
0105 Float64 GetTableTopLateralPosition() const { return theTableTopLateralPosition; }
0106 Float64 GetTableTopLongitudinalPosition() const { return theTableTopLongitudinalPosition; }
0107 Float32 GetTableTopPitchAngle() const { return theTableTopPitchAngle; }
0108 OFString GetTableTopPitchRotationDirection() const { return theTableTopPitchRotationDirection; }
0109 Float32 GetTableTopRollAngle() const { return theTableTopRollAngle; }
0110 OFString GetTableTopRollRotationDirection() const { return theTableTopRollRotationDirection; }
0111 Float64 GetTableTopVerticalPosition() const { return theTableTopVerticalPosition; }
0112
0113 void AddDevice(DicomBeamDevicePos* dbd) { theDevices.push_back(dbd); }
0114
0115 void DumpToFile(std::ofstream& out);
0116
0117 void Print(std::ostream& out);
0118
0119 private:
0120 Sint32 theIndex;
0121 Float64 theNominalBeamEnergy;
0122 Float64 theGantryAngle;
0123 OFString theGantryRotationDirection;
0124 Float64 theBeamLimitingDeviceAngle;
0125 OFString theBeamLimitingDeviceRotationDirection;
0126 Float64 thePatientSupportAngle;
0127 OFString thePatientSupportRotationDirection;
0128 Float64 theTableTopEccentricAngle;
0129 OFString theTableTopEccentricRotationDirection;
0130 G4ThreeVector theIsocenterPosition;
0131 Float64 theSourceToSurfaceDistance;
0132 Float64 theCumulativeMetersetWeight;
0133 Float64 theMetersetWeight;
0134 Float32 theGantryPitchAngle;
0135 Float64 theSurfaceEntryPoint;
0136 Float64 theTableTopEccentricAxisDistance;
0137 Float64 theTableTopLateralPosition;
0138 Float64 theTableTopLongitudinalPosition;
0139 Float32 theTableTopPitchAngle;
0140 OFString theTableTopPitchRotationDirection;
0141 Float32 theTableTopRollAngle;
0142 OFString theTableTopRollRotationDirection;
0143 Float64 theTableTopVerticalPosition;
0144
0145 std::vector<DicomBeamDevicePos*> theDevices;
0146 };
0147
0148 #endif