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

00001 #ifndef BDSMAGNETOUTERFACTORYLHC_H
00002 #define BDSMAGNETOUTERFACTORYLHC_H
00003 
00004 #include "BDSGeometryComponent.hh"
00005 #include "BDSMagnetOuterFactoryBase.hh"
00006 #include "BDSBeamPipe.hh"
00007 
00008 #include "globals.hh"           // geant4 globals / types
00009 #include "G4Colour.hh"
00010 #include "G4Material.hh"
00011 #include "G4VSolid.hh"
00012 
00023 class BDSMagnetOuterFactoryLHC: public BDSMagnetOuterFactoryBase
00024 {
00025 public:
00026   BDSMagnetOuterFactoryLHC(G4bool isLeftOffset);
00027   ~BDSMagnetOuterFactoryLHC(){;};
00028   
00030   virtual BDSGeometryComponent* CreateSectorBend(G4String      name,                // name
00031                                                  G4double      length,              // length [mm]
00032                                                  BDSBeamPipe*  beamPipe,            // beampipe
00033                                                  G4double      boxSize,             // full width
00034                                                  G4double      angle,               // full bend angle [rad]
00035                                                  G4Material*   outerMaterial = NULL // material for outer volume
00036                                                  );
00037 
00039   virtual BDSGeometryComponent* CreateRectangularBend(G4String      name,                // name
00040                                                       G4double      length,              // length [mm]
00041                                                       BDSBeamPipe*  beamPipe,            // beampipe
00042                                                       G4double      boxSize,             // full width
00043                                                       G4double      angle,               // full bend angle [rad]
00044                                                       G4Material*   outerMaterial = NULL // material for outer volume
00045                                                       );
00046   
00048   virtual BDSGeometryComponent* CreateQuadrupole(G4String      name,                 // name
00049                                                  G4double      length,               // length [mm]
00050                                                  BDSBeamPipe*  beamPipe,             // beampipe
00051                                                  G4double      boxSize,              // full width
00052                                                  G4Material*   outerMaterial = NULL  // material for outer volume
00053                                                  );
00054 
00055 
00057   virtual BDSGeometryComponent* CreateSextupole(G4String      name,                 // name
00058                                                 G4double      length,               // length [mm]
00059                                                 BDSBeamPipe*  beamPipe,             // beampipe
00060                                                 G4double      boxSize,              // full width
00061                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00062                                                 );
00063 
00065   virtual BDSGeometryComponent* CreateOctupole(G4String      name,                  // name
00066                                                G4double      length,                // length [mm]
00067                                                BDSBeamPipe*  beamPipe,              // beampipe
00068                                                G4double      boxSize,               // full width
00069                                                G4Material*   outerMaterial = NULL   // material for outer volume
00070                                                );
00071 
00073   virtual BDSGeometryComponent* CreateDecapole(G4String      name,                  // name
00074                                                G4double      length,                // length [mm]
00075                                                BDSBeamPipe*  beamPipe,              // beampipe
00076                                                G4double      boxSize,               // full width
00077                                                G4Material*   outerMaterial = NULL   // material for outer volume
00078                                                );
00079 
00081   virtual BDSGeometryComponent* CreateSolenoid(G4String      name,                  // name
00082                                                G4double      length,                // length [mm]
00083                                                BDSBeamPipe*  beamPipe,              // beampipe
00084                                                G4double      boxSize,               // full width
00085                                                G4Material*   outerMaterial = NULL   // material for outer volume
00086                                                );
00087 
00089   virtual BDSGeometryComponent* CreateMultipole(G4String      name,                 // name
00090                                                 G4double      length,               // length [mm]
00091                                                 BDSBeamPipe*  beamPipe,             // beampipe
00092                                                 G4double      boxSize,              // full width
00093                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00094                                                 );
00095 
00097   virtual BDSGeometryComponent* CreateRfCavity(G4String      name,                  // name
00098                                                G4double      length,                // length [mm]
00099                                                BDSBeamPipe*  beamPipe,              // beampipe
00100                                                G4double      boxSize,               // full width
00101                                                G4Material*   outerMaterial = NULL   // material for outer volume
00102                                                );
00103 
00105   virtual BDSGeometryComponent* CreateMuSpoiler(G4String      name,                 // name
00106                                                 G4double      length,               // length [mm]
00107                                                 BDSBeamPipe*  beamPipe,             // beampipe
00108                                                 G4double      boxSize,              // full width
00109                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00110                                                 );
00111 
00113   virtual BDSGeometryComponent* CreateKicker(G4String      name,                  // name
00114                                              G4double      length,                // length [mm]
00115                                              BDSBeamPipe*  beamPipe,              // beampipe
00116                                              G4double      boxSize,               // full width
00117                                              G4bool        vertical = true,       // is it a vertical kicker?
00118                                              G4Material*   outerMaterial = NULL   // material for outer volume
00119                                              );
00120 protected:
00121   G4bool isLeftOffset;
00122   G4bool IsLeftOffset(){return isLeftOffset;}
00123   
00124 private:
00125   //only really one function needed for this factory
00126   //private to this factory only
00127   void CreateCylindricalSolids(G4String      name,                 // name
00128                                G4double      length,               // length [mm]
00129                                BDSBeamPipe*  beamPipe,             // beampipe
00130                                G4double      boxSize);             // full width
00131 
00133   BDSGeometryComponent* CommonFinalConstructor(G4String    name,
00134                                                G4double    length,        // length [mm]
00135                                                G4double    boxSize,       // full width [mm]
00136                                                G4Material* outerMaterial,
00137                                                G4Colour*   colour);
00138 
00140   void TestInputParameters(BDSBeamPipe* beamPipe,
00141                            G4double&    boxSizeIn,
00142                            G4Material*& outerMaterialIn);
00143   
00144 };
00145 
00146 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7