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

00001 #ifndef BDSBEAMPIPEFACTORYRECTANGULAR_H
00002 #define BDSBEAMPIPEFACTORYRECTANGULAR_H
00003 
00004 #include "BDSBeamPipeFactoryBase.hh"
00005 #include "BDSBeamPipe.hh"
00006 
00015 class BDSBeamPipeFactoryRectangular: public BDSBeamPipeFactoryBase
00016 {
00017 public:
00018   static BDSBeamPipeFactoryRectangular* Instance(); 
00019   
00020   virtual ~BDSBeamPipeFactoryRectangular();
00021 
00022   virtual BDSBeamPipe* CreateBeamPipe(G4String    nameIn,                     // name
00023                                       G4double    lengthIn,                   // length [mm]
00024                                       G4double    aper1 = 0,                  // aperture parameter 1
00025                                       G4double    aper2 = 0,                  // aperture parameter 2
00026                                       G4double    aper3 = 0,                  // aperture parameter 3
00027                                       G4double    aper4 = 0,                  // aperture parameter 4
00028                                       G4Material* vacuumMaterialIn = NULL,    // vacuum material
00029                                       G4double    beamPipeThicknessIn = 0,    // beampipe thickness [mm]
00030                                       G4Material* beamPipeMaterialIn = NULL   // beampipe material
00031                                       );
00032   
00033   virtual BDSBeamPipe* CreateBeamPipeAngledInOut(G4String    nameIn,
00034                                                  G4double    lengthIn,
00035                                                  G4double    angleInIn,  // the normal angle of the input face
00036                                                  G4double    angleOutIn, // the normal angle of the output face
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   BDSBeamPipeFactoryRectangular(); 
00048   static BDSBeamPipeFactoryRectangular* _instance;
00049 
00050   void TestInputParameters(G4Material*& vacuumMaterialIn,
00051                            G4double&    beamPipeThicknessIn,
00052                            G4Material*& beamPipeMaterialIn,
00053                            G4double&    aper1In,
00054                            G4double&    aper2In);
00055 
00056   //abstract common build features to one function
00057   //use member variables unique to this factory to pass them around
00058   BDSBeamPipe* CommonFinalConstruction(G4String    nameIn,
00059                                        G4Material* vacuumMaterialIn,
00060                                        G4Material* beamPipeMaterialIn,
00061                                        G4double    lengthIn,
00062                                        G4double    aper1In,
00063                                        G4double    aper2In,
00064                                        G4double    beamPipeThicknessIn);
00065   void CreateGeneralAngledSolids(G4String      nameIn,
00066                                  G4double      lengthIn,
00067                                  G4double      aper1In,
00068                                  G4double      aper2In,
00069                                  G4double      beamPipeThicknessIn,
00070                                  G4ThreeVector inputfaceIn,
00071                                  G4ThreeVector outputfaceIn);
00072 };
00073   
00074 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7