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

00001 #ifndef BDSMAGNETOUTERFACTORY_H
00002 #define BDSMAGNETOUTERFACTORY_H
00003 
00004 #include "BDSGeometryComponent.hh"
00005 
00006 #include "BDSBeamPipe.hh"
00007 #include "BDSMagnetOuterFactoryBase.hh"
00008 #include "BDSMagnetGeometryType.hh"
00009 
00010 #include "globals.hh"           // geant4 globals / types
00011 #include "G4Material.hh"
00012 
00013 class BDSMagnetOuterFactory
00014 {
00015 public:
00016   static BDSMagnetOuterFactory* Instance(); 
00017   
00018   ~BDSMagnetOuterFactory();
00019   
00021   virtual BDSGeometryComponent* CreateSectorBend(BDSMagnetGeometryType magnetType,          // magnet type
00022                                                  G4String      name,                // name
00023                                                  G4double      length,              // length [mm]
00024                                                  BDSBeamPipe*  beamPipe,            // beampipe
00025                                                  G4double      boxSize,             // full width
00026                                                  G4double      angle,               // full bend angle [rad]
00027                                                  G4Material*   outerMaterial = NULL // material for outer volume
00028                                                  );
00029 
00031   virtual BDSGeometryComponent* CreateRectangularBend(BDSMagnetGeometryType magnetType,          // magnet type
00032                                                       G4String      name,                // name
00033                                                       G4double      length,              // length [mm]
00034                                                       BDSBeamPipe*  beamPipe,            // beampipe
00035                                                       G4double      boxSize,             // full width
00036                                                       G4double      angle,               // full bend angle [rad]
00037                                                       G4Material*   outerMaterial = NULL // material for outer volume
00038                                                       );
00039   
00041   virtual BDSGeometryComponent* CreateQuadrupole(BDSMagnetGeometryType magnetType,           // magnet type
00042                                                  G4String      name,                 // name
00043                                                  G4double      length,               // length [mm]
00044                                                  BDSBeamPipe*  beamPipe,             // beampipe
00045                                                  G4double      boxSize,              // full width
00046                                                  G4Material*   outerMaterial = NULL  // material for outer volume
00047                                                  );
00048 
00049 
00051   virtual BDSGeometryComponent* CreateSextupole(BDSMagnetGeometryType magnetType,           // magnet type
00052                                                 G4String      name,                 // name
00053                                                 G4double      length,               // length [mm]
00054                                                 BDSBeamPipe*  beamPipe,             // beampipe
00055                                                 G4double      boxSize,              // full width
00056                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00057                                                 );
00058 
00060   virtual BDSGeometryComponent* CreateOctupole(BDSMagnetGeometryType magnetType,            // magnet type
00061                                                G4String      name,                  // name
00062                                                G4double      length,                // length [mm]
00063                                                BDSBeamPipe*  beamPipe,              // beampipe
00064                                                G4double      boxSize,               // full width
00065                                                G4Material*   outerMaterial = NULL   // material for outer volume
00066                                                );
00067 
00069   virtual BDSGeometryComponent* CreateDecapole(BDSMagnetGeometryType magnetType,            // magnet type
00070                                                G4String      name,                  // name
00071                                                G4double      length,                // length [mm]
00072                                                BDSBeamPipe*  beamPipe,              // beampipe
00073                                                G4double      boxSize,               // full width
00074                                                G4Material*   outerMaterial = NULL   // material for outer volume
00075                                                );
00076 
00078   virtual BDSGeometryComponent* CreateSolenoid(BDSMagnetGeometryType magnetType,            // magnet type
00079                                                G4String      name,                  // name
00080                                                G4double      length,                // length [mm]
00081                                                BDSBeamPipe*  beamPipe,              // beampipe
00082                                                G4double      boxSize,               // full width
00083                                                G4Material*   outerMaterial = NULL   // material for outer volume
00084                                                );
00085 
00087   virtual BDSGeometryComponent* CreateMultipole(BDSMagnetGeometryType magnetType,           // magnet type
00088                                                 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* CreateRfCavity(BDSMagnetGeometryType magnetType,            // magnet type
00097                                                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(BDSMagnetGeometryType magnetType,           // magnet type
00106                                                 G4String      name,                 // name
00107                                                 G4double      length,               // length [mm]
00108                                                 BDSBeamPipe*  beamPipe,             // beampipe
00109                                                 G4double      boxSize,              // full width
00110                                                 G4Material*   outerMaterial = NULL  // material for outer volume
00111                                                 );
00112 
00114   virtual BDSGeometryComponent* CreateKicker(BDSMagnetGeometryType magnetType,            // magnet type
00115                                              G4String      name,                  // name
00116                                              G4double      length,                // length [mm]
00117                                              BDSBeamPipe*  beamPipe,              // beampipe
00118                                              G4double      boxSize,               // full width
00119                                              G4bool        vertical = true,       // is it a vertical kicker?
00120                                              G4Material*   outerMaterial = NULL   // material for outer volume
00121                                              );
00122 
00123 private:
00124   BDSMagnetOuterFactory();
00125   static BDSMagnetOuterFactory* _instance;
00126   BDSMagnetOuterFactoryBase* GetAppropriateFactory(BDSMagnetGeometryType magnetTypeIn);
00127 
00128 };
00129 
00130 
00131 
00132 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7