40 : verboseLevel(0), fVresTheta(0), fVresPhi(0), fDresTheta(0), fDresPhi(0),
41 fA(0), fB(0), fLDOS(0), fSTDOS(0), fFTDOS(0),
42 fBeta(0), fGamma(0), fLambda(0), fMu(0) {
43 for (
G4int i=0; i<3; i++) {
47 fN_map[i][j][k].
set(0.,0.,0.);
64 G4cerr <<
"G4LatticeLogical::LoadMap exceeds maximum resolution of "
69 std::ifstream fMapFile(map.
data());
70 if (!fMapFile.is_open())
return false;
73 for (
G4int theta = 0; theta<tRes; theta++) {
74 for (
G4int phi = 0; phi<pRes; phi++) {
76 fMap[polarizationState][theta][phi] = vgrp * (m/s);
81 G4cout <<
"\nG4LatticeLogical::LoadMap(" << map <<
") successful"
82 <<
" (Vg scalars " << tRes <<
" x " << pRes <<
" for polarization "
83 << polarizationState <<
")." <<
G4endl;
100 G4cerr <<
"G4LatticeLogical::LoadMap exceeds maximum resolution of "
105 std::ifstream fMapFile(map.
data());
106 if(!fMapFile.is_open())
return false;
110 for (
G4int theta = 0; theta<tRes; theta++) {
111 for (
G4int phi = 0; phi<pRes; phi++) {
112 fMapFile >> x >> y >> z;
114 fN_map[polarizationState][theta][phi] = dir.
unit();
119 G4cout <<
"\nG4LatticeLogical::Load_NMap(" << map <<
") successful"
120 <<
" (Vdir " << tRes <<
" x " << pRes <<
" for polarization "
121 << polarizationState <<
")." <<
G4endl;
145 if(phi<0) phi = phi + twopi;
146 if(theta>pi) theta=theta-pi;
148 G4double Vg = fMap[polarizationState][int(theta/tRes)][int(phi/pRes)];
151 G4cout<<
"\nFound v=0 for polarization "<<polarizationState
152 <<
" theta "<<theta<<
" phi "<<phi<<
" translating to map coords "
153 <<
"theta "<< int(theta/tRes) <<
" phi " << int(phi/pRes)<<
G4endl;
156 if (verboseLevel>1) {
157 G4cout <<
"G4LatticeLogical::MapKtoV theta,phi=" << theta <<
" " << phi
158 <<
" : ith,iph " << int(theta/tRes) <<
" " << int(phi/pRes)
159 <<
" : V " << Vg <<
G4endl;
175 tRes=pi/(fDresTheta-1);
176 pRes=2*pi/(fDresPhi-1);
181 if(theta>pi) theta=theta-pi;
183 if(phi<0) phi = phi + 2*pi;
185 G4int iTheta = int(theta/tRes+0.5);
186 G4int iPhi = int(phi/pRes+0.5);
188 if (verboseLevel>1) {
189 G4cout <<
"G4LatticeLogical::MapKtoVDir theta,phi=" << theta <<
" " << phi
190 <<
" : ith,iph " << iTheta <<
" " << iPhi
191 <<
" : dir " << fN_map[polarizationState][iTheta][iPhi] <<
G4endl;
194 return fN_map[polarizationState][iTheta][iPhi];
202 os <<
"dyn " << fBeta <<
" " << fGamma <<
" " << fLambda <<
" " << fMu
203 <<
"\nscat " << fB <<
" decay " << fA
204 <<
"\nLDOS " << fLDOS <<
" STDOS " << fSTDOS <<
" FTDOS " << fFTDOS
218 os <<
"VG " << name <<
" " << (pol==0?
"L":pol==1?
"FT":pol==2?
"ST":
"??")
219 <<
" " << fVresTheta <<
" " << fVresPhi << std::endl;
221 for (
G4int iTheta=0; iTheta<fVresTheta; iTheta++) {
222 for (
G4int iPhi=0; iPhi<fVresPhi; iPhi++) {
223 os << fMap[pol][iTheta][iPhi] << std::endl;
230 os <<
"VDir " << name <<
" " << (pol==0?
"L":pol==1?
"FT":pol==2?
"ST":
"??")
231 <<
" " << fDresTheta <<
" " << fDresPhi << std::endl;
233 for (
G4int iTheta=0; iTheta<fDresTheta; iTheta++) {
234 for (
G4int iPhi=0; iPhi<fDresPhi; iPhi++) {
235 os << fN_map[pol][iTheta][iPhi].
x()
236 <<
" " << fN_map[pol][iTheta][iPhi].
y()
237 <<
" " << fN_map[pol][iTheta][iPhi].
z()
Definition of the G4LatticeLogical class.
G4GLOB_DLL std::ostream G4cerr
G4GLOB_DLL std::ostream G4cout
void set(double x, double y, double z)
virtual G4double MapKtoV(G4int, const G4ThreeVector &) const
void DumpMap(std::ostream &os, G4int pol, const G4String &name) const
G4bool LoadMap(G4int, G4int, G4int, G4String)
void Dump_NMap(std::ostream &os, G4int pol, const G4String &name) const
virtual G4ThreeVector MapKtoVDir(G4int, const G4ThreeVector &) const
void Dump(std::ostream &os) const
G4bool Load_NMap(G4int, G4int, G4int, G4String)
virtual ~G4LatticeLogical()
const char * data() const