Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes
F01FieldSetup Class Reference

#include <F01FieldSetup.hh>

Public Member Functions

 F01FieldSetup (G4ThreeVector)
 
 F01FieldSetup ()
 
virtual ~F01FieldSetup ()
 
void SetStepperType (G4int i)
 
void SetStepper ()
 
void SetMinStep (G4double s)
 
void InitialiseAll ()
 
void CreateStepperAndChordFinder ()
 
void SetFieldValue (G4ThreeVector fieldVector)
 
void SetFieldValue (G4double fieldValue)
 
G4ThreeVector GetConstantFieldValue ()
 

Protected Member Functions

G4FieldManagerGetGlobalFieldManager ()
 

Protected Attributes

G4FieldManagerfFieldManager
 
G4ChordFinderfChordFinder
 
G4Mag_UsualEqRhsfEquation
 
G4MagneticFieldfMagneticField
 
G4MagIntegratorStepperfStepper
 
G4int fStepperType
 
G4double fMinStep
 
F01FieldMessengerfFieldMessenger
 

Detailed Description

Definition at line 57 of file F01FieldSetup.hh.

Constructor & Destructor Documentation

F01FieldSetup::F01FieldSetup ( G4ThreeVector  fieldVector)

Definition at line 67 of file F01FieldSetup.cc.

References G4cout, G4endl, and InitialiseAll().

68  : fFieldManager(0),
69  fChordFinder(0),
70  fEquation(0),
71  fMagneticField(new G4UniformMagField(fieldVector)),
72  fStepper(0),
73  fStepperType(0),
74  fMinStep(0.),
76 {
77  G4cout << " F01FieldSetup: magnetic field set to Uniform( "
78  << fieldVector << " ) " << G4endl;
79  InitialiseAll();
80 }
G4double fMinStep
G4Mag_UsualEqRhs * fEquation
G4FieldManager * fFieldManager
G4ChordFinder * fChordFinder
G4GLOB_DLL std::ostream G4cout
G4MagIntegratorStepper * fStepper
F01FieldMessenger * fFieldMessenger
#define G4endl
Definition: G4ios.hh:61
G4MagneticField * fMagneticField
void InitialiseAll()
F01FieldSetup::F01FieldSetup ( )

Definition at line 84 of file F01FieldSetup.cc.

References G4cout, G4endl, and InitialiseAll().

85  : fFieldManager(0),
86  fChordFinder(0),
87  fEquation(0),
89  fStepper(0),
90  fStepperType(0),
91  fMinStep(0.),
93 {
94  G4cout << " F01FieldSetup: magnetic field set to Uniform( 0.0, 0, 0 ) "
95  << G4endl;
96  InitialiseAll();
97 }
G4double fMinStep
CLHEP::Hep3Vector G4ThreeVector
G4Mag_UsualEqRhs * fEquation
G4FieldManager * fFieldManager
G4ChordFinder * fChordFinder
G4GLOB_DLL std::ostream G4cout
G4MagIntegratorStepper * fStepper
F01FieldMessenger * fFieldMessenger
#define G4endl
Definition: G4ios.hh:61
G4MagneticField * fMagneticField
void InitialiseAll()
F01FieldSetup::~F01FieldSetup ( )
virtual

Definition at line 118 of file F01FieldSetup.cc.

References fChordFinder, fFieldMessenger, fMagneticField, and fStepper.

119 {
120  delete fMagneticField;
121  delete fChordFinder;
122  delete fStepper;
123  delete fFieldMessenger;
124 }
G4ChordFinder * fChordFinder
G4MagIntegratorStepper * fStepper
F01FieldMessenger * fFieldMessenger
G4MagneticField * fMagneticField

Member Function Documentation

void F01FieldSetup::CreateStepperAndChordFinder ( )

Definition at line 128 of file F01FieldSetup.cc.

References fChordFinder, fFieldManager, fMagneticField, fMinStep, fStepper, G4cout, G4endl, python.hepunit::mm, G4FieldManager::SetChordFinder(), G4FieldManager::SetDetectorField(), and SetStepper().

Referenced by InitialiseAll(), and F01FieldMessenger::SetNewValue().

