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

#include <F03FieldSetup.hh>

Public Member Functions

 F03FieldSetup ()
 
virtual ~F03FieldSetup ()
 
void SetStepperType (G4int i)
 
void SetStepper ()
 
void SetMinStep (G4double s)
 
void SetFieldValue (G4ThreeVector fieldVector)
 
void SetFieldValue (G4double fieldValue)
 
G4ThreeVector GetConstantFieldValue ()
 
void UpdateField ()
 
G4FieldManagerGetLocalFieldManager ()
 

Protected Member Functions

G4FieldManagerGetGlobalFieldManager ()
 

Protected Attributes

G4FieldManagerfFieldManager
 
G4FieldManagerfLocalFieldManager
 
G4ChordFinderfChordFinder
 
G4ChordFinderfLocalChordFinder
 
G4Mag_UsualEqRhsfEquation
 
G4Mag_UsualEqRhsfLocalEquation
 
G4MagneticFieldfMagneticField
 
G4MagneticFieldfLocalMagneticField
 
G4MagIntegratorStepperfStepper
 
G4MagIntegratorStepperfLocalStepper
 
G4int fStepperType
 
G4double fMinStep
 
F03FieldMessengerfFieldMessenger
 

Detailed Description

A class for setting up the Magnetic Field

It also creates the necessary classes to control accuracy of propagation. In this example

Definition at line 56 of file F03FieldSetup.hh.

Constructor & Destructor Documentation

F03FieldSetup::F03FieldSetup ( )

Definition at line 66 of file F03FieldSetup.cc.

References fEquation, fFieldManager, fFieldMessenger, fLocalEquation, fLocalFieldManager, fLocalMagneticField, fMagneticField, fMinStep, fStepperType, GetGlobalFieldManager(), python.hepunit::mm, python.hepunit::tesla, and UpdateField().

67  : fFieldManager(0),
69  fChordFinder(0),
71  fEquation(0),
72  fLocalEquation(0),
73  fMagneticField(0),
75  fStepper(0),
76  fLocalStepper(0),
78 {
80  0.0, // 0.5*tesla,
81  0.0));
83  0.0, // 0.5*tesla,
84  0.0));
85 
87 
90 
91  fMinStep = 0.25*mm ; // minimal step of 1 mm is default
92  fStepperType = 4 ; // ClassicalRK4 is default stepper
93 
96 
97  UpdateField();
98 }
CLHEP::Hep3Vector G4ThreeVector
G4MagIntegratorStepper * fStepper
G4ChordFinder * fChordFinder
G4Mag_UsualEqRhs * fLocalEquation
G4MagIntegratorStepper * fLocalStepper
G4MagneticField * fLocalMagneticField
F03FieldMessenger * fFieldMessenger
G4FieldManager * GetGlobalFieldManager()
G4ChordFinder * fLocalChordFinder
G4double fMinStep
G4FieldManager * fLocalFieldManager
G4Mag_UsualEqRhs * fEquation
G4MagneticField * fMagneticField
G4FieldManager * fFieldManager
F03FieldSetup::~F03FieldSetup ( )
virtual

Definition at line 102 of file F03FieldSetup.cc.

References fChordFinder, fFieldMessenger, fMagneticField, and fStepper.

103 {
104  delete fMagneticField;
105  delete fChordFinder;
106  delete fStepper;
107  delete fFieldMessenger;
108 }
G4MagIntegratorStepper * fStepper
G4ChordFinder * fChordFinder
F03FieldMessenger * fFieldMessenger
G4MagneticField * fMagneticField

Member Function Documentation

G4ThreeVector F03FieldSetup::GetConstantFieldValue ( )

Definition at line 239 of file F03FieldSetup.cc.

References fMagneticField, and G4MagneticField::GetFieldValue().

Referenced by F03FieldMessenger::SetNewValue().

