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 7.0.p1)


  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, 18/06/2013  (ivan    
 28                                                   
 29 #include "G4HnMessenger.hh"                       
 30 #include "G4HnManager.hh"                         
 31 #include "G4AnalysisUtilities.hh"                 
 32                                                   
 33 #include "G4UIcommand.hh"                         
 34 #include "G4UIparameter.hh"                       
 35 #include "G4UIcmdWithABool.hh"                    
 36 #include "G4UIcmdWithAString.hh"                  
 37                                                   
 38 using namespace G4Analysis;                       
 39                                                   
 40 //____________________________________________    
 41 G4HnMessenger::G4HnMessenger(G4HnManager& mana    
 42   : fManager(manager),                            
 43     fHnType(manager.GetHnType()),                 
 44     fHnDimension(std::stoi(manager.GetHnType()    
 45 {                                                 
 46   SetHnAsciiCmd();                                
 47   SetHnActivationCmd();                           
 48   SetHnActivationToAllCmd();                      
 49   SetHnPlottingCmd();                             
 50   SetHnPlottingToAllCmd();                        
 51   SetHnFileNameCmd();                             
 52   SetHnFileNameToAllCmd();                        
 53                                                   
 54   auto maxDim = (fHnDimension < kMaxDim) ? fHn    
 55   for (unsigned int idim = 0; idim < maxDim; +    
 56     fSetAxisLogCmd.push_back(CreateSetAxisLogC    
 57   }                                               
 58 }                                                 
 59                                                   
 60 //____________________________________________    
 61 G4HnMessenger::~G4HnMessenger() = default;        
 62                                                   
 63 //                                                
 64 // private functions                              
 65 //                                                
 66                                                   
 67 //____________________________________________    
 68 G4String G4HnMessenger::GetObjectType() const     
 69 {                                                 
 70   return (fHnType[0] == 'h') ?                    
 71     fHnType.substr(1,1) + "D histogram" :         
 72     fHnType.substr(1,1) + "D profile";            
 73 }                                                 
 74                                                   
 75 //____________________________________________    
 76 void G4HnMessenger::AddIdParameter(G4UIcommand    
 77 {                                                 
 78   auto htId = new G4UIparameter("id", 'i', fal    
 79   htId->SetGuidance("Histogram id");              
 80   htId->SetParameterRange("id>=0");               
 81   command.SetParameter(htId);                     
 82 }                                                 
 83                                                   
 84 //____________________________________________    
 85 void G4HnMessenger::AddOptionParameter(G4UIcom    
 86 {                                                 
 87   auto param = new G4UIparameter(optionName, '    
 88   auto guidance = GetObjectType() + " " + opti    
 89   param->SetGuidance(guidance.c_str());           
 90   param->SetDefaultValue("true");                 
 91   command.SetParameter(param);                    
 92 }                                                 
 93                                                   
 94 //____________________________________________    
 95 void G4HnMessenger::SetHnAsciiCmd()               
 96 {                                                 
 97   fSetAsciiCmd =                                  
 98     CreateCommand<G4UIcommand>("setAscii", "Pr    
 99                                                   
100   AddIdParameter(*fSetAsciiCmd);                  
101   AddOptionParameter(*fSetAsciiCmd, "hnAscii")    
102                                                   
103 }                                                 
104                                                   
105 //____________________________________________    
106 void G4HnMessenger::SetHnActivationCmd()          
107 {                                                 
108   fSetActivationCmd =                             
109     CreateCommand<G4UIcommand>("setActivation"    
110                                                   
111   AddIdParameter(*fSetActivationCmd);             
112   AddOptionParameter(*fSetActivationCmd, "hnAc    
113 }                                                 
114                                                   
115 //____________________________________________    
116 void G4HnMessenger::SetHnActivationToAllCmd()     
117 {                                                 
118   fSetActivationAllCmd =                          
119     CreateCommand<G4UIcmdWithABool>(              
120       "setActivationToAll", "Set activation to    
121   fSetActivationAllCmd->SetParameterName("Acti    
122 }                                                 
123                                                   
124 //____________________________________________    
125 void G4HnMessenger::SetHnPlottingCmd()            
126 {                                                 
127   fSetPlottingCmd =                               
128     CreateCommand<G4UIcommand>("setPlotting",     
129                                                   
130   AddIdParameter(*fSetPlottingCmd);               
131   AddOptionParameter(*fSetPlottingCmd, "hnPlot    
132 }                                                 
133                                                   
134 //____________________________________________    
135 void G4HnMessenger::SetHnPlottingToAllCmd()       
136 {                                                 
137   fSetPlottingAllCmd =                            
138     CreateCommand<G4UIcmdWithABool>(              
139       "setPlottingToAll", "(In)Activate batch     
140   fSetPlottingAllCmd->SetParameterName("Plotti    
141 }                                                 
142                                                   
143 //____________________________________________    
144 void G4HnMessenger::SetHnFileNameCmd()            
145 {                                                 
146   fSetFileNameCmd =                               
147     CreateCommand<G4UIcommand>("setFileName",     
148                                                   
149   AddIdParameter(*fSetFileNameCmd);               
150                                                   
151   auto param = new G4UIparameter("hnFileName",    
152   auto guidance = GetObjectType() + " output f    
153   param->SetGuidance(guidance.c_str());           
154   fSetFileNameCmd->SetParameter(param);           
155 }                                                 
156                                                   
157 //____________________________________________    
158 void G4HnMessenger::SetHnFileNameToAllCmd()       
159 {                                                 
160   fSetFileNameAllCmd =                            
161     CreateCommand<G4UIcmdWithAString>(            
162       "setFileNameToAll", "Set output file nam    
163    fSetFileNameAllCmd->SetParameterName("FileN    
164 }                                                 
165                                                   
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 //                                                
191 // public methods                                 
192 //                                                
193                                                   
194 //____________________________________________    
195 void G4HnMessenger::SetNewValue(G4UIcommand* c    
196 {                                                 
197   // process "All" commands first                 
198   if ( command == fSetActivationAllCmd.get() )    
199     fManager.SetActivation(fSetActivationAllCm    
200     return;                                       
201   }                                               
202                                                   
203   if ( command == fSetPlottingAllCmd.get() ) {    
204     fManager.SetPlotting(fSetPlottingAllCmd->G    
205     return;                                       
206   }                                               
207                                                   
208   if ( command == fSetFileNameAllCmd.get() ) {    
209     fManager.SetFileName(newValues);              
210     return;                                       
211   }                                               
212                                                   
213   // Tokenize parameters in a vector              
214   std::vector<G4String> parameters;               
215   G4Analysis::Tokenize(newValues, parameters);    
216   // check consistency                            
217   if ( parameters.size() != command->GetParame    
218     // Should never happen but let's check any    
219     G4Analysis::Warn(                             
220       "Got wrong number of \"" + command->GetC    
221       "\" parameters: " + std::to_string(param    
222       " instead of " + std::to_string(command-    
223       fkClass, "WarnAboutParameters");            
224     return;                                       
225   }                                               
226                                                   
227   auto counter = 0;                               
228   auto id = G4UIcommand::ConvertToInt(paramete    
229                                                   
230   if ( command == fSetAsciiCmd.get() ) {          
231     fManager.SetAscii(id, G4UIcommand::Convert    
232     return;                                       
233   }                                               
234                                                   
235   if ( command == fSetActivationCmd.get() ) {     
236     fManager.SetActivation(id, G4UIcommand::Co    
237     return;                                       
238   }                                               
239                                                   
240   if ( command == fSetPlottingCmd.get() ) {       
241     fManager.SetPlotting(id, G4UIcommand::Conv    
242     return;                                       
243   }                                               
244                                                   
245   if ( command == fSetFileNameCmd.get() ) {       
246     fManager.SetFileName(id, parameters[counte    
247     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   }                                               
258 }                                                 
259