00001 /* BDSIM 00002 00003 19 May 2008 by Marchiori G. 00004 17 Apr 2006 by Ilya Agapov 00005 00006 */ 00007 00008 #ifndef BDSMULTIPOLE_H 00009 #define BDSMULTIPOLE_H 00010 00011 #include "BDSMagnet.hh" 00012 00013 #include "globals.hh" 00014 #include "G4Material.hh" 00015 00016 #include <list> 00017 00018 struct BDSBeamPipeInfo; 00019 struct BDSMagnetOuterInfo; 00020 00021 class BDSMultipole: public BDSMagnet 00022 { 00023 public: 00024 BDSMultipole(G4String name, 00025 G4double length, 00026 std::list<G4double> akn, // list of normal multipole strengths 00027 // (NOT multiplied by multipole length) 00028 std::list<G4double> aks, // list of skew multipole strengths 00029 // (NOT multiplied by multipole length) 00030 BDSBeamPipeInfo* beamPipeInfo, 00031 BDSMagnetOuterInfo magnetOuterInfo, 00032 BDSTiltOffset tiltOffset = BDSTiltOffset()); 00033 ~BDSMultipole(){;}; 00034 00035 private: 00037 void CommonConstructor(std::list<G4double> akn, std::list<G4double> aks); 00038 std::list<G4double> kn; // list of normal multipole strengths 1/Brho * Bn 00039 // (NOT multiplied by multipole length) 00040 std::list<G4double> ks; // list of skew multipole strengths 1/Brho * Bsn 00041 // (NOT multiplied by multipole length) 00042 G4int itsOrder; 00043 00044 virtual void BuildBPFieldAndStepper(); 00045 }; 00046 00047 #endif