Loading...
Searching...
No Matches
DicomBeamCompensator.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
27#include "dcmtk/dcmrt/seq/drtcos.h"
28#include "G4UIcommand.hh"
29
30// DOC at https://www.dabsoft.ch/dicom/3/C.8.8.14/
31//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
32DicomBeamCompensator::DicomBeamCompensator(DRTCompensatorSequence::Item bcompItem)
33{
34 OFString fstr;
35 Sint32 fint;
36 Float64 ffloat;
37 OFVector<Float64> fvfloat;
38 OFCondition cond;
39 G4cout << " DicomBeamCompensator::DicomBeamCompensator " << G4endl;
40 cond = bcompItem.getCompensatorNumber(fint);
42 G4cout << " Number " << fint << G4endl;
43
44 cond = bcompItem.getCompensatorColumns(fint);
46 cond = bcompItem.getCompensatorRows(fint);
47 theCompensatorRows = fint;
48 // first value is the spacing between the center of adjacent rows, and the second value
49 // (column spacing) is the spacing between the center of adjacent columns.
50 cond = bcompItem.getCompensatorPixelSpacing(fvfloat);
52
53 cond = bcompItem.getCompensatorPosition(fvfloat);
54 theCompensatorPosition = fvfloat;
55
56 cond = bcompItem.getCompensatorTransmissionData(fvfloat);
57 if( cond.good() ) theCompensatorTransmissionData = fvfloat;
58 cond = bcompItem.getCompensatorThicknessData(fvfloat);
59 if( cond.good() ) theCompensatorThicknessData = fvfloat;
60
61 cond = bcompItem.getCompensatorTrayID(fstr);
62 cond = bcompItem.getCompensatorType(fstr);
63
64 cond = bcompItem.getMaterialID(fstr);
65 if( cond.good() ) theMaterialID = fstr;
66 cond = bcompItem.getSourceToCompensatorDistance(fvfloat);
67 if( cond.good() ) theSourceToCompensatorDistance = fvfloat;
68 cond = bcompItem.getSourceToCompensatorTrayDistance(ffloat);
70
71 cond = bcompItem.getCompensatorDescription(fstr);
72 cond = bcompItem.getCompensatorDivergence(fstr);
73 cond = bcompItem.getCompensatorID(fstr);
74 cond = bcompItem.getCompensatorMountingPosition(fstr);
75 cond = bcompItem.getAccessoryCode(fstr);
76
77}
78
79//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
80void DicomBeamCompensator::Print( std::ostream& )
81{
82
83}
84
85//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
86void DicomBeamCompensator::DumpToFile( std::ofstream& fout )
87{
88 std::string name = ":P COMP_" +G4UIcommand::ConvertToString(theCompensatorNumber) + "_";
89 fout << name << "PixelSpacing_1 " << theCompensatorPixelSpacing[0] << G4endl;
90 fout << name << "PixelSpacing_2 " << theCompensatorPixelSpacing[1] << G4endl;
91
92 fout << name << "POSX " << theCompensatorPosition[0] << G4endl;
93 fout << name << "POSY " << theCompensatorPosition[1] << G4endl;
94
95 fout << name << "SourceToCompensatorTrayDistance " << theSourceToCompensatorTrayDistance <<G4endl;
96
97 for( size_t ii = 0; ii < theSourceToCompensatorDistance.size(); ii++ ) {
98 int iCol = ii%theCompensatorColumns;
99 int iRow = ii/theCompensatorColumns;
100 fout << name << "SourceToCompensatorDistance_" +G4UIcommand::ConvertToString(iRow) + "_"
101 + G4UIcommand::ConvertToString(iCol) << " " << theSourceToCompensatorDistance[ii] << G4endl;
102 }
103
104 /* for( size_t ii = 0; ii < theCompensatorTransmissionData.size(); ii++ ) {
105 int iCol = ii%theCompensatorColumns;
106 int iRow = ii/theCompensatorColumns;
107 fout << name << "Transmission_" +G4UIcommand::ConvertToString(iRow) + "_"
108 +G4UIcommand::ConvertToString(iCol) << " " << theCompensatorTransmissionData[ii] << G4endl;
109 }
110
111 for( size_t ii = 0; ii < theCompensatorThicknessData.size(); ii++ ) {
112 int iCol = ii%theCompensatorColumns;
113 int iRow = ii/theCompensatorColumns;
114 fout << name << "Thickness_" +G4UIcommand::ConvertToString(iRow) + "_"
115 +G4UIcommand::ConvertToString(iCol) << " " << theCompensatorThicknessData[ii] << G4endl;
116 }
117 */
118}
OFVector< Float64 > theCompensatorPixelSpacing
OFVector< Float64 > theCompensatorTransmissionData
DicomBeamCompensator(DRTCompensatorSequence::Item bcompItem)
OFVector< Float64 > theSourceToCompensatorDistance
OFVector< Float64 > theCompensatorPosition
OFVector< Float64 > theCompensatorThicknessData
void DumpToFile(std::ofstream &out)
void Print(std::ostream &out)

Applications | User Support | Publications | Collaboration