Warning, file /geant4/examples/advanced/doiPET/include/doiPETDetectorConstruction.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 #ifndef doiPETDetectorConstruction_h
0040 #define doiPETDetectorConstruction_h 1
0041
0042 #include "G4VUserDetectorConstruction.hh"
0043 #include "globals.hh"
0044 #include "G4UnitsTable.hh"
0045 #include "G4Element.hh"
0046 #include "doiPETGlobalParameters.hh"
0047
0048 class G4Material;
0049 class G4VPhysicalVolume;
0050 class G4LogicalVolume;
0051
0052 class doiPETAnalysis;
0053 class doiPETDetectorConstructionMessenger;
0054
0055
0056
0057
0058
0059
0060 class doiPETDetectorConstruction : public G4VUserDetectorConstruction
0061 {
0062 public:
0063 doiPETDetectorConstruction();
0064 virtual ~doiPETDetectorConstruction();
0065
0066 public:
0067 virtual G4VPhysicalVolume* Construct();
0068
0069 void ConstructPhantom(G4LogicalVolume*);
0070 void ChangePhantom(G4String choice);
0071 void SetPhantomPosition(G4ThreeVector);
0072 void SetPhantomRadius(G4double);
0073 void SetPhantomLength(G4double);
0074 void SetNumberOfSleeves(G4int);
0075
0076
0077 private:
0078 void DefineMaterials();
0079 doiPETDetectorConstructionMessenger* fDetectorMessenger;
0080 doiPETAnalysis* pAnalysis;
0081
0082 G4LogicalVolume* phantom_logicalV;
0083 G4VPhysicalVolume* phantom_physicalV;
0084
0085
0086
0087
0088 G4LogicalVolume* world_logicalV;
0089 G4VPhysicalVolume* world_physicalV;
0090
0091
0092 G4LogicalVolume* blockDetector_logicalV;
0093 G4VPhysicalVolume* blockDetector_physicalV;
0094
0095
0096 G4LogicalVolume* airBox_logicalV;
0097 G4VPhysicalVolume* airBox_physicalV;
0098
0099
0100 G4LogicalVolume* crystal_logicalV;
0101 G4VPhysicalVolume* crystal_physicalV;
0102
0103
0104
0105 G4LogicalVolume* water_logicalV;
0106 G4VPhysicalVolume* water_physicalV;
0107
0108
0109 G4LogicalVolume* lung_logicalV;
0110 G4VPhysicalVolume* lung_physicalV;
0111
0112
0113 G4LogicalVolume* test_logicalV;
0114 G4VPhysicalVolume* test_physicalV;
0115
0116 G4LogicalVolume* lung_logicalV_PMMA;
0117 G4VPhysicalVolume* lung_physicalVPMMA;
0118
0119
0120
0121
0122
0123
0124
0125 G4LogicalVolume* hotSpherePMMA_logicalV;
0126 G4VPhysicalVolume* hotSpherePMMA_physicalV;
0127
0128
0129 G4LogicalVolume* hotSphereWater_logicalV;
0130 G4VPhysicalVolume* hotSphereWater_physicalV;
0131
0132
0133 G4LogicalVolume* coldSpherePMMA_logicalV;
0134 G4VPhysicalVolume* coldSpherePMMA_physicalV;
0135
0136
0137 G4LogicalVolume* coldSphereWater_logicalV;
0138 G4VPhysicalVolume* coldSphereWater_physicalV;
0139
0140
0141 G4LogicalVolume* phantomPE_logicalV;
0142 G4VPhysicalVolume* phantomPE_physicalV;
0143
0144
0145 G4LogicalVolume* waterPhantom_logicalV;
0146 G4VPhysicalVolume* WaterPhantom_physicalV;
0147
0148 G4LogicalVolume* rod_phantom_logicalV;
0149 G4VPhysicalVolume* rod_phantom_physicalV;
0150
0151 G4LogicalVolume* chamberPMMA_logicalV;
0152 G4VPhysicalVolume* chamberPMMA_physicalV;
0153
0154
0155 G4LogicalVolume* chamberWater_logicalV;
0156 G4VPhysicalVolume* chamberWater_physicalV;
0157
0158
0159 G4LogicalVolume* chamberAir_logicalV;
0160 G4VPhysicalVolume* chamberAir_physicalV;
0161
0162
0163
0164 G4double spherePositionX, spherePositionY;
0165 G4double sphereDiameter;
0166 G4double distanceFromCenter;
0167 G4int numberOfSpheres;
0168 G4double sphereWallThickness;
0169 G4double zOffsetSpherePhantom;
0170
0171 G4String PhantomType;
0172
0173
0174 G4Material* air;
0175 G4Material* pmma;
0176 G4Material* water;
0177 G4Material* polyethylene;
0178 G4Material* polyethylene_NEMA;
0179
0180 G4Material* polystyrene;
0181 G4Material* Aluminum;
0182
0183
0184 G4Element* O;
0185 G4Element* Si;
0186 G4Element* Gd;
0187 G4Material* GSO;
0188
0189 G4Material* crystalMaterial;
0190
0191
0192 G4bool fCheckOverlaps;
0193 G4bool isotopes;
0194
0195
0196
0197 G4double worldSizeX;
0198 G4double worldSizeY;
0199 G4double worldSizeZ;
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217 G4double sizeOfAirBox_DOI;
0218 G4double sizeOfAirBox_axial;
0219 G4double sizeOfAirBox_tangential;
0220
0221
0222 G4double sizeOfBlockDetector_DOI;
0223 G4double sizeOfBlockDetector_axial;
0224 G4double sizeOfBlockDetector_tangential;
0225
0226
0227
0228
0229
0230
0231
0232
0233
0234 G4double thetaDetector;
0235
0236 G4int blockIndex;
0237
0238 G4int crystalIndex;
0239
0240
0241 G4double detectorPositionX;
0242 G4double detectorPositionY;
0243 G4double detectorPositionZ;
0244
0245
0246 G4double crystalPositionX;
0247 G4double crystalPositionY;
0248 G4double crystalPositionZ;
0249
0250
0251
0252 G4ThreeVector phantomPosition;
0253
0254
0255 G4double phantomRadius;
0256 G4double phantomLength;
0257
0258
0259
0260
0261
0262 G4double yOffsetBodyPhantom;
0263 G4double zOffsetBodyPhantom;
0264 G4double lengthOfBodyPhantom;
0265 G4double radiusOfBodyPhantom;
0266 G4double wallThicknessOfBodyPhantom;
0267 G4double radiusOfLungPhantom;
0268
0269
0270 G4double hieghtOfTestPhantom;
0271 G4double diameterOfTestPhantom;
0272
0273
0274 G4double radiusOfSmallcyl;
0275 G4double boxWidth;
0276 G4double boxHeight;
0277
0278
0279
0280 G4double waterPhantomRadius;
0281 G4double waterPhantomLength;
0282
0283 G4double rodPhantomLength;
0284 G4double rodDiameter;
0285 G4int numberOfRods;
0286
0287
0288 G4double rodPositionX, rodPositionY, rodPositionZ;
0289
0290
0291 G4double chamberPositionX, chamberPositionY, chamberPositionZ;
0292 G4double chamberPhantomLength;
0293 G4double chamberDiameter;
0294 G4double wallThicknessOfChamber;
0295
0296
0297 G4int numOfSleeves;
0298 };
0299
0300
0301
0302 #endif