129 {
130  // Update field
131 
132  SetStepper();
133  G4cout<<"The minimal step is equal to "<<fMinStep/mm<<" mm"<<G4endl;
134 
136 
137  if (fChordFinder) delete fChordFinder;
138 
140 
142 }
G4double fMinStep
G4bool SetDetectorField(G4Field *detectorField)
G4FieldManager * fFieldManager
G4ChordFinder * fChordFinder
void SetChordFinder(G4ChordFinder *aChordFinder)
G4GLOB_DLL std::ostream G4cout
G4MagIntegratorStepper * fStepper
#define G4endl
Definition: G4ios.hh:61
G4MagneticField * fMagneticField
G4ThreeVector F01FieldSetup::GetConstantFieldValue ( )
G4FieldManager * F01FieldSetup::GetGlobalFieldManager ( )
protected

Definition at line 262 of file F01FieldSetup.cc.

References G4TransportationManager::GetFieldManager(), and G4TransportationManager::GetTransportationManager().

Referenced by SetFieldValue().

263 {
264  // Utility method
265 
267  ->GetFieldManager();
268 }
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
void F01FieldSetup::InitialiseAll ( )

Definition at line 101 of file F01FieldSetup.cc.

References CreateStepperAndChordFinder(), fEquation, fFieldManager, fFieldMessenger, fMagneticField, fMinStep, fStepperType, G4TransportationManager::GetFieldManager(), G4TransportationManager::GetTransportationManager(), and python.hepunit::mm.

Referenced by F01FieldSetup().

102 {
104 
106 
107  fMinStep = 1.0*mm; // minimal step of 1 mm is default
108 
109  fStepperType = 4; // ClassicalRK4 is default stepper
110 
112  ->GetFieldManager();
114 }
G4double fMinStep
G4Mag_UsualEqRhs * fEquation
G4FieldManager * fFieldManager
F01FieldMessenger * fFieldMessenger
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
void CreateStepperAndChordFinder()
G4MagneticField * fMagneticField
void F01FieldSetup::SetFieldValue ( G4ThreeVector  fieldVector)

Definition at line 235 of file F01FieldSetup.cc.

References fEquation, fMagneticField, GetGlobalFieldManager(), G4FieldManager::SetDetectorField(), and G4EquationOfMotion::SetFieldObj().

Referenced by SetFieldValue(), and F01FieldMessenger::SetNewValue().

236 {
237  // Set the value of the Global Field
238 
239  if (fMagneticField) delete fMagneticField;
240 
241  if (fieldVector != G4ThreeVector(0.,0.,0.))
242  {
243  fMagneticField = new G4UniformMagField(fieldVector);
244  }
245  else
246  {
247  // If the new field's value is Zero, signal it as below
248  // so that it is not used for propagation.
249  fMagneticField = 0;
250  }
251 
252  // Set this as the field of the global Field Manager
254 
255  // Now notify equation of new field
257 
258 }
G4FieldManager * GetGlobalFieldManager()
CLHEP::Hep3Vector G4ThreeVector
G4bool SetDetectorField(G4Field *detectorField)
G4Mag_UsualEqRhs * fEquation
void SetFieldObj(G4Field *pField)
G4MagneticField * fMagneticField
void F01FieldSetup::SetFieldValue ( G4double  fieldValue)

Definition at line 200 of file F01FieldSetup.cc.

References FatalException, fMagneticField, G4cout, G4endl, G4Exception(), python.hepunit::gauss, G4MagneticField::GetFieldValue(), and SetFieldValue().

201 {
202  // Set the value of the Global Field to fieldValue along Z
203 
204 #ifdef G4VERBOSE
205  G4cout << "Setting Field strength to "
206  << fieldStrength / gauss << " Gauss."; // << G4endl;
207 #endif
208 
209  G4ThreeVector fieldSetVec(0.0, 0.0, fieldStrength);
210  this->SetFieldValue( fieldSetVec );
211 
212 #ifdef G4VERBOSE
213  G4double fieldValue[6], position[4];
214  position[0] = position[1] = position[2] = position[3] = 0.0;
215  if ( fieldStrength != 0.0 ) {
216  fMagneticField->GetFieldValue( position, fieldValue);
217  G4ThreeVector fieldVec(fieldValue[0], fieldValue[1], fieldValue[2]);
218  // G4cout << " fMagneticField is now " << fMagneticField
219  G4cout << " Magnetic field vector is "
220  << fieldVec / gauss << " G " << G4endl;
221  } else {
222  if ( fMagneticField == 0 )
223  G4cout << " Magnetic field pointer is null." << G4endl;
224  else
225  G4Exception("F01FieldSetup::SetFieldValue(double)",
226  "IncorrectForZeroField",
228  "fMagneticField ptr should be set to 0 for no field.");
229  }
230 #endif
231 }
virtual void GetFieldValue(const G4double Point[4], G4double *Bfield) const =0
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
void SetFieldValue(G4ThreeVector fieldVector)
G4MagneticField * fMagneticField
void F01FieldSetup::SetMinStep ( G4double  s)
inline

