00001
00002
00003
00004
00005
00006
00007 #include <limits>
00008 #include "BDSGlobalConstants.hh"
00009 #include "G4UniformMagField.hh"
00010 #include "globals.hh"
00011 #include "BDSSbendMagField.hh"
00012
00013 BDSSbendMagField::BDSSbendMagField(const G4ThreeVector& aField,
00014 const G4double length,
00015 const G4double angle)
00016 :G4UniformMagField(aField)
00017 {
00018 if(angle!=0.)
00019 {
00020
00021 itsLocalRadius=-length/angle;
00022
00023 #ifdef BDSDEBUG
00024 G4double B_inferred=
00025 (BDSGlobalConstants::Instance()->GetBeamMomentum()/CLHEP::GeV)/
00026 (0.299792458 * (CLHEP::GeV/CLHEP::tesla/CLHEP::m)*itsLocalRadius/CLHEP::m);
00027 G4cout<<"B_inferred="<<B_inferred/CLHEP::tesla<<
00028 " aField="<<aField/CLHEP::tesla<<G4endl;
00029 #endif
00030 } else {
00031 itsLocalRadius = std::numeric_limits<double>::max();
00032 #ifdef BDSDEBUG
00033 G4double B_inferred=0;
00034 G4cout<<"B_inferred="<<B_inferred/CLHEP::tesla<<
00035 " aField="<<aField/CLHEP::tesla<<G4endl;
00036 #endif
00037 }
00038 }
00039
00040 BDSSbendMagField::~BDSSbendMagField()
00041 {}
00042
00043