Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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......
35 DicomVFile::DicomVFile(DcmDataset* dset) : theDataset(dset)
36 {
37 }
38 
39 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
40 std::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  "",
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......
71 OFString 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  "",
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 std::vector< G4double > Read1Data(DcmDataset *dset, DcmTagKey tagKey, G4int nData)
Definition: DicomVFile.cc:40
int G4int
Definition: G4Types.hh:78
const XML_Char const XML_Char * data
Definition: expat.h:268
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
double G4double
Definition: G4Types.hh:76
virtual OFString Read1DataStr(DcmDataset *dset, DcmTagKey tagKey)
Definition: DicomVFile.cc:71