ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Histo.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Histo.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 //
28 //
29 
30 #ifndef Histo_h
31 #define Histo_h 1
32 
33 //---------------------------------------------------------------------------
34 //
35 // ClassName: Histo
36 //
37 // Description: Utility class to hold and manipulate histograms/nTuples
38 //
39 // Author: V.Ivanchenko 30/10/03
40 //
41 //----------------------------------------------------------------------------
42 //
43 
44 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
45 
46 #include "globals.hh"
47 #include "G4DataVector.hh"
48 #include <vector>
49 
50 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
51 
52 class G4VAnalysisManager;
53 class HistoMessenger;
54 
55 class Histo
56 {
57 public:
58 
59  Histo();
60 
61  ~Histo();
62 
63  // Book predefined histogramms
64  void Book();
65 
66  // Save histogramms to file
67  void Save();
68 
69  // In this method 1-D histogramms are predefined
70  void Add1D(const G4String&, const G4String&, G4int nb, G4double x1,
71  G4double x2, G4double u=1.);
72 
73  // It change bins and boundaries
75 
76  // Histogram activation/deactivation
77  void Activate(G4int, G4bool);
78 
79  // Histogramms are filled
80  void Fill(G4int, G4double, G4double);
81 
82  // Histogramms are scaled
83  void ScaleH1(G4int, G4double);
84 
85  // In this method nTuple is booked
86  void AddTuple(const G4String&);
87 
88  // In this method nTuple is booked
89  void AddTupleI(const G4String&);
90  void AddTupleF(const G4String&);
91  void AddTupleD(const G4String&);
92 
93  // Fill nTuple parameter
94  void FillTupleI(G4int, G4int);
95  void FillTupleF(G4int, G4float);
96  void FillTupleD(G4int, G4double);
97 
98  // Save tuple event
99  void AddRow();
100 
101  // Set output file
102  void SetFileName(const G4String&);
103  void SetFileType(const G4String&);
104 
105  inline void SetVerbose(G4int val) { fVerbose = val; };
106 
107  inline G4bool IsActive() const { return fHistoActive; };
108 
109 private:
110 
113 
118  G4int fNHisto;
119  G4int fVerbose;
123 
124  std::vector<G4int> fHisto;
125  std::vector<G4int> fTupleI;
126  std::vector<G4int> fTupleF;
127  std::vector<G4int> fTupleD;
128  std::vector<G4int> fBins;
129  std::vector<G4bool> fActive;
130  std::vector<G4double> fXmin;
131  std::vector<G4double> fXmax;
132  std::vector<G4double> fUnit;
133  std::vector<G4String> fIds;
134  std::vector<G4String> fTitles;
135  std::vector<G4String> fNtupleI;
136  std::vector<G4String> fNtupleF;
137  std::vector<G4String> fNtupleD;
138 
139 };
140 
141 #endif