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"
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,
00031 G4double length,
00032 BDSBeamPipe* beamPipe,
00033 G4double boxSize,
00034 G4double angle,
00035 G4Material* outerMaterial = NULL
00036 );
00037
00039 virtual BDSGeometryComponent* CreateRectangularBend(G4String name,
00040 G4double length,
00041 BDSBeamPipe* beamPipe,
00042 G4double boxSize,
00043 G4double angle,
00044 G4Material* outerMaterial = NULL
00045 );
00046
00048 virtual BDSGeometryComponent* CreateQuadrupole(G4String name,
00049 G4double length,
00050 BDSBeamPipe* beamPipe,
00051 G4double boxSize,
00052 G4Material* outerMaterial = NULL
00053 );
00054
00055
00057 virtual BDSGeometryComponent* CreateSextupole(G4String name,
00058 G4double length,
00059 BDSBeamPipe* beamPipe,
00060 G4double boxSize,
00061 G4Material* outerMaterial = NULL
00062 );
00063
00065 virtual BDSGeometryComponent* CreateOctupole(G4String name,
00066 G4double length,
00067 BDSBeamPipe* beamPipe,
00068 G4double boxSize,
00069 G4Material* outerMaterial = NULL
00070 );
00071
00073 virtual BDSGeometryComponent* CreateDecapole(G4String name,
00074 G4double length,
00075 BDSBeamPipe* beamPipe,
00076 G4double boxSize,
00077 G4Material* outerMaterial = NULL
00078 );
00079
00081 virtual BDSGeometryComponent* CreateSolenoid(G4String name,
00082 G4double length,
00083 BDSBeamPipe* beamPipe,
00084 G4double boxSize,
00085 G4Material* outerMaterial = NULL
00086 );
00087
00089 virtual BDSGeometryComponent* CreateMultipole(G4String name,
00090 G4double length,
00091 BDSBeamPipe* beamPipe,
00092 G4double boxSize,
00093 G4Material* outerMaterial = NULL
00094 );
00095
00097 virtual BDSGeometryComponent* CreateRfCavity(G4String name,
00098 G4double length,
00099 BDSBeamPipe* beamPipe,
00100 G4double boxSize,
00101 G4Material* outerMaterial = NULL
00102 );
00103
00105 virtual BDSGeometryComponent* CreateMuSpoiler(G4String name,
00106 G4double length,
00107 BDSBeamPipe* beamPipe,
00108 G4double boxSize,
00109 G4Material* outerMaterial = NULL
00110 );
00111
00113 virtual BDSGeometryComponent* CreateKicker(G4String name,
00114 G4double length,
00115 BDSBeamPipe* beamPipe,
00116 G4double boxSize,
00117 G4bool vertical = true,
00118 G4Material* outerMaterial = NULL
00119 );
00120 protected:
00121 G4bool isLeftOffset;
00122 G4bool IsLeftOffset(){return isLeftOffset;}
00123
00124 private:
00125
00126
00127 void CreateCylindricalSolids(G4String name,
00128 G4double length,
00129 BDSBeamPipe* beamPipe,
00130 G4double boxSize);
00131
00133 BDSGeometryComponent* CommonFinalConstructor(G4String name,
00134 G4double length,
00135 G4double boxSize,
00136 G4Material* outerMaterial,
00137 G4Colour* colour);
00138
00140 void TestInputParameters(BDSBeamPipe* beamPipe,
00141 G4double& boxSizeIn,
00142 G4Material*& outerMaterialIn);
00143
00144 };
00145
00146 #endif