Geant4 Cross Reference |
1 // ******************************************* 1 // ******************************************************************** 2 // * License and Disclaimer 2 // * License and Disclaimer * 3 // * 3 // * * 4 // * The Geant4 software is copyright of th 4 // * The Geant4 software is copyright of the Copyright Holders of * 5 // * the Geant4 Collaboration. It is provided 5 // * the Geant4 Collaboration. It is provided under the terms and * 6 // * conditions of the Geant4 Software License 6 // * conditions of the Geant4 Software License, included in the file * 7 // * LICENSE and available at http://cern.ch/ 7 // * LICENSE and available at http://cern.ch/geant4/license . These * 8 // * include a list of copyright holders. 8 // * include a list of copyright holders. * 9 // * 9 // * * 10 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 11 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 12 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 13 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 14 // * use. Please see the license in the file 14 // * use. Please see the license in the file LICENSE and URL above * 15 // * for the full disclaimer and the limitatio 15 // * for the full disclaimer and the limitation of liability. * 16 // * 16 // * * 17 // * This code implementation is the result 17 // * This code implementation is the result of the scientific and * 18 // * technical work of the GEANT4 collaboratio 18 // * technical work of the GEANT4 collaboration. * 19 // * By using, copying, modifying or distri 19 // * By using, copying, modifying or distributing the software (or * 20 // * any work based on the software) you ag 20 // * any work based on the software) you agree to acknowledge its * 21 // * use in resulting scientific publicati 21 // * use in resulting scientific publications, and indicate your * 22 // * acceptance of all terms of the Geant4 Sof 22 // * acceptance of all terms of the Geant4 Software license. * 23 // ******************************************* 23 // ******************************************************************** 24 // 24 // 25 // 25 // 26 // ------------------------------------------- 26 // ------------------------------------------------------------------- 27 // GEANT4 Class file 27 // GEANT4 Class file 28 // 28 // 29 // File name: G4NuclearPolarization 29 // File name: G4NuclearPolarization 30 // 30 // 31 // Author: Jason Detwiler (jasonde 31 // Author: Jason Detwiler (jasondet@gmail.com) 32 // 32 // 33 // Creation date: Aug 2015 33 // Creation date: Aug 2015 34 // 34 // 35 // V.Ivanchenko left only polarization te 35 // V.Ivanchenko left only polarization tensor and add operators 36 // 36 // 37 // ------------------------------------------- 37 // ------------------------------------------------------------------- 38 38 39 #include "G4NuclearPolarization.hh" 39 #include "G4NuclearPolarization.hh" 40 #include <iomanip> 40 #include <iomanip> 41 41 42 G4NuclearPolarization::G4NuclearPolarization(G << 42 G4NuclearPolarization::G4NuclearPolarization() 43 : fZ(Z), fA(A), fExcEnergy(exc) << 44 { 43 { 45 Unpolarize(); 44 Unpolarize(); 46 //G4cout << "NP: new " << this << G4endl; << 47 } 45 } 48 46 49 G4NuclearPolarization::~G4NuclearPolarization( 47 G4NuclearPolarization::~G4NuclearPolarization() 50 { << 48 {} 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 49 65 G4bool G4NuclearPolarization::operator==(const 50 G4bool G4NuclearPolarization::operator==(const G4NuclearPolarization &right) const 66 { 51 { 67 return (fZ == right.fZ && fA == right.fA && << 52 return (fPolarization == right.fPolarization); 68 && fPolarization == right.fPolarization); << 69 } 53 } 70 54 71 G4bool G4NuclearPolarization::operator!=(const 55 G4bool G4NuclearPolarization::operator!=(const G4NuclearPolarization &right) const 72 { 56 { 73 return (fZ != right.fZ || fA != right.fA || << 57 return (fPolarization != right.fPolarization); 74 || fPolarization != right.fPolarization); << 75 } 58 } 76 59 77 std::ostream& operator<<(std::ostream& out, co << 60 std::ostream& operator<<(std::ostream& out, const G4NuclearPolarization* p) 78 { 61 { 79 out << "G4NuclearPolarization: Z= " << p.fZ << 62 out << " P = [ { "; 80 << p.fExcEnergy << G4endl; << 63 for(size_t k=0; k<p->fPolarization.size(); ++k) { 81 out << " P = [ {"; << 64 if(k>0) { out << " }, { "; } 82 size_t kk = p.fPolarization.size(); << 65 for(size_t kappa=0; kappa<p->fPolarization[k].size(); ++kappa) { 83 for(size_t k=0; k<kk; ++k) { << 66 if(kappa > 0) { out << ", "; } 84 if(k>0) { out << " {"; } << 67 out << p->fPolarization[k][kappa].real() << " + " 85 size_t kpmax = (p.fPolarization[k]).size() << 68 << p->fPolarization[k][kappa].imag() << "*i"; 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 } 69 } 91 if(k+1 < kk) { out << "}" << G4endl; } << 92 } 70 } 93 out << "} ]" << G4endl; << 71 out << " } ]" << G4endl; >> 72 return out; >> 73 } >> 74 >> 75 std::ostream& operator<<(std::ostream& out, const G4NuclearPolarization& np) >> 76 { >> 77 out << &np; 94 return out; 78 return out; 95 } 79 } 96 80