Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4VAnalysisManager.hh
이 파일의 문서화 페이지로 가기
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 // $Id: G4VAnalysisManager.hh 71635 2013-06-19 13:48:28Z ihrivnac $
27 
28 // The nonvirtual public interface class to g4tools based analysis.
29 // It is defined as a composite of object manager base classes.
30 // Individual use of the component managers is disabled
31 // (except for file manager and Hn manager which are also used from
32 // other object managers).
33 // The functions which has to be implemented in concrete managers
34 // are declared as virtual protected.
35 
36 // Author: Ivana Hrivnacova, 09/07/2013 (ivana@ipno.in2P2.fr)
37 
38 #ifndef G4VAnalysisManager_h
39 #define G4VAnalysisManager_h 1
40 
42 #include "globals.hh"
43 
44 #include <vector>
45 #include <fstream>
46 #include <memory>
47 
48 
50 class G4HnManager;
51 class G4VH1Manager;
52 class G4VH2Manager;
53 class G4VH3Manager;
54 class G4VP1Manager;
55 class G4VP2Manager;
56 class G4VNtupleManager;
57 class G4VFileManager;
58 
59 namespace tools {
60 namespace histo{
61 class hmpi;
62 }
63 }
64 
66 {
67  public:
68  G4VAnalysisManager(const G4String& type, G4bool isMaster);
69  virtual ~G4VAnalysisManager();
70 
71  // Methods for handling files
72  G4bool OpenFile(const G4String& fileName = "");
73  G4bool Write();
74  G4bool CloseFile();
75  G4bool Merge(tools::histo::hmpi* hmpi);
76  G4bool Plot();
77  G4bool IsOpenFile() const;
78 
79  // Methods for handling files and directories names
80  G4bool SetFileName(const G4String& fileName);
81  G4bool SetHistoDirectoryName(const G4String& dirName);
82  G4bool SetNtupleDirectoryName(const G4String& dirName);
83  void SetCompressionLevel(G4int level);
84 
85  G4String GetFileName() const;
88  G4int GetCompressionLevel() const;
89 
90  // Methods for handling histograms
91  //
92  G4int CreateH1(const G4String& name, const G4String& title,
93  G4int nbins, G4double xmin, G4double xmax,
94  const G4String& unitName = "none",
95  const G4String& fcnName = "none",
96  const G4String& binSchemeName = "linear");
97 
98  G4int CreateH1(const G4String& name, const G4String& title,
99  const std::vector<G4double>& edges,
100  const G4String& unitName = "none",
101  const G4String& fcnName = "none");
102 
103  G4int CreateH2(const G4String& name, const G4String& title,
104  G4int nxbins, G4double xmin, G4double xmax,
105  G4int nybins, G4double ymin, G4double ymax,
106  const G4String& xunitName = "none",
107  const G4String& yunitName = "none",
108  const G4String& xfcnName = "none",
109  const G4String& yfcnName = "none",
110  const G4String& xbinSchemeName = "linear",
111  const G4String& ybinSchemeName = "linear");
112 
113  G4int CreateH2(const G4String& name, const G4String& title,
114  const std::vector<G4double>& xedges,
115  const std::vector<G4double>& yedges,
116  const G4String& xunitName = "none",
117  const G4String& yunitName = "none",
118  const G4String& xfcnName = "none",
119  const G4String& yfcnName = "none");
120 
121  G4int CreateH3(const G4String& name, const G4String& title,
122  G4int nxbins, G4double xmin, G4double xmax,
123  G4int nybins, G4double ymin, G4double ymax,
124  G4int nzbins, G4double zmin, G4double zmax,
125  const G4String& xunitName = "none",
126  const G4String& yunitName = "none",
127  const G4String& zunitName = "none",
128  const G4String& xfcnName = "none",
129  const G4String& yfcnName = "none",
130  const G4String& zfcnName = "none",
131  const G4String& xbinSchemeName = "linear",
132  const G4String& ybinSchemeName = "linear",
133  const G4String& zbinSchemeName = "linear");
134 
135  G4int CreateH3(const G4String& name, const G4String& title,
136  const std::vector<G4double>& xedges,
137  const std::vector<G4double>& yedges,
138  const std::vector<G4double>& zedges,
139  const G4String& xunitName = "none",
140  const G4String& yunitName = "none",
141  const G4String& zunitName = "none",
142  const G4String& xfcnName = "none",
143  const G4String& yfcnName = "none",
144  const G4String& zfcnName = "none");
145 
146  G4bool SetH1(G4int id,
147  G4int nbins, G4double xmin, G4double xmax,
148  const G4String& unitName = "none",
149  const G4String& fcnName = "none",
150  const G4String& binSchemeName = "linear");
151 
152  G4bool SetH1(G4int id,
153  const std::vector<G4double>& edges,
154  const G4String& unitName = "none",
155  const G4String& fcnName = "none");
156 
157  G4bool SetH2(G4int id,
158  G4int nxbins, G4double xmin, G4double xmax,
159  G4int nybins, G4double ymin, G4double ymax,
160  const G4String& xunitName = "none",
161  const G4String& yunitName = "none",
162  const G4String& xfcnName = "none",
163  const G4String& yfcnName = "none",
164  const G4String& xbinSchemeName = "linear",
165  const G4String& ybinSchemeName = "linear");
166 
167  G4bool SetH2(G4int id,
168  const std::vector<G4double>& xedges,
169  const std::vector<G4double>& yedges,
170  const G4String& xunitName = "none",
171  const G4String& yunitName = "none",
172  const G4String& xfcnName = "none",
173  const G4String& yfcnName = "none");
174 
175  G4bool SetH3(G4int id,
176  G4int nxbins, G4double xmin, G4double xmax,
177  G4int nzbins, G4double zmin, G4double zmax,
178  G4int nybins, G4double ymin, G4double ymax,
179  const G4String& xunitName = "none",
180  const G4String& yunitName = "none",
181  const G4String& zunitName = "none",
182  const G4String& xfcnName = "none",
183  const G4String& yfcnName = "none",
184  const G4String& zfcnName = "none",
185  const G4String& xbinSchemeName = "linear",
186  const G4String& ybinSchemeName = "linear",
187  const G4String& zbinSchemeName = "linear");
188 
189  G4bool SetH3(G4int id,
190  const std::vector<G4double>& xedges,
191  const std::vector<G4double>& yedges,
192  const std::vector<G4double>& zedges,
193  const G4String& xunitName = "none",
194  const G4String& yunitName = "none",
195  const G4String& zunitName = "none",
196  const G4String& xfcnName = "none",
197  const G4String& yfcnName = "none",
198  const G4String& zfcnName = "none");
199 
200  G4bool ScaleH1(G4int id, G4double factor);
201  G4bool ScaleH2(G4int id, G4double factor);
202  G4bool ScaleH3(G4int id, G4double factor);
203 
204  // Methods for handling profiles
205  //
206  G4int CreateP1(const G4String& name, const G4String& title,
207  G4int nbins, G4double xmin, G4double xmax,
208  G4double ymin = 0, G4double ymax = 0,
209  const G4String& xunitName = "none",
210  const G4String& yunitName = "none",
211  const G4String& xfcnName = "none",
212  const G4String& yfcnName = "none",
213  const G4String& xbinSchemeName = "linear");
214  G4int CreateP1(const G4String& name, const G4String& title,
215  const std::vector<G4double>& edges,
216  G4double ymin = 0, G4double ymax = 0,
217  const G4String& xunitName = "none",
218  const G4String& yunitName = "none",
219  const G4String& xfcnName = "none",
220  const G4String& yfcnName = "none");
221 
222  G4int CreateP2(const G4String& name, const G4String& title,
223  G4int nxbins, G4double xmin, G4double xmax,
224  G4int nybins, G4double ymin, G4double ymax,
225  G4double zmin = 0, G4double zmax = 0,
226  const G4String& xunitName = "none",
227  const G4String& yunitName = "none",
228  const G4String& zunitName = "none",
229  const G4String& xfcnName = "none",
230  const G4String& yfcnName = "none",
231  const G4String& zfcnName = "none",
232  const G4String& xbinSchemeName = "linear",
233  const G4String& ybinSchemeName = "linear");
234  G4int CreateP2(const G4String& name, const G4String& title,
235  const std::vector<G4double>& xedges,
236  const std::vector<G4double>& yedges,
237  G4double zmin = 0, G4double zmax = 0,
238  const G4String& xunitName = "none",
239  const G4String& yunitName = "none",
240  const G4String& zunitName = "none",
241  const G4String& xfcnName = "none",
242  const G4String& yfcnName = "none",
243  const G4String& zfcnName = "none");
244 
245  G4bool SetP1(G4int id,
246  G4int nbins, G4double xmin, G4double xmax,
247  G4double ymin = 0, G4double ymax = 0,
248  const G4String& xunitName = "none",
249  const G4String& yunitName = "none",
250  const G4String& xfcnName = "none",
251  const G4String& yfcnName = "none",
252  const G4String& xbinSchemeName = "linear");
253  G4bool SetP1(G4int id,
254  const std::vector<G4double>& edges,
255  G4double ymin = 0, G4double ymax = 0,
256  const G4String& xunitName = "none",
257  const G4String& yunitName = "none",
258  const G4String& xfcnName = "none",
259  const G4String& yfcnName = "none");
260 
261  G4bool SetP2(G4int id,
262  G4int nxbins, G4double xmin, G4double xmax,
263  G4int nybins, G4double ymin, G4double ymax,
264  G4double zmin = 0, G4double zmax = 0,
265  const G4String& xunitName = "none",
266  const G4String& yunitName = "none",
267  const G4String& zunitName = "none",
268  const G4String& xfcnName = "none",
269  const G4String& yfcnName = "none",
270  const G4String& zfcnName = "none",
271  const G4String& xbinSchemeName = "linear",
272  const G4String& ybinSchemeName = "linear");
273  G4bool SetP2(G4int id,
274  const std::vector<G4double>& xedges,
275  const std::vector<G4double>& yedges,
276  G4double zmin = 0, G4double zmax = 0,
277  const G4String& xunitName = "none",
278  const G4String& yunitName = "none",
279  const G4String& zunitName = "none",
280  const G4String& xfcnName = "none",
281  const G4String& yfcnName = "none",
282  const G4String& zfcnName = "none");
283 
284  G4bool ScaleP1(G4int id, G4double factor);
285  G4bool ScaleP2(G4int id, G4double factor);
286 
287  // Methods for handling ntuples
288  //
289  G4int CreateNtuple(const G4String& name, const G4String& title);
290 
291  // Create columns in the last created ntuple
292  G4int CreateNtupleIColumn(const G4String& name);
293  G4int CreateNtupleFColumn(const G4String& name);
294  G4int CreateNtupleDColumn(const G4String& name);
295  G4int CreateNtupleSColumn(const G4String& name);
296 
297  // Create columns of vector in the last created ntuple
299  const G4String& name, std::vector<int>& vector);
301  const G4String& name, std::vector<float>& vector);
303  const G4String& name, std::vector<double>& vector);
304  void FinishNtuple();
305 
306  // Create columns in the ntuple with given id
307  G4int CreateNtupleIColumn(G4int ntupleId, const G4String& name);
308  G4int CreateNtupleFColumn(G4int ntupleId, const G4String& name);
309  G4int CreateNtupleDColumn(G4int ntupleId, const G4String& name);
310  G4int CreateNtupleSColumn(G4int ntupleId, const G4String& name);
311 
312  // Create columns of vector in the ntuple with given id
313  G4int CreateNtupleIColumn(G4int ntupleId,
314  const G4String& name, std::vector<int>& vector);
315  G4int CreateNtupleFColumn(G4int ntupleId,
316  const G4String& name, std::vector<float>& vector);
317  G4int CreateNtupleDColumn(G4int ntupleId,
318  const G4String& name, std::vector<double>& vector);
319 
320  void FinishNtuple(G4int ntupleId);
321 
322  // The ids of histograms and ntuples are generated automatically
323  // starting from 0; with following functions it is possible to
324  // change the first Id to start from other value
325  G4bool SetFirstHistoId(G4int firstId);
326  G4bool SetFirstH1Id(G4int firstId);
327  G4bool SetFirstH2Id(G4int firstId);
328  G4bool SetFirstH3Id(G4int firstId);
329  G4bool SetFirstProfileId(G4int firstId);
330  G4bool SetFirstP1Id(G4int firstId);
331  G4bool SetFirstP2Id(G4int firstId);
332  G4bool SetFirstNtupleId(G4int firstId);
334 
335  // Methods to fill histograms
337  G4bool FillH2(G4int id, G4double xvalue, G4double yvalue,
338  G4double weight = 1.0);
339  G4bool FillH3(G4int id,
340  G4double xvalue, G4double yvalue, G4double zvalue,
341  G4double weight = 1.0);
342  // Methods to fill profiles
343  G4bool FillP1(G4int id, G4double xvalue, G4double yvalue,
344  G4double weight = 1.0);
345  G4bool FillP2(G4int id,
346  G4double xvalue, G4double yvalue, G4double zvalue,
347  G4double weight = 1.0);
348 
349  // Methods to fill ntuples
350  // Methods for ntuple with id = FirstNtupleId
351  G4bool FillNtupleIColumn(G4int id, G4int value);
354  G4bool FillNtupleSColumn(G4int id, const G4String& value);
356  // Methods for ntuple with id > FirstNtupleId (when more ntuples exist)
357  G4bool FillNtupleIColumn(G4int ntupleId, G4int columnId, G4int value);
358  G4bool FillNtupleFColumn(G4int ntupleId, G4int columnId, G4float value);
359  G4bool FillNtupleDColumn(G4int ntupleId, G4int columnId, G4double value);
360  G4bool FillNtupleSColumn(G4int ntupleId, G4int id, const G4String& value);
361  G4bool AddNtupleRow(G4int ntupleId);
362 
363  // Activation option
364 
365  // When this option is enabled, only the histograms/profiles marked as activated
366  // are returned, filled or saved on file.
367  // No warning is issued when Get or Fill is called on inactive histogram.
368  void SetActivation(G4bool activation);
369  G4bool GetActivation() const;
370 
371  // Return false if activation is enabled and there is no object activated,
372  // return true otherwise
373  G4bool IsActive() const;
374 
375  // ASCII option
376 
377  // Return false if there is no object selected for ASCII output,
378  // return true otherwise
379  G4bool IsAscii() const;
380 
381  // Plotting option
382 
383  // Return false if there is no object selected for plottng,
384  // return true otherwise
385  G4bool IsPlotting() const;
386 
387  // Access methods
388  G4int GetFirstH1Id() const;
389  G4int GetFirstH2Id() const;
390  G4int GetFirstH3Id() const;
391  G4int GetFirstP1Id() const;
392  G4int GetFirstP2Id() const;
393  G4int GetFirstNtupleId() const;
395 
396  G4int GetNofH1s() const;
397  G4int GetNofH2s() const;
398  G4int GetNofH3s() const;
399  G4int GetNofP1s() const;
400  G4int GetNofP2s() const;
401  G4int GetNofNtuples() const;
402 
403  // Access methods via names
404  G4int GetH1Id(const G4String& name, G4bool warn = true) const;
405  G4int GetH2Id(const G4String& name, G4bool warn = true) const;
406  G4int GetH3Id(const G4String& name, G4bool warn = true) const;
407  G4int GetP1Id(const G4String& name, G4bool warn = true) const;
408  G4int GetP2Id(const G4String& name, G4bool warn = true) const;
409 
410  // Methods to manipulate histogram, profiles & ntuples additional information
411  //
412  void SetH1Activation(G4bool activation);
413  void SetH1Activation(G4int id, G4bool activation);
414  void SetH1Ascii(G4int id, G4bool ascii);
415  void SetH1Plotting(G4int id, G4bool plotting);
416  //
417  void SetH2Activation(G4bool activation);
418  void SetH2Activation(G4int id, G4bool activation);
419  void SetH2Ascii(G4int id, G4bool ascii);
420  void SetH2Plotting(G4int id, G4bool plotting);
421  //
422  void SetH3Activation(G4bool activation);
423  void SetH3Activation(G4int id, G4bool activation);
424  void SetH3Ascii(G4int id, G4bool ascii);
425  void SetH3Plotting(G4int id, G4bool plotting);
426  //
427  void SetP1Activation(G4bool activation);
428  void SetP1Activation(G4int id, G4bool activation);
429  void SetP1Ascii(G4int id, G4bool ascii);
430  void SetP1Plotting(G4int id, G4bool plotting);
431  //
432  void SetP2Activation(G4bool activation);
433  void SetP2Activation(G4int id, G4bool activation);
434  void SetP2Ascii(G4int id, G4bool ascii);
435  void SetP2Plotting(G4int id, G4bool plotting);
436  //
437  void SetNtupleActivation(G4bool activation);
438  void SetNtupleActivation(G4int id, G4bool activation);
439 
440 
441  // Access to histogram & profiles parameters
442  //
443  G4int GetH1Nbins(G4int id) const;
444  G4double GetH1Xmin(G4int id) const;
445  G4double GetH1Xmax(G4int id) const;
446  G4double GetH1Width(G4int id) const;
447  //
448  G4int GetH2Nxbins(G4int id) const;
449  G4double GetH2Xmin(G4int id) const;
450  G4double GetH2Xmax(G4int id) const;
451  G4double GetH2XWidth(G4int id) const;
452  G4int GetH2Nybins(G4int id) const;
453  G4double GetH2Ymin(G4int id) const;
454  G4double GetH2Ymax(G4int id) const;
455  G4double GetH2YWidth(G4int id) const;
456  //
457  G4int GetH3Nxbins(G4int id) const;
458  G4double GetH3Xmin(G4int id) const;
459  G4double GetH3Xmax(G4int id) const;
460  G4double GetH3XWidth(G4int id) const;
461  G4int GetH3Nybins(G4int id) const;
462  G4double GetH3Ymin(G4int id) const;
463  G4double GetH3Ymax(G4int id) const;
464  G4double GetH3YWidth(G4int id) const;
465  G4int GetH3Nzbins(G4int id) const;
466  G4double GetH3Zmin(G4int id) const;
467  G4double GetH3Zmax(G4int id) const;
468  G4double GetH3ZWidth(G4int id) const;
469  //
470  G4int GetP1Nbins(G4int id) const;
471  G4double GetP1Xmin(G4int id) const;
472  G4double GetP1Xmax(G4int id) const;
473  G4double GetP1XWidth(G4int id) const;
474  G4double GetP1Ymin(G4int id) const;
475  G4double GetP1Ymax(G4int id) const;
476  //
477  G4int GetP2Nxbins(G4int id) const;
478  G4double GetP2Xmin(G4int id) const;
479  G4double GetP2Xmax(G4int id) const;
480  G4double GetP2XWidth(G4int id) const;
481  G4int GetP2Nybins(G4int id) const;
482  G4double GetP2Ymin(G4int id) const;
483  G4double GetP2Ymax(G4int id) const;
484  G4double GetP2YWidth(G4int id) const;
485  G4double GetP2Zmin(G4int id) const;
486  G4double GetP2Zmax(G4int id) const;
487 
488  // Access to histogram & profiles additional information
489  //
490  G4String GetH1Name(G4int id) const;
491  G4double GetH1Unit(G4int id) const;
492  G4bool GetH1Activation(G4int id) const;
493  G4bool GetH1Ascii(G4int id) const;
494  G4bool GetH1Plotting(G4int id) const;
495  //
496  G4String GetH2Name(G4int id) const;
497  G4double GetH2XUnit(G4int id) const;
498  G4double GetH2YUnit(G4int id) const;
499  G4bool GetH2Activation(G4int id) const;
500  G4bool GetH2Ascii(G4int id) const;
501  G4bool GetH2Plotting(G4int id) const;
502  //
503  G4String GetH3Name(G4int id) const;
504  G4double GetH3XUnit(G4int id) const;
505  G4double GetH3YUnit(G4int id) const;
506  G4double GetH3ZUnit(G4int id) const;
507  G4bool GetH3Activation(G4int id) const;
508  G4bool GetH3Ascii(G4int id) const;
509  G4bool GetH3Plotting(G4int id) const;
510  //
511  G4String GetP1Name(G4int id) const;
512  G4double GetP1XUnit(G4int id) const;
513  G4double GetP1YUnit(G4int id) const;
514  G4bool GetP1Activation(G4int id) const;
515  G4bool GetP1Ascii(G4int id) const;
516  G4bool GetP1Plotting(G4int id) const;
517  //
518  G4String GetP2Name(G4int id) const;
519  G4double GetP2XUnit(G4int id) const;
520  G4double GetP2YUnit(G4int id) const;
521  G4double GetP2ZUnit(G4int id) const;
522  G4bool GetP2Activation(G4int id) const;
523  G4bool GetP2Ascii(G4int id) const;
524  G4bool GetP2Plotting(G4int id) const;
525  //
526  G4bool GetNtupleActivation(G4int id) const;
527 
528  // Setters for histogram & profiles attributes for plotting
529  //
530  G4bool SetH1Title(G4int id, const G4String& title);
531  G4bool SetH1XAxisTitle(G4int id, const G4String& title);
532  G4bool SetH1YAxisTitle(G4int id, const G4String& title);
533  //
534  G4bool SetH2Title(G4int id, const G4String& title);
535  G4bool SetH2XAxisTitle(G4int id, const G4String& title);
536  G4bool SetH2YAxisTitle(G4int id, const G4String& title);
537  G4bool SetH2ZAxisTitle(G4int id, const G4String& title);
538  //
539  G4bool SetH3Title(G4int id, const G4String& title);
540  G4bool SetH3XAxisTitle(G4int id, const G4String& title);
541  G4bool SetH3YAxisTitle(G4int id, const G4String& title);
542  G4bool SetH3ZAxisTitle(G4int id, const G4String& title);
543  //
544  G4bool SetP1Title(G4int id, const G4String& title);
545  G4bool SetP1XAxisTitle(G4int id, const G4String& title);
546  G4bool SetP1YAxisTitle(G4int id, const G4String& title);
547  //
548  G4bool SetP2Title(G4int id, const G4String& title);
549  G4bool SetP2XAxisTitle(G4int id, const G4String& title);
550  G4bool SetP2YAxisTitle(G4int id, const G4String& title);
551  G4bool SetP2ZAxisTitle(G4int id, const G4String& title);
552 
553  // Access histogram & profiles attributes for plotting
554  //
555  G4String GetH1Title(G4int id) const;
556  G4String GetH1XAxisTitle(G4int id) const;
557  G4String GetH1YAxisTitle(G4int id) const;
558  //
559  G4String GetH2Title(G4int id) const;
560  G4String GetH2XAxisTitle(G4int id) const;
561  G4String GetH2YAxisTitle(G4int id) const;
562  G4String GetH2ZAxisTitle(G4int id) const;
563  //
564  G4String GetH3Title(G4int id) const;
565  G4String GetH3XAxisTitle(G4int id) const;
566  G4String GetH3YAxisTitle(G4int id) const;
567  G4String GetH3ZAxisTitle(G4int id) const;
568  //
569  G4String GetP1Title(G4int id) const;
570  G4String GetP1XAxisTitle(G4int id) const;
571  G4String GetP1YAxisTitle(G4int id) const;
572  G4String GetP1ZAxisTitle(G4int id) const;
573  //
574  G4String GetP2Title(G4int id) const;
575  G4String GetP2XAxisTitle(G4int id) const;
576  G4String GetP2YAxisTitle(G4int id) const;
577  G4String GetP2ZAxisTitle(G4int id) const;
578 
579  // Verbosity
580  void SetVerboseLevel(G4int verboseLevel);
581  G4int GetVerboseLevel() const;
582 
583  // The manager type (starts with an uppercase letter)
584  G4String GetType() const;
585  // The manager file type (starts with a lowercase letter)
586  G4String GetFileType() const;
587 
588  protected:
589  // virtual methods
590  virtual G4bool OpenFileImpl(const G4String& fileName) = 0;
591  virtual G4bool WriteImpl() = 0;
592  virtual G4bool CloseFileImpl() = 0;
593  virtual G4bool PlotImpl() = 0;
594  virtual G4bool MergeImpl(tools::histo::hmpi* hmpi) = 0;
595  virtual G4bool IsOpenFileImpl() const = 0;
596 
597  // methods
598  void SetH1Manager(G4VH1Manager* h1Manager);
599  void SetH2Manager(G4VH2Manager* h2Manager);
600  void SetH3Manager(G4VH3Manager* h3Manager);
601  void SetP1Manager(G4VP1Manager* p1Manager);
602  void SetP2Manager(G4VP2Manager* p2Manager);
603  void SetNtupleManager(G4VNtupleManager* ntupleManager);
604  void SetFileManager(std::shared_ptr<G4VFileManager> fileManager);
605 
606  // Methods to manipulate additional information
607  G4bool WriteAscii(const G4String& fileName);
608 
609  // data members
611  std::shared_ptr<G4VFileManager> fVFileManager;
612 
613  private:
614  // data members
615  std::unique_ptr<G4AnalysisMessenger> fMessenger;
616  std::shared_ptr<G4HnManager> fH1HnManager;
617  std::shared_ptr<G4HnManager> fH2HnManager;
618  std::shared_ptr<G4HnManager> fH3HnManager;
619  std::shared_ptr<G4HnManager> fP1HnManager;
620  std::shared_ptr<G4HnManager> fP2HnManager;
621  std::unique_ptr<G4VH1Manager> fVH1Manager;
622  std::unique_ptr<G4VH2Manager> fVH2Manager;
623  std::unique_ptr<G4VH3Manager> fVH3Manager;
624  std::unique_ptr<G4VP1Manager> fVP1Manager;
625  std::unique_ptr<G4VP2Manager> fVP2Manager;
626  // std::shared_ptr<G4VNtupleManager> fVNtupleManager;
628 };
629 
630 // inline functions
631 
632 #include "G4VAnalysisManager.icc"
633 
634 #endif
G4double GetP2YUnit(G4int id) const
void SetP1Activation(G4bool activation)
G4VAnalysisManager(const G4String &type, G4bool isMaster)
G4int CreateH3(const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, G4int nzbins, G4double zmin, G4double zmax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &zunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &zfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear", const G4String &zbinSchemeName="linear")
G4double GetP2Ymax(G4int id) const
G4bool SetH3YAxisTitle(G4int id, const G4String &title)
G4bool SetP2YAxisTitle(G4int id, const G4String &title)
G4bool SetFirstP2Id(G4int firstId)
G4bool SetP1(G4int id, G4int nbins, G4double xmin, G4double xmax, G4double ymin=0, G4double ymax=0, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinSchemeName="linear")
G4double GetP2Ymin(G4int id) const
const XML_Char * name
Definition: expat.h:151
G4VNtupleManager * fVNtupleManager
G4bool GetH3Plotting(G4int id) const
G4double GetP2XUnit(G4int id) const
G4bool SetH2(G4int id, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear")
G4int GetFirstH2Id() const
G4double GetH3Ymax(G4int id) const
G4bool SetH1(G4int id, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none", const G4String &binSchemeName="linear")
G4double GetP2Zmin(G4int id) const
G4bool SetH1YAxisTitle(G4int id, const G4String &title)
G4bool FillH2(G4int id, G4double xvalue, G4double yvalue, G4double weight=1.0)
void SetH2Ascii(G4int id, G4bool ascii)
G4int GetH3Nxbins(G4int id) const
G4String GetH3YAxisTitle(G4int id) const
G4bool SetHistoDirectoryName(const G4String &dirName)
G4int GetH2Nxbins(G4int id) const
virtual G4bool WriteImpl()=0
std::unique_ptr< G4VH1Manager > fVH1Manager
std::shared_ptr< G4HnManager > fP2HnManager
G4bool SetH1XAxisTitle(G4int id, const G4String &title)
void SetP1Plotting(G4int id, G4bool plotting)
G4String GetP1Name(G4int id) const
G4bool GetH1Ascii(G4int id) const
G4String GetP2XAxisTitle(G4int id) const
G4double GetP1XWidth(G4int id) const
G4bool SetFileName(const G4String &fileName)
G4double GetH2Ymax(G4int id) const
G4String GetFileName() const
G4int GetNofNtuples() const
G4String GetH2Name(G4int id) const
G4bool SetFirstH2Id(G4int firstId)
G4double GetP2Xmin(G4int id) const
G4bool GetH3Activation(G4int id) const
G4String GetH3ZAxisTitle(G4int id) const
G4int GetH2Nybins(G4int id) const
G4bool ScaleH1(G4int id, G4double factor)
G4double GetH3ZWidth(G4int id) const
float G4float
Definition: G4Types.hh:77
G4bool SetH3(G4int id, G4int nxbins, G4double xmin, G4double xmax, G4int nzbins, G4double zmin, G4double zmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &zunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &zfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear", const G4String &zbinSchemeName="linear")
G4String GetFileType() const
G4String GetHistoDirectoryName() const
G4double GetH2YUnit(G4int id) const
G4bool SetFirstHistoId(G4int firstId)
G4bool SetFirstNtupleColumnId(G4int firstId)
void SetH3Ascii(G4int id, G4bool ascii)
G4bool GetNtupleActivation(G4int id) const
G4int CreateH2(const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear")
G4int GetH2Id(const G4String &name, G4bool warn=true) const
G4double GetH3ZUnit(G4int id) const
G4bool OpenFile(const G4String &fileName="")
G4double GetH3Ymin(G4int id) const
G4bool FillP1(G4int id, G4double xvalue, G4double yvalue, G4double weight=1.0)
G4bool FillNtupleIColumn(G4int id, G4int value)
std::shared_ptr< G4HnManager > fP1HnManager
G4String GetNtupleDirectoryName() const
G4bool FillH3(G4int id, G4double xvalue, G4double yvalue, G4double zvalue, G4double weight=1.0)
G4String GetP2Name(G4int id) const
G4bool GetP1Activation(G4int id) const
void SetH1Manager(G4VH1Manager *h1Manager)
G4bool GetP1Ascii(G4int id) const
G4int GetH1Id(const G4String &name, G4bool warn=true) const
void SetH3Manager(G4VH3Manager *h3Manager)
G4bool SetFirstH1Id(G4int firstId)
G4int CreateH1(const G4String &name, const G4String &title, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none", const G4String &binSchemeName="linear")
G4String GetH2ZAxisTitle(G4int id) const
G4bool SetP2(G4int id, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, G4double zmin=0, G4double zmax=0, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &zunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &zfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear")
std::shared_ptr< G4HnManager > fH3HnManager
std::unique_ptr< G4AnalysisMessenger > fMessenger
G4String GetType() const
G4int CreateNtupleIColumn(const G4String &name)
G4bool ScaleP1(G4int id, G4double factor)
G4bool GetH2Plotting(G4int id) const
G4int GetP2Nybins(G4int id) const
std::unique_ptr< G4VP2Manager > fVP2Manager
G4String GetP1XAxisTitle(G4int id) const
G4int GetFirstP1Id() const
G4bool FillNtupleDColumn(G4int id, G4double value)
virtual G4bool OpenFileImpl(const G4String &fileName)=0
void SetH2Plotting(G4int id, G4bool plotting)
void SetActivation(G4bool activation)
std::shared_ptr< G4HnManager > fH1HnManager
G4bool SetH2Title(G4int id, const G4String &title)
std::unique_ptr< G4VH2Manager > fVH2Manager
G4double GetH3XWidth(G4int id) const
G4bool GetActivation() const
G4int GetFirstH3Id() const
G4bool GetP2Ascii(G4int id) const
G4String GetH3Title(G4int id) const
G4int GetH1Nbins(G4int id) const
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
G4bool GetH1Plotting(G4int id) const
G4double GetH2Xmax(G4int id) const
G4AnalysisManagerState fState
void SetH2Manager(G4VH2Manager *h2Manager)
void SetP2Ascii(G4int id, G4bool ascii)
G4int GetH3Nzbins(G4int id) const
G4double GetH2YWidth(G4int id) const
G4double GetH1Xmin(G4int id) const
G4bool SetFirstP1Id(G4int firstId)
virtual G4bool IsOpenFileImpl() const =0
G4String GetP2Title(G4int id) const
G4int GetFirstP2Id() const
const XML_Char int const XML_Char * value
Definition: expat.h:331
G4bool SetP1YAxisTitle(G4int id, const G4String &title)
G4double GetP1Xmax(G4int id) const
G4double GetP1Ymax(G4int id) const
G4int GetH3Nybins(G4int id) const
void SetH2Activation(G4bool activation)
G4String GetP1Title(G4int id) const
std::shared_ptr< G4VFileManager > fVFileManager
G4bool FillNtupleSColumn(G4int id, const G4String &value)
G4bool GetH2Activation(G4int id) const
G4double GetH2XWidth(G4int id) const
G4bool GetP2Activation(G4int id) const
G4bool SetH2XAxisTitle(G4int id, const G4String &title)
G4bool SetH2YAxisTitle(G4int id, const G4String &title)
G4int GetCompressionLevel() const
void SetH3Plotting(G4int id, G4bool plotting)
G4bool SetFirstH3Id(G4int firstId)
void SetNtupleActivation(G4bool activation)
G4bool Merge(tools::histo::hmpi *hmpi)
std::unique_ptr< G4VH3Manager > fVH3Manager
G4String GetH1YAxisTitle(G4int id) const
virtual G4bool PlotImpl()=0
virtual G4bool MergeImpl(tools::histo::hmpi *hmpi)=0
G4bool SetFirstProfileId(G4int firstId)
G4int GetFirstH1Id() const
G4bool SetP2ZAxisTitle(G4int id, const G4String &title)
G4double GetP2XWidth(G4int id) const
G4bool SetP2XAxisTitle(G4int id, const G4String &title)
G4String GetP1YAxisTitle(G4int id) const
G4int GetP2Id(const G4String &name, G4bool warn=true) const
G4String GetP1ZAxisTitle(G4int id) const
G4int CreateNtupleDColumn(const G4String &name)
G4double GetH3YWidth(G4int id) const
G4int GetFirstNtupleColumnId() const
G4String GetH2YAxisTitle(G4int id) const
G4String GetH1XAxisTitle(G4int id) const
G4bool ScaleH3(G4int id, G4double factor)
G4bool IsPlotting() const
G4bool ScaleP2(G4int id, G4double factor)
G4bool SetH3ZAxisTitle(G4int id, const G4String &title)
G4String GetH1Name(G4int id) const
G4String GetH1Title(G4int id) const
G4int GetP2Nxbins(G4int id) const
G4double GetH3Zmin(G4int id) const
G4bool SetP2Title(G4int id, const G4String &title)
void SetP2Activation(G4bool activation)
void SetFileManager(std::shared_ptr< G4VFileManager > fileManager)
G4int GetP1Id(const G4String &name, G4bool warn=true) const
std::shared_ptr< G4HnManager > fH2HnManager
G4bool SetH3Title(G4int id, const G4String &title)
G4int GetFirstNtupleId() const
G4double GetP1YUnit(G4int id) const
G4String GetP2ZAxisTitle(G4int id) const
G4double GetP2ZUnit(G4int id) const
void SetVerboseLevel(G4int verboseLevel)
G4bool IsOpenFile() const
G4String GetH3Name(G4int id) const
void SetH1Activation(G4bool activation)
G4bool ScaleH2(G4int id, G4double factor)
G4double GetH3Xmin(G4int id) const
G4int CreateNtupleSColumn(const G4String &name)
G4double GetH2XUnit(G4int id) const
G4int CreateP2(const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, G4double zmin=0, G4double zmax=0, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &zunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &zfcnName="none", const G4String &xbinSchemeName="linear", const G4String &ybinSchemeName="linear")
void SetH1Plotting(G4int id, G4bool plotting)
void SetH1Ascii(G4int id, G4bool ascii)
G4double GetH3YUnit(G4int id) const
double weight
Definition: plottest35.C:25
int G4int
Definition: G4Types.hh:78
G4bool IsActive() const
G4double GetH1Width(G4int id) const
G4bool SetNtupleDirectoryName(const G4String &dirName)
void SetP2Plotting(G4int id, G4bool plotting)
void SetNtupleManager(G4VNtupleManager *ntupleManager)
G4bool FillNtupleFColumn(G4int id, G4float value)
G4double GetH1Xmax(G4int id) const
G4int GetH3Id(const G4String &name, G4bool warn=true) const
G4double GetP2Zmax(G4int id) const
void SetP2Manager(G4VP2Manager *p2Manager)
G4String GetP2YAxisTitle(G4int id) const
G4int CreateNtuple(const G4String &name, const G4String &title)
G4bool GetH1Activation(G4int id) const
G4double GetH2Xmin(G4int id) const
G4bool GetH2Ascii(G4int id) const
G4bool FillP2(G4int id, G4double xvalue, G4double yvalue, G4double zvalue, G4double weight=1.0)
G4bool GetH3Ascii(G4int id) const
G4double GetP2Xmax(G4int id) const
G4bool SetH1Title(G4int id, const G4String &title)
std::unique_ptr< G4VP1Manager > fVP1Manager
G4bool IsAscii() const
G4int GetP1Nbins(G4int id) const
G4double GetH3XUnit(G4int id) const
G4bool SetH3XAxisTitle(G4int id, const G4String &title)
G4bool SetP1Title(G4int id, const G4String &title)
G4String GetH3XAxisTitle(G4int id) const
G4double GetP1Xmin(G4int id) const
G4double GetP1XUnit(G4int id) const
G4String GetH2XAxisTitle(G4int id) const
G4double GetH3Xmax(G4int id) const
G4bool GetP2Plotting(G4int id) const
G4double GetP1Ymin(G4int id) const
G4double GetP2YWidth(G4int id) const
G4bool FillH1(G4int id, G4double value, G4double weight=1.0)
G4double GetH2Ymin(G4int id) const
virtual G4bool CloseFileImpl()=0
G4int CreateNtupleFColumn(const G4String &name)
void SetH3Activation(G4bool activation)
G4bool SetH2ZAxisTitle(G4int id, const G4String &title)
G4double GetH3Zmax(G4int id) const
void SetP1Manager(G4VP1Manager *p1Manager)
G4bool SetFirstNtupleId(G4int firstId)
G4String GetH2Title(G4int id) const
void SetP1Ascii(G4int id, G4bool ascii)
G4double GetH1Unit(G4int id) const
void SetCompressionLevel(G4int level)
G4int CreateP1(const G4String &name, const G4String &title, G4int nbins, G4double xmin, G4double xmax, G4double ymin=0, G4double ymax=0, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinSchemeName="linear")
G4bool SetP1XAxisTitle(G4int id, const G4String &title)
G4bool GetP1Plotting(G4int id) const
G4int GetVerboseLevel() const
G4bool WriteAscii(const G4String &fileName)