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

00001 #ifndef BDSMAGNETOUTERFACTORYCYLINDRICAL_H
00002 #define BDSMAGNETOUTERFACTORYCYLINDRICAL_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 
00013 class BDSMagnetOuterFactoryCylindrical: public BDSMagnetOuterFactoryBase
00014 {
00015 public:
00016   static BDSMagnetOuterFactoryCylindrical* Instance(); 
00017   
00018   ~BDSMagnetOuterFactoryCylindrical();
00019   
00021   virtual BDSGeometryComponent* CreateSectorBend(G4String      name,                // name
00022                                                  G4double      length,              // length [mm]
00023                                                  BDSBeamPipe*  beamPipe,            // beampipe
00024                                                  G4double      boxSize,             // full width
00025                                                  G4double      angle,               // full bend angle [rad]
00026                                                  G4Material*   outerMaterial = NULL // material for outer volume
00027                                                  );
00028 
00030   virtual BDSGeometryComponent* CreateRectangularBend(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* CreateQuadrupole(G4String      name,                 // name
00040                                                  G4double      length,               // length [mm]
00041                                                  BDSBeamPipe*  beamPipe,             // beampipe
00042                                                  G4double      boxSize,              // full width
00043                                                  G4Material*   outerMaterial = NULL  // material for outer volume
00044                                                  );
00045 
00046 
00048   virtual BDSGeometryComponent* CreateSextupole(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 
00056   virtual BDSGeometryComponent* CreateOctupole(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                                                );
00062 
00064   virtual BDSGeometryComponent* CreateDecapole(G4String      name,                  // name
00065                                                G4double      length,                // length [mm]
00066                                                BDSBeamPipe*  beamPipe,              // beampipe
00067                                                G4double      boxSize,               // full width
00068                                                G4Material*   outerMaterial = NULL   // material for outer volume
00069                                                );
00070 
00072   virtual BDSGeometryComponent* CreateSolenoid(G4String      name,                  // name
00073                                                G4double      length,                // length [mm]
00074                                                BDSBeamPipe*  beamPipe,              // beampipe
00075                                                G4double      boxSize,               // full width
00076                                                G4Material*   outerMaterial = NULL   // material for outer volume
00077                                                );
00078 
00080   virtual BDSGeometryComponent* CreateMultipole(G4String      name,                 // name
00081                                                 G4double      length,               // length [mm]
00082                                                 BDSBeamPipe*  beamPipe,             // beampipe
00083                                                 G4double      boxSize,              // full width
00084                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00085                                                 );
00086 
00088   virtual BDSGeometryComponent* CreateRfCavity(G4String      name,                  // name
00089                                                G4double      length,                // length [mm]
00090                                                BDSBeamPipe*  beamPipe,              // beampipe
00091                                                G4double      boxSize,               // full width
00092                                                G4Material*   outerMaterial = NULL   // material for outer volume
00093                                                );
00094 
00096   virtual BDSGeometryComponent* CreateMuSpoiler(G4String      name,                 // name
00097                                                 G4double      length,               // length [mm]
00098                                                 BDSBeamPipe*  beamPipe,             // beampipe
00099                                                 G4double      boxSize,              // full width
00100                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00101                                                 );
00102 
00104   virtual BDSGeometryComponent* CreateKicker(G4String      name,                  // name
00105                                              G4double      length,                // length [mm]
00106                                              BDSBeamPipe*  beamPipe,              // beampipe
00107                                              G4double      boxSize,               // full width
00108                                              G4bool        vertical = true,       // is it a vertical kicker?
00109                                              G4Material*   outerMaterial = NULL   // material for outer volume
00110                                              );
00111 
00112 private:
00113   BDSMagnetOuterFactoryCylindrical(); //private constructor as singleton
00114   static BDSMagnetOuterFactoryCylindrical* _instance;
00115 
00116   //only really one function needed for this factory
00117   //private to this factory only
00118   void CreateCylindricalSolids(G4String      name,                 // name
00119                                G4double      length,               // length [mm]
00120                                BDSBeamPipe*  beamPipe,             // beampipe
00121                                G4double      boxSize);             // full width
00122 
00124   BDSGeometryComponent* CommonFinalConstructor(G4String    name,
00125                                                G4double    length,        // length [mm]
00126                                                G4double    boxSize,       // full width [mm]
00127                                                G4Material* outerMaterial,
00128                                                G4Colour*   colour);
00129 
00131   void TestInputParameters(BDSBeamPipe* beamPipe,
00132                            G4double&    boxSizeIn,
00133                            G4Material*& outerMaterialIn);
00134   
00135 };
00136 
00137 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7