File indexing completed on 2025-04-10 08:06:20
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 }