Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/analysis/management/src/G4HnMessenger.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /analysis/management/src/G4HnMessenger.cc (Version 11.3.0) and /analysis/management/src/G4HnMessenger.cc (Version 11.1.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26                                                    26 
 27 // Author: Ivana Hrivnacova, 18/06/2013  (ivan     27 // Author: Ivana Hrivnacova, 18/06/2013  (ivana@ipno.in2p3.fr)
 28                                                    28 
 29 #include "G4HnMessenger.hh"                        29 #include "G4HnMessenger.hh"
 30 #include "G4HnManager.hh"                          30 #include "G4HnManager.hh"
 31 #include "G4AnalysisUtilities.hh"              << 
 32                                                    31 
 33 #include "G4UIcommand.hh"                          32 #include "G4UIcommand.hh"
 34 #include "G4UIparameter.hh"                        33 #include "G4UIparameter.hh"
 35 #include "G4UIcmdWithABool.hh"                     34 #include "G4UIcmdWithABool.hh"
 36 #include "G4UIcmdWithAString.hh"                   35 #include "G4UIcmdWithAString.hh"
 37                                                    36 
 38 using namespace G4Analysis;                    << 
 39                                                << 
 40 //____________________________________________     37 //_____________________________________________________________________________
 41 G4HnMessenger::G4HnMessenger(G4HnManager& mana     38 G4HnMessenger::G4HnMessenger(G4HnManager& manager)
 42   : fManager(manager),                             39   : fManager(manager),
 43     fHnType(manager.GetHnType()),              <<  40     fHnType(manager.GetHnType())
 44     fHnDimension(std::stoi(manager.GetHnType() << 
 45 {                                                  41 {
 46   SetHnAsciiCmd();                                 42   SetHnAsciiCmd();
 47   SetHnActivationCmd();                            43   SetHnActivationCmd();
 48   SetHnActivationToAllCmd();                       44   SetHnActivationToAllCmd();
 49   SetHnPlottingCmd();                              45   SetHnPlottingCmd();
 50   SetHnPlottingToAllCmd();                         46   SetHnPlottingToAllCmd();
 51   SetHnFileNameCmd();                              47   SetHnFileNameCmd();
 52   SetHnFileNameToAllCmd();                         48   SetHnFileNameToAllCmd();
 53                                                << 
 54   auto maxDim = (fHnDimension < kMaxDim) ? fHn << 
 55   for (unsigned int idim = 0; idim < maxDim; + << 
 56     fSetAxisLogCmd.push_back(CreateSetAxisLogC << 
 57   }                                            << 
 58 }                                                  49 }
 59                                                    50 
 60 //____________________________________________     51 //_____________________________________________________________________________
 61 G4HnMessenger::~G4HnMessenger() = default;         52 G4HnMessenger::~G4HnMessenger() = default;
 62                                                    53 
 63 //                                                 54 //
 64 // private functions                               55 // private functions
 65 //                                                 56 //
 66                                                    57 
 67 //____________________________________________     58 //_____________________________________________________________________________
 68 G4String G4HnMessenger::GetObjectType() const      59 G4String G4HnMessenger::GetObjectType() const
 69 {                                                  60 {
 70   return (fHnType[0] == 'h') ?                     61   return (fHnType[0] == 'h') ?
 71     fHnType.substr(1,1) + "D histogram" :          62     fHnType.substr(1,1) + "D histogram" :
 72     fHnType.substr(1,1) + "D profile";             63     fHnType.substr(1,1) + "D profile";
 73 }                                                  64 }
 74                                                    65 
 75 //____________________________________________     66 //_____________________________________________________________________________
 76 void G4HnMessenger::AddIdParameter(G4UIcommand     67 void G4HnMessenger::AddIdParameter(G4UIcommand& command)
 77 {                                                  68 {
 78   auto htId = new G4UIparameter("id", 'i', fal     69   auto htId = new G4UIparameter("id", 'i', false);
 79   htId->SetGuidance("Histogram id");               70   htId->SetGuidance("Histogram id");
 80   htId->SetParameterRange("id>=0");                71   htId->SetParameterRange("id>=0");
 81   command.SetParameter(htId);                      72   command.SetParameter(htId);
 82 }                                                  73 }
 83                                                    74 
 84 //____________________________________________     75 //_____________________________________________________________________________
 85 void G4HnMessenger::AddOptionParameter(G4UIcom     76 void G4HnMessenger::AddOptionParameter(G4UIcommand& command, G4String optionName)
 86 {                                                  77 {
 87   auto param = new G4UIparameter(optionName, '     78   auto param = new G4UIparameter(optionName, 'b', true);
 88   auto guidance = GetObjectType() + " " + opti     79   auto guidance = GetObjectType() + " " + optionName + " option";
 89   param->SetGuidance(guidance.c_str());            80   param->SetGuidance(guidance.c_str());
 90   param->SetDefaultValue("true");                  81   param->SetDefaultValue("true");
 91   command.SetParameter(param);                     82   command.SetParameter(param);
 92 }                                                  83 }
 93                                                    84 
 94 //____________________________________________     85 //_____________________________________________________________________________
 95 void G4HnMessenger::SetHnAsciiCmd()                86 void G4HnMessenger::SetHnAsciiCmd()
 96 {                                                  87 {
 97   fSetAsciiCmd =                                   88   fSetAsciiCmd =
 98     CreateCommand<G4UIcommand>("setAscii", "Pr     89     CreateCommand<G4UIcommand>("setAscii", "Print  on ascii file the ");
 99                                                    90 
100   AddIdParameter(*fSetAsciiCmd);                   91   AddIdParameter(*fSetAsciiCmd);
101   AddOptionParameter(*fSetAsciiCmd, "hnAscii")     92   AddOptionParameter(*fSetAsciiCmd, "hnAscii");
102                                                    93 
103 }                                                  94 }
104                                                    95 
105 //____________________________________________     96 //_____________________________________________________________________________
106 void G4HnMessenger::SetHnActivationCmd()           97 void G4HnMessenger::SetHnActivationCmd()
107 {                                                  98 {
108   fSetActivationCmd =                              99   fSetActivationCmd =
109     CreateCommand<G4UIcommand>("setActivation"    100     CreateCommand<G4UIcommand>("setActivation", "Set activation to the ");
110                                                   101 
111   AddIdParameter(*fSetActivationCmd);             102   AddIdParameter(*fSetActivationCmd);
112   AddOptionParameter(*fSetActivationCmd, "hnAc    103   AddOptionParameter(*fSetActivationCmd, "hnActivation");
113 }                                                 104 }
114                                                   105 
115 //____________________________________________    106 //_____________________________________________________________________________
116 void G4HnMessenger::SetHnActivationToAllCmd()     107 void G4HnMessenger::SetHnActivationToAllCmd()
117 {                                                 108 {
118   fSetActivationAllCmd =                          109   fSetActivationAllCmd =
119     CreateCommand<G4UIcmdWithABool>(              110     CreateCommand<G4UIcmdWithABool>(
120       "setActivationToAll", "Set activation to    111       "setActivationToAll", "Set activation to all");
121   fSetActivationAllCmd->SetParameterName("Acti    112   fSetActivationAllCmd->SetParameterName("Activation", false);
122 }                                                 113 }
123                                                   114 
124 //____________________________________________    115 //_____________________________________________________________________________
125 void G4HnMessenger::SetHnPlottingCmd()            116 void G4HnMessenger::SetHnPlottingCmd()
126 {                                                 117 {
127   fSetPlottingCmd =                               118   fSetPlottingCmd =
128     CreateCommand<G4UIcommand>("setPlotting",     119     CreateCommand<G4UIcommand>("setPlotting", "(In)Activate batch plotting of the  ");
129                                                   120 
130   AddIdParameter(*fSetPlottingCmd);               121   AddIdParameter(*fSetPlottingCmd);
131   AddOptionParameter(*fSetPlottingCmd, "hnPlot    122   AddOptionParameter(*fSetPlottingCmd, "hnPlotting");
132 }                                                 123 }
133                                                   124 
134 //____________________________________________    125 //_____________________________________________________________________________
135 void G4HnMessenger::SetHnPlottingToAllCmd()       126 void G4HnMessenger::SetHnPlottingToAllCmd()
136 {                                                 127 {
137   fSetPlottingAllCmd =                            128   fSetPlottingAllCmd =
138     CreateCommand<G4UIcmdWithABool>(              129     CreateCommand<G4UIcmdWithABool>(
139       "setPlottingToAll", "(In)Activate batch     130       "setPlottingToAll", "(In)Activate batch plotting of all ");
140   fSetPlottingAllCmd->SetParameterName("Plotti    131   fSetPlottingAllCmd->SetParameterName("Plotting", false);
141 }                                                 132 }
142                                                   133 
143 //____________________________________________    134 //_____________________________________________________________________________
144 void G4HnMessenger::SetHnFileNameCmd()            135 void G4HnMessenger::SetHnFileNameCmd()
145 {                                                 136 {
146   fSetFileNameCmd =                               137   fSetFileNameCmd =
147     CreateCommand<G4UIcommand>("setFileName",     138     CreateCommand<G4UIcommand>("setFileName", "Set the output file name for the ");
148                                                   139 
149   AddIdParameter(*fSetFileNameCmd);               140   AddIdParameter(*fSetFileNameCmd);
150                                                   141 
151   auto param = new G4UIparameter("hnFileName",    142   auto param = new G4UIparameter("hnFileName", 's', false);
152   auto guidance = GetObjectType() + " output f    143   auto guidance = GetObjectType() + " output file name";
153   param->SetGuidance(guidance.c_str());           144   param->SetGuidance(guidance.c_str());
154   fSetFileNameCmd->SetParameter(param);           145   fSetFileNameCmd->SetParameter(param);
155 }                                                 146 }
156                                                   147 
157 //____________________________________________    148 //_____________________________________________________________________________
158 void G4HnMessenger::SetHnFileNameToAllCmd()       149 void G4HnMessenger::SetHnFileNameToAllCmd()
159 {                                                 150 {
160   fSetFileNameAllCmd =                            151   fSetFileNameAllCmd =
161     CreateCommand<G4UIcmdWithAString>(            152     CreateCommand<G4UIcmdWithAString>(
162       "setFileNameToAll", "Set output file nam    153       "setFileNameToAll", "Set output file name for all  ");
163    fSetFileNameAllCmd->SetParameterName("FileN    154    fSetFileNameAllCmd->SetParameterName("FileName", false);
164 }                                                 155 }
165                                                   156 
166 //____________________________________________ << 
167 std::unique_ptr<G4UIcommand>                   << 
168 G4HnMessenger::CreateSetAxisLogCommand(unsigne << 
169 {                                              << 
170   G4String xyz{"XYZ"};                         << 
171   auto axis = xyz.substr(idim, 1);             << 
172                                                << 
173   G4String commandName = "set" + axis + "axisL << 
174   G4String guidance =  "Activate " + axis + "- << 
175                                                << 
176   auto command = CreateCommand<G4UIcommand>(st << 
177   command->AvailableForStates(G4State_PreInit, << 
178                                                << 
179   // Add Id parameter                          << 
180   AddIdParameter(*command);                    << 
181                                                << 
182   auto parAxisLog = new G4UIparameter("axis",  << 
183   guidance = GetObjectType() + " " + std::move << 
184   parAxisLog->SetGuidance(guidance.c_str());   << 
185   command->SetParameter(parAxisLog);           << 
186                                                << 
187   return command;                              << 
188 }                                              << 
189                                                << 
190 //                                                157 //
191 // public methods                                 158 // public methods
192 //                                                159 //
193                                                   160 
194 //____________________________________________    161 //_____________________________________________________________________________
195 void G4HnMessenger::SetNewValue(G4UIcommand* c    162 void G4HnMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
196 {                                                 163 {
197   // process "All" commands first                 164   // process "All" commands first
198   if ( command == fSetActivationAllCmd.get() )    165   if ( command == fSetActivationAllCmd.get() ) {
199     fManager.SetActivation(fSetActivationAllCm    166     fManager.SetActivation(fSetActivationAllCmd->GetNewBoolValue(newValues));
200     return;                                       167     return;
201   }                                               168   }
202                                                   169 
203   if ( command == fSetPlottingAllCmd.get() ) {    170   if ( command == fSetPlottingAllCmd.get() ) {
204     fManager.SetPlotting(fSetPlottingAllCmd->G    171     fManager.SetPlotting(fSetPlottingAllCmd->GetNewBoolValue(newValues));
205     return;                                       172     return;
206   }                                               173   }
207                                                   174 
208   if ( command == fSetFileNameAllCmd.get() ) {    175   if ( command == fSetFileNameAllCmd.get() ) {
209     fManager.SetFileName(newValues);              176     fManager.SetFileName(newValues);
210     return;                                       177     return;
211   }                                               178   }
212                                                   179 
213   // Tokenize parameters in a vector              180   // Tokenize parameters in a vector
214   std::vector<G4String> parameters;               181   std::vector<G4String> parameters;
215   G4Analysis::Tokenize(newValues, parameters);    182   G4Analysis::Tokenize(newValues, parameters);
216   // check consistency                            183   // check consistency
217   if ( parameters.size() != command->GetParame    184   if ( parameters.size() != command->GetParameterEntries() ) {
218     // Should never happen but let's check any    185     // Should never happen but let's check anyway for consistency
219     G4Analysis::Warn(                             186     G4Analysis::Warn(
220       "Got wrong number of \"" + command->GetC    187       "Got wrong number of \"" + command->GetCommandName() +
221       "\" parameters: " + std::to_string(param    188       "\" parameters: " + std::to_string(parameters.size()) +
222       " instead of " + std::to_string(command-    189       " instead of " + std::to_string(command->GetParameterEntries()) + " expected",
223       fkClass, "WarnAboutParameters");            190       fkClass, "WarnAboutParameters");
224     return;                                       191     return;
225   }                                               192   }
226                                                   193 
227   auto counter = 0;                               194   auto counter = 0;
228   auto id = G4UIcommand::ConvertToInt(paramete    195   auto id = G4UIcommand::ConvertToInt(parameters[counter++]);
229                                                   196 
230   if ( command == fSetAsciiCmd.get() ) {          197   if ( command == fSetAsciiCmd.get() ) {
231     fManager.SetAscii(id, G4UIcommand::Convert    198     fManager.SetAscii(id, G4UIcommand::ConvertToBool(parameters[counter++]));
232     return;                                       199     return;
233   }                                               200   }
234                                                   201 
235   if ( command == fSetActivationCmd.get() ) {     202   if ( command == fSetActivationCmd.get() ) {
236     fManager.SetActivation(id, G4UIcommand::Co    203     fManager.SetActivation(id, G4UIcommand::ConvertToBool(parameters[counter++]));
237     return;                                       204     return;
238   }                                               205   }
239                                                   206 
240   if ( command == fSetPlottingCmd.get() ) {       207   if ( command == fSetPlottingCmd.get() ) {
241     fManager.SetPlotting(id, G4UIcommand::Conv    208     fManager.SetPlotting(id, G4UIcommand::ConvertToBool(parameters[counter++]));
242     return;                                       209     return;
243   }                                               210   }
244                                                   211 
245   if ( command == fSetFileNameCmd.get() ) {       212   if ( command == fSetFileNameCmd.get() ) {
246     fManager.SetFileName(id, parameters[counte    213     fManager.SetFileName(id, parameters[counter++]);
247     return;                                       214     return;
248   }                                            << 
249                                                << 
250   auto maxDim = (fHnDimension < kMaxDim) ? fHn << 
251   for (unsigned int idim = 0; idim < maxDim; + << 
252     if ( command == fSetAxisLogCmd[idim].get() << 
253       auto axisLog = G4UIcommand::ConvertToBoo << 
254       fManager.SetAxisIsLog(idim, id, axisLog) << 
255       return;                                  << 
256     }                                          << 
257   }                                               215   }
258 }                                                 216 }
259                                                   217