Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/dna/cellularPhantom/include/CellParameterisation.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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