/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/include/BDSBeamPipeFactory.hh

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"           // geant4 globals / types
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,            // aperture type
00024                               G4String        nameIn,                    // name
00025                               G4double        lengthIn,                  // length [mm]
00026                               G4double        aper1 = 0,                 // aperture parameter 1
00027                               G4double        aper2 = 0,                 // aperture parameter 2
00028                               G4double        aper3 = 0,                 // aperture parameter 3
00029                               G4double        aper4 = 0,                 // aperture parameter 4
00030                               G4Material*     vacuumMaterialIn = NULL,   // vacuum material
00031                               G4double        beamPipeThicknessIn = 0,   // beampipe thickness [mm]
00032                               G4Material*     beamPipeMaterialIn = NULL  // beampipe material
00033                               );
00034 
00035   BDSBeamPipe* CreateBeamPipeAngledIn(   BDSBeamPipeType beamPipeTypeIn,
00036                                          G4String        nameIn,
00037                                          G4double        lengthIn,
00038                                          G4double        angleInIn,   // the normal angle of the input face
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, // the normal angle of the output face
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,  // the normal angle of the input face
00065                                          G4double        angleOutIn, // the normal angle of the output face
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

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7