00001 #ifndef BDSBEAMPIPEFACTORY_H
00002 #define BDSBEAMPIPEFACTORY_H
00003
00004 #include "BDSBeamPipe.hh"
00005 #include "BDSBeamPipeFactoryBase.hh"
00006 #include "BDSBeamPipeInfo.hh"
00007 #include "BDSBeamPipeType.hh"
00008
00009 #include "globals.hh"
00010 #include "G4Material.hh"
00011
00012 class BDSBeamPipeFactory
00013 {
00014 public:
00015 static BDSBeamPipeFactory* Instance();
00016
00017 ~BDSBeamPipeFactory();
00018
00019 BDSBeamPipe* CreateBeamPipe(G4String name,
00020 G4double length,
00021 BDSBeamPipeInfo* bpi);
00022
00023 BDSBeamPipe* CreateBeamPipe(BDSBeamPipeType beamPipeTypeIn,
00024 G4String nameIn,
00025 G4double lengthIn,
00026 G4double aper1 = 0,
00027 G4double aper2 = 0,
00028 G4double aper3 = 0,
00029 G4double aper4 = 0,
00030 G4Material* vacuumMaterialIn = NULL,
00031 G4double beamPipeThicknessIn = 0,
00032 G4Material* beamPipeMaterialIn = NULL
00033 );
00034
00035 BDSBeamPipe* CreateBeamPipeAngledIn( BDSBeamPipeType beamPipeTypeIn,
00036 G4String nameIn,
00037 G4double lengthIn,
00038 G4double angleInIn,
00039 G4double aper1 = 0,
00040 G4double aper2 = 0,
00041 G4double aper3 = 0,
00042 G4double aper4 = 0,
00043 G4Material* vacuumMaterialIn = NULL,
00044 G4double beamPipeThicknessIn = 0,
00045 G4Material* beamPipeMaterialIn = NULL
00046 );
00047
00048 BDSBeamPipe* CreateBeamPipeAngledOut( BDSBeamPipeType beamPipeTypeIn,
00049 G4String nameIn,
00050 G4double lengthIn,
00051 G4double angleOutIn,
00052 G4double aper1 = 0,
00053 G4double aper2 = 0,
00054 G4double aper3 = 0,
00055 G4double aper4 = 0,
00056 G4Material* vacuumMaterialIn = NULL,
00057 G4double beamPipeThicknessIn = 0,
00058 G4Material* beamPipeMaterialIn = NULL
00059 );
00060
00061 BDSBeamPipe* CreateBeamPipeAngledInOut(BDSBeamPipeType beamPipeTypeIn,
00062 G4String nameIn,
00063 G4double lengthIn,
00064 G4double angleInIn,
00065 G4double angleOutIn,
00066 G4double aper1 = 0,
00067 G4double aper2 = 0,
00068 G4double aper3 = 0,
00069 G4double aper4 = 0,
00070 G4Material* vacuumMaterialIn = NULL,
00071 G4double beamPipeThicknessIn = 0,
00072 G4Material* beamPipeMaterialIn = NULL
00073 );
00074
00075 private:
00076 BDSBeamPipeFactory();
00077 static BDSBeamPipeFactory* _instance;
00078 BDSBeamPipeFactoryBase* GetAppropriateFactory(BDSBeamPipeType beamPipeTypeIn);
00079
00080 };
00081
00082
00083
00084 #endif