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 27 // Author: Ivana Hrivnacova, 21/10/2015 (ivan 28 29 #include "G4PlotMessenger.hh" 30 #include "G4PlotParameters.hh" 31 #include "G4AnalysisUtilities.hh" 32 33 #include "G4UIdirectory.hh" 34 #include "G4UIcommand.hh" 35 #include "G4UIparameter.hh" 36 #include "G4UIcmdWithAString.hh" 37 38 #include <vector> 39 40 using namespace G4Analysis; 41 using std::to_string; 42 43 //____________________________________________ 44 G4PlotMessenger::G4PlotMessenger(G4PlotParamet 45 : fPlotParameters(plotParameters) 46 { 47 fDirectory = std::make_unique<G4UIdirectory> 48 fDirectory->SetGuidance("Analysis batch plot 49 50 SetStyleCmd(); 51 SetLayoutCmd(); 52 SetDimensionsCmd(); 53 } 54 55 //____________________________________________ 56 G4PlotMessenger::~G4PlotMessenger() = default; 57 58 // 59 // private functions 60 // 61 62 //____________________________________________ 63 void G4PlotMessenger::AddIntParameter( 64 G4UIcommand& command, G4String name, G4Strin 65 { 66 auto param = new G4UIparameter(name.c_str(), 67 param->SetGuidance(guidance.c_str()); 68 if (! range.empty()) { 69 param->SetParameterRange(range); 70 } 71 command.SetParameter(param); 72 } 73 74 //____________________________________________ 75 void G4PlotMessenger::SetStyleCmd() 76 { 77 G4String guidance; 78 G4String candidates; 79 #if defined(TOOLS_USE_FREETYPE) 80 guidance = 81 "Set plotting style from: \n" 82 " ROOT_default: ROOT style with high res 83 " hippodraw: hippodraw style with hig 84 " inlib_default: PAW style with low resol 85 candidates = 86 "ROOT_default hippodraw inlib_default"; 87 #else 88 guidance = 89 "Only one plotting style is available in l 90 " inlib_default: PAW style with low resol 91 candidates = 92 "inlib_default"; 93 #endif 94 95 fSetStyleCmd = CreateCommand<G4UIcmdWithAStr 96 fSetStyleCmd->SetParameterName("Style", fals 97 fSetStyleCmd->SetCandidates("inlib_default") 98 } 99 100 //____________________________________________ 101 void G4PlotMessenger::SetLayoutCmd() 102 { 103 fSetLayoutCmd = CreateCommand<G4UIcommand>( 104 "setLayout", 105 "Set page layout (number of columns and ro 106 " Supported layouts:\n" 107 " columns = 1 .. maxValueAllowed\n" 108 " rows = 1 .. maxValueAllowed, and >= 109 110 AddIntParameter(*fSetLayoutCmd, "columns", 111 "The number of columns in the page layout 112 "columns>=1 && columns<=" + std::to_strin 113 AddIntParameter(*fSetLayoutCmd, "rows", 114 "The number of rows in the page layout.", 115 "rows>=1 && rows<=" + std::to_string(fPlot 116 } 117 118 //____________________________________________ 119 void G4PlotMessenger::SetDimensionsCmd() 120 { 121 fSetDimensionsCmd = CreateCommand<G4UIcomman 122 "setDimensions", 123 "Set the plotter window size (width and he 124 125 AddIntParameter(*fSetDimensionsCmd, "width", 126 AddIntParameter(*fSetDimensionsCmd, "height" 127 } 128 129 // 130 // public functions 131 // 132 133 //____________________________________________ 134 void G4PlotMessenger::SetNewValue(G4UIcommand* 135 { 136 // tokenize parameters in a vector 137 std::vector<G4String> parameters; 138 G4Analysis::Tokenize(newValues, parameters); 139 // check consistency 140 if ( parameters.size() != command->GetParame 141 // Should never happen but let's check any 142 G4Analysis::Warn( 143 "Got wrong number of \"" + command->GetC 144 "\" parameters: " + to_string(parameters 145 " instead of " + to_string(command->GetP 146 fkClass, "WarnAboutParameters"); 147 return; 148 } 149 150 auto counter = 0; 151 if ( command == fSetLayoutCmd.get() ) { 152 auto columns = G4UIcommand::ConvertToInt(p 153 auto rows = G4UIcommand::ConvertToInt(para 154 fPlotParameters->SetLayout(columns, rows); 155 return; 156 } 157 158 if ( command == fSetDimensionsCmd.get() ) { 159 auto width = G4UIcommand::ConvertToInt(par 160 auto height = G4UIcommand::ConvertToInt(pa 161 fPlotParameters->SetDimensions(width, heig 162 return; 163 } 164 165 if ( command == fSetStyleCmd.get() ) { 166 fPlotParameters->SetStyle(newValues); 167 return; 168 } 169 } 170