00001 #ifndef BDSBEAMPIPEFACTORYLHC_H
00002 #define BDSBEAMPIPEFACTORYLHC_H
00003
00004 #include "BDSBeamPipeFactoryBase.hh"
00005 #include "BDSBeamPipe.hh"
00006
00015 class BDSBeamPipeFactoryLHC: public BDSBeamPipeFactoryBase
00016 {
00017 public:
00018 static BDSBeamPipeFactoryLHC* Instance();
00019
00020 virtual ~BDSBeamPipeFactoryLHC();
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 BDSBeamPipeFactoryLHC();
00048 static BDSBeamPipeFactoryLHC* _instance;
00049
00050 void TestInputParameters(G4Material*& vacuumMaterialIn,
00051 G4double& beamPipeThicknessIn,
00052 G4Material*& beamPipeMaterialIn,
00053 G4double& aper1In,
00054 G4double& aper2In,
00055 G4double& aper3In);
00056
00057
00058
00059
00060 BDSBeamPipe* CommonFinalConstruction(G4String nameIn,
00061 G4Material* vacuumMaterialIn,
00062 G4Material* beamPipeMaterialIn,
00063 G4double lengthIn,
00064 G4double widthIn,
00065 G4double heightIn);
00066 void CreateGeneralAngledSolids(G4String nameIn,
00067 G4double lengthIn,
00068 G4double aper1In,
00069 G4double aper2In,
00070 G4double aper3In,
00071 G4double beamPipeThicknessIn,
00072 G4ThreeVector inputfaceIn,
00073 G4ThreeVector outputfaceIn);
00074
00076 void CreateContainerSubtractionSolid(G4String& nameIn,
00077 G4double& lengthIn,
00078 G4double& beamPipeThicknessIn,
00079 G4double& aper1In,
00080 G4double& aper2In,
00081 G4double& aper3In);
00082
00083 };
00084
00085 #endif