]>
Commit | Line | Data |
---|---|---|
676fb573 | 1 | // $Id$ |
2 | // Category: geometry | |
3 | // | |
4 | // According to: | |
5 | // Id: ExN02MagneticField.cc,v 1.1 1999/01/07 16:05:49 gunter Exp | |
6 | // GEANT4 tag Name: geant4-00-01 | |
7 | ||
8 | #include "AliMagneticField.h" | |
9 | ||
10 | #include <G4FieldManager.hh> | |
11 | #include <G4TransportationManager.hh> | |
12 | ||
13 | // Constructors | |
14 | ||
78ca1e9c | 15 | //_____________________________________________________________________________ |
676fb573 | 16 | AliMagneticField::AliMagneticField() |
17 | : G4UniformMagField(G4ThreeVector()) | |
18 | { | |
19 | // | |
6dd21a33 | 20 | GetGlobalFieldManager()->SetDetectorField(this); |
676fb573 | 21 | GetGlobalFieldManager()->CreateChordFinder(this); |
22 | } | |
23 | ||
78ca1e9c | 24 | //_____________________________________________________________________________ |
676fb573 | 25 | AliMagneticField::AliMagneticField(G4ThreeVector fieldVector) |
26 | : G4UniformMagField(fieldVector) | |
27 | { | |
28 | // | |
6dd21a33 | 29 | GetGlobalFieldManager()->SetDetectorField(this); |
676fb573 | 30 | GetGlobalFieldManager()->CreateChordFinder(this); |
31 | } | |
32 | ||
78ca1e9c | 33 | //_____________________________________________________________________________ |
676fb573 | 34 | AliMagneticField::AliMagneticField(const AliMagneticField& right) |
35 | : G4UniformMagField(right) | |
36 | { | |
37 | // | |
6dd21a33 | 38 | GetGlobalFieldManager()->SetDetectorField(this); |
676fb573 | 39 | GetGlobalFieldManager()->CreateChordFinder(this); |
40 | } | |
41 | ||
78ca1e9c | 42 | //_____________________________________________________________________________ |
676fb573 | 43 | AliMagneticField::~AliMagneticField() { |
44 | // | |
45 | } | |
46 | ||
47 | // operators | |
48 | ||
78ca1e9c | 49 | //_____________________________________________________________________________ |
676fb573 | 50 | AliMagneticField& |
51 | AliMagneticField::operator=(const AliMagneticField& right) | |
52 | { | |
53 | // check assignement to self | |
54 | if (this == &right) return *this; | |
55 | ||
56 | // base class assignement | |
57 | G4UniformMagField::operator=(right); | |
58 | ||
59 | return *this; | |
60 | } | |
61 | ||
62 | // public methods | |
63 | ||
78ca1e9c | 64 | //_____________________________________________________________________________ |
676fb573 | 65 | void AliMagneticField::SetFieldValue(G4double fieldValue) |
66 | { | |
67 | // Sets the value of the Global Field to fieldValue along Z. | |
68 | // --- | |
69 | ||
70 | G4UniformMagField::SetFieldValue(G4ThreeVector(0,0,fieldValue)); | |
71 | } | |
72 | ||
78ca1e9c | 73 | //_____________________________________________________________________________ |
676fb573 | 74 | void AliMagneticField::SetFieldValue(G4ThreeVector fieldVector) |
75 | { | |
76 | // Sets the value of the Global Field. | |
77 | // --- | |
78 | ||
79 | // Find the Field Manager for the global field | |
80 | G4FieldManager* fieldMgr= GetGlobalFieldManager(); | |
81 | ||
82 | if(fieldVector!=G4ThreeVector(0.,0.,0.)) { | |
83 | G4UniformMagField::SetFieldValue(fieldVector); | |
84 | fieldMgr->SetDetectorField(this); | |
85 | } | |
86 | else { | |
87 | // If the new field's value is Zero, then it is best to | |
88 | // insure that it is not used for propagation. | |
6dd21a33 | 89 | G4MagneticField* magField = 0; |
676fb573 | 90 | fieldMgr->SetDetectorField(magField); |
91 | } | |
92 | } | |
93 | ||
78ca1e9c | 94 | //_____________________________________________________________________________ |
676fb573 | 95 | G4FieldManager* AliMagneticField::GetGlobalFieldManager() |
96 | { | |
78ca1e9c | 97 | // Utility method |
676fb573 | 98 | // --- |
99 | ||
100 | return G4TransportationManager::GetTransportationManager() | |
101 | ->GetFieldManager(); | |
102 | } | |
103 |