#include <MyGlobalFieldMessenger.hh>
Public Member Functions | |
MyGlobalFieldMessenger (MyGlobalField *) | |
~MyGlobalFieldMessenger () | |
void | SetNewValue (G4UIcommand *, G4String) |
void | SetNewValue (G4UIcommand *, G4int) |
Private Attributes | |
MyGlobalField * | fGlobalField |
G4UIdirectory * | detDir |
G4UIcmdWith3VectorAndUnit * | fGetFieldCMD |
G4UIcmdWithAnInteger * | fVerboseCMD |
G4int | fVerbose |
G4UIcmdWithAnInteger * | fStepperCMD |
G4UIcmdWithADoubleAndUnit * | fMinStepCMD |
G4UIcmdWithADoubleAndUnit * | fDeltaChordCMD |
G4UIcmdWithADoubleAndUnit * | fDeltaOneStepCMD |
G4UIcmdWithADoubleAndUnit * | fDeltaIntersectionCMD |
G4UIcmdWithADoubleAndUnit * | fEpsMinCMD |
G4UIcmdWithADoubleAndUnit * | fEpsMaxCMD |
G4UIcmdWithoutParameter * | fUpdateCMD |
Definition at line 47 of file MyGlobalFieldMessenger.hh.
MyGlobalFieldMessenger::MyGlobalFieldMessenger | ( | MyGlobalField * | pEMfield | ) |
Definition at line 41 of file MyGlobalFieldMessenger.cc.
References detDir, fDeltaChordCMD, fDeltaIntersectionCMD, fDeltaOneStepCMD, fEpsMaxCMD, fEpsMinCMD, fGetFieldCMD, fMinStepCMD, fStepperCMD, fUpdateCMD, fVerbose, and fVerboseCMD.
00042 : fGlobalField(pEMfield) { 00043 detDir = new G4UIdirectory("/field/"); 00044 detDir->SetGuidance(" Field tracking control "); 00045 00046 fVerboseCMD = new G4UIcmdWithAnInteger("/field/verbose",this); 00047 fVerboseCMD->SetGuidance("Verbosity of getField command"); 00048 fVerboseCMD->SetParameterName("verbose",true); 00049 fVerboseCMD->SetDefaultValue(1); 00050 fVerboseCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00051 fVerbose=1; 00052 00053 fGetFieldCMD = 00054 new G4UIcmdWith3VectorAndUnit("/field/getField",this); 00055 fGetFieldCMD-> 00056 SetGuidance("Get the B field at the position."); 00057 fGetFieldCMD->SetParameterName("GlobalPosX","GlobalPosY","GlobalPosZ",false); 00058 fGetFieldCMD->SetUnitCategory("Length"); 00059 fGetFieldCMD->AvailableForStates(G4State_Idle); 00060 00061 fStepperCMD = new G4UIcmdWithAnInteger("/field/setStepperType",this); 00062 fStepperCMD->SetGuidance("Select stepper type for field"); 00063 fStepperCMD->SetParameterName("choice",true); 00064 fStepperCMD->SetDefaultValue(4); 00065 fStepperCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00066 00067 fUpdateCMD = new G4UIcmdWithoutParameter("/field/update",this); 00068 fUpdateCMD->SetGuidance("Update Field"); 00069 fUpdateCMD->SetGuidance("This command MUST be applied before \"beamOn\" "); 00070 fUpdateCMD->SetGuidance("if you changed field settings."); 00071 fUpdateCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00072 00073 fMinStepCMD = new G4UIcmdWithADoubleAndUnit("/field/setMinStep",this); 00074 fMinStepCMD->SetGuidance("Define minimal step"); 00075 fMinStepCMD->SetParameterName("min step",false,false); 00076 fMinStepCMD->SetDefaultUnit("mm"); 00077 fMinStepCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00078 00079 fDeltaChordCMD = new G4UIcmdWithADoubleAndUnit("/field/setDeltaChord",this); 00080 fDeltaChordCMD->SetGuidance("Define delta chord"); 00081 fDeltaChordCMD->SetParameterName("delta chord",false,false); 00082 fDeltaChordCMD->SetDefaultUnit("mm"); 00083 fDeltaChordCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00084 00085 fDeltaOneStepCMD = 00086 new G4UIcmdWithADoubleAndUnit("/field/setDeltaOneStep",this); 00087 fDeltaOneStepCMD->SetGuidance("Define delta one step"); 00088 fDeltaOneStepCMD->SetParameterName("delta one step",false,false); 00089 fDeltaOneStepCMD->SetDefaultUnit("mm"); 00090 fDeltaOneStepCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00091 00092 fDeltaIntersectionCMD = 00093 new G4UIcmdWithADoubleAndUnit("/field/setDeltaIntersection",this); 00094 fDeltaIntersectionCMD->SetGuidance("Define delta intersection"); 00095 fDeltaIntersectionCMD->SetParameterName("delta intersection",false,false); 00096 fDeltaIntersectionCMD->SetDefaultUnit("mm"); 00097 fDeltaIntersectionCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00098 00099 fEpsMinCMD = new G4UIcmdWithADoubleAndUnit("/field/setEpsMin",this); 00100 fEpsMinCMD->SetGuidance("Define eps min"); 00101 fEpsMinCMD->SetParameterName("eps min",false,false); 00102 fEpsMinCMD->SetDefaultUnit("mm"); 00103 fEpsMinCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00104 00105 fEpsMaxCMD = new G4UIcmdWithADoubleAndUnit("/field/setEpsMax",this); 00106 fEpsMaxCMD->SetGuidance("Define eps max"); 00107 fEpsMaxCMD->SetParameterName("eps max",false,false); 00108 fEpsMaxCMD->SetDefaultUnit("mm"); 00109 fEpsMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle); 00110 }
MyGlobalFieldMessenger::~MyGlobalFieldMessenger | ( | ) |
Definition at line 113 of file MyGlobalFieldMessenger.cc.
References detDir, fDeltaChordCMD, fDeltaIntersectionCMD, fDeltaOneStepCMD, fEpsMaxCMD, fEpsMinCMD, fGetFieldCMD, fMinStepCMD, fStepperCMD, fUpdateCMD, and fVerboseCMD.
00113 { 00114 delete detDir; 00115 00116 delete fGetFieldCMD; 00117 delete fVerboseCMD; 00118 00119 delete fStepperCMD; 00120 delete fMinStepCMD; 00121 delete fDeltaChordCMD; 00122 delete fDeltaOneStepCMD; 00123 delete fDeltaIntersectionCMD; 00124 delete fEpsMinCMD; 00125 delete fEpsMaxCMD; 00126 delete fUpdateCMD; 00127 }
void MyGlobalFieldMessenger::SetNewValue | ( | G4UIcommand * | , | |
G4int | ||||
) |
void MyGlobalFieldMessenger::SetNewValue | ( | G4UIcommand * | command, | |
G4String | newValue | |||
) |
Definition at line 130 of file MyGlobalFieldMessenger.cc.
References fDeltaChordCMD, fDeltaIntersectionCMD, fDeltaOneStepCMD, fEpsMaxCMD, fEpsMinCMD, fGetFieldCMD, fGlobalField, fMinStepCMD, fStepperCMD, fUpdateCMD, fVerbose, fVerboseCMD, MyGlobalField::GetFieldValue(), MyGlobalField::SetDeltaChord(), MyGlobalField::SetEpsMax(), MyGlobalField::SetEpsMin(), MyGlobalField::SetMinStep(), MyGlobalField::SetStepperType(), and MyGlobalField::updateField().
00130 { 00131 if( command == fGetFieldCMD ) { 00132 G4ThreeVector aPos = fGetFieldCMD->GetNew3VectorValue(newValue); 00133 G4double aPosVec[3]; 00134 aPosVec[0] = aPos.x(); 00135 aPosVec[1] = aPos.y(); 00136 aPosVec[2] = aPos.z(); 00137 00138 G4double theField[6]; 00139 fGlobalField->GetFieldValue(aPosVec, theField); 00140 if(fVerbose>0) { 00141 G4cout << "Point = [" << aPosVec[0]/mm << ", " 00142 << aPosVec[1]/mm << ", " << aPosVec[2]/mm << "] mm" << G4endl; 00143 G4cout << " Field = [" 00144 << theField[0]/tesla << ", " << theField[1]/tesla 00145 << ", " << theField[2]/tesla << "] T " 00146 << " [" << theField[3] << ", " << theField[4] 00147 << ", " << theField[5] << "] V/m" << G4endl; 00148 } 00149 else { 00150 G4cout << aPosVec[0]/mm << " " << aPosVec[1]/mm << " " 00151 << aPosVec[2]/mm << " " << theField[0]/tesla << " " 00152 << theField[1]/tesla << " " << theField[2]/tesla << " " 00153 << theField[3] << " " << theField[4] << " " << theField[5] 00154 << G4endl; 00155 } 00156 } 00157 00158 if( command == fVerboseCMD ) { 00159 fVerbose=fStepperCMD->GetNewIntValue(newValue); 00160 } 00161 00162 if( command == fStepperCMD ) { 00163 fGlobalField->SetStepperType(fStepperCMD->GetNewIntValue(newValue)); 00164 } 00165 if( command == fUpdateCMD ) { 00166 fGlobalField->updateField(); 00167 } 00168 if( command == fMinStepCMD ) { 00169 fGlobalField->SetMinStep(fMinStepCMD->GetNewDoubleValue(newValue)); 00170 } 00171 if( command == fDeltaChordCMD ) { 00172 fGlobalField->SetDeltaChord(fDeltaChordCMD->GetNewDoubleValue(newValue)); 00173 } 00174 if( command == fDeltaOneStepCMD ) { 00175 fGlobalField-> 00176 SetDeltaOneStep(fDeltaOneStepCMD->GetNewDoubleValue(newValue)); 00177 } 00178 if( command == fDeltaIntersectionCMD ) { 00179 fGlobalField-> 00180 SetDeltaIntersection(fDeltaIntersectionCMD->GetNewDoubleValue(newValue)); 00181 } 00182 if( command == fEpsMinCMD ) { 00183 fGlobalField->SetEpsMin(fEpsMinCMD->GetNewDoubleValue(newValue)); 00184 } 00185 if( command == fEpsMaxCMD ) { 00186 fGlobalField->SetEpsMax(fEpsMaxCMD->GetNewDoubleValue(newValue)); 00187 } 00188 }
G4UIdirectory* MyGlobalFieldMessenger::detDir [private] |
Definition at line 59 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), and ~MyGlobalFieldMessenger().
G4UIcmdWithADoubleAndUnit* MyGlobalFieldMessenger::fDeltaChordCMD [private] |
Definition at line 67 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWithADoubleAndUnit* MyGlobalFieldMessenger::fDeltaIntersectionCMD [private] |
Definition at line 69 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWithADoubleAndUnit* MyGlobalFieldMessenger::fDeltaOneStepCMD [private] |
Definition at line 68 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWithADoubleAndUnit* MyGlobalFieldMessenger::fEpsMaxCMD [private] |
Definition at line 71 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWithADoubleAndUnit* MyGlobalFieldMessenger::fEpsMinCMD [private] |
Definition at line 70 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWith3VectorAndUnit* MyGlobalFieldMessenger::fGetFieldCMD [private] |
Definition at line 61 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
Definition at line 57 of file MyGlobalFieldMessenger.hh.
Referenced by SetNewValue().
G4UIcmdWithADoubleAndUnit* MyGlobalFieldMessenger::fMinStepCMD [private] |
Definition at line 66 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWithAnInteger* MyGlobalFieldMessenger::fStepperCMD [private] |
Definition at line 65 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4UIcmdWithoutParameter* MyGlobalFieldMessenger::fUpdateCMD [private] |
Definition at line 72 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().
G4int MyGlobalFieldMessenger::fVerbose [private] |
Definition at line 63 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), and SetNewValue().
G4UIcmdWithAnInteger* MyGlobalFieldMessenger::fVerboseCMD [private] |
Definition at line 62 of file MyGlobalFieldMessenger.hh.
Referenced by MyGlobalFieldMessenger(), SetNewValue(), and ~MyGlobalFieldMessenger().