Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-10 08:06:18

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
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