Loading...
Searching...
No Matches
DicomVFileImage.hh
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//
26#ifndef DicomVFileImage__HH
27#define DicomVFileImage__HH
28
29#include "DicomVFile.hh"
30#include "DicomFileMgr.hh"
31#include "G4ThreeVector.hh"
32
33class DicomVFileImage : public DicomVFile
34{
35public:
37 DicomVFileImage(DcmDataset* dset);
39
40public:
41 virtual void ReadData();
42
43 void operator+=( const DicomVFileImage& rhs );
45 // add two slices that have the same dimensions, merging them in Z
46
47 void DumpHeaderToTextFile(std::ofstream& fout);
48
49 // Get and set methods
50 G4int GetNoVoxelsX() const { return fNoVoxelsX; };
51 G4int GetNoVoxelsY() const { return fNoVoxelsY; };
52 G4int GetNoVoxelsZ() const { return fNoVoxelsZ; };
53 G4int GetNoVoxels() const { return fNoVoxelsX*fNoVoxelsY*fNoVoxelsZ; };
54
55 G4double GetMinX() const { return fMinX; };
56 G4double GetMinY() const { return fMinY; };
57 G4double GetMinZ() const { return fMinZ; };
58 G4double GetMaxX() const { return fMaxX; };
59 G4double GetMaxY() const { return fMaxY; };
60 G4double GetMaxZ() const { return fMaxZ; };
61
62 void SetNoVoxelsX(const G4int& val) { fNoVoxelsX = val; }
63 void SetNoVoxelsY(const G4int& val) { fNoVoxelsY = val; }
64 void SetNoVoxelsZ(const G4int& val) { fNoVoxelsZ = val; }
65
66 void SetMinX(const G4double& val) { fMinX = val; };
67 void SetMaxX(const G4double& val) { fMaxX = val; };
68 void SetMinY(const G4double& val) { fMinY = val; };
69 void SetMaxY(const G4double& val) { fMaxY = val; };
70 void SetMinZ(const G4double& val) { fMinZ = val; };
71 void SetMaxZ(const G4double& val) { fMaxZ = val; };
72
73 const G4double& GetLocation() const { return fLocation; }
74
75 void SetLocation(const G4double& val) { fLocation = val; }
76
77 G4ThreeVector GetOrientationRows() const { return fOrientationRows; }
78 G4ThreeVector GetOrientationColumns() const { return fOrientationColumns; }
79
80private:
81 template <typename T> inline bool CheckConsistency(const T&, const T&, G4String);
82
83 void ReadPixelData();
84 void Print( std::ostream& out );
85
86protected:
87 G4double fLocation;
88 G4double fBitAllocated;
89 G4double fRescaleSlope;
91
92 G4int fNoVoxelsX, fNoVoxelsY, fNoVoxelsZ; // number of voxels in each dimensions
93 G4double fMinX,fMinY,fMinZ; // minimum extension of voxels (position of wall)
94 G4double fMaxX,fMaxY,fMaxZ; // maximum extension of voxels (position of wall)
95 G4double fVoxelDimX,fVoxelDimY,fVoxelDimZ; // maximum extension of voxels (position of wall)
96
97 G4ThreeVector fOrientationRows;
98 G4ThreeVector fOrientationColumns;
99
100 std::vector<int> fHounsfieldV;
101
103};
104
105//============================================================================
106template <typename T>
107inline bool DicomVFileImage::CheckConsistency(const T& val1, const T& val2,
108 G4String category) {
109 if(val1 != val2) {
110 G4Exception("DicomVFileImager::CheckConsistency",
111 "Consistency Mismatch : Keeping previous value if nonzero",
112 JustWarning, category.c_str());
113 return false;
114 }
115 return true;
116}
117
118#endif
G4ThreeVector fOrientationRows
void DumpHeaderToTextFile(std::ofstream &fout)
void SetLocation(const G4double &val)
G4int GetNoVoxels() const
G4ThreeVector GetOrientationRows() const
G4int GetNoVoxelsY() const
bool CheckConsistency(const T &, const T &, G4String)
const G4double & GetLocation() const
G4ThreeVector GetOrientationColumns() const
G4int GetNoVoxelsZ() const
void SetNoVoxelsX(const G4int &val)
G4ThreeVector fOrientationColumns
G4double fRescaleIntercept
void SetMinX(const G4double &val)
G4double GetMinY() const
virtual void ReadData()
DicomVFileImage operator+(const DicomVFileImage &rhs)
G4int GetNoVoxelsX() const
G4double GetMaxZ() const
void SetMinZ(const G4double &val)
void SetMinY(const G4double &val)
G4double GetMaxX() const
G4double GetMinZ() const
G4double GetMinX() const
void SetNoVoxelsY(const G4int &val)
void SetNoVoxelsZ(const G4int &val)
void SetMaxZ(const G4double &val)
DicomFileMgr * theFileMgr
G4double GetMaxY() const
void SetMaxX(const G4double &val)
void Print(std::ostream &out)
std::vector< int > fHounsfieldV
void SetMaxY(const G4double &val)
void operator+=(const DicomVFileImage &rhs)

Applications | User Support | Publications | Collaboration