Loading...
Searching...
No Matches
DicomVFile.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//
26#include "DicomVFile.hh"
27
28#include "dcmtk/dcmdata/dcfilefo.h"
29#include "dcmtk/dcmdata/dcdeftag.h"
30#include "dcmtk/dcmdata/dcpixel.h"
31#include "dcmtk/dcmdata/dcpxitem.h"
32#include "dcmtk/dcmdata/dcpixseq.h"
33
34//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
35DicomVFile::DicomVFile(DcmDataset* dset) : theDataset(dset)
36{
37}
38
39//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
40std::vector<G4double> DicomVFile::Read1Data( DcmDataset * dset, DcmTagKey tagKey, G4int nData )
41{
42 std::vector<G4double> dataV;
43
44 for(int ii=0; ii<nData; ++ii) {
45 G4double data;
46 Uint16 datai;
47 // see http://support.dcmtk.org/docs/classDcmItem.html for types
48 if (dset->findAndGetFloat64(tagKey, data,ii).good() ) {
49 dataV.push_back(data);
50 } else if (dset->findAndGetUint16(tagKey, datai,ii).good() ) {
51 dataV.push_back(datai);
52 } else {
53 G4cout <<"ERROR (" << std::showbase // show the 0x prefix
54 << std::internal // fill between the prefix and the number
55 << std::setfill('0') << std::hex << std::setw(4) << tagKey.getGroup()
56 << "," << tagKey.getElement() << ") "<< std::dec << ii << std::endl;
57 G4Exception("DicomHandler::ReadData",
58 "",
59 JustWarning,
60 (std::to_string(data) +G4String(" Have not read (")
61 + std::to_string(tagKey.getGroup())+","+std::to_string(tagKey.getElement())
62 +")"+" : "+std::to_string(ii)).c_str());
63 }
64 }
65
66 return dataV;
67}
68
69
70//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
71OFString DicomVFile::Read1DataStr( DcmDataset * dset, DcmTagKey tagKey )
72{
73 // const char* data = "";
74 OFString data;
75 // see http://support.dcmtk.org/docs/classDcmItem.html for types
76 if (dset->findAndGetOFString(tagKey, data).good() ) {
77 } else {
78 G4cout <<"ERROR (" << std::showbase // show the 0x prefix
79 << std::internal // fill between the prefix and the number
80 << std::setfill('0') << std::hex << std::setw(4) << tagKey.getGroup() << ","
81 << tagKey.getElement() << ") "<< std::dec << std::endl;
82 G4Exception("DicomHandler::ReadData",
83 "",
84 JustWarning,
85 (" Have not read (" + std::to_string(tagKey.getGroup())+","
86 +std::to_string(tagKey.getElement())+")"+" : ").c_str());
87 }
88
89 return data.c_str();
90}
virtual OFString Read1DataStr(DcmDataset *dset, DcmTagKey tagKey)
Definition DicomVFile.cc:71
virtual std::vector< G4double > Read1Data(DcmDataset *dset, DcmTagKey tagKey, G4int nData)
Definition DicomVFile.cc:40

Applications | User Support | Publications | Collaboration