Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/medical/DICOM/dicomReader/src/DicomBeamCompensator.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 //
 26 #include "DicomBeamCompensator.hh"
 27 
 28 #include "dcmtk/dcmrt/seq/drtcos.h"
 29 
 30 #include "G4UIcommand.hh"
 31 
 32 // DOC at https://www.dabsoft.ch/dicom/3/C.8.8.14/
 33 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 34 DicomBeamCompensator::DicomBeamCompensator(DRTCompensatorSequence::Item bcompItem)
 35 {
 36   OFString fstr;
 37   Sint32 fint;
 38   Float64 ffloat;
 39   OFVector<Float64> fvfloat;
 40   OFCondition cond;
 41   G4cout << " DicomBeamCompensator::DicomBeamCompensator " << G4endl;
 42   cond = bcompItem.getCompensatorNumber(fint);
 43   theCompensatorNumber = fint;
 44   G4cout << " Number " << fint << G4endl;
 45 
 46   cond = bcompItem.getCompensatorColumns(fint);
 47   theCompensatorColumns = fint;
 48   cond = bcompItem.getCompensatorRows(fint);
 49   theCompensatorRows = fint;
 50   //  first value is the spacing between the center of adjacent rows, and the second value
 51   // (column spacing) is the spacing between the center of adjacent columns.
 52   cond = bcompItem.getCompensatorPixelSpacing(fvfloat);
 53   theCompensatorPixelSpacing = fvfloat;
 54 
 55   cond = bcompItem.getCompensatorPosition(fvfloat);
 56   theCompensatorPosition = fvfloat;
 57 
 58   cond = bcompItem.getCompensatorTransmissionData(fvfloat);
 59   if (cond.good()) theCompensatorTransmissionData = fvfloat;
 60   cond = bcompItem.getCompensatorThicknessData(fvfloat);
 61   if (cond.good()) theCompensatorThicknessData = fvfloat;
 62 
 63   cond = bcompItem.getCompensatorTrayID(fstr);
 64   cond = bcompItem.getCompensatorType(fstr);
 65 
 66   cond = bcompItem.getMaterialID(fstr);
 67   if (cond.good()) theMaterialID = fstr;
 68   cond = bcompItem.getSourceToCompensatorDistance(fvfloat);
 69   if (cond.good()) theSourceToCompensatorDistance = fvfloat;
 70   cond = bcompItem.getSourceToCompensatorTrayDistance(ffloat);
 71   theSourceToCompensatorTrayDistance = ffloat;
 72 
 73   cond = bcompItem.getCompensatorDescription(fstr);
 74   cond = bcompItem.getCompensatorDivergence(fstr);
 75   cond = bcompItem.getCompensatorID(fstr);
 76   cond = bcompItem.getCompensatorMountingPosition(fstr);
 77   cond = bcompItem.getAccessoryCode(fstr);
 78 }
 79 
 80 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 81 void DicomBeamCompensator::Print(std::ostream&) {}
 82 
 83 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 84 void DicomBeamCompensator::DumpToFile(std::ofstream& fout)
 85 {
 86   std::string name = ":P COMP_" + G4UIcommand::ConvertToString(theCompensatorNumber) + "_";
 87   fout << name << "PixelSpacing_1 " << theCompensatorPixelSpacing[0] << G4endl;
 88   fout << name << "PixelSpacing_2 " << theCompensatorPixelSpacing[1] << G4endl;
 89 
 90   fout << name << "POSX " << theCompensatorPosition[0] << G4endl;
 91   fout << name << "POSY " << theCompensatorPosition[1] << G4endl;
 92 
 93   fout << name << "SourceToCompensatorTrayDistance " << theSourceToCompensatorTrayDistance
 94        << G4endl;
 95 
 96   for (size_t ii = 0; ii < theSourceToCompensatorDistance.size(); ii++) {
 97     int iCol = ii % theCompensatorColumns;
 98     int iRow = ii / theCompensatorColumns;
 99     fout << name
100          << "SourceToCompensatorDistance_" + G4UIcommand::ConvertToString(iRow) + "_"
101               + G4UIcommand::ConvertToString(iCol)
102          << " " << theSourceToCompensatorDistance[ii] << G4endl;
103   }
104 
105   /*  for( size_t ii = 0; ii < theCompensatorTransmissionData.size(); ii++ ) {
106     int iCol = ii%theCompensatorColumns;
107     int iRow = ii/theCompensatorColumns;
108     fout << name << "Transmission_" +G4UIcommand::ConvertToString(iRow) + "_"
109        +G4UIcommand::ConvertToString(iCol) << " " << theCompensatorTransmissionData[ii] << G4endl;
110   }
111 
112   for( size_t ii = 0; ii < theCompensatorThicknessData.size(); ii++ ) {
113     int iCol = ii%theCompensatorColumns;
114     int iRow = ii/theCompensatorColumns;
115     fout << name << "Thickness_" +G4UIcommand::ConvertToString(iRow) + "_"
116   +G4UIcommand::ConvertToString(iCol) << " " << theCompensatorThicknessData[ii] << G4endl;
117   }
118   */
119 }
120