ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
DicomVFileImage.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file DicomVFileImage.hh
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
33
class
DicomVFileImage
:
public
DicomVFile
34
{
35
public
:
36
DicomVFileImage
();
37
DicomVFileImage
(DcmDataset* dset);
38
~DicomVFileImage
(){};
39
40
public
:
41
virtual
void
ReadData
();
42
43
void
operator+=
(
const
DicomVFileImage
& rhs );
44
DicomVFileImage
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
GetNoVoxelX
()
const
{
return
fNoVoxelX
; };
51
G4int
GetNoVoxelY
()
const
{
return
fNoVoxelY
; };
52
G4int
GetNoVoxelZ
()
const
{
return
fNoVoxelZ
; };
53
G4int
GetNoVoxels
()
const
{
return
fNoVoxelX
*
fNoVoxelY
*
fNoVoxelZ
; };
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
SetNoVoxelX
(
const
G4int
& val) {
fNoVoxelX
= val; }
63
void
SetNoVoxelY
(
const
G4int
& val) {
fNoVoxelY
= val; }
64
void
SetNoVoxelZ
(
const
G4int
& val) {
fNoVoxelZ
= 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
80
private
:
81
template
<
typename
T>
inline
bool
CheckConsistency
(
const
T
&,
const
T
&,
G4String
);
82
83
void
ReadPixelData
();
84
void
Print
( std::ostream& out );
85
86
protected
:
87
G4double
fLocation
;
88
G4double
fBitAllocated
;
89
G4double
fRescaleSlope
;
90
G4double
fRescaleIntercept
;
91
92
G4int
fNoVoxelX
,
fNoVoxelY
,
fNoVoxelZ
;
// 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
102
DicomFileMgr
*
theFileMgr
;
103
};
104
105
//============================================================================
106
template
<
typename
T>
107
inline
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
geant4
tree
geant4-10.6-release
examples
extended
medical
DICOM
dicomReader
include
DicomVFileImage.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:07
using
1.8.2 with
ECCE GitHub integration