Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 ([email protected])
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 Clean();
53}
54
55void G4NuclearPolarization::Clean()
56{
57 if(!fPolarization.empty()) {
58 for(auto & pol : fPolarization) {
59 pol.clear();
60 }
61 fPolarization.clear();
62 }
63}
64
66{
67 return (fZ == right.fZ && fA == right.fA && fExcEnergy == right.fExcEnergy
68 && fPolarization == right.fPolarization);
69}
70
72{
73 return (fZ != right.fZ || fA != right.fA || fExcEnergy != right.fExcEnergy
74 || fPolarization != right.fPolarization);
75}
76
77std::ostream& operator<<(std::ostream& out, const G4NuclearPolarization& p)
78{
79 out << "G4NuclearPolarization: Z= " << p.fZ << " A= " << p.fA << " Exc(MeV)= "
80 << p.fExcEnergy << G4endl;
81 out << " P = [ {";
82 size_t kk = p.fPolarization.size();
83 for(size_t k=0; k<kk; ++k) {
84 if(k>0) { out << " {"; }
85 size_t kpmax = (p.fPolarization[k]).size();
86 for(size_t kappa=0; kappa<kpmax; ++kappa) {
87 if(kappa > 0) { out << "} {"; }
88 out << p.fPolarization[k][kappa].real() << " + "
89 << p.fPolarization[k][kappa].imag() << "*i";
90 }
91 if(k+1 < kk) { out << "}" << G4endl; }
92 }
93 out << "} ]" << G4endl;
94 return out;
95}
std::ostream & operator<<(std::ostream &out, const G4NuclearPolarization &p)
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
const G4double A[17]
#define G4endl
Definition G4ios.hh:67
G4bool operator!=(const G4NuclearPolarization &right) const
G4bool operator==(const G4NuclearPolarization &right) const
G4NuclearPolarization(G4int Z, G4int A, G4double exc)