41 : verboseLevel(0), fVresTheta(0), fVresPhi(0), fDresTheta(0), fDresPhi(0),
42 fA(0), fB(0), fLDOS(0), fSTDOS(0), fFTDOS(0),
43 fBeta(0), fGamma(0), fLambda(0), fMu(0) {
44 for (
G4int i=0; i<3; i++) {
48 fN_map[i][j][k].
set(0.,0.,0.);
65 G4cerr <<
"G4LatticeLogical::LoadMap exceeds maximum resolution of "
70 std::ifstream fMapFile(map.
data());
71 if (!fMapFile.is_open())
return false;
74 for (
G4int theta = 0; theta<tRes; theta++) {
75 for (
G4int phi = 0; phi<pRes; phi++) {
77 fMap[polarizationState][theta][phi] = vgrp * (
m/
s);
82 G4cout <<
"\nG4LatticeLogical::LoadMap(" << map <<
") successful"
83 <<
" (Vg scalars " << tRes <<
" x " << pRes <<
" for polarization "
84 << polarizationState <<
")." <<
G4endl;
101 G4cerr <<
"G4LatticeLogical::LoadMap exceeds maximum resolution of "
106 std::ifstream fMapFile(map.
data());
107 if(!fMapFile.is_open())
return false;
111 for (
G4int theta = 0; theta<tRes; theta++) {
112 for (
G4int phi = 0; phi<pRes; phi++) {
113 fMapFile >> x >> y >> z;
115 fN_map[polarizationState][theta][phi] = dir.
unit();
120 G4cout <<
"\nG4LatticeLogical::Load_NMap(" << map <<
") successful"
121 <<
" (Vdir " << tRes <<
" x " << pRes <<
" for polarization "
122 << polarizationState <<
")." <<
G4endl;
146 if(phi<0) phi = phi +
twopi;
147 if(theta>
pi) theta=theta-
pi;
149 G4double Vg = fMap[polarizationState][
int(theta/tRes)][
int(phi/pRes)];
152 G4cout<<
"\nFound v=0 for polarization "<<polarizationState
153 <<
" theta "<<theta<<
" phi "<<phi<<
" translating to map coords "
154 <<
"theta "<<
int(theta/tRes) <<
" phi " <<
int(phi/pRes)<<
G4endl;
157 if (verboseLevel>1) {
158 G4cout <<
"G4LatticeLogical::MapKtoV theta,phi=" << theta <<
" " << phi
159 <<
" : ith,iph " <<
int(theta/tRes) <<
" " <<
int(phi/pRes)
160 <<
" : V " << Vg <<
G4endl;
176 tRes=
pi/(fDresTheta-1);
177 pRes=2*
pi/(fDresPhi-1);
182 if(theta>
pi) theta=theta-
pi;
184 if(phi<0) phi = phi + 2*
pi;
189 if (verboseLevel>1) {
190 G4cout <<
"G4LatticeLogical::MapKtoVDir theta,phi=" << theta <<
" " << phi
191 <<
" : ith,iph " << iTheta <<
" " << iPhi
192 <<
" : dir " << fN_map[polarizationState][iTheta][iPhi] <<
G4endl;
195 return fN_map[polarizationState][iTheta][iPhi];
203 os <<
"dyn " << fBeta <<
" " << fGamma <<
" " << fLambda <<
" " << fMu
204 <<
"\nscat " << fB <<
" decay " << fA
205 <<
"\nLDOS " << fLDOS <<
" STDOS " << fSTDOS <<
" FTDOS " << fFTDOS
219 os <<
"VG " << name <<
" " << (pol==0?
"L":pol==1?
"FT":pol==2?
"ST":
"??")
220 <<
" " << fVresTheta <<
" " << fVresPhi << std::endl;
222 for (
G4int iTheta=0; iTheta<fVresTheta; iTheta++) {
223 for (
G4int iPhi=0; iPhi<fVresPhi; iPhi++) {
224 os << fMap[pol][iTheta][iPhi] << std::endl;
231 os <<
"VDir " << name <<
" " << (pol==0?
"L":pol==1?
"FT":pol==2?
"ST":
"??")
232 <<
" " << fDresTheta <<
" " << fDresPhi << std::endl;
234 for (
G4int iTheta=0; iTheta<fDresTheta; iTheta++) {
235 for (
G4int iPhi=0; iPhi<fDresPhi; iPhi++) {
236 os << fN_map[pol][iTheta][iPhi].
x()
237 <<
" " << fN_map[pol][iTheta][iPhi].
y()
238 <<
" " << fN_map[pol][iTheta][iPhi].
z()
void set(double x, double y, double z)
virtual G4ThreeVector MapKtoVDir(G4int, const G4ThreeVector &) const
virtual G4double MapKtoV(G4int, const G4ThreeVector &) const
G4bool LoadMap(G4int, G4int, G4int, G4String)
static constexpr double twopi
G4GLOB_DLL std::ostream G4cout
static constexpr double m
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
const char * data() const
void Dump(std::ostream &os) const
virtual ~G4LatticeLogical()
void Dump_NMap(std::ostream &os, G4int pol, const G4String &name) const
Definition of the G4LatticeLogical class.
static constexpr double pi
void DumpMap(std::ostream &os, G4int pol, const G4String &name) const
G4bool Load_NMap(G4int, G4int, G4int, G4String)
G4GLOB_DLL std::ostream G4cerr