Geant4  10.02.p03
G4GlobalMagFieldMessenger Class Reference

#include <G4GlobalMagFieldMessenger.hh>

Inheritance diagram for G4GlobalMagFieldMessenger:
Collaboration diagram for G4GlobalMagFieldMessenger:

Public Member Functions

 G4GlobalMagFieldMessenger (const G4ThreeVector &value=G4ThreeVector())
 
virtual ~G4GlobalMagFieldMessenger ()
 
virtual void SetNewValue (G4UIcommand *, G4String)
 
void SetFieldValue (const G4ThreeVector &value)
 
G4ThreeVector GetFieldValue () const
 
void SetVerboseLevel (G4int verboseLevel)
 
G4int GetVerboseLevel () const
 
- Public Member Functions inherited from G4UImessenger
 G4UImessenger ()
 
 G4UImessenger (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
virtual ~G4UImessenger ()
 
virtual G4String GetCurrentValue (G4UIcommand *command)
 
G4bool operator== (const G4UImessenger &messenger) const
 
G4bool CommandsShouldBeInMaster () const
 

Private Member Functions

void SetField (const G4ThreeVector &value, const G4String &inFunction)
 

Private Attributes

G4UniformMagFieldfMagField
 
G4int fVerboseLevel
 
G4UIdirectoryfDirectory
 
G4UIcmdWith3VectorAndUnitfSetValueCmd
 
G4UIcmdWithAnIntegerfSetVerboseCmd
 

Additional Inherited Members

- Protected Member Functions inherited from G4UImessenger
G4String ItoS (G4int i)
 
G4String DtoS (G4double a)
 
G4String BtoS (G4bool b)
 
G4int StoI (G4String s)
 
G4double StoD (G4String s)
 
G4bool StoB (G4String s)
 
void AddUIcommand (G4UIcommand *newCommand)
 
void CreateDirectory (const G4String &path, const G4String &dsc, G4bool commandsToBeBroadcasted=true)
 
template<typename T >
T * CreateCommand (const G4String &cname, const G4String &dsc)
 
- Protected Attributes inherited from G4UImessenger
G4UIdirectorybaseDir
 
G4String baseDirName
 
G4bool commandsShouldBeInMaster
 

Detailed Description

Definition at line 56 of file G4GlobalMagFieldMessenger.hh.

Constructor & Destructor Documentation

◆ G4GlobalMagFieldMessenger()

G4GlobalMagFieldMessenger::G4GlobalMagFieldMessenger ( const G4ThreeVector value = G4ThreeVector())

Definition at line 49 of file G4GlobalMagFieldMessenger.cc.

50  : G4UImessenger(),
51  fMagField(0),
52  fVerboseLevel(0),
53  fDirectory(0),
54  fSetValueCmd(0),
56 {
57  fDirectory = new G4UIdirectory("/globalField/");
58  fDirectory->SetGuidance("Global uniform magnetic field UI commands");
59 
60  fSetValueCmd = new G4UIcmdWith3VectorAndUnit("/globalField/setValue",this);
61  fSetValueCmd->SetGuidance("Set uniform magnetic field value.");
62  fSetValueCmd->SetParameterName("Bx", "By", "By", false);
63  fSetValueCmd->SetUnitCategory("Magnetic flux density");
65 
66  fSetVerboseCmd = new G4UIcmdWithAnInteger("/globalField/verbose",this);
67  fSetVerboseCmd->SetGuidance("Set verbose level: ");
68  fSetVerboseCmd->SetGuidance(" 0: no output");
69  fSetVerboseCmd->SetGuidance(" 1: printing new field value");
70  fSetVerboseCmd->SetParameterName("globalFieldVerbose", false);
71  fSetVerboseCmd->SetRange("globalFieldVerbose>=0");
73 
74  // Create field
75  fMagField = new G4UniformMagField(value);
76 
77  // Set field value (the field is not activated if value is zero)
78  SetField(value, "G4GlobalMagFieldMessenger::G4GlobalMagFieldMessenger");
79 }
void SetField(const G4ThreeVector &value, const G4String &inFunction)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
G4UIcmdWithAnInteger * fSetVerboseCmd
void SetUnitCategory(const char *unitCategory)
void SetParameterName(const char *theNameX, const char *theNameY, const char *theNameZ, G4bool omittable, G4bool currentAsDefault=false)
G4UIcmdWith3VectorAndUnit * fSetValueCmd
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:161
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:239
Here is the call graph for this function:

◆ ~G4GlobalMagFieldMessenger()

G4GlobalMagFieldMessenger::~G4GlobalMagFieldMessenger ( )
virtual

Definition at line 83 of file G4GlobalMagFieldMessenger.cc.

84 {
85  delete fMagField;
86  delete fSetValueCmd;
87  delete fSetVerboseCmd;
88  delete fDirectory;
89 }
G4UIcmdWithAnInteger * fSetVerboseCmd
G4UIcmdWith3VectorAndUnit * fSetValueCmd

Member Function Documentation

◆ GetFieldValue()

G4ThreeVector G4GlobalMagFieldMessenger::GetFieldValue ( ) const

Definition at line 150 of file G4GlobalMagFieldMessenger.cc.

151 {
152  if ( fMagField ) return fMagField->GetConstantFieldValue();
153 
154  return G4ThreeVector();
155 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector GetConstantFieldValue() const
Here is the call graph for this function:

◆ GetVerboseLevel()

G4int G4GlobalMagFieldMessenger::GetVerboseLevel ( ) const
inline

Definition at line 88 of file G4GlobalMagFieldMessenger.hh.

◆ SetField()

void G4GlobalMagFieldMessenger::SetField ( const G4ThreeVector value,
const G4String inFunction 
)
private

Definition at line 93 of file G4GlobalMagFieldMessenger.cc.

95 {
96  // Get field manager (or create it if it does not yet exist)
97  G4FieldManager* fieldManager
99 
100  // Inactivate field if its value is zero
101  if ( value == G4ThreeVector() )
102  {
103  fieldManager->SetDetectorField(0);
104  fieldManager->CreateChordFinder(0);
105 
106  if ( fVerboseLevel > 0 )
107  {
108  G4cout << "Magnetic field is inactive, fieldValue = (0,0,0)." << G4endl;
109  }
110  }
111  else
112  {
113  fMagField->SetFieldValue(value);
114  fieldManager->SetDetectorField(fMagField);
115  fieldManager->CreateChordFinder(fMagField);
116 
117  if ( fVerboseLevel > 0 )
118  {
119  G4cout << "Magnetic field is active, fieldValue = ("
120  << G4BestUnit(value, "Magnetic flux density")
121  << ")." << G4endl;
122  }
123  }
124 }
void SetFieldValue(const G4ThreeVector &newFieldValue)
CLHEP::Hep3Vector G4ThreeVector
G4bool SetDetectorField(G4Field *detectorField)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
G4GLOB_DLL std::ostream G4cout
G4FieldManager * GetFieldManager() const
static G4TransportationManager * GetTransportationManager()
#define G4endl
Definition: G4ios.hh:61
void CreateChordFinder(G4MagneticField *detectorMagField)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetFieldValue()

void G4GlobalMagFieldMessenger::SetFieldValue ( const G4ThreeVector value)

Definition at line 143 of file G4GlobalMagFieldMessenger.cc.

144 {
145  SetField(value, "G4GlobalMagFieldMessenger::SetFieldValue");
146 }
void SetField(const G4ThreeVector &value, const G4String &inFunction)
Here is the call graph for this function:

◆ SetNewValue()

void G4GlobalMagFieldMessenger::SetNewValue ( G4UIcommand command,
G4String  newValue 
)
virtual

Reimplemented from G4UImessenger.

Definition at line 128 of file G4GlobalMagFieldMessenger.cc.

129 {
130  if ( command == fSetValueCmd )
131  {
133  "G4GlobalMagFieldMessenger::SetNewValue");
134  }
135  else if ( command == fSetVerboseCmd )
136  {
138  }
139 }
void SetField(const G4ThreeVector &value, const G4String &inFunction)
void SetVerboseLevel(G4int verboseLevel)
G4UIcmdWithAnInteger * fSetVerboseCmd
static G4int GetNewIntValue(const char *paramString)
static G4ThreeVector GetNew3VectorValue(const char *paramString)
G4UIcmdWith3VectorAndUnit * fSetValueCmd
Here is the call graph for this function:

◆ SetVerboseLevel()

void G4GlobalMagFieldMessenger::SetVerboseLevel ( G4int  verboseLevel)
inline

Definition at line 85 of file G4GlobalMagFieldMessenger.hh.

86 { fVerboseLevel = verboseLevel; }
Here is the caller graph for this function:

Member Data Documentation

◆ fDirectory

G4UIdirectory* G4GlobalMagFieldMessenger::fDirectory
private

Definition at line 78 of file G4GlobalMagFieldMessenger.hh.

◆ fMagField

G4UniformMagField* G4GlobalMagFieldMessenger::fMagField
private

Definition at line 75 of file G4GlobalMagFieldMessenger.hh.

◆ fSetValueCmd

G4UIcmdWith3VectorAndUnit* G4GlobalMagFieldMessenger::fSetValueCmd
private

Definition at line 79 of file G4GlobalMagFieldMessenger.hh.

◆ fSetVerboseCmd

G4UIcmdWithAnInteger* G4GlobalMagFieldMessenger::fSetVerboseCmd
private

Definition at line 80 of file G4GlobalMagFieldMessenger.hh.

◆ fVerboseLevel

G4int G4GlobalMagFieldMessenger::fVerboseLevel
private

Definition at line 76 of file G4GlobalMagFieldMessenger.hh.


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