00001 /* BDSIM code. 00002 A scintillator screen. 00003 Work in progress. 00004 */ 00005 00006 #ifndef BDSAwakeScintillatorScreen_h 00007 #define BDSAwakeScintillatorScreen_h 00008 00009 #include "globals.hh" 00010 #include "BDSAcceleratorComponent.hh" 00011 #include "BDSAwakeMultilayerScreen.hh" 00012 #include "BDSCCDCamera.hh" 00013 #include "BDSTiltOffset.hh" 00014 00015 #include "G4LogicalVolume.hh" 00016 #include "G4Mag_UsualEqRhs.hh" 00017 #include "G4UserLimits.hh" 00018 #include "G4VisAttributes.hh" 00019 #include "G4VSolid.hh" 00020 00021 class BDSAwakeScintillatorScreen :public BDSAcceleratorComponent 00022 { 00023 public: 00024 BDSAwakeScintillatorScreen(G4String aName, 00025 G4String material, 00026 G4double thickness, 00027 G4double angle, 00028 G4double windowThickness, 00029 G4String windowMaterial, 00030 BDSTiltOffset tiltOffset = BDSTiltOffset()); 00031 virtual ~BDSAwakeScintillatorScreen(); 00032 00033 protected: 00034 00035 private: 00036 virtual void Build(); 00037 void BuildCamera(); 00038 void PlaceCamera(); 00039 void BuildScreen(); 00040 void PlaceScreen(); 00041 void BuildAwakeScintillatorScreenTunnel(); 00042 void BuildVacuumChamber1(); 00043 void BuildVacuumChamber2(); 00044 virtual void SetVisAttributes(); 00045 void ComputeDimensions(); 00046 virtual void BuildContainerLogicalVolume(); 00047 void BuildCameraScoringPlane(); 00048 void BuildScreenScoringPlane(); 00049 void BuildAwakeScintillatorMaterial(); 00050 void BuildAwakeScintillatorCompound(); 00051 void BuildAwakeScintillatorOpticalProperties(); 00052 void BuildFrontLayer(); 00053 void BuildAwakeScintillatorLayer(); 00054 void BuildBaseLayer(); 00055 void BuildBackLayer(); 00056 void BuildOpticalSurfaces(); 00057 00058 00059 // Geometrical objects: 00060 G4VPhysicalVolume* itsCameraScoringPlanePhys; 00061 G4VPhysicalVolume* itsScreenScoringPlanePhys; 00062 G4LogicalVolume* itsCameraScoringPlaneLog; 00063 G4LogicalVolume* itsCameraScoringPlaneLog2; 00064 G4LogicalVolume* itsCameraScoringPlaneLog3; 00065 G4LogicalVolume* itsCameraScoringPlaneLog4; 00066 G4LogicalVolume* itsCameraScoringPlaneLog5; 00067 G4LogicalVolume* itsCameraScoringPlaneLog6; 00068 G4LogicalVolume* itsScreenScoringPlaneLog; 00069 G4LogicalVolume* itsScreenScoringPlaneLog2; 00070 G4VSolid* itsCameraScoringPlaneSolid; 00071 G4VSolid* itsScreenScoringPlaneSolid; 00072 00073 G4double itsOuterR; 00074 G4double itsXLength; 00075 G4double itsYLength; 00076 00077 G4RotationMatrix* _screenRotationMatrix; 00078 G4RotationMatrix* _vacRotationMatrix; 00079 00080 //scoring plane 00081 G4double _totalThickness; 00082 G4double _screenThickness; 00083 G4double _screenHeight; 00084 G4double _screenWidth; 00085 G4double _scoringPlaneThickness; 00086 00087 //Vacuum chamber dimensions 00088 G4int _vacChambType; 00089 G4double _vacWindowHeight; 00090 G4double _vacMylarThickness; 00091 G4double _vacKevlarThickness; 00092 G4double _vacThickness; 00093 G4double _vacInnerHeight; 00094 G4double _vacInnerWidth; 00095 G4double _vacHeight; 00096 G4double _vacLength; 00097 00098 G4double _vacWidth1; 00099 G4double _vacDispX1; 00100 G4double _vacDispY1; 00101 G4double _vacDispZ1; 00102 00103 G4double _vacWidth2; 00104 G4double _vacDispX2; 00105 G4double _vacDispY2; 00106 G4double _vacDispZ2; 00107 00108 G4VisAttributes* _visAttFront; 00109 G4VisAttributes* _visAttScint; 00110 G4VisAttributes* _visAttBase; 00111 G4VisAttributes* _visAttSampler; 00112 00113 G4String _scoringPlaneName; 00114 G4String _screenScoringPlaneName; 00115 G4String _screenSamplerName; 00116 G4String _screenSamplerName2; 00117 G4String _samplerName; 00118 G4String _samplerName2; 00119 G4String _samplerName3; 00120 G4String _samplerName4; 00121 G4String _samplerName5; 00122 G4String _samplerName6; 00123 BDSAwakeMultilayerScreen* _mlScreen; 00124 BDSCCDCamera* _camera; 00125 G4double _cameraScreenDist; 00126 G4String _material; 00127 G4double _thickness; 00128 G4double _screenAngle; 00129 G4double _windowThickness; 00130 G4String _windowMaterial; 00131 }; 00132 00133 #endif