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

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,                     // name
00037                                       G4double    lengthIn,                   // length [mm]
00038                                       G4double    aper1 = 0,                  // aperture parameter 1
00039                                       G4double    aper2 = 0,                  // aperture parameter 2
00040                                       G4double    aper3 = 0,                  // aperture parameter 3
00041                                       G4double    aper4 = 0,                  // aperture parameter 4
00042                                       G4Material* vacuumMaterialIn = NULL,    // vacuum material
00043                                       G4double    beamPipeThicknessIn = 0,    // beampipe thickness [mm]
00044                                       G4Material* beamPipeMaterialIn = NULL   // beampipe material
00045                                       );
00046   
00047   virtual BDSBeamPipe* CreateBeamPipeAngledInOut(G4String    nameIn,
00048                                                  G4double    lengthIn,
00049                                                  G4double    angleInIn,  // the normal angle of the input face
00050                                                  G4double    angleOutIn, // the normal angle of the output face
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   //abstract common build features to one function
00073   //use member variables unique to this factory to pass them around
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

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7