1
#include "G4FieldManager.hh"
2
#include "G4TransportationManager.hh"
3
#include "G4LogicalVolume.hh"
4
#include "G4UniformMagField.hh"
6
#include "DetectorConstruction.hh"
7
#include "MagneticField.hh"
9
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
11
MagneticField::MagneticField()
12
: G4UniformMagField(G4ThreeVector())
14
GetGlobalFieldManager()->SetDetectorField(this);
15
GetGlobalFieldManager()->CreateChordFinder(this);
18
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
20
MagneticField::MagneticField(G4ThreeVector fieldVector,G4LogicalVolume *vol)
21
: G4UniformMagField(fieldVector)
24
magField = new G4UniformMagField(fieldVector);
26
if(vol->GetName()=="World")
28
GetGlobalFieldManager()->SetDetectorField(this);
29
GetGlobalFieldManager()->CreateChordFinder(this);
34
localFieldMgr = new G4FieldManager(magField);
35
localFieldMgr->SetDetectorField(magField);
36
localFieldMgr->CreateChordFinder(magField);
37
vol->SetFieldManager(localFieldMgr,true);
43
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
45
MagneticField::~MagneticField()
49
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
51
// Set the value of the Global Field to fieldValue along X
53
void MagneticField::SetMagFieldValue(G4double fieldValue)
55
SetMagFieldValue(G4ThreeVector(fieldValue,0,0));
58
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
60
// Set the value of the Global Field
62
void MagneticField::SetMagFieldValue(G4ThreeVector fieldVector)
64
// Find the Field Manager for the global field
65
G4FieldManager* fieldMgr = GetGlobalFieldManager();
67
if(fieldVector!=G4ThreeVector(0.,0.,0.))
69
SetFieldValue(fieldVector);
70
fieldMgr->SetDetectorField(this);
75
// If the new field's value is Zero, then it is best to
76
// insure that it is not used for propagation.
77
G4MagneticField* magField = 0;
78
fieldMgr->SetDetectorField(magField);
82
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
84
G4FieldManager* MagneticField::GetGlobalFieldManager()
86
return G4TransportationManager::GetTransportationManager()->GetFieldManager();
89
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......