Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NuclearPolarization.hh
Go to the documentation of this file.
1// ********************************************************************
2// * License and Disclaimer *
3// * *
4// * The Geant4 software is copyright of the Copyright Holders of *
5// * the Geant4 Collaboration. It is provided under the terms and *
6// * conditions of the Geant4 Software License, included in the file *
7// * LICENSE and available at http://cern.ch/geant4/license . These *
8// * include a list of copyright holders. *
9// * *
10// * Neither the authors of this software system, nor their employing *
11// * institutes,nor the agencies providing financial support for this *
12// * work make any representation or warranty, express or implied, *
13// * regarding this software system or assume any liability for its *
14// * use. Please see the license in the file LICENSE and URL above *
15// * for the full disclaimer and the limitation of liability. *
16// * *
17// * This code implementation is the result of the scientific and *
18// * technical work of the GEANT4 collaboration. *
19// * By using, copying, modifying or distributing the software (or *
20// * any work based on the software) you agree to acknowledge its *
21// * use in resulting scientific publications, and indicate your *
22// * acceptance of all terms of the Geant4 Software license. *
23// ********************************************************************
24//
25//
26// -------------------------------------------------------------------
27// GEANT4 Class file
28//
29// File name: G4NuclearPolarization
30//
31// Author: Jason Detwiler ([email protected])
32//
33// Creation date: Aug 2015
34//
35// Description:
36// Stores the statistical tensor describing the nuclear polarization
37// (see Alder and Winther, "Electromagnetic Excitation" (1975),
38// Appendix F).
39//
40// V.Ivanchenko left only polarization tensor and access methods
41// in this class, also add operators
42// this allows future implemention of polarized
43// hadronic models with polarized initial and
44// final states
45//
46// -------------------------------------------------------------------
47
48#ifndef G4NUCLEARPOLARIZATION_HH
49#define G4NUCLEARPOLARIZATION_HH
50
51#include "globals.hh"
52#include <vector>
53
55{
56public:
57
58 explicit G4NuclearPolarization(G4int Z, G4int A, G4double exc);
59
61
62 inline void Unpolarize()
63 {
64 Clean();
65 fPolarization.resize(1);
66 fPolarization[0].push_back(1.0);
67 }
68
69 inline void SetPolarization(std::vector< std::vector<G4complex> >& p)
70 {
71 Clean();
72 for(auto & pol : p) {
73 fPolarization.push_back(pol);
74 }
75 }
76
77 inline std::vector< std::vector<G4complex> >& GetPolarization()
78 {
79 return fPolarization;
80 }
81
82 inline G4int GetZ() const
83 {
84 return fZ;
85 }
86
87 inline G4int GetA() const
88 {
89 return fA;
90 }
91
93 {
94 return fExcEnergy;
95 }
96
98 {
99 fExcEnergy = val;
100 }
101
102 // ============= OPERATORS ==================
103
105 {
106 if (this != &right) {
107 fZ = right.fZ;
108 fA = right.fA;
109 fExcEnergy = right.fExcEnergy;
110 fPolarization = right.fPolarization;
111 }
112 return *this;
113 }
114
116 {
117 *this = right;
118 }
119
120 G4bool operator==(const G4NuclearPolarization &right) const;
121 G4bool operator!=(const G4NuclearPolarization &right) const;
122
123 friend std::ostream& operator<<(std::ostream&, const G4NuclearPolarization&);
124
125private:
126
127 void Clean();
128
129 G4int fZ;
130 G4int fA;
131 G4double fExcEnergy;
132 std::vector< std::vector<G4complex> > fPolarization;
133};
134
135#endif
double A(double temperature)
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
G4double GetExcitationEnergy() const
friend std::ostream & operator<<(std::ostream &, const G4NuclearPolarization &)
void SetExcitationEnergy(G4double val)
G4bool operator!=(const G4NuclearPolarization &right) const
G4bool operator==(const G4NuclearPolarization &right) const
std::vector< std::vector< G4complex > > & GetPolarization()
void SetPolarization(std::vector< std::vector< G4complex > > &p)
G4NuclearPolarization & operator=(const G4NuclearPolarization &right)
G4NuclearPolarization(const G4NuclearPolarization &right)