00001
00002
00003
00004
00005
00006
00007 #ifndef BDSTMultipole_h
00008 #define BDSTMultipole_h 1
00009
00010 #include "globals.hh"
00011 #include "BDSMaterials.hh"
00012 #include "G4LogicalVolume.hh"
00013 #include "BDSRK4Stepper.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 "BDSMultipoleMagField.hh"
00024
00025 #include <list>
00026
00027 class BDSTMultipole :public BDSMultipole
00028 {
00029 public:
00030 BDSTMultipole(G4String aName, G4double aLength,
00031 G4double bpRad, G4double FeRad,
00032 G4double outR,
00033 list<G4double> aknl, list<double> aksl,
00034 G4String aMaterial = "");
00035 ~BDSTMultipole();
00036
00037 protected:
00038
00039 private:
00040 list<G4double> bnl;
00041 list<G4double> bsl;
00042 G4int itsOrder;
00043
00044 void BuildBPFieldAndStepper();
00045
00046 G4VisAttributes* SetVisAttributes();
00047
00048
00049 BDSRK4Stepper* itsStepper;
00050 BDSMultipoleMagField* itsMagField;
00051 G4Mag_UsualEqRhs* itsEqRhs;
00052
00053 };
00054
00055 #endif