00001 #ifndef BDSMAGNETOUTERFACTORYBASE_H
00002 #define BDSMAGNETOUTERFACTORYBASE_H
00003
00004 #include "BDSGeometryComponent.hh"
00005 #include "BDSBeamPipe.hh"
00006
00007 #include "globals.hh"
00008 #include "G4Material.hh"
00009
00028 class BDSMagnetOuterFactoryBase
00029 {
00030 public:
00035
00037 virtual BDSGeometryComponent* CreateSectorBend(G4String name,
00038 G4double length,
00039 BDSBeamPipe* beamPipe,
00040 G4double boxSize,
00041 G4double angle,
00042 G4Material* outerMaterial = NULL
00043 ) = 0;
00044
00046 virtual BDSGeometryComponent* CreateRectangularBend(G4String name,
00047 G4double length,
00048 BDSBeamPipe* beamPipe,
00049 G4double boxSize,
00050 G4double angle,
00051 G4Material* outerMaterial = NULL
00052 ) = 0;
00053
00054
00056 virtual BDSGeometryComponent* CreateQuadrupole(G4String name,
00057 G4double length,
00058 BDSBeamPipe* beamPipe,
00059 G4double boxSize,
00060 G4Material* outerMaterial = NULL
00061 ) = 0;
00062
00063
00065 virtual BDSGeometryComponent* CreateSextupole(G4String name,
00066 G4double length,
00067 BDSBeamPipe* beamPipe,
00068 G4double boxSize,
00069 G4Material* outerMaterial = NULL
00070 ) = 0;
00071
00073 virtual BDSGeometryComponent* CreateOctupole(G4String name,
00074 G4double length,
00075 BDSBeamPipe* beamPipe,
00076 G4double boxSize,
00077 G4Material* outerMaterial = NULL
00078 ) = 0;
00079
00081 virtual BDSGeometryComponent* CreateDecapole(G4String name,
00082 G4double length,
00083 BDSBeamPipe* beamPipe,
00084 G4double boxSize,
00085 G4Material* outerMaterial = NULL
00086 ) = 0;
00087
00089 virtual BDSGeometryComponent* CreateSolenoid(G4String name,
00090 G4double length,
00091 BDSBeamPipe* beamPipe,
00092 G4double boxSize,
00093 G4Material* outerMaterial = NULL
00094 ) = 0;
00095
00097 virtual BDSGeometryComponent* CreateMultipole(G4String name,
00098 G4double length,
00099 BDSBeamPipe* beamPipe,
00100 G4double boxSize,
00101 G4Material* outerMaterial = NULL
00102 ) = 0;
00103
00105 virtual BDSGeometryComponent* CreateRfCavity(G4String name,
00106 G4double length,
00107 BDSBeamPipe* beamPipe,
00108 G4double boxSize,
00109 G4Material* outerMaterial = NULL
00110 ) = 0;
00111
00113 virtual BDSGeometryComponent* CreateMuSpoiler(G4String name,
00114 G4double length,
00115 BDSBeamPipe* beamPipe,
00116 G4double boxSize,
00117 G4Material* outerMaterial = NULL
00118 ) = 0;
00119
00121 virtual BDSGeometryComponent* CreateKicker(G4String name,
00122 G4double length,
00123 BDSBeamPipe* beamPipe,
00124 G4double boxSize,
00125 G4bool vertical = true,
00126 G4Material* outerMaterial = NULL
00127 ) = 0;
00128
00130 virtual void CleanUp();
00131
00132 protected:
00133 BDSMagnetOuterFactoryBase();
00134
00135
00136
00137
00138 G4double lengthSafety;
00139 G4bool checkOverlaps;
00140 G4double nSegmentsPerCircle;
00141 G4double maxStepFactor;
00142 G4VSolid* poleSolid;
00143 G4VSolid* yokeSolid;
00144 G4VSolid* containerSolid;
00145 G4LogicalVolume* poleLV;
00146 G4LogicalVolume* yokeLV;
00147 G4LogicalVolume* containerLV;
00148
00149
00150 };
00151
00152 #endif