00001
00002
00003
00004
00005
00006
00007 #ifndef BDSOctupole_h
00008 #define BDSOctupole_h 1
00009
00010 #include "globals.hh"
00011 #include "BDSMaterials.hh"
00012 #include "G4LogicalVolume.hh"
00013 #include "BDSOctStepper.hh"
00014
00015 #include "G4FieldManager.hh"
00016 #include "G4ChordFinder.hh"
00017 #include "G4Mag_UsualEqRhs.hh"
00018 #include "G4UserLimits.hh"
00019 #include "G4VisAttributes.hh"
00020 #include "G4PVPlacement.hh"
00021
00022 #include "BDSMultipole.hh"
00023 #include "BDSOctMagField.hh"
00024
00025 class BDSOctupole :public BDSMultipole
00026 {
00027 public:
00028 BDSOctupole(G4String aName, G4double aLength,
00029 G4double bpRad, G4double FeRad,
00030 G4double BTrpPrime, G4double tilt, G4double outR,
00031 G4String aMaterial = "");
00032 ~BDSOctupole();
00033
00034 void SynchRescale(G4double factor);
00035
00036 protected:
00037
00038 private:
00039 G4double itsBTrpPrime;
00040
00041 void BuildBPFieldAndStepper();
00042
00043 G4VisAttributes* SetVisAttributes();
00044
00045
00046 BDSOctStepper* itsStepper;
00047 BDSOctMagField* itsMagField;
00048 G4Mag_UsualEqRhs* itsEqRhs;
00049
00050 };
00051
00052 #endif