Geant4-11
G4NuclearPolarization.cc
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// V.Ivanchenko left only polarization tensor and add operators
36//
37// -------------------------------------------------------------------
38
40#include <iomanip>
41
43 : fZ(Z), fA(A), fExcEnergy(exc)
44{
45 Unpolarize();
46 //G4cout << "NP: new " << this << G4endl;
47}
48
50{
51 //G4cout << "NP: delete " << this << G4endl;
52}
53
55{
56 if(!fPolarization.empty()) {
57 for(auto & pol : fPolarization) {
58 pol.clear();
59 }
60 fPolarization.clear();
61 }
62}
63
65{
66 return (fZ == right.fZ && fA == right.fA && fExcEnergy == right.fExcEnergy
67 && fPolarization == right.fPolarization);
68}
69
71{
72 return (fZ != right.fZ || fA != right.fA || fExcEnergy != right.fExcEnergy
73 || fPolarization != right.fPolarization);
74}
75
76std::ostream& operator<<(std::ostream& out, const G4NuclearPolarization& p)
77{
78 out << "G4NuclearPolarization: Z= " << p.fZ << " A= " << p.fA << " Exc(MeV)= "
79 << p.fExcEnergy << G4endl;
80 out << " P = [ {";
81 size_t kk = p.fPolarization.size();
82 for(size_t k=0; k<kk; ++k) {
83 if(k>0) { out << " {"; }
84 size_t kpmax = (p.fPolarization[k]).size();
85 for(size_t kappa=0; kappa<kpmax; ++kappa) {
86 if(kappa > 0) { out << "} {"; }
87 out << p.fPolarization[k][kappa].real() << " + "
88 << p.fPolarization[k][kappa].imag() << "*i";
89 }
90 if(k+1 < kk) { out << "}" << G4endl; }
91 }
92 out << "} ]" << G4endl;
93 return out;
94}
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]
#define G4endl
Definition: G4ios.hh:57
G4bool operator!=(const G4NuclearPolarization &right) const
G4bool operator==(const G4NuclearPolarization &right) const
G4NuclearPolarization(G4int Z, G4int A, G4double exc)
std::vector< std::vector< G4complex > > fPolarization
std::ostream & operator<<(std::ostream &, const BasicVector3D< float > &)