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 std::list<G4double> blmLocZ, std::list<G4double> blmLocTheta,
00032 G4String aTunnelMaterial = "",
00033 G4String aMaterial = "");
00034 ~BDSOctupole();
00035
00036 void SynchRescale(G4double factor);
00037
00038 protected:
00039
00040 private:
00041 G4double itsBTrpPrime;
00042
00043 void BuildBPFieldAndStepper();
00044
00045 G4VisAttributes* SetVisAttributes();
00046
00047
00048 BDSOctStepper* itsStepper;
00049 BDSOctMagField* itsMagField;
00050 G4Mag_UsualEqRhs* itsEqRhs;
00051
00052 };
00053
00054 #endif