File indexing completed on 2025-12-16 09:29:13
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 #ifndef FlashDetectorConstruction_h
0030 #define FlashDetectorConstruction_h 1
0031
0032 #include "G4VUserDetectorConstruction.hh"
0033 #include "globals.hh"
0034
0035 #include "G4Material.hh"
0036 #include "tls.hh"
0037 #include "G4ThreeVector.hh"
0038 #include "G4UserLimits.hh"
0039
0040 class G4VPhysicalVolume;
0041 class G4LogicalVolume;
0042 class FlashApplicator;
0043 class G4VSensitiveDetector;
0044 class G4NistManager;
0045 class G4Tubs;
0046 class G4Box;
0047 class G4Element;
0048 class G4VisAttributes;
0049
0050
0051 class FlashDetectorMessenger;
0052
0053
0054 class FlashDetectorConstruction : public G4VUserDetectorConstruction {
0055 public:
0056 G4VPhysicalVolume *physicalTreatmentRoom;
0057 G4LogicalVolume *logicTreatmentRoom;
0058 G4VPhysicalVolume *ConstructPhantom(G4double CollPos);
0059
0060 void ConstructDetector();
0061
0062 FlashDetectorConstruction();
0063 virtual ~FlashDetectorConstruction();
0064
0065 virtual G4VPhysicalVolume *Construct();
0066 virtual void ConstructSDandField();
0067
0068 G4bool SetPhantomMaterial(G4String material);
0069 G4bool SetDetectorMaterial(G4String material);
0070 void SetAirGap(G4double position);
0071 void SetPhantomSize(G4double sizeX, G4double sizeY, G4double sizeZ);
0072
0073 void SetDetectorThickness(G4double thickness);
0074 void SetDetector_subThickness(G4double thickness_sub);
0075 void SetDetectorWidth(G4double width);
0076 void SetDetectorPosition(G4double position);
0077 void ActivateDetArray(G4bool);
0078
0079 G4VisAttributes *skyBlue;
0080 G4VisAttributes *red;
0081 G4VisAttributes *blue;
0082 G4VisAttributes *green;
0083
0084
0085 private:
0086
0087 FlashDetectorMessenger* fDetectorMessenger;
0088
0089 G4Material *airNist;
0090 G4Material *fPhantomMaterial;
0091 FlashApplicator *Collimator;
0092
0093 G4double fAirGap;
0094 G4double fPhantomSizeX, fPhantomSizeY, fPhantomSizeZ, fPhantom_coordinateX,fPosition_coefficient;
0095 G4ThreeVector fPhantomPosition;
0096 G4double fDet_thickness,fDet_width,fDet_sub_thickness,fDetectorPosition;
0097 G4int nDet;
0098 G4double fDet_ctc;
0099 G4Element *Si;
0100 G4Element *C;
0101 G4Material *SiC;
0102 G4Material *fDetectorMaterial;
0103
0104 G4Box *fPhantom;
0105
0106
0107 G4Box *fDet_box;
0108 G4LogicalVolume *fDetLogicalVolume;
0109
0110 std::vector<G4VPhysicalVolume *> fDet_phys;
0111 std::vector<G4VPhysicalVolume *> fDet_sub_phys;
0112
0113 G4Box *fDet_sub;
0114 G4LogicalVolume *fDet_sub_LogicalVolume;
0115
0116
0117
0118 void DefineMaterials();
0119
0120
0121 G4LogicalVolume *fPhantomLogicalVolume;
0122 G4VPhysicalVolume *fPhant_phys;
0123 G4VPhysicalVolume *fPhantom_physical;
0124
0125 G4UserLimits *fStepLimit;
0126 G4bool fCheckOverlaps, fActivateDet;
0127
0128 G4NistManager *nist;
0129
0130
0131
0132
0133 };
0134
0135 #endif