include/BDSSolenoid.hh

00001 //  
00002 //   BDSIM, (C) 2001-2007
00003 //   
00004 //   version 0.4
00005 //  
00006 //
00007 //
00008 //   Solenoid Class
00009 //
00010 //
00011 //   History
00012 //
00013 //     21 Oct 2007 by Marchiori, v.0.4
00014 //
00015 
00016 #ifndef __BDSSOLENOID_H
00017 #define __BDSSOLENOID_H
00018 
00019 //#define _USE_GEANT4_STEPPER_
00020 
00021 #include "globals.hh"
00022 
00023 
00024 #include "G4VisAttributes.hh"
00025 #include "BDSMultipole.hh"
00026 #include "G4Mag_UsualEqRhs.hh"
00027 #include "G4UniformMagField.hh"
00028 #include "BDSSolenoidStepper.hh"
00029 #include "BDSSolenoidMagField.hh"
00030 
00031 class G4Mag_UsualEqRhs;
00032 class G4UniformMagField;
00033 class BDSSolenoidStepper;
00034 class BDSSolenoidMagField;
00035 
00036 class BDSSolenoid : public BDSMultipole
00037 {
00038 public:
00039   BDSSolenoid(G4String aName, G4double aLength,
00040               G4double bpRad, G4double FeRad,
00041               G4double bField, G4double outR, 
00042               std::list<G4double> blmLocZ, std::list<G4double> blmLocTheta,
00043               G4String aTunnelMaterial="",
00044               G4String aMaterial= "");
00045   ~BDSSolenoid();
00046 
00047   void SynchRescale(G4double factor);
00048 
00049 protected:
00050 
00051 private:
00052   G4double itsBField;
00053 
00054   void BuildBPFieldAndStepper();
00055 
00056   G4VisAttributes* SetVisAttributes();
00057 
00058   // field related objects:
00059 #ifdef _USE_GEANT4_STEPPER_
00060   BDSSolenoidMagField* itsMagField;
00061   G4MagIntegratorStepper* itsStepper;
00062 #else
00063   G4UniformMagField* itsMagField;
00064   BDSSolenoidStepper* itsStepper;
00065 #endif
00066   G4Mag_UsualEqRhs* itsEqRhs;
00067 };
00068 
00069 #endif
00070 

Generated on 27 Aug 2013 for BDSIM by  doxygen 1.4.7