00001 #ifndef BDSBEAMPIPEFACTORYRECTELLIPSE_H
00002 #define BDSBEAMPIPEFACTORYRECTELLIPSE_H
00003
00004 #include "BDSBeamPipeFactoryBase.hh"
00005 #include "BDSBeamPipe.hh"
00006
00029 class BDSBeamPipeFactoryRectEllipse: public BDSBeamPipeFactoryBase
00030 {
00031 public:
00032 static BDSBeamPipeFactoryRectEllipse* Instance();
00033
00034 virtual ~BDSBeamPipeFactoryRectEllipse();
00035
00036 virtual BDSBeamPipe* CreateBeamPipe(G4String nameIn,
00037 G4double lengthIn,
00038 G4double aper1 = 0,
00039 G4double aper2 = 0,
00040 G4double aper3 = 0,
00041 G4double aper4 = 0,
00042 G4Material* vacuumMaterialIn = NULL,
00043 G4double beamPipeThicknessIn = 0,
00044 G4Material* beamPipeMaterialIn = NULL
00045 );
00046
00047 virtual BDSBeamPipe* CreateBeamPipeAngledInOut(G4String nameIn,
00048 G4double lengthIn,
00049 G4double angleInIn,
00050 G4double angleOutIn,
00051 G4double aper1 = 0,
00052 G4double aper2 = 0,
00053 G4double aper3 = 0,
00054 G4double aper4 = 0,
00055 G4Material* vacuumMaterialIn = NULL,
00056 G4double beamPipeThicknessIn = 0,
00057 G4Material* beamPipeMaterialIn = NULL
00058 );
00059
00060 private:
00061 BDSBeamPipeFactoryRectEllipse();
00062 static BDSBeamPipeFactoryRectEllipse* _instance;
00063
00064 void TestInputParameters(G4Material*& vacuumMaterialIn,
00065 G4double& beamPipeThicknessIn,
00066 G4Material*& beamPipeMaterialIn,
00067 G4double& aper1In,
00068 G4double& aper2In,
00069 G4double& aper3In,
00070 G4double& aper4In);
00071
00072
00073
00074
00075 BDSBeamPipe* CommonFinalConstruction(G4String nameIn,
00076 G4Material* vacuumMaterialIn,
00077 G4Material* beamPipeMaterialIn,
00078 G4double lengthIn,
00079 G4double widthIn,
00080 G4double heightIn);
00081 void CreateGeneralAngledSolids(G4String nameIn,
00082 G4double lengthIn,
00083 G4double aper1In,
00084 G4double aper2In,
00085 G4double aper3In,
00086 G4double aper4In,
00087 G4double beamPipeThicknessIn,
00088 G4ThreeVector inputfaceIn,
00089 G4ThreeVector outputfaceIn);
00090
00091 void CreateContainerSubtractionSolid(G4String& nameIn,
00092 G4double& lengthIn,
00093 G4double& beamPipeThicknessIn,
00094 G4double& aper1In,
00095 G4double& aper2In,
00096 G4double& aper3In,
00097 G4double& aper4In);
00098
00099 };
00100
00101 #endif