Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 (jasondet@gmail.com)
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
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 G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
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)