Definition at line 69 of file F01FieldSetup.hh.

References fMinStep.

Referenced by F01FieldMessenger::SetNewValue().

69 { fMinStep = s; }
G4double fMinStep
const XML_Char * s
void F01FieldSetup::SetStepper ( )

Definition at line 146 of file F01FieldSetup.cc.

References fEquation, fStepper, fStepperType, G4cout, and G4endl.

Referenced by CreateStepperAndChordFinder().

147 {
148 // Set stepper according to the stepper type
149 
150  if (fStepper) delete fStepper;
151 
152  switch ( fStepperType )
153  {
154  case 0:
156  G4cout<<"G4ExplicitEuler is calledS"<<G4endl;
157  break;
158  case 1:
160  G4cout<<"G4ImplicitEuler is called"<<G4endl;
161  break;
162  case 2:
164  G4cout<<"G4SimpleRunge is called"<<G4endl;
165  break;
166  case 3:
168  G4cout<<"G4SimpleHeum is called"<<G4endl;
169  break;
170  case 4:
172  G4cout<<"G4ClassicalRK4 (default) is called"<<G4endl;
173  break;
174  case 5:
176  G4cout<<"G4HelixExplicitEuler is called"<<G4endl;
177  break;
178  case 6:
180  G4cout<<"G4HelixImplicitEuler is called"<<G4endl;
181  break;
182  case 7:
184  G4cout<<"G4HelixSimpleRunge is called"<<G4endl;
185  break;
186  case 8:
188  G4cout<<"G4CashKarpRKF45 is called"<<G4endl;
189  break;
190  case 9:
192  G4cout<<"G4RKG3_Stepper is called"<<G4endl;
193  break;
194  default: fStepper = 0;
195  }
196 }
G4Mag_UsualEqRhs * fEquation
G4GLOB_DLL std::ostream G4cout
G4MagIntegratorStepper * fStepper
#define G4endl
Definition: G4ios.hh:61
void F01FieldSetup::SetStepperType ( G4int  i)
inline

Definition at line 65 of file F01FieldSetup.hh.

References fStepperType.

Referenced by F01FieldMessenger::SetNewValue().

65 { fStepperType = i; }

Field Documentation

G4ChordFinder* F01FieldSetup::fChordFinder
protected

Definition at line 85 of file F01FieldSetup.hh.

Referenced by CreateStepperAndChordFinder(), and ~F01FieldSetup().

G4Mag_UsualEqRhs* F01FieldSetup::fEquation
protected

Definition at line 86 of file F01FieldSetup.hh.

Referenced by InitialiseAll(), SetFieldValue(), and SetStepper().

G4FieldManager* F01FieldSetup::fFieldManager
protected

Definition at line 84 of file F01FieldSetup.hh.

Referenced by CreateStepperAndChordFinder(), and InitialiseAll().

F01FieldMessenger* F01FieldSetup::fFieldMessenger
protected

Definition at line 94 of file F01FieldSetup.hh.

Referenced by InitialiseAll(), and ~F01FieldSetup().

G4MagneticField* F01FieldSetup::fMagneticField
protected
G4double F01FieldSetup::fMinStep
protected

Definition at line 92 of file F01FieldSetup.hh.

Referenced by CreateStepperAndChordFinder(), InitialiseAll(), and SetMinStep().

G4MagIntegratorStepper* F01FieldSetup::fStepper
protected

Definition at line 89 of file F01FieldSetup.hh.

Referenced by CreateStepperAndChordFinder(), SetStepper(), and ~F01FieldSetup().

G4int F01FieldSetup::fStepperType
protected

Definition at line 90 of file F01FieldSetup.hh.

Referenced by InitialiseAll(), SetStepper(), and SetStepperType().


The documentation for this class was generated from the following files: