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 // This example is provided by the Geant4-DNA collaboration 27 // Any report or published results obtained using the Geant4-DNA software 28 // shall cite the following Geant4-DNA collaboration publication: 29 // Med. Phys. 37 (2010) 4692-4708 30 // The Geant4-DNA web site is available at http://geant4-dna.org 31 // 32 // If you use this example, please cite the following publication: 33 // Rad. Prot. Dos. 133 (2009) 2-11 34 35 #ifndef CellParameterisation_H 36 #define CellParameterisation_H 1 37 38 #include "G4VPVParameterisation.hh" 39 #include "G4VisAttributes.hh" 40 41 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 42 43 class CellParameterisation : public G4VPVParameterisation 44 { 45 public: 46 47 explicit CellParameterisation 48 (G4Material* nucleus1, G4Material* cytoplasm1, 49 G4Material* nucleus2, G4Material* cytoplasm2, 50 G4Material* nucleus3, G4Material* cytoplasm3 51 ); 52 53 ~CellParameterisation() override; 54 55 void ComputeTransformation (const G4int copyNo,G4VPhysicalVolume* physVol) const override; 56 57 void ComputeDimensions(G4Box&, 58 const G4int, 59 const G4VPhysicalVolume* ) const override; 60 61 void ComputeDimensions(G4Tubs &, 62 const G4int, 63 const G4VPhysicalVolume *) const override {} 64 65 void ComputeDimensions(G4Trd &, 66 const G4int, 67 const G4VPhysicalVolume *) const override {} 68 69 void ComputeDimensions(G4Trap &, 70 const G4int, 71 const G4VPhysicalVolume *) const override {} 72 73 void ComputeDimensions(G4Cons &, 74 const G4int, 75 const G4VPhysicalVolume *) const override{} 76 77 void ComputeDimensions(G4Sphere &, 78 const G4int, 79 const G4VPhysicalVolume *) const override{} 80 81 void ComputeDimensions(G4Ellipsoid &, 82 const G4int, 83 const G4VPhysicalVolume *) const override{} 84 85 void ComputeDimensions(G4Orb &, 86 const G4int, 87 const G4VPhysicalVolume *) const override{} 88 89 void ComputeDimensions(G4Torus &, 90 const G4int, 91 const G4VPhysicalVolume *) const override{} 92 93 void ComputeDimensions(G4Para &, 94 const G4int, 95 const G4VPhysicalVolume *) const override{} 96 97 void ComputeDimensions(G4Polycone &, 98 const G4int, 99 const G4VPhysicalVolume *) const override{} 100 101 void ComputeDimensions(G4Polyhedra &, 102 const G4int, 103 const G4VPhysicalVolume *) const override{} 104 105 void ComputeDimensions(G4Hype &, 106 const G4int, 107 const G4VPhysicalVolume *) const override{} 108 109 G4int GetNoBoxes() const {return fPhantomTotalPixels;} 110 111 G4Material* ComputeMaterial(const G4int copyNo, 112 G4VPhysicalVolume* physVol, 113 const G4VTouchable*) override; 114 115 // NEW 116 117 G4int GetPhantomTotalPixels() const {return fPhantomTotalPixels;} 118 G4int GetNucleusTotalPixels() const {return fNucleusTotalPixels;} 119 G4int GetCytoplasmTotalPixels() const {return fCytoplasmTotalPixels;} 120 G4double GetPixelSizeX() const {return fDimCellBoxX;} 121 G4double GetPixelSizeY() const {return fDimCellBoxY;} 122 G4double GetPixelSizeZ() const {return fDimCellBoxZ;} 123 G4double GetCytoplasmMass() const {return fCytoplasmMass;} 124 G4double GetNucleusMass() const {return fNucleusMass;} 125 126 G4ThreeVector GetVoxelThreeVector(G4int i) const {return fMapCell[i];} 127 G4double GetMaterialVector(G4int i) const {return fMaterial[i];} 128 G4double GetMassVector(G4int i) const {return fMass[i];} 129 G4int GetTissueType(G4int i) const {return fTissueType[i];} 130 131 // SINGLETON 132 133 static CellParameterisation * Instance() 134 { 135 return gInstance; 136 } 137 138 private: 139 static CellParameterisation* gInstance; 140 141 G4Material * fNucleusMaterial1; 142 G4Material * fCytoplasmMaterial1; 143 G4Material * fNucleusMaterial2; 144 G4Material * fCytoplasmMaterial2; 145 G4Material * fNucleusMaterial3; 146 G4Material * fCytoplasmMaterial3; 147 148 G4VisAttributes * fNucleusAttributes1; 149 G4VisAttributes * fCytoplasmAttributes1; 150 G4VisAttributes * fNucleusAttributes2; 151 G4VisAttributes * fCytoplasmAttributes2; 152 G4VisAttributes * fNucleusAttributes3; 153 G4VisAttributes * fCytoplasmAttributes3; 154 155 G4ThreeVector * fMapCell; // VOXEL COORDINATES 156 157 G4double * fMaterial; // MATERIAL 158 G4double * fMass; // DENSITY REGION 159 G4double fDimCellBoxX; 160 G4double fDimCellBoxY; 161 G4double fDimCellBoxZ; 162 G4double fNucleusMass; 163 G4double fCytoplasmMass; 164 165 G4int * fTissueType; // DENSITY REGION 166 G4int fPhantomTotalPixels; 167 G4int fNucleusTotalPixels; 168 G4int fCytoplasmTotalPixels; 169 }; 170 #endif 171 172 173