Warning, file /geant4/examples/extended/medical/DICOM/G4DicomReader/src/DicomVFile.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #include "DicomVFile.hh"
0027
0028 #include "dcmtk/dcmdata/dcdeftag.h"
0029 #include "dcmtk/dcmdata/dcfilefo.h"
0030 #include "dcmtk/dcmdata/dcpixel.h"
0031 #include "dcmtk/dcmdata/dcpixseq.h"
0032 #include "dcmtk/dcmdata/dcpxitem.h"
0033
0034
0035 DicomVFile::DicomVFile(DcmDataset* dset) : theDataset(dset) {}
0036
0037
0038 std::vector<G4double> DicomVFile::Read1Data(DcmDataset* dset, DcmTagKey tagKey, G4int nData)
0039 {
0040 std::vector<G4double> dataV;
0041
0042 for (int ii = 0; ii < nData; ++ii) {
0043 G4double data;
0044 Uint16 datai;
0045
0046 if (dset->findAndGetFloat64(tagKey, data, ii).good()) {
0047 dataV.push_back(data);
0048 }
0049 else if (dset->findAndGetUint16(tagKey, datai, ii).good()) {
0050 dataV.push_back(datai);
0051 }
0052 else {
0053 G4cout << "ERROR (" << std::showbase
0054 << std::internal
0055 << std::setfill('0') << std::hex << std::setw(4) << tagKey.getGroup() << ","
0056 << tagKey.getElement() << ") " << std::dec << ii << std::endl;
0057 G4Exception("DicomHandler::ReadData", "", JustWarning,
0058 (std::to_string(data) + G4String(" Have not read (")
0059 + std::to_string(tagKey.getGroup()) + "," + std::to_string(tagKey.getElement())
0060 + ")" + " : " + std::to_string(ii))
0061 .c_str());
0062 }
0063 }
0064
0065 return dataV;
0066 }
0067
0068
0069 OFString DicomVFile::Read1DataStr(DcmDataset* dset, DcmTagKey tagKey)
0070 {
0071
0072 OFString data;
0073
0074 if (dset->findAndGetOFString(tagKey, data).good()) {
0075 }
0076 else {
0077 G4cout << "ERROR (" << std::showbase
0078 << std::internal
0079 << std::setfill('0') << std::hex << std::setw(4) << tagKey.getGroup() << ","
0080 << tagKey.getElement() << ") " << std::dec << std::endl;
0081 G4Exception("DicomHandler::ReadData", "", JustWarning,
0082 (" Have not read (" + std::to_string(tagKey.getGroup()) + ","
0083 + std::to_string(tagKey.getElement()) + ")" + " : ")
0084 .c_str());
0085 }
0086
0087 return data.c_str();
0088 }