Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // Please cite the following paper if you use this software 27 // Nucl.Instrum.Meth.B260:20-27, 2007 28 29 #include "DetectorMessenger.hh" 30 #include "DetectorConstruction.hh" 31 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 33 34 DetectorMessenger::DetectorMessenger(DetectorConstruction * Det) 35 :fDetector(Det) 36 { 37 fQuadDir = new G4UIdirectory("/quad/"); 38 fQuadDir->SetGuidance("Quadrupole control."); 39 40 fModelCmd = new G4UIcmdWithAnInteger("/quad/setModel",this); 41 fModelCmd->SetGuidance("Select magnetic field model."); 42 fModelCmd->SetParameterName("model",false); 43 fModelCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 44 45 fProfileCmd = new G4UIcmdWithAnInteger("/displayProfile",this); 46 fProfileCmd->SetGuidance("Display beam profile."); 47 fProfileCmd->SetParameterName("profile",false); 48 fProfileCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 49 50 fGridCmd = new G4UIcmdWithAnInteger("/setGrid",this); 51 fGridCmd->SetGuidance("Put grid and shadow plane."); 52 fGridCmd->SetParameterName("grid",false); 53 fGridCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 54 55 fCoefCmd = new G4UIcmdWithAnInteger("/setCoef",this); 56 fCoefCmd->SetGuidance("Calculate aberration coefficients."); 57 fCoefCmd->SetParameterName("coef",false); 58 fCoefCmd->AvailableForStates(G4State_PreInit,G4State_Idle); 59 60 fG1Cmd = new G4UIcmdWithADouble("/quad/setG1",this); 61 fG1Cmd->SetGuidance("Set G1."); 62 fG1Cmd->SetParameterName("G1",false); 63 fG1Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 64 65 fG2Cmd = new G4UIcmdWithADouble("/quad/setG2",this); 66 fG2Cmd->SetGuidance("Set G2."); 67 fG2Cmd->SetParameterName("G2",false); 68 fG2Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 69 70 fG3Cmd = new G4UIcmdWithADouble("/quad/setG3",this); 71 fG3Cmd->SetGuidance("Set G3."); 72 fG3Cmd->SetParameterName("G3",false); 73 fG3Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 74 75 fG4Cmd = new G4UIcmdWithADouble("/quad/setG4",this); 76 fG4Cmd->SetGuidance("Set G4."); 77 fG4Cmd->SetParameterName("G4",false); 78 fG4Cmd->AvailableForStates(G4State_PreInit,G4State_Idle); 79 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 83 84 DetectorMessenger::~DetectorMessenger() 85 { 86 delete fG1Cmd; 87 delete fG2Cmd; 88 delete fG3Cmd; 89 delete fG4Cmd; 90 delete fQuadDir; 91 delete fModelCmd; 92 delete fProfileCmd; 93 delete fGridCmd; 94 delete fCoefCmd; 95 } 96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 98 99 void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) 100 { 101 if( command == fModelCmd ) 102 { fDetector->SetModel(fModelCmd->GetNewIntValue(newValue));} 103 104 if( command == fProfileCmd ) 105 { fDetector->SetProfile(fProfileCmd->GetNewIntValue(newValue));} 106 107 if( command == fGridCmd ) 108 { fDetector->SetGrid(fGridCmd->GetNewIntValue(newValue));} 109 110 if( command == fCoefCmd ) 111 { fDetector->SetCoef(fGridCmd->GetNewIntValue(newValue));} 112 113 if( command == fG1Cmd ) 114 { fDetector->SetG1(fG1Cmd->GetNewDoubleValue(newValue));} 115 116 if( command == fG2Cmd ) 117 { fDetector->SetG2(fG1Cmd->GetNewDoubleValue(newValue));} 118 119 if( command == fG3Cmd ) 120 { fDetector->SetG3(fG1Cmd->GetNewDoubleValue(newValue));} 121 122 if( command == fG4Cmd ) 123 { fDetector->SetG4(fG1Cmd->GetNewDoubleValue(newValue));} 124 125 } 126