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;
158 G4cout <<
"G4LatticeLogical::MapKtoV theta,phi=" << theta <<
" " << phi
159 <<
" : ith,iph " << int(theta/tRes) <<
" " << int(phi/pRes)
160 <<
" : V " << Vg <<
G4endl;
182 if(theta>
pi) theta=theta-
pi;
184 if(phi<0) phi = phi + 2*
pi;
186 G4int iTheta = int(theta/tRes+0.5);
187 G4int iPhi = int(phi/pRes+0.5);
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];
204 <<
"\nscat " <<
fB <<
" decay " <<
fA
219 os <<
"VG " << name <<
" " << (pol==0?
"L":pol==1?
"FT":pol==2?
"ST":
"??")
224 os <<
fMap[pol][iTheta][iPhi] << std::endl;
231 os <<
"VDir " << name <<
" " << (pol==0?
"L":pol==1?
"FT":pol==2?
"ST":
"??")
236 os <<
fN_map[pol][iTheta][iPhi].x()
237 <<
" " <<
fN_map[pol][iTheta][iPhi].y()
238 <<
" " <<
fN_map[pol][iTheta][iPhi].z()
virtual G4ThreeVector MapKtoVDir(G4int, const G4ThreeVector &) const
static constexpr double s
CLHEP::Hep3Vector G4ThreeVector
virtual G4double MapKtoV(G4int, const G4ThreeVector &) const
G4bool LoadMap(G4int, G4int, G4int, G4String)
const char * name(G4int ptype)
static constexpr double twopi
G4ThreeVector fN_map[3][MAXRES][MAXRES]
G4GLOB_DLL std::ostream G4cout
static constexpr double m
const char * data() const
void Dump(std::ostream &os) const
G4double fMap[3][MAXRES][MAXRES]
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