Geant4 Cross Reference |
1 // ******************************************* 1 2 // * License and Disclaimer 3 // * 4 // * The Geant4 software is copyright of th 5 // * the Geant4 Collaboration. It is provided 6 // * conditions of the Geant4 Software License 7 // * LICENSE and available at http://cern.ch/ 8 // * include a list of copyright holders. 9 // * 10 // * Neither the authors of this software syst 11 // * institutes,nor the agencies providing fin 12 // * work make any representation or warran 13 // * regarding this software system or assum 14 // * use. Please see the license in the file 15 // * for the full disclaimer and the limitatio 16 // * 17 // * This code implementation is the result 18 // * technical work of the GEANT4 collaboratio 19 // * By using, copying, modifying or distri 20 // * any work based on the software) you ag 21 // * use in resulting scientific publicati 22 // * acceptance of all terms of the Geant4 Sof 23 // ******************************************* 24 // 25 // 26 // ------------------------------------------- 27 // GEANT4 Class file 28 // 29 // File name: G4NuclearPolarization 30 // 31 // Author: Jason Detwiler (jasonde 32 // 33 // Creation date: Aug 2015 34 // 35 // V.Ivanchenko left only polarization te 36 // 37 // ------------------------------------------- 38 39 #include "G4NuclearPolarization.hh" 40 #include <iomanip> 41 42 G4NuclearPolarization::G4NuclearPolarization(G 43 : fZ(Z), fA(A), fExcEnergy(exc) 44 { 45 Unpolarize(); 46 //G4cout << "NP: new " << this << G4endl; 47 } 48 49 G4NuclearPolarization::~G4NuclearPolarization( 50 { 51 //G4cout << "NP: delete " << this << G4endl; 52 Clean(); 53 } 54 55 void G4NuclearPolarization::Clean() 56 { 57 if(!fPolarization.empty()) { 58 for(auto & pol : fPolarization) { 59 pol.clear(); 60 } 61 fPolarization.clear(); 62 } 63 } 64 65 G4bool G4NuclearPolarization::operator==(const 66 { 67 return (fZ == right.fZ && fA == right.fA && 68 && fPolarization == right.fPolarization); 69 } 70 71 G4bool G4NuclearPolarization::operator!=(const 72 { 73 return (fZ != right.fZ || fA != right.fA || 74 || fPolarization != right.fPolarization); 75 } 76 77 std::ostream& operator<<(std::ostream& out, co 78 { 79 out << "G4NuclearPolarization: Z= " << p.fZ 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 } 96