Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // This example is provided by the Geant4-DNA 26 // This example is provided by the Geant4-DNA collaboration 27 // Any report or published results obtained us 27 // Any report or published results obtained using the Geant4-DNA software 28 // shall cite the following Geant4-DNA collabo 28 // shall cite the following Geant4-DNA collaboration publication: 29 // Med. Phys. 37 (2010) 4692-4708 29 // Med. Phys. 37 (2010) 4692-4708 30 // The Geant4-DNA web site is available at htt 30 // The Geant4-DNA web site is available at http://geant4-dna.org 31 // 31 // 32 // If you use this example, please cite the fo 32 // If you use this example, please cite the following publication: 33 // Rad. Prot. Dos. 133 (2009) 2-11 33 // Rad. Prot. Dos. 133 (2009) 2-11 34 34 35 #ifndef CellParameterisation_H 35 #ifndef CellParameterisation_H 36 #define CellParameterisation_H 1 36 #define CellParameterisation_H 1 37 37 38 #include "G4VPVParameterisation.hh" 38 #include "G4VPVParameterisation.hh" 39 #include "G4VisAttributes.hh" 39 #include "G4VisAttributes.hh" 40 40 41 //....oooOO0OOooo........oooOO0OOooo........oo 41 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 42 42 43 class CellParameterisation : public G4VPVParam 43 class CellParameterisation : public G4VPVParameterisation 44 { 44 { 45 public: 45 public: 46 46 47 explicit CellParameterisation 47 explicit CellParameterisation 48 (G4Material* nucleus1, G4Material* cytopla 48 (G4Material* nucleus1, G4Material* cytoplasm1, 49 G4Material* nucleus2, G4Material* cytopla 49 G4Material* nucleus2, G4Material* cytoplasm2, 50 G4Material* nucleus3, G4Material* cytopla 50 G4Material* nucleus3, G4Material* cytoplasm3 51 ); 51 ); 52 52 53 ~CellParameterisation() override; 53 ~CellParameterisation() override; 54 54 55 void ComputeTransformation (const G4int co 55 void ComputeTransformation (const G4int copyNo,G4VPhysicalVolume* physVol) const override; 56 56 57 void ComputeDimensions(G4Box&, 57 void ComputeDimensions(G4Box&, 58 const G4int, 58 const G4int, 59 const G4VPhysicalVolume* ) const ove 59 const G4VPhysicalVolume* ) const override; 60 60 61 void ComputeDimensions(G4Tubs &, 61 void ComputeDimensions(G4Tubs &, 62 const G4int 62 const G4int, 63 const G4VPh 63 const G4VPhysicalVolume *) const override {} 64 64 65 void ComputeDimensions(G4Trd &, 65 void ComputeDimensions(G4Trd &, 66 const G4int 66 const G4int, 67 const G4VPh 67 const G4VPhysicalVolume *) const override {} 68 68 69 void ComputeDimensions(G4Trap &, 69 void ComputeDimensions(G4Trap &, 70 const G4int 70 const G4int, 71 const G4VPh 71 const G4VPhysicalVolume *) const override {} 72 72 73 void ComputeDimensions(G4Cons &, 73 void ComputeDimensions(G4Cons &, 74 const G4int 74 const G4int, 75 const G4VPh 75 const G4VPhysicalVolume *) const override{} 76 76 77 void ComputeDimensions(G4Sphere &, 77 void ComputeDimensions(G4Sphere &, 78 const G4int 78 const G4int, 79 const G4VPh 79 const G4VPhysicalVolume *) const override{} 80 80 81 void ComputeDimensions(G4Ellipsoid &, 81 void ComputeDimensions(G4Ellipsoid &, 82 const G4int 82 const G4int, 83 const G4VPh 83 const G4VPhysicalVolume *) const override{} 84 84 85 void ComputeDimensions(G4Orb &, 85 void ComputeDimensions(G4Orb &, 86 const G4int 86 const G4int, 87 const G4VPh 87 const G4VPhysicalVolume *) const override{} 88 88 89 void ComputeDimensions(G4Torus &, 89 void ComputeDimensions(G4Torus &, 90 const G4int 90 const G4int, 91 const G4VPh 91 const G4VPhysicalVolume *) const override{} 92 92 93 void ComputeDimensions(G4Para &, 93 void ComputeDimensions(G4Para &, 94 const G4int 94 const G4int, 95 const G4VPh 95 const G4VPhysicalVolume *) const override{} 96 96 97 void ComputeDimensions(G4Polycone &, 97 void ComputeDimensions(G4Polycone &, 98 const G4int 98 const G4int, 99 const G4VPh 99 const G4VPhysicalVolume *) const override{} 100 100 101 void ComputeDimensions(G4Polyhedra &, 101 void ComputeDimensions(G4Polyhedra &, 102 const G4int 102 const G4int, 103 const G4VPh 103 const G4VPhysicalVolume *) const override{} 104 104 105 void ComputeDimensions(G4Hype &, 105 void ComputeDimensions(G4Hype &, 106 const G4int 106 const G4int, 107 const G4VPh 107 const G4VPhysicalVolume *) const override{} 108 108 109 G4int GetNoBoxes() const {return fPhantomT 109 G4int GetNoBoxes() const {return fPhantomTotalPixels;} 110 110 111 G4Material* ComputeMaterial(const G4int co 111 G4Material* ComputeMaterial(const G4int copyNo, 112 G4VPhysi 112 G4VPhysicalVolume* physVol, 113 const G4VTouch 113 const G4VTouchable*) override; 114 114 115 // NEW 115 // NEW 116 116 117 G4int GetPhantomTotalPixels() const {r 117 G4int GetPhantomTotalPixels() const {return fPhantomTotalPixels;} 118 G4int GetNucleusTotalPixels() const {r 118 G4int GetNucleusTotalPixels() const {return fNucleusTotalPixels;} 119 G4int GetCytoplasmTotalPixels() const {r 119 G4int GetCytoplasmTotalPixels() const {return fCytoplasmTotalPixels;} 120 G4double GetPixelSizeX() const {r 120 G4double GetPixelSizeX() const {return fDimCellBoxX;} 121 G4double GetPixelSizeY() const {r 121 G4double GetPixelSizeY() const {return fDimCellBoxY;} 122 G4double GetPixelSizeZ() const {r 122 G4double GetPixelSizeZ() const {return fDimCellBoxZ;} 123 G4double GetCytoplasmMass() const {r 123 G4double GetCytoplasmMass() const {return fCytoplasmMass;} 124 G4double GetNucleusMass() const {r 124 G4double GetNucleusMass() const {return fNucleusMass;} 125 125 126 G4ThreeVector GetVoxelThreeVector(G4int i) 126 G4ThreeVector GetVoxelThreeVector(G4int i) const {return fMapCell[i];} 127 G4double GetMaterialVector(G4int i) 127 G4double GetMaterialVector(G4int i) const {return fMaterial[i];} 128 G4double GetMassVector(G4int i) 128 G4double GetMassVector(G4int i) const {return fMass[i];} 129 G4int GetTissueType(G4int i) 129 G4int GetTissueType(G4int i) const {return fTissueType[i];} 130 130 131 // SINGLETON 131 // SINGLETON 132 132 133 static CellParameterisation * Instance() 133 static CellParameterisation * Instance() 134 { 134 { 135 return gInstance; 135 return gInstance; 136 } 136 } 137 137 138 private: 138 private: 139 static CellParameterisation* gInstance; 139 static CellParameterisation* gInstance; 140 140 141 G4Material * fNucleusMaterial1; 141 G4Material * fNucleusMaterial1; 142 G4Material * fCytoplasmMaterial1; 142 G4Material * fCytoplasmMaterial1; 143 G4Material * fNucleusMaterial2; 143 G4Material * fNucleusMaterial2; 144 G4Material * fCytoplasmMaterial2; 144 G4Material * fCytoplasmMaterial2; 145 G4Material * fNucleusMaterial3; 145 G4Material * fNucleusMaterial3; 146 G4Material * fCytoplasmMaterial3; 146 G4Material * fCytoplasmMaterial3; 147 147 148 G4VisAttributes * fNucleusAttributes1; 148 G4VisAttributes * fNucleusAttributes1; 149 G4VisAttributes * fCytoplasmAttributes1; 149 G4VisAttributes * fCytoplasmAttributes1; 150 G4VisAttributes * fNucleusAttributes2; 150 G4VisAttributes * fNucleusAttributes2; 151 G4VisAttributes * fCytoplasmAttributes2; 151 G4VisAttributes * fCytoplasmAttributes2; 152 G4VisAttributes * fNucleusAttributes3; 152 G4VisAttributes * fNucleusAttributes3; 153 G4VisAttributes * fCytoplasmAttributes3; 153 G4VisAttributes * fCytoplasmAttributes3; 154 154 155 G4ThreeVector * fMapCell; // VOXEL COOR 155 G4ThreeVector * fMapCell; // VOXEL COORDINATES 156 156 157 G4double * fMaterial; // MATERIAL 157 G4double * fMaterial; // MATERIAL 158 G4double * fMass; // DENSITY RE 158 G4double * fMass; // DENSITY REGION 159 G4double fDimCellBoxX; 159 G4double fDimCellBoxX; 160 G4double fDimCellBoxY; 160 G4double fDimCellBoxY; 161 G4double fDimCellBoxZ; 161 G4double fDimCellBoxZ; 162 G4double fNucleusMass; 162 G4double fNucleusMass; 163 G4double fCytoplasmMass; 163 G4double fCytoplasmMass; 164 164 165 G4int * fTissueType; // DENSITY RE 165 G4int * fTissueType; // DENSITY REGION 166 G4int fPhantomTotalPixels; 166 G4int fPhantomTotalPixels; 167 G4int fNucleusTotalPixels; 167 G4int fNucleusTotalPixels; 168 G4int fCytoplasmTotalPixels; 168 G4int fCytoplasmTotalPixels; 169 }; 169 }; 170 #endif 170 #endif 171 171 172 172 173 173