00001 #ifndef BDSBEAMPIPEFACTORYRECTANGULAR_H
00002 #define BDSBEAMPIPEFACTORYRECTANGULAR_H
00003
00004 #include "BDSBeamPipeFactoryBase.hh"
00005 #include "BDSBeamPipe.hh"
00006
00015 class BDSBeamPipeFactoryRectangular: public BDSBeamPipeFactoryBase
00016 {
00017 public:
00018 static BDSBeamPipeFactoryRectangular* Instance();
00019
00020 virtual ~BDSBeamPipeFactoryRectangular();
00021
00022 virtual BDSBeamPipe* CreateBeamPipe(G4String nameIn,
00023 G4double lengthIn,
00024 G4double aper1 = 0,
00025 G4double aper2 = 0,
00026 G4double aper3 = 0,
00027 G4double aper4 = 0,
00028 G4Material* vacuumMaterialIn = NULL,
00029 G4double beamPipeThicknessIn = 0,
00030 G4Material* beamPipeMaterialIn = NULL
00031 );
00032
00033 virtual BDSBeamPipe* CreateBeamPipeAngledInOut(G4String nameIn,
00034 G4double lengthIn,
00035 G4double angleInIn,
00036 G4double angleOutIn,
00037 G4double aper1 = 0,
00038 G4double aper2 = 0,
00039 G4double aper3 = 0,
00040 G4double aper4 = 0,
00041 G4Material* vacuumMaterialIn = NULL,
00042 G4double beamPipeThicknessIn = 0,
00043 G4Material* beamPipeMaterialIn = NULL
00044 );
00045
00046 private:
00047 BDSBeamPipeFactoryRectangular();
00048 static BDSBeamPipeFactoryRectangular* _instance;
00049
00050 void TestInputParameters(G4Material*& vacuumMaterialIn,
00051 G4double& beamPipeThicknessIn,
00052 G4Material*& beamPipeMaterialIn,
00053 G4double& aper1In,
00054 G4double& aper2In);
00055
00056
00057
00058 BDSBeamPipe* CommonFinalConstruction(G4String nameIn,
00059 G4Material* vacuumMaterialIn,
00060 G4Material* beamPipeMaterialIn,
00061 G4double lengthIn,
00062 G4double aper1In,
00063 G4double aper2In,
00064 G4double beamPipeThicknessIn);
00065 void CreateGeneralAngledSolids(G4String nameIn,
00066 G4double lengthIn,
00067 G4double aper1In,
00068 G4double aper2In,
00069 G4double beamPipeThicknessIn,
00070 G4ThreeVector inputfaceIn,
00071 G4ThreeVector outputfaceIn);
00072 };
00073
00074 #endif