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