Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // Please cite the following paper if you use 27 // Nucl.Instrum.Meth.B260:20-27, 2007 28 29 #include "DetectorMessenger.hh" 30 #include "DetectorConstruction.hh" 31 32 //....oooOO0OOooo........oooOO0OOooo........oo 33 34 DetectorMessenger::DetectorMessenger(DetectorC 35 :fDetector(Det) 36 { 37 fQuadDir = new G4UIdirectory("/quad/"); 38 fQuadDir->SetGuidance("Quadrupole control.") 39 40 fModelCmd = new G4UIcmdWithAnInteger("/quad/ 41 fModelCmd->SetGuidance("Select magnetic fiel 42 fModelCmd->SetParameterName("model",false); 43 fModelCmd->AvailableForStates(G4State_PreIni 44 45 fProfileCmd = new G4UIcmdWithAnInteger("/dis 46 fProfileCmd->SetGuidance("Display beam profi 47 fProfileCmd->SetParameterName("profile",fals 48 fProfileCmd->AvailableForStates(G4State_PreI 49 50 fGridCmd = new G4UIcmdWithAnInteger("/setGri 51 fGridCmd->SetGuidance("Put grid and shadow p 52 fGridCmd->SetParameterName("grid",false); 53 fGridCmd->AvailableForStates(G4State_PreInit 54 55 fCoefCmd = new G4UIcmdWithAnInteger("/setCoe 56 fCoefCmd->SetGuidance("Calculate aberration 57 fCoefCmd->SetParameterName("coef",false); 58 fCoefCmd->AvailableForStates(G4State_PreInit 59 60 fG1Cmd = new G4UIcmdWithADouble("/quad/setG1 61 fG1Cmd->SetGuidance("Set G1."); 62 fG1Cmd->SetParameterName("G1",false); 63 fG1Cmd->AvailableForStates(G4State_PreInit,G 64 65 fG2Cmd = new G4UIcmdWithADouble("/quad/setG2 66 fG2Cmd->SetGuidance("Set G2."); 67 fG2Cmd->SetParameterName("G2",false); 68 fG2Cmd->AvailableForStates(G4State_PreInit,G 69 70 fG3Cmd = new G4UIcmdWithADouble("/quad/setG3 71 fG3Cmd->SetGuidance("Set G3."); 72 fG3Cmd->SetParameterName("G3",false); 73 fG3Cmd->AvailableForStates(G4State_PreInit,G 74 75 fG4Cmd = new G4UIcmdWithADouble("/quad/setG4 76 fG4Cmd->SetGuidance("Set G4."); 77 fG4Cmd->SetParameterName("G4",false); 78 fG4Cmd->AvailableForStates(G4State_PreInit,G 79 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oo 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........oo 98 99 void DetectorMessenger::SetNewValue(G4UIcomman 100 { 101 if( command == fModelCmd ) 102 { fDetector->SetModel(fModelCmd->GetNewIntV 103 104 if( command == fProfileCmd ) 105 { fDetector->SetProfile(fProfileCmd->GetNew 106 107 if( command == fGridCmd ) 108 { fDetector->SetGrid(fGridCmd->GetNewIntVal 109 110 if( command == fCoefCmd ) 111 { fDetector->SetCoef(fGridCmd->GetNewIntVal 112 113 if( command == fG1Cmd ) 114 { fDetector->SetG1(fG1Cmd->GetNewDoubleValu 115 116 if( command == fG2Cmd ) 117 { fDetector->SetG2(fG1Cmd->GetNewDoubleValu 118 119 if( command == fG3Cmd ) 120 { fDetector->SetG3(fG1Cmd->GetNewDoubleValu 121 122 if( command == fG4Cmd ) 123 { fDetector->SetG4(fG1Cmd->GetNewDoubleValu 124 125 } 126