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

Applications | User Support | Publications | Collaboration