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

00001 #ifndef BDSMAGNETOUTERFACTORYBASE_H
00002 #define BDSMAGNETOUTERFACTORYBASE_H
00003 
00004 #include "BDSGeometryComponent.hh"
00005 #include "BDSBeamPipe.hh"
00006 
00007 #include "globals.hh"         // geant4 globals / types
00008 #include "G4Material.hh"
00009 
00028 class BDSMagnetOuterFactoryBase
00029 {
00030 public:
00035 
00037   virtual BDSGeometryComponent* CreateSectorBend(G4String     name,                // name
00038                                                  G4double     length,              // length [mm]
00039                                                  BDSBeamPipe* beamPipe,            // beampipe
00040                                                  G4double     boxSize,             // full width
00041                                                  G4double     angle,               // full bend angle [rad]
00042                                                  G4Material*  outerMaterial = NULL // material for outer volume
00043                                                  ) = 0;
00044 
00046   virtual BDSGeometryComponent* CreateRectangularBend(G4String     name,                // name
00047                                                       G4double     length,              // length [mm]
00048                                                       BDSBeamPipe* beamPipe,            // beampipe
00049                                                       G4double     boxSize,             // full width
00050                                                       G4double     angle,               // full bend angle [rad]
00051                                                       G4Material*  outerMaterial = NULL // material for outer volume
00052                                                       ) = 0;
00053 
00054   
00056   virtual BDSGeometryComponent* CreateQuadrupole(G4String     name,                 // name
00057                                                  G4double     length,               // length [mm]
00058                                                  BDSBeamPipe* beamPipe,             // beampipe
00059                                                  G4double     boxSize,              // full width
00060                                                  G4Material*  outerMaterial = NULL  // material for outer volume
00061                                                  ) = 0;
00062 
00063 
00065   virtual BDSGeometryComponent* CreateSextupole(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                                                 ) = 0;
00071 
00073   virtual BDSGeometryComponent* CreateOctupole(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                                                ) = 0;
00079 
00081   virtual BDSGeometryComponent* CreateDecapole(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                                                ) = 0;
00087 
00089   virtual BDSGeometryComponent* CreateSolenoid(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                                                ) = 0;
00095 
00097   virtual BDSGeometryComponent* CreateMultipole(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                                                 ) = 0;
00103 
00105   virtual BDSGeometryComponent* CreateRfCavity(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                                                ) = 0;
00111 
00113   virtual BDSGeometryComponent* CreateMuSpoiler(G4String     name,                 // name
00114                                                 G4double     length,               // length [mm]
00115                                                 BDSBeamPipe* beamPipe,             // beampipe
00116                                                 G4double     boxSize,              // full width
00117                                                 G4Material*  outerMaterial = NULL  // material for outer volume
00118                                                 ) = 0;
00119 
00121   virtual BDSGeometryComponent* CreateKicker(G4String     name,                  // name
00122                                              G4double     length,                // length [mm]
00123                                              BDSBeamPipe* beamPipe,              // beampipe
00124                                              G4double     boxSize,               // full width
00125                                              G4bool       vertical = true,       // is it a vertical kicker?
00126                                              G4Material*  outerMaterial = NULL   // material for outer volume
00127                                              ) = 0;
00128 
00130   virtual void CleanUp();
00131 
00132 protected:
00133   BDSMagnetOuterFactoryBase();
00134   
00135   // geometric pointers that will be used to pass around components
00136   // within the factory (as different parts factorised so they can
00137   // be overridden by the derived classes.
00138   G4double         lengthSafety;
00139   G4bool           checkOverlaps;      // to avoid using globalconstants a lot
00140   G4double         nSegmentsPerCircle; // for visualisation improvement
00141   G4double         maxStepFactor;      // for user limits
00142   G4VSolid*        poleSolid; 
00143   G4VSolid*        yokeSolid; 
00144   G4VSolid*        containerSolid;
00145   G4LogicalVolume* poleLV;
00146   G4LogicalVolume* yokeLV;
00147   G4LogicalVolume* containerLV;
00148   
00149   
00150 };
00151 
00152 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7