00001 #ifndef BDSBEAMPIPEFACTORYCIRCULAR_H
00002 #define BDSBEAMPIPEFACTORYCIRCULAR_H
00003
00004 #include "BDSBeamPipeFactoryBase.hh"
00005 #include "BDSBeamPipe.hh"
00006
00015 class BDSBeamPipeFactoryCircular: public BDSBeamPipeFactoryBase
00016 {
00017 public:
00018 static BDSBeamPipeFactoryCircular* Instance();
00019
00020 virtual ~BDSBeamPipeFactoryCircular();
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 BDSBeamPipeFactoryCircular();
00048 static BDSBeamPipeFactoryCircular* _instance;
00049
00050 void TestInputParameters(G4Material*& vacuumMaterialIn,
00051 G4double& beamPipeThicknessIn,
00052 G4Material*& beamPipeMaterialIn,
00053 G4double& aper1In);
00054
00055
00056
00057
00058 BDSBeamPipe* CommonFinalConstruction(G4String nameIn,
00059 G4Material* vacuumMaterialIn,
00060 G4Material* beamPipeMaterialIn,
00061 G4double lengthIn,
00062 G4double containerRadiusIn);
00063 void CreateGeneralAngledSolids(G4String nameIn,
00064 G4double lengthIn,
00065 G4double aper1In,
00066 G4double beamPipeThicknessIn,
00067 G4ThreeVector inputfaceIn,
00068 G4ThreeVector outputfaceIn);
00069
00070 };
00071
00072 #endif