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 // -------------------------------------------------------------------------------- 27 // MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES 28 // 29 // Authors and contributors: 30 // P. Barberet, S. Incerti, N. H. Tran, L. Morelli 31 // 32 // University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France 33 // 34 // If you use this code, please cite the following publication: 35 // P. Barberet et al., 36 // "Monte-Carlo dosimetry on a realistic cell monolayer 37 // geometry exposed to alpha particles." 38 // Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189 39 // doi: 110.1088/0031-9155/57/8/2189 40 // -------------------------------------------------------------------------------- 41 42 #ifndef CellParameterisation_H 43 #define CellParameterisation_H 1 44 45 #include "G4VPVParameterisation.hh" 46 #include "G4VPhysicalVolume.hh" 47 #include "G4LogicalVolume.hh" 48 #include "G4VisAttributes.hh" 49 #include "G4SystemOfUnits.hh" 50 51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 52 53 class CellParameterisation : public G4VPVParameterisation 54 { 55 public: 56 57 explicit CellParameterisation 58 (G4String fileName, 59 G4Material *RedMat, G4Material *GreenMat, G4Material *BlueMat, 60 G4double shiftX, G4double shiftY, G4double shiftZ); 61 62 ~CellParameterisation() override; 63 64 void ComputeTransformation 65 (const G4int copyNo, G4VPhysicalVolume *physVol) const override; 66 67 G4Material *ComputeMaterial (const G4int copyNo, 68 G4VPhysicalVolume *physVol, 69 const G4VTouchable *) override; 70 71 inline auto GetPhantomTotalPixels() const { return fPhantomTotalPixels; } 72 73 inline auto GetRedTotalPixels() const { return fRedTotalPixels; } 74 inline auto GetGreenTotalPixels() const { return fGreenTotalPixels; } 75 inline auto GetBlueTotalPixels() const { return fBlueTotalPixels; } 76 77 inline auto GetPixelSizeX() const { return fDimCellBoxX; } 78 inline auto GetPixelSizeY() const { return fDimCellBoxY; } 79 inline auto GetPixelSizeZ() const { return fDimCellBoxZ; } 80 81 inline auto GetRedMass() const { return fRedMass; } 82 inline auto GetGreenMass() const { return fGreenMass; } 83 inline auto GetBlueMass() const { return fBlueMass; } 84 85 inline auto GetVoxelThreeVector(G4int i) const { return fMapCell[i]; } 86 inline auto GetVoxelThreeVectorPixel(G4int i) const { return fMapCellPxl[i]; } 87 inline auto GetVoxelThreeVectorOriginal(G4int i) const { return fMapCellOriginal[i]; } 88 89 inline auto GetMaterial(G4int i) const { return fMaterial[i]; } 90 91 // Singleton 92 static CellParameterisation *Instance() 93 { 94 return gInstance; 95 } 96 97 private: 98 99 void Initialize(const G4String&); 100 101 static CellParameterisation *gInstance; 102 103 G4double fDimCellBoxX = 0; 104 G4double fDimCellBoxY = 0; 105 G4double fDimCellBoxZ = 0; 106 107 G4double fSizeRealX = 0; 108 G4double fSizeRealY = 0; 109 G4double fSizeRealZ = 0; 110 111 G4Material *fRedMaterial = nullptr; 112 G4Material *fGreenMaterial = nullptr; 113 G4Material *fBlueMaterial = nullptr; 114 115 G4double fShiftX = 0.; 116 G4double fShiftY = 0.; 117 G4double fShiftZ = 0.; 118 119 G4VisAttributes *fRedAttributes = nullptr; 120 G4VisAttributes *fGreenAttributes = nullptr; 121 G4VisAttributes *fBlueAttributes = nullptr; 122 123 G4ThreeVector *fMapCell = nullptr; // VOXEL COORDINATES 124 G4ThreeVector *fMapCellPxl = nullptr;// VOXEL COORDINATES IN PIXEL, NO SHIFT 125 G4ThreeVector *fMapCellOriginal = nullptr; // VOXEL COORDINATES (original space) 126 127 G4int *fMaterial = nullptr; // MATERIAL 128 129 G4int fPhantomTotalPixels = 0; 130 G4int fRedTotalPixels = 0; 131 G4int fGreenTotalPixels = 0; 132 G4int fBlueTotalPixels = 0; 133 134 G4double fRedMass = 0.; 135 G4double fGreenMass = 0.; 136 G4double fBlueMass = 0.; 137 138 char fRealUnit; 139 140 G4double fOffsetX = 0.; 141 G4double fOffsetY = 0.; 142 G4double fOffsetZ = 0.; 143 }; 144 145 #endif 146