Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/analysis/management/src/G4HnManager.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/G4HnManager.cc (Version 11.3.0) and /analysis/management/src/G4HnManager.cc (Version 7.1.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 "G4HnManager.hh"                         
 30 #include "G4HnMessenger.hh"                       
 31                                                   
 32 #include "G4AnalysisUtilities.hh"                 
 33 #include "G4VFileManager.hh"                      
 34                                                   
 35 #include <utility>                                
 36                                                   
 37 using namespace G4Analysis;                       
 38 using std::to_string;                             
 39                                                   
 40 //____________________________________________    
 41 G4HnManager::G4HnManager(G4String hnType, cons    
 42   : G4BaseAnalysisManager(state), fHnType(std:    
 43 {}                                                
 44                                                   
 45 //____________________________________________    
 46 G4HnManager::~G4HnManager()                       
 47 {                                                 
 48   for ( auto info : fHnVector ) {                 
 49     delete info;                                  
 50   }                                               
 51 }                                                 
 52                                                   
 53 //                                                
 54 // private methods                                
 55 //                                                
 56                                                   
 57 //____________________________________________    
 58 void  G4HnManager::SetActivation(G4HnInformati    
 59 {                                                 
 60 // Set activation to a given object               
 61                                                   
 62   // Do nothing if activation does not change     
 63   if ( info->GetActivation() == activation ) r    
 64                                                   
 65   // Change activation and account it in fNofA    
 66   info->SetActivation(activation);                
 67   if (activation) {                               
 68     fNofActiveObjects++;                          
 69   }                                               
 70   else {                                          
 71     fNofActiveObjects--;                          
 72   }                                               
 73 }                                                 
 74                                                   
 75 //____________________________________________    
 76 void  G4HnManager::SetPlotting(G4HnInformation    
 77 {                                                 
 78   // Do nothing if ascii does not change          
 79   if ( info->GetPlotting() == plotting ) retur    
 80                                                   
 81   // Change Plotting and account it in fNofPlo    
 82   info->SetPlotting(plotting);                    
 83   if (plotting) {                                 
 84     fNofPlottingObjects++;                        
 85   }                                               
 86   else {                                          
 87     fNofPlottingObjects--;                        
 88   }                                               
 89 }                                                 
 90                                                   
 91 //____________________________________________    
 92 void  G4HnManager::SetFileName(G4HnInformation    
 93 {                                                 
 94   // Do nothing if file name does not change      
 95   if ( info->GetFileName() == fileName ) retur    
 96                                                   
 97   auto hnFileName = fileName;                     
 98   auto extension = GetExtension(fileName);        
 99   if (extension.size() != 0u) {                   
100     // Check if valid extension (if present)      
101     auto output = G4Analysis::GetOutput(extens    
102     if ( output == G4AnalysisOutput::kNone ) {    
103       Warn("The file extension " + extension +    
104         fkClass, "SetFileName");                  
105       return;                                     
106     }                                             
107   }                                               
108   else {                                          
109     if (fDefaultFileType.size() != 0u) {          
110       //add extension if missing and file type    
111       hnFileName = fileName + "." + fDefaultFi    
112     }                                             
113   }                                               
114                                                   
115   // Save the info and account a new file name    
116   info->SetFileName(hnFileName);                  
117   if (fFileManager) {                             
118     fFileManager->AddFileName(hnFileName);        
119   } else {                                        
120     Warn("Failed to set fileName " + fileName     
121          " for object " + info->GetName() + ".    
122          fkClass, "SetFileName");                 
123     return;                                       
124   }                                               
125                                                   
126   if ( hnFileName != "" ) {                       
127     fNofFileNameObjects++;                        
128   } else {                                        
129     fNofFileNameObjects--;                        
130   }                                               
131 }                                                 
132                                                   
133 //                                                
134 // public methods                                 
135 //                                                
136                                                   
137 //____________________________________________    
138 void G4HnManager::CreateMessenger()               
139 {                                                 
140   fMessenger = std::make_unique<G4HnMessenger>    
141 }                                                 
142                                                   
143 //____________________________________________    
144 void G4HnManager::AddHnInformation(G4HnInforma    
145 {                                                 
146   // Add new information                          
147                                                   
148   fHnVector.push_back(info);                      
149   ++fNofActiveObjects;                            
150 }                                                 
151                                                   
152 //____________________________________________    
153 void G4HnManager::AddHnInformation(G4HnInforma    
154 {                                                 
155   // Replace the information at 'index' positi    
156   // Update new information with the previous     
157   // previous histogram was deleted with 'keep    
158                                                   
159   auto previousInfo = fHnVector[index];           
160   if (previousInfo->GetDeletedPair().second) {    
161     info->Update(*previousInfo);                  
162   }                                               
163   delete previousInfo;                            
164                                                   
165   fHnVector[index] = info;                        
166                                                   
167   if (info->GetActivation()) { ++fNofActiveObj    
168   if (info->GetAscii())      { ++fNofAsciiObje    
169   if (info->GetPlotting())   { ++fNofPlottingO    
170   if (! info->GetFileName().empty()) { ++fNofF    
171 }                                                 
172                                                   
173 //____________________________________________    
174 void G4HnManager::SetHnDeleted(G4HnInformation    
175 {                                                 
176   info->SetDeleted(true, keepSetting);            
177                                                   
178   if (info->GetActivation()) { --fNofActiveObj    
179   if (info->GetAscii())      { --fNofAsciiObje    
180   if (info->GetPlotting())   { --fNofPlottingO    
181   if (! info->GetFileName().empty()) { --fNofF    
182 }                                                 
183                                                   
184 //____________________________________________    
185 void G4HnManager::ClearData()                     
186 {                                                 
187   for ( auto info : fHnVector ) {                 
188     delete info;                                  
189   }                                               
190   fHnVector.clear();                              
191   SetLockFirstId(false);                          
192 }                                                 
193                                                   
194 //____________________________________________    
195 G4HnInformation* G4HnManager::GetHnInformation    
196                                  std::string_v    
197 {                                                 
198   G4int index = id - fFirstId;                    
199   if ( index < 0 || index >= G4int(fHnVector.s    
200     if ( warn ) {                                 
201       Warn(fHnType + " histogram " + to_string    
202         fkClass, functionName);                   
203     }                                             
204     return nullptr;                               
205   }                                               
206   return fHnVector[index];                        
207 }                                                 
208                                                   
209 //____________________________________________    
210 G4HnDimensionInformation* G4HnManager::GetHnDi    
211                                 G4int dimensio    
212                                 std::string_vi    
213 {                                                 
214   auto info = GetHnInformation(id, functionNam    
215   if (info == nullptr) return nullptr;            
216                                                   
217   return info->GetHnDimensionInformation(dimen    
218 }                                                 
219                                                   
220 //____________________________________________    
221 G4bool G4HnManager::IsActive() const              
222 {                                                 
223   return ( fNofActiveObjects > 0 );               
224 }                                                 
225                                                   
226 //____________________________________________    
227 G4bool G4HnManager::IsAscii() const               
228 {                                                 
229   return ( fNofAsciiObjects > 0 );                
230 }                                                 
231                                                   
232 //____________________________________________    
233 G4bool G4HnManager::IsPlotting() const            
234 {                                                 
235   return ( fNofPlottingObjects > 0 );             
236 }                                                 
237                                                   
238 //____________________________________________    
239 G4bool G4HnManager::IsFileName() const            
240 {                                                 
241   return ( fNofFileNameObjects > 0 );             
242 }                                                 
243                                                   
244 //____________________________________________    
245 void  G4HnManager::SetActivation(G4int id, G4b    
246 {                                                 
247 // Set activation to a given object               
248                                                   
249   auto info = GetHnInformation(id, "SetActivat    
250                                                   
251   if (info == nullptr) return;                    
252                                                   
253   SetActivation(info, activation);                
254 }                                                 
255                                                   
256 //____________________________________________    
257 void  G4HnManager::SetActivation(G4bool activa    
258 {                                                 
259 // Set activation to all objects of the given     
260                                                   
261   //std::vector<G4HnInformation*>::iterator it    
262   //for ( it = fHnVector.begin(); it != fHnVec    
263   //   G4HnInformation* info = *it;               
264                                                   
265   for ( auto info : fHnVector )  {                
266     SetActivation(info, activation);              
267   }                                               
268 }                                                 
269                                                   
270 //____________________________________________    
271 void  G4HnManager::SetAscii(G4int id, G4bool a    
272 {                                                 
273   auto info = GetHnInformation(id, "SetAscii")    
274                                                   
275   if (info == nullptr) return;                    
276                                                   
277   // Do nothing if ascii does not change          
278   if ( info->GetAscii() == ascii ) return;        
279                                                   
280   // Change ascii and account it in fNofAsciiO    
281   info->SetAscii(ascii);                          
282   if (ascii) {                                    
283     fNofAsciiObjects++;                           
284   }                                               
285   else {                                          
286     fNofAsciiObjects--;                           
287   }                                               
288 }                                                 
289                                                   
290 //____________________________________________    
291 void  G4HnManager::SetPlotting(G4int id, G4boo    
292 {                                                 
293   auto info = GetHnInformation(id, "SetPlottin    
294                                                   
295   if (info == nullptr) return;                    
296                                                   
297   SetPlotting(info, plotting);                    
298 }                                                 
299                                                   
300 //____________________________________________    
301 void  G4HnManager::SetPlotting(G4bool plotting    
302 {                                                 
303 // Set plotting to all objects of the given ty    
304                                                   
305   for ( auto info : fHnVector )  {                
306     SetPlotting(info, plotting);                  
307   }                                               
308 }                                                 
309                                                   
310 //____________________________________________    
311 void  G4HnManager::SetFileName(G4int id, const    
312 {                                                 
313   auto info = GetHnInformation(id, "SetFileNam    
314                                                   
315   if (info == nullptr) return;                    
316                                                   
317   SetFileName(info, fileName);                    
318 }                                                 
319                                                   
320 //____________________________________________    
321 void  G4HnManager::SetFileName(const G4String&    
322 {                                                 
323 // Set plotting to all objects of the given ty    
324                                                   
325   for ( auto info : fHnVector )  {                
326     SetFileName(info, fileName);                  
327   }                                               
328 }                                                 
329                                                   
330 //____________________________________________    
331 G4bool G4HnManager::SetAxisIsLog(unsigned int     
332 {                                                 
333   auto info = GetHnInformation(id, "SetAxisIsL    
334                                                   
335   if (info == nullptr) return false;              
336                                                   
337   info->SetIsLogAxis(idim, isLog);                
338   return true;                                    
339 }                                                 
340                                                   
341 //____________________________________________    
342 G4String G4HnManager::GetName(G4int id) const     
343 {                                                 
344   auto info = GetHnInformation(id, "GetName");    
345                                                   
346   if (info == nullptr) return "";                 
347                                                   
348   return info->GetName();                         
349 }                                                 
350                                                   
351 //____________________________________________    
352 G4double G4HnManager::GetUnit(unsigned int idi    
353 {                                                 
354   auto info = GetHnDimensionInformation(id, id    
355                                                   
356   if (info == nullptr) return 1.0;                
357                                                   
358   return info->fUnit;                             
359 }                                                 
360                                                   
361 //____________________________________________    
362 G4bool G4HnManager::GetAxisIsLog(unsigned int     
363 {                                                 
364   auto info = GetHnInformation(id, "GetXAxisIs    
365                                                   
366   if (info == nullptr) return false;              
367                                                   
368   return info->GetIsLogAxis(idim);                
369 }                                                 
370                                                   
371 //____________________________________________    
372 G4bool G4HnManager::GetActivation(G4int id) co    
373 {                                                 
374   auto info = GetHnInformation(id, "GetActivat    
375                                                   
376   if (info == nullptr) return true;               
377                                                   
378   return info->GetActivation();                   
379 }                                                 
380                                                   
381 //____________________________________________    
382 G4bool G4HnManager::GetAscii(G4int id) const      
383 {                                                 
384   auto info = GetHnInformation(id, "GetAscii")    
385                                                   
386   if (info == nullptr) return false;              
387                                                   
388   return info->GetAscii();                        
389 }                                                 
390                                                   
391 //____________________________________________    
392 G4bool G4HnManager::GetPlotting(G4int id) cons    
393 {                                                 
394   auto info = GetHnInformation(id, "GetPlottin    
395                                                   
396   if (info == nullptr) return false;              
397                                                   
398   return info->GetPlotting();                     
399 }                                                 
400                                                   
401 //____________________________________________    
402 G4String G4HnManager::GetFileName(G4int id) co    
403 {                                                 
404   auto info = GetHnInformation(id, "GetFileNam    
405                                                   
406   if (info == nullptr) return "";                 
407                                                   
408   return info->GetFileName();                     
409 }                                                 
410