Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // Code developed by 27 // Silvia Pozzi (1), silvia.pozzi@iss.it 28 // Barbara Caccia (1), barbara.caccia@iss.it 29 // Carlo Mancini Terracciano (2), carlo.mancin 30 // (1) Istituto Superiore di Sanita' and INFN 31 // (2) Univ. La Sapienza and INFN Roma, Italy 32 33 #ifndef DETECTOR_CONSTRUCTION_HH 34 #define DETECTOR_CONSTRUCTION_HH 35 36 #include <G4VUserDetectorConstruction.hh> 37 #include <G4RotationMatrix.hh> 38 #include <G4Material.hh> 39 #include <G4UnionSolid.hh> 40 #include <G4PSDoseDeposit3D.hh> 41 #include <G4MultiFunctionalDetector.hh> 42 43 #include "DetectorMessenger.hh" 44 45 class G4LogicalVolume; 46 class DetectorMessenger; 47 class DetectorConstruction : public G4VUserDet 48 { 49 public: 50 51 G4VPhysicalVolume* Construct() override; 52 53 void SetJaws(G4double value); 54 void SetTargetPosition(G4double value); 55 void SetPhantomSide(G4double value); 56 void SetVoxelSide(G4double value); 57 void SetVoxelDepth(G4double value); 58 59 void UpdateGeometry(G4String, G4double); 60 61 G4int GetNumberSideCells() const; 62 G4int GetNumberDepthCells() const; 63 G4int GetPhantomDepth() const; 64 65 G4double GetFFilterRadius(); 66 G4double GetFFilterZ(); 67 68 G4double GetJaw1X(); 69 G4double GetTargetPosition(); 70 G4double GetAccOriginPosition(); 71 G4double GetVoxelDepthDim(); 72 73 private: 74 75 void ConstructMaterials(); 76 G4Material* GetMaterial(G4String materialNam 77 78 void ConstructPhantom(); 79 void ConstructPhantom_spess(); 80 void ConstructAccelerator(); 81 void ConstructTarget(); 82 void ConstructVacuumWindow(); 83 void ConstructIonizationChamber(); 84 void ConstructFlatteningFilter(); 85 void ConstructPrimaryCollimator(); 86 void ConstructJawsX(); 87 void ConstructJawsY(); 88 void PhantomSegmentation(G4LogicalVolume* ph 89 G4int CheckPhantomSegmentation(G4int nCells) 90 91 DetectorMessenger* detectorMessenger; 92 G4VPhysicalVolume* world_phys; 93 G4VPhysicalVolume* accWorld_phys; 94 G4VPhysicalVolume* boxJaw1X_phys; 95 G4VPhysicalVolume* boxJaw2X_phys; 96 G4VPhysicalVolume* boxJaw1Y_phys; 97 G4VPhysicalVolume* boxJaw2Y_phys; 98 G4VPhysicalVolume* phantom_phys; 99 G4LogicalVolume* LVPhantomSens; 100 101 G4Material* mat_Kapton; 102 G4Material* mat_XC10; 103 G4Material* mat_WNICU; 104 G4Material* mat_Ssteel; 105 G4ThreeVector accHalfSize; 106 G4ThreeVector jaw1XInitialPos; 107 G4ThreeVector jaw2XInitialPos; 108 G4ThreeVector jaw1YInitialPos; 109 G4ThreeVector jaw2YInitialPos; 110 G4double jawAperture; 111 G4double fieldSide; 112 G4double sourceToSkinDistance; 113 G4double phantomSideDim, voxelSideDim, voxel 114 G4int nSideCells, nDepthCells; 115 G4double tubeFFRadius, tubeFFFirstFaceZ; 116 G4MultiFunctionalDetector* phantomDetector3D 117 G4VPrimitiveScorer* phantomScorer3D; 118 }; 119 120 #endif 121