Geant4 Cross Reference |
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 DicomFileMgr__HH 27 #define DicomFileMgr__HH 28 #include "dcmtk/dcmdata/dcfilefo.h" 29 30 #include "globals.hh" 31 32 #include <map> 33 #include <vector> 34 class DicomVFile; 35 class DicomFileCT; 36 class DicomFileStructure; 37 class DicomFilePlan; 38 class DicomFilePET; 39 class DcmDataset; 40 41 // typedef std::multimap<OFString,DicomVFile*> msd; 42 typedef std::map<G4double, DicomFileCT*> mdct; 43 typedef std::map<G4double, DicomFilePET*> mdpet; 44 enum VerbLevel 45 { 46 silentVerb = -1, 47 errorVerb = 0, 48 warningVerb = 1, 49 infoVerb = 2, 50 debugVerb = 3, 51 testVerb = 4 52 }; 53 54 class DicomFileMgr 55 { 56 public: 57 static DicomFileMgr* GetInstance(); 58 ~DicomFileMgr() {}; 59 60 private: 61 DicomFileMgr(); 62 63 public: 64 std::vector<DicomFileStructure*> GetStructFiles() const { return theStructFiles; } 65 66 void SetCompression(G4String fComp); 67 void AddFile(G4String fComp); 68 void AddMaterial(std::vector<G4String> data); 69 void AddMaterialDensity(std::vector<G4String> data); 70 void AddCT2Density(std::vector<G4String> data); 71 72 void Convert(G4String fFileName); 73 void CheckNColumns(std::vector<G4String> wl, size_t vsizeTh); 74 void ProcessFiles(); 75 void CheckCTSlices(); 76 G4double Hounsfield2density(Uint32 Hval); 77 size_t GetMaterialIndex(G4double Hval); 78 size_t GetMaterialIndexByDensity(G4double density); 79 void BuildCTMaterials(); 80 void MergeCTFiles(); 81 void CheckPETSlices(); 82 void BuildPETActivities(); 83 void MergePETFiles(); 84 void DumpToTextFile(); 85 void SetStructureNCheck(G4int nsc) { theStructureNCheck = nsc; } 86 G4int GetStructureNCheck() const { return theStructureNCheck; } 87 void SetStructureNMaxROI(G4int nsc) { theStructureNMaxROI = nsc; } 88 G4int GetStructureNMaxROI() const { return theStructureNMaxROI; } 89 G4int GetCompression() const { return fCompression; } 90 G4String GetFileOutName() const { return theFileOutName; } 91 92 void SetControlPointMetersets(); 93 G4bool IsMaterialsDensity() const { return bMaterialsDensity; } 94 95 protected: 96 G4int fCompression; 97 98 private: 99 static DicomFileMgr* theInstance; 100 101 G4String theFileOutName; 102 // msd theFiles; 103 mdct theCTFiles; 104 std::vector<DicomFileStructure*> theStructFiles; 105 std::vector<DicomFilePlan*> thePlanFiles; 106 mdpet thePETFiles; 107 std::map<G4double, G4String> theMaterials; 108 std::map<G4double, G4String> theMaterialsDensity; 109 std::map<G4int, G4double> theCT2Density; 110 111 DicomFileCT* theCTFileAll; 112 DicomFilePET* thePETFileAll; 113 G4int theStructureNCheck; 114 G4int theStructureNMaxROI; 115 116 public: 117 static G4int verbose; 118 G4bool bMaterialsDensity; 119 }; 120 121 #endif 122