00001 #ifndef BDSCollimator_h 00002 #define BDSCollimator_h 00003 00004 #include "BDSAcceleratorComponent.hh" 00005 #include "BDSMaterials.hh" 00006 #include "BDSTiltOffset.hh" 00007 00008 #include "globals.hh" // geant4 types / globals 00009 #include "G4LogicalVolume.hh" 00010 #include "G4Mag_UsualEqRhs.hh" 00011 #include "G4UserLimits.hh" 00012 #include "G4VSolid.hh" 00013 #include "G4SubtractionSolid.hh" 00014 00015 class G4VSolid; 00016 00017 class BDSCollimatorBase :public BDSAcceleratorComponent 00018 { 00019 public: 00020 BDSCollimatorBase(G4String name, 00021 G4double length, 00022 G4double outerDiameter, 00023 G4String type, 00024 G4double xApertureIn = 0, 00025 G4double yApertureIn = 0, 00026 G4String collimatorMaterial = "copper", 00027 G4String vacuumMaterial = "vacuum", 00028 BDSTiltOffset tiltOffset = BDSTiltOffset()); 00029 ~BDSCollimatorBase(); 00030 00031 protected: 00032 virtual void Build(); 00033 00034 virtual void BuildContainerLogicalVolume(); 00035 00039 virtual void BuildInnerCollimator() = 0; 00040 00041 // Geometrical objects: 00042 G4VSolid* collimatorSolid; 00043 00044 G4VSolid* innerSolid; 00045 G4VSolid* vacuumSolid; 00046 00047 G4double outerDiameter; 00048 G4double xAperture; 00049 G4double yAperture; 00050 G4String collimatorMaterial; 00051 G4String vacuumMaterial; 00052 00053 }; 00054 00055 #endif