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 /// \file hadronic/Hadr00/src/HistoManagerMessenger.cc 27 /// \brief Implementation of the HistoManagerMessenger class 28 // 29 // 30 // 31 // 32 ///////////////////////////////////////////////////////////////////////// 33 // 34 // HistoManagerMessenger 35 // 36 // Created: 20.06.08 V.Ivanchenko 37 // 38 // Modified: 39 // 40 //////////////////////////////////////////////////////////////////////// 41 // 42 43 #include "HistoManagerMessenger.hh" 44 45 #include "HistoManager.hh" 46 47 #include "G4UIcmdWith3Vector.hh" 48 #include "G4UIcmdWithABool.hh" 49 #include "G4UIcmdWithADoubleAndUnit.hh" 50 #include "G4UIcmdWithAString.hh" 51 #include "G4UIcmdWithAnInteger.hh" 52 #include "G4UIcmdWithoutParameter.hh" 53 #include "G4UIdirectory.hh" 54 55 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 56 57 HistoManagerMessenger::HistoManagerMessenger(HistoManager* p) : G4UImessenger(), fHisto(p) 58 { 59 fbinCmd = new G4UIcmdWithAnInteger("/testhadr/nBinsE", this); 60 fbinCmd->SetGuidance("Set number of bins for energy"); 61 fbinCmd->SetParameterName("NEbins", false); 62 fbinCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 63 64 fnOfAbsCmd = new G4UIcmdWithAnInteger("/testhadr/nBinsP", this); 65 fnOfAbsCmd->SetGuidance("Set number of bins for momentum"); 66 fnOfAbsCmd->SetParameterName("NPbins", false); 67 fnOfAbsCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 68 69 fpartCmd = new G4UIcmdWithAString("/testhadr/particle", this); 70 fpartCmd->SetGuidance("Set particle name"); 71 fpartCmd->SetParameterName("Particle", false); 72 fpartCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 73 74 fcsCmd = new G4UIcmdWithAString("/testhadr/targetElm", this); 75 fcsCmd->SetGuidance("Set element name"); 76 fcsCmd->SetParameterName("Elm", false); 77 fcsCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 78 79 fe1Cmd = new G4UIcmdWithADoubleAndUnit("/testhadr/minEnergy", this); 80 fe1Cmd->SetGuidance("Set min kinetic energy"); 81 fe1Cmd->SetParameterName("eMin", false); 82 fe1Cmd->SetUnitCategory("Energy"); 83 fe1Cmd->AvailableForStates(G4State_PreInit, G4State_Idle); 84 85 fe2Cmd = new G4UIcmdWithADoubleAndUnit("/testhadr/maxEnergy", this); 86 fe2Cmd->SetGuidance("Set max kinetic energy"); 87 fe2Cmd->SetParameterName("eMax", false); 88 fe2Cmd->SetUnitCategory("Energy"); 89 fe2Cmd->AvailableForStates(G4State_PreInit, G4State_Idle); 90 91 fp1Cmd = new G4UIcmdWithADoubleAndUnit("/testhadr/minMomentum", this); 92 fp1Cmd->SetGuidance("Set min momentum"); 93 fp1Cmd->SetParameterName("pMin", false); 94 fp1Cmd->SetUnitCategory("Energy"); 95 fp1Cmd->AvailableForStates(G4State_PreInit, G4State_Idle); 96 97 fp2Cmd = new G4UIcmdWithADoubleAndUnit("/testhadr/maxMomentum", this); 98 fp2Cmd->SetGuidance("Set max momentum"); 99 fp2Cmd->SetParameterName("pMax", false); 100 fp2Cmd->SetUnitCategory("Energy"); 101 fp2Cmd->AvailableForStates(G4State_PreInit, G4State_Idle); 102 103 fverbCmd = new G4UIcmdWithAnInteger("/testhadr/verbose", this); 104 fverbCmd->SetGuidance("Set verbose for "); 105 fverbCmd->SetParameterName("verb", false); 106 fverbCmd->AvailableForStates(G4State_PreInit, G4State_Idle); 107 108 fFCmd = new G4UIcmdWithAString("/testhadr/fileName", this); 109 fFCmd->SetGuidance("set name for the histograms file"); 110 } 111 112 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 113 114 HistoManagerMessenger::~HistoManagerMessenger() 115 { 116 delete fbinCmd; 117 delete fnOfAbsCmd; 118 delete fpartCmd; 119 delete fcsCmd; 120 delete fe1Cmd; 121 delete fe2Cmd; 122 delete fp1Cmd; 123 delete fp2Cmd; 124 delete fverbCmd; 125 delete fFCmd; 126 } 127 128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 129 130 void HistoManagerMessenger::SetNewValue(G4UIcommand* command, G4String newValue) 131 { 132 if (command == fbinCmd) { 133 fHisto->SetNumberOfBinsE(fbinCmd->GetNewIntValue(newValue)); 134 } 135 else if (command == fnOfAbsCmd) { 136 fHisto->SetNumberOfBinsP(fnOfAbsCmd->GetNewIntValue(newValue)); 137 } 138 else if (command == fverbCmd) { 139 fHisto->SetVerbose(fverbCmd->GetNewIntValue(newValue)); 140 } 141 else if (command == fpartCmd) { 142 fHisto->SetParticleName(newValue); 143 } 144 else if (command == fcsCmd) { 145 fHisto->SetElementName(newValue); 146 } 147 else if (command == fe1Cmd) { 148 fHisto->SetMinKinEnergy(fe1Cmd->GetNewDoubleValue(newValue)); 149 } 150 else if (command == fe2Cmd) { 151 fHisto->SetMaxKinEnergy(fe2Cmd->GetNewDoubleValue(newValue)); 152 } 153 else if (command == fp1Cmd) { 154 fHisto->SetMinMomentum(fp1Cmd->GetNewDoubleValue(newValue)); 155 } 156 else if (command == fp2Cmd) { 157 fHisto->SetMaxMomentum(fp2Cmd->GetNewDoubleValue(newValue)); 158 } 159 else if (command == fFCmd) { 160 fHisto->SetHistoName(newValue); 161 } 162 } 163 164 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 165