00001 #ifndef BDSRBEND_H 00002 #define BDSRBEND_H 00003 00004 #include "globals.hh" 00005 00006 #include "BDSMagnet.hh" 00007 #include "BDSTiltOffset.hh" 00008 00009 struct BDSBeamPipeInfo; 00010 struct BDSMagnetOuterInfo; 00011 00012 class BDSRBend: public BDSMagnet 00013 { 00014 public: 00015 BDSRBend(G4String name, 00016 G4double length, 00017 G4double bField, 00018 G4double bGrad, 00019 G4double angle, 00020 BDSBeamPipeInfo* beamPipeInfo, 00021 BDSMagnetOuterInfo magnetOuterInfo, 00022 BDSTiltOffset tiltOffset = BDSTiltOffset()); 00023 ~BDSRBend(){;}; 00024 00025 private: 00026 G4double itsBField; 00027 G4double itsBGrad; 00028 G4double itsMagFieldLength; 00029 00031 G4double itsStraightSectionChord; 00032 00034 G4double itsStraightSectionLength; 00035 00037 G4double magnetXShift; 00038 00040 G4int orientation; 00041 00043 G4double outerRadius; 00044 00045 virtual void Build(); 00046 virtual void BuildBPFieldAndStepper(); 00047 virtual void BuildBeampipe(); 00048 virtual void BuildOuterVolume(); // override this method to change length used 00049 00052 void CommonConstructor(G4double aLength); 00053 }; 00054 00055 #endif