00001
00002
00003
00004
00005
00006
00007 #ifndef BDSDrift_h
00008 #define BDSDrift_h 1
00009
00010 #include "globals.hh"
00011 #include "BDSMaterials.hh"
00012 #include "G4LogicalVolume.hh"
00013
00014 #include "G4FieldManager.hh"
00015 #include "G4ChordFinder.hh"
00016 #include "G4Mag_UsualEqRhs.hh"
00017 #include "G4UserLimits.hh"
00018 #include "G4VisAttributes.hh"
00019 #include "G4PVPlacement.hh"
00020 #include "BDSDriftStepper.hh"
00021 #include "BDSMagField.hh"
00022 #include "BDSMultipole.hh"
00023 #include "G4ExactHelixStepper.hh"
00024 #include "G4CashKarpRKF45.hh"
00025
00026 class BDSDrift :public BDSMultipole
00027 {
00028 public:
00029 BDSDrift(G4String aName, G4double aLength,
00030 std::list<G4double> blmLocZ, std::list<G4double> blmLocTheta,
00031 G4double startAper, G4double endAper=BDSGlobalConstants::Instance()->GetBeampipeRadius(), G4String aTunnelMaterial="", G4bool aperset=false, G4double aper=0, G4double tunnelOffsetX=BDSGlobalConstants::Instance()->GetTunnelOffsetX(), G4double phiAngleIn=0, G4double phiAngleOut=0);
00032 ~BDSDrift();
00033
00034 protected:
00035
00036 private:
00037 void BuildBLMs();
00038 G4VisAttributes* SetVisAttributes();
00039 void BuildBpFieldAndStepper();
00040 G4double itsStartOuterR;
00041 G4double itsEndOuterR;
00042
00043 BDSDriftStepper* itsStepper;
00044 BDSMagField* itsMagField;
00045 G4Mag_UsualEqRhs* itsEqRhs;
00046 };
00047
00048 #endif