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 CellParameterisation 48 (G4Material* nucleus1, G4Material* cytopla << 48 (G4int NoBoxes, G4float DimBoxX, G4float DimBoxY, G4float DimBoxZ, >> 49 G4Material* nucleus1, G4Material* cytoplasm1, 49 G4Material* nucleus2, G4Material* cytopla 50 G4Material* nucleus2, G4Material* cytoplasm2, 50 G4Material* nucleus3, G4Material* cytopla 51 G4Material* nucleus3, G4Material* cytoplasm3 51 ); 52 ); 52 53 53 ~CellParameterisation() override; << 54 virtual ~CellParameterisation(); 54 55 55 void ComputeTransformation (const G4int co << 56 void ComputeTransformation (const G4int copyNo,G4VPhysicalVolume* physVol) const; 56 57 57 void ComputeDimensions(G4Box&, 58 void ComputeDimensions(G4Box&, 58 const G4int, 59 const G4int, 59 const G4VPhysicalVolume* ) const ove << 60 const G4VPhysicalVolume* ) const; 60 61 61 void ComputeDimensions(G4Tubs &, 62 void ComputeDimensions(G4Tubs &, 62 const G4int 63 const G4int, 63 const G4VPh << 64 const G4VPhysicalVolume *) const {} 64 65 65 void ComputeDimensions(G4Trd &, 66 void ComputeDimensions(G4Trd &, 66 const G4int 67 const G4int, 67 const G4VPh << 68 const G4VPhysicalVolume *) const {} 68 69 69 void ComputeDimensions(G4Trap &, 70 void ComputeDimensions(G4Trap &, 70 const G4int 71 const G4int, 71 const G4VPh << 72 const G4VPhysicalVolume *) const {} 72 73 73 void ComputeDimensions(G4Cons &, 74 void ComputeDimensions(G4Cons &, 74 const G4int 75 const G4int, 75 const G4VPh << 76 const G4VPhysicalVolume *) const {} 76 77 77 void ComputeDimensions(G4Sphere &, 78 void ComputeDimensions(G4Sphere &, 78 const G4int 79 const G4int, 79 const G4VPh << 80 const G4VPhysicalVolume *) const {} 80 81 81 void ComputeDimensions(G4Ellipsoid &, 82 void ComputeDimensions(G4Ellipsoid &, 82 const G4int 83 const G4int, 83 const G4VPh << 84 const G4VPhysicalVolume *) const {} 84 85 85 void ComputeDimensions(G4Orb &, 86 void ComputeDimensions(G4Orb &, 86 const G4int 87 const G4int, 87 const G4VPh << 88 const G4VPhysicalVolume *) const {} 88 89 89 void ComputeDimensions(G4Torus &, 90 void ComputeDimensions(G4Torus &, 90 const G4int 91 const G4int, 91 const G4VPh << 92 const G4VPhysicalVolume *) const {} 92 93 93 void ComputeDimensions(G4Para &, 94 void ComputeDimensions(G4Para &, 94 const G4int 95 const G4int, 95 const G4VPh << 96 const G4VPhysicalVolume *) const {} 96 97 97 void ComputeDimensions(G4Polycone &, 98 void ComputeDimensions(G4Polycone &, 98 const G4int 99 const G4int, 99 const G4VPh << 100 const G4VPhysicalVolume *) const {} 100 101 101 void ComputeDimensions(G4Polyhedra &, 102 void ComputeDimensions(G4Polyhedra &, 102 const G4int 103 const G4int, 103 const G4VPh << 104 const G4VPhysicalVolume *) const {} 104 105 105 void ComputeDimensions(G4Hype &, 106 void ComputeDimensions(G4Hype &, 106 const G4int 107 const G4int, 107 const G4VPh << 108 const G4VPhysicalVolume *) const {} 108 109 109 G4int GetNoBoxes() const {return fPhantomT << 110 G4int GetNoBoxes() {return fNoCellBoxes;} 110 111 111 G4Material* ComputeMaterial(const G4int co 112 G4Material* ComputeMaterial(const G4int copyNo, 112 G4VPhysi 113 G4VPhysicalVolume* physVol, 113 const G4VTouch << 114 const G4VTouchable*); 114 115 115 // NEW << 116 << 117 G4int GetPhantomTotalPixels() const {r << 118 G4int GetNucleusTotalPixels() const {r << 119 G4int GetCytoplasmTotalPixels() const {r << 120 G4double GetPixelSizeX() const {r << 121 G4double GetPixelSizeY() const {r << 122 G4double GetPixelSizeZ() const {r << 123 G4double GetCytoplasmMass() const {r << 124 G4double GetNucleusMass() const {r << 125 << 126 G4ThreeVector GetVoxelThreeVector(G4int i) << 127 G4double GetMaterialVector(G4int i) << 128 G4double GetMassVector(G4int i) << 129 G4int GetTissueType(G4int i) << 130 << 131 // SINGLETON << 132 << 133 static CellParameterisation * Instance() << 134 { << 135 return gInstance; << 136 } << 137 << 138 private: 116 private: 139 static CellParameterisation* gInstance; << 117 140 << 118 G4int fNoCellBoxes; >> 119 G4float fDimCellBoxX; >> 120 G4float fDimCellBoxY; >> 121 G4float fDimCellBoxZ; >> 122 141 G4Material * fNucleusMaterial1; 123 G4Material * fNucleusMaterial1; 142 G4Material * fCytoplasmMaterial1; 124 G4Material * fCytoplasmMaterial1; 143 G4Material * fNucleusMaterial2; 125 G4Material * fNucleusMaterial2; 144 G4Material * fCytoplasmMaterial2; 126 G4Material * fCytoplasmMaterial2; 145 G4Material * fNucleusMaterial3; 127 G4Material * fNucleusMaterial3; 146 G4Material * fCytoplasmMaterial3; 128 G4Material * fCytoplasmMaterial3; 147 129 148 G4VisAttributes * fNucleusAttributes1; 130 G4VisAttributes * fNucleusAttributes1; 149 G4VisAttributes * fCytoplasmAttributes1; 131 G4VisAttributes * fCytoplasmAttributes1; 150 G4VisAttributes * fNucleusAttributes2; 132 G4VisAttributes * fNucleusAttributes2; 151 G4VisAttributes * fCytoplasmAttributes2; 133 G4VisAttributes * fCytoplasmAttributes2; 152 G4VisAttributes * fNucleusAttributes3; 134 G4VisAttributes * fNucleusAttributes3; 153 G4VisAttributes * fCytoplasmAttributes3; 135 G4VisAttributes * fCytoplasmAttributes3; 154 136 155 G4ThreeVector * fMapCell; // VOXEL COOR << 137 G4ThreeVector * fMapCell ; // VOXEL COORDINATES 156 << 138 G4float * fMaterial ; // MATERIAL 157 G4double * fMaterial; // MATERIAL << 139 G4float * fMass ; // DENSITY REGION 158 G4double * fMass; // DENSITY RE << 140 159 G4double fDimCellBoxX; << 160 G4double fDimCellBoxY; << 161 G4double fDimCellBoxZ; << 162 G4double fNucleusMass; << 163 G4double fCytoplasmMass; << 164 << 165 G4int * fTissueType; // DENSITY RE << 166 G4int fPhantomTotalPixels; << 167 G4int fNucleusTotalPixels; << 168 G4int fCytoplasmTotalPixels; << 169 }; 141 }; >> 142 170 #endif 143 #endif 171 144 172 145 173 146