240 {
241  static G4double fieldValue[6], position[4];
242  position[0] = position[1] = position[2] = position[3] = 0.0;
243 
244  fMagneticField->GetFieldValue( position, fieldValue);
245  G4ThreeVector fieldVec(fieldValue[0], fieldValue[1], fieldValue[2]);
246 
247  return fieldVec;
248 }
virtual void GetFieldValue(const G4double Point[4], G4double *Bfield) const =0
double G4double
Definition: G4Types.hh:76
G4MagneticField * fMagneticField
G4FieldManager * F03FieldSetup::GetGlobalFieldManager ( )
protected

Definition at line 231 of file F03FieldSetup.cc.

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

Referenced by F03FieldSetup(), and SetFieldValue().

232 {
234  ->GetFieldManager();
235 }
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
G4FieldManager* F03FieldSetup::GetLocalFieldManager ( )
inline

Definition at line 74 of file F03FieldSetup.hh.

References fLocalFieldManager.

Referenced by F03DetectorConstruction::ConstructSDandField().

74 { return fLocalFieldManager;}
G4FieldManager * fLocalFieldManager
void F03FieldSetup::SetFieldValue ( G4ThreeVector  fieldVector)

Definition at line 203 of file F03FieldSetup.cc.

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

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

204 {
205  if(fMagneticField) delete fMagneticField;
206 
207  if(fieldVector != G4ThreeVector(0.,0.,0.))
208  {
209  fMagneticField = new G4UniformMagField(fieldVector);
210  }
211  else
212  {
213  // If the new field's value is Zero, then
214  // setting the pointer to zero ensures
215  // that it is not used for propagation.
216  fMagneticField = 0;
217  }
218 
219  // Either
220  // - UpdateField() to reset all (ChordFinder, Equation);
221  // UpdateField();
222  // or simply update the field manager & equation of motion
223  // with pointer to new field
226 
227 }
CLHEP::Hep3Vector G4ThreeVector
G4bool SetDetectorField(G4Field *detectorField)
G4FieldManager * GetGlobalFieldManager()
void SetFieldObj(G4Field *pField)
G4Mag_UsualEqRhs * fEquation
G4MagneticField * fMagneticField
void F03FieldSetup::SetFieldValue ( G4double  fieldValue)

Definition at line 195 of file F03FieldSetup.cc.

References SetFieldValue().

196 {
197  G4ThreeVector fieldSetVec(0.0, 0.0, fieldStrength);
198  SetFieldValue( fieldSetVec );
199 }
void SetFieldValue(G4ThreeVector fieldVector)
void F03FieldSetup::SetMinStep ( G4double  s)
inline

Definition at line 66 of file F03FieldSetup.hh.

References fMinStep.

Referenced by F03FieldMessenger::SetNewValue().

66 { fMinStep = s; }
const XML_Char * s
G4double fMinStep
void F03FieldSetup::SetStepper ( )

Definition at line 133 of file F03FieldSetup.cc.

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

Referenced by UpdateField().

134 {
135  if (fStepper) delete fStepper;
136 
137  switch ( fStepperType )
138  {
139  case 0:
142  G4cout<<"G4ExplicitEuler is called"<<G4endl;
143  break;
144  case 1:
147  G4cout<<"G4ImplicitEuler is called"<<G4endl;
148  break;
149  case 2:
152  G4cout<<"G4SimpleRunge is called"<<G4endl;
153  break;
154  case 3:
157  G4cout<<"G4SimpleHeum is called"<<G4endl;
158  break;
159  case 4:
162  G4cout<<"G4ClassicalRK4 (default) is called"<<G4endl;
163  break;
164  case 5:
167  G4cout<<"G4HelixExplicitEuler is called"<<G4endl;
168  break;
169  case 6:
172  G4cout<<"G4HelixImplicitEuler is called"<<G4endl;
173  break;
174  case 7:
177  G4cout<<"G4HelixSimpleRunge is called"<<G4endl;
178  break;
179  case 8:
182  G4cout<<"G4CashKarpRKF45 is called"<<G4endl;
183  break;
184  case 9:
187  G4cout<<"G4RKG3_Stepper is called"<<G4endl;
188  break;
189  default: fStepper = 0;
190  }
191 }
G4MagIntegratorStepper * fStepper
G4Mag_UsualEqRhs * fLocalEquation
G4GLOB_DLL std::ostream G4cout
G4MagIntegratorStepper * fLocalStepper
#define G4endl
Definition: G4ios.hh:61
G4Mag_UsualEqRhs * fEquation
void F03FieldSetup::SetStepperType ( G4int  i)
inline

