00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BDSSectorBend_h
00020 #define BDSSectorBend_h
00021
00022 #include "globals.hh"
00023 #include "BDSMaterials.hh"
00024 #include "G4LogicalVolume.hh"
00025 #include "BDSHelixStepper.hh"
00026 #include "myQuadStepper.hh"
00027
00028 #include "G4FieldManager.hh"
00029 #include "G4ChordFinder.hh"
00030 #include "G4Mag_UsualEqRhs.hh"
00031 #include "G4UserLimits.hh"
00032 #include "G4VisAttributes.hh"
00033 #include "G4PVPlacement.hh"
00034
00035 #include "BDSMultipole.hh"
00036 #include "BDSSbendMagField.hh"
00037 #include "G4Mag_EqRhs.hh"
00038
00039 class BDSSectorBend :public BDSMultipole
00040 {
00041 public:
00042 BDSSectorBend(G4String aName, G4double aLength,
00043 G4double bpRad, G4double FeRad,
00044 G4double bField, G4double angle, G4double outR,
00045 std::list<G4double> blmLocZ, std::list<G4double> blmLocTheta,
00046 G4double tilt = 0, G4double bGrad=0,
00047 G4String aTunnelMaterial="",
00048 G4String aMaterial = "", G4double xAper=0, G4double yAper=0);
00049 ~BDSSectorBend();
00050
00051 void SynchRescale(G4double factor);
00052
00053 virtual G4double GetArcLength();
00054
00055 protected:
00056
00057 private:
00058 G4double itsBField;
00059 G4double itsBGrad;
00060
00061 void BuildBPFieldAndStepper();
00062 void BuildSBMarkerLogicalVolume();
00063 void BuildSBBeampipe();
00064 void BuildSBOuterLogicalVolume(G4bool OuterMaterialIsVacuum=false);
00065
00066 G4VisAttributes* SetVisAttributes();
00067
00068
00069 myQuadStepper* itsStepper;
00070 BDSSbendMagField* itsMagField;
00071 G4Mag_EqRhs* itsEqRhs;
00072
00073
00074
00075
00076 };
00077
00078 #endif