Geant4  10.02.p01
G4NuclearLevel.hh
Go to the documentation of this file.
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: G4NuclearLevel.hh 86986 2014-11-21 13:00:05Z gcosmo $
27 //
28 // -------------------------------------------------------------------
29 // GEANT 4 class file
30 //
31 // For information related to this code contact:
32 // CERN, IT Division, ASD group
33 // CERN, Geneva, Switzerland
34 //
35 // File name: G4NuclearLevel
36 //
37 // Author: Maria Grazia Pia (pia@genova.infn.it)
38 //
39 // Creation date: 25 October 1998
40 //
41 // Modifications:
42 // 06 Oct 2010, M. Kelsey (kelsey@slac.stanford.edu)
43 // Add friendship for G4NuclearLevelManager; define private
44 // constructors without vectors.
45 //
46 // 21 Nov. 2001, Fan Lei (flei@space.qinetiq.com)
47 // Added K->N+ internal conversion coefficiencies and their access
48 // functions
49 //
50 // 15 April 1999, Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
51 // Added half-life, angular momentum, parity, emissioni type
52 // reading from experimental data.
53 //
54 // 28 October 2010, V.Ivanchenko moved copy constructor to source, cleanup
55 //
56 //
57 // -------------------------------------------------------------------
58 
59 #ifndef G4NUCLEARLEVEL_HH
60 #define G4NUCLEARLEVEL_HH 1
61 
62 #include "globals.hh"
63 #include <vector>
64 
66 {
67 
68 public:
70  G4double angularMomentum, const std::vector<G4double>& eGamma,
71  const std::vector<G4double>& wGamma, const std::vector<G4double>& polarities,
72  const std::vector<G4double>& kCC, const std::vector<G4double>& l1CC,
73  const std::vector<G4double>& l2CC, const std::vector<G4double>& l3CC,
74  const std::vector<G4double>& m1CC, const std::vector<G4double>& m2CC,
75  const std::vector<G4double>& m3CC, const std::vector<G4double>& m4CC,
76  const std::vector<G4double>& m5CC, const std::vector<G4double>& nPlusCC,
77  const std::vector<G4double>& totalCC);
78 
80 
81  const std::vector<G4double>& GammaEnergies() const;
82 
83  const std::vector<G4double>& GammaWeights() const;
84 
85  const std::vector<G4double>& GammaProbabilities() const;
86 
87  const std::vector<G4double>& GammaCumulativeProbabilities() const;
88 
89  const std::vector<G4double>& GammaPolarities() const;
90 
91  const std::vector<G4double>& KConvertionProbabilities() const;
92 
93  const std::vector<G4double>& L1ConvertionProbabilities() const;
94 
95  const std::vector<G4double>& L2ConvertionProbabilities() const;
96 
97  const std::vector<G4double>& L3ConvertionProbabilities() const;
98 
99  const std::vector<G4double>& M1ConvertionProbabilities() const;
100 
101  const std::vector<G4double>& M2ConvertionProbabilities() const;
102 
103  const std::vector<G4double>& M3ConvertionProbabilities() const;
104 
105  const std::vector<G4double>& M4ConvertionProbabilities() const;
106 
107  const std::vector<G4double>& M5ConvertionProbabilities() const;
108 
109  const std::vector<G4double>& NPlusConvertionProbabilities() const;
110 
111  const std::vector<G4double>& TotalConvertionProbabilities() const;
112 
113  G4double Energy() const;
114 
115  G4double AngularMomentum() const;
116 
117  G4double HalfLife() const;
118 
119  G4int NumberOfGammas() const;
120 
121  void PrintAll() const;
122 
123  void PrintLevels() const;
124 
125  G4bool operator==(const G4NuclearLevel &right) const;
126  G4bool operator!=(const G4NuclearLevel &right) const;
127  G4bool operator<(const G4NuclearLevel &right) const;
128  G4NuclearLevel& operator=(const G4NuclearLevel &right);
129 
130  G4NuclearLevel(const G4NuclearLevel &right);
131 
132 private:
133 
134  friend class G4NuclearLevelManager;
135 
136  G4NuclearLevel();
137 
138  G4NuclearLevel(G4double energy, G4double halfLife,
139  G4double angularMomentum);
140 
141  void Finalize();
142 
143  void MakeProbabilities();
144  void MakeCumProb();
145 
146  G4int Increment(G4int aF);
147 
148  std::vector<G4double> _energies;
149  std::vector<G4double> _weights;
150  std::vector<G4double> _prob;
151  std::vector<G4double> _cumProb;
152  std::vector<G4double> _polarities;
153  std::vector<G4double> _kCC;
154  std::vector<G4double> _l1CC;
155  std::vector<G4double> _l2CC;
156  std::vector<G4double> _l3CC;
157  std::vector<G4double> _m1CC;
158  std::vector<G4double> _m2CC;
159  std::vector<G4double> _m3CC;
160  std::vector<G4double> _m4CC;
161  std::vector<G4double> _m5CC;
162  std::vector<G4double> _nPlusCC;
163  std::vector<G4double> _totalCC;
164 
169 };
170 
171 #endif
172 
173 
174 
175 
176 
177 
const std::vector< G4double > & L2ConvertionProbabilities() const
G4bool operator<(const G4NuclearLevel &right) const
std::vector< G4double > _m3CC
G4int Increment(G4int aF)
const std::vector< G4double > & NPlusConvertionProbabilities() const
std::vector< G4double > _m1CC
const std::vector< G4double > & M1ConvertionProbabilities() const
G4double HalfLife() const
const std::vector< G4double > & M4ConvertionProbabilities() const
G4int NumberOfGammas() const
std::vector< G4double > _cumProb
G4double Energy() const
G4double _angularMomentum
std::vector< G4double > _l3CC
const std::vector< G4double > & M2ConvertionProbabilities() const
const std::vector< G4double > & KConvertionProbabilities() const
const std::vector< G4double > & L1ConvertionProbabilities() const
std::vector< G4double > _weights
std::vector< G4double > _polarities
int G4int
Definition: G4Types.hh:78
const std::vector< G4double > & M5ConvertionProbabilities() const
const std::vector< G4double > & GammaEnergies() const
std::vector< G4double > _m5CC
std::vector< G4double > _l1CC
void PrintAll() const
G4bool operator==(const G4NuclearLevel &right) const
std::vector< G4double > _prob
bool G4bool
Definition: G4Types.hh:79
std::vector< G4double > _nPlusCC
std::vector< G4double > _energies
const std::vector< G4double > & L3ConvertionProbabilities() const
std::vector< G4double > _m2CC
const std::vector< G4double > & M3ConvertionProbabilities() const
G4double AngularMomentum() const
std::vector< G4double > _kCC
G4double energy(const ThreeVector &p, const G4double m)
const std::vector< G4double > & GammaWeights() const
const std::vector< G4double > & TotalConvertionProbabilities() const
const std::vector< G4double > & GammaProbabilities() const
void MakeProbabilities()
std::vector< G4double > _m4CC
double G4double
Definition: G4Types.hh:76
const std::vector< G4double > & GammaCumulativeProbabilities() const
G4bool operator!=(const G4NuclearLevel &right) const
std::vector< G4double > _l2CC
const std::vector< G4double > & GammaPolarities() const
std::vector< G4double > _totalCC
void PrintLevels() const
G4NuclearLevel & operator=(const G4NuclearLevel &right)