Definition at line 62 of file F03FieldSetup.hh.

References fStepperType.

Referenced by F03FieldMessenger::SetNewValue().

62 { fStepperType = i; }
void F03FieldSetup::UpdateField ( )

Definition at line 112 of file F03FieldSetup.cc.

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

Referenced by F03FieldSetup(), and F03FieldMessenger::SetNewValue().

113 {
114  SetStepper();
115  G4cout<<"The minimal step is equal to "<<fMinStep/mm<<" mm"<<G4endl;
116 
119 
120  if (fChordFinder) delete fChordFinder;
122 
126 
129 }
G4bool SetDetectorField(G4Field *detectorField)
G4MagIntegratorStepper * fStepper
G4ChordFinder * fChordFinder
void SetChordFinder(G4ChordFinder *aChordFinder)
G4GLOB_DLL std::ostream G4cout
G4MagIntegratorStepper * fLocalStepper
G4MagneticField * fLocalMagneticField
G4ChordFinder * fLocalChordFinder
G4double fMinStep
G4FieldManager * fLocalFieldManager
#define G4endl
Definition: G4ios.hh:61
G4MagneticField * fMagneticField
G4FieldManager * fFieldManager

Field Documentation

G4ChordFinder* F03FieldSetup::fChordFinder
protected

Definition at line 84 of file F03FieldSetup.hh.

Referenced by UpdateField(), and ~F03FieldSetup().

G4Mag_UsualEqRhs* F03FieldSetup::fEquation
protected

Definition at line 86 of file F03FieldSetup.hh.

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

G4FieldManager* F03FieldSetup::fFieldManager
protected

Definition at line 82 of file F03FieldSetup.hh.

Referenced by F03FieldSetup(), and UpdateField().

F03FieldMessenger* F03FieldSetup::fFieldMessenger
protected

Definition at line 97 of file F03FieldSetup.hh.

Referenced by F03FieldSetup(), and ~F03FieldSetup().

G4ChordFinder* F03FieldSetup::fLocalChordFinder
protected

Definition at line 85 of file F03FieldSetup.hh.

Referenced by UpdateField().

G4Mag_UsualEqRhs* F03FieldSetup::fLocalEquation
protected

Definition at line 87 of file F03FieldSetup.hh.

Referenced by F03FieldSetup(), and SetStepper().

G4FieldManager* F03FieldSetup::fLocalFieldManager
protected

Definition at line 83 of file F03FieldSetup.hh.

Referenced by F03FieldSetup(), GetLocalFieldManager(), and UpdateField().

G4MagneticField* F03FieldSetup::fLocalMagneticField
protected

Definition at line 89 of file F03FieldSetup.hh.

Referenced by F03FieldSetup(), and UpdateField().

G4MagIntegratorStepper* F03FieldSetup::fLocalStepper
protected

Definition at line 92 of file F03FieldSetup.hh.

Referenced by SetStepper(), and UpdateField().

G4MagneticField* F03FieldSetup::fMagneticField
protected
G4double F03FieldSetup::fMinStep
protected

Definition at line 95 of file F03FieldSetup.hh.

Referenced by F03FieldSetup(), SetMinStep(), and UpdateField().

G4MagIntegratorStepper* F03FieldSetup::fStepper
protected

Definition at line 91 of file F03FieldSetup.hh.

Referenced by SetStepper(), UpdateField(), and ~F03FieldSetup().

G4int F03FieldSetup::fStepperType
protected

Definition at line 93 of file F03FieldSetup.hh.

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


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