Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4LatticeLogical Class Reference

#include <G4LatticeLogical.hh>

Public Types

enum  { MAXRES =322 }
 

Public Member Functions

 G4LatticeLogical ()
 
virtual ~G4LatticeLogical ()
 
void SetVerboseLevel (G4int vb)
 
G4bool LoadMap (G4int, G4int, G4int, G4String)
 
G4bool Load_NMap (G4int, G4int, G4int, G4String)
 
virtual G4double MapKtoV (G4int, const G4ThreeVector &) const
 
virtual G4ThreeVector MapKtoVDir (G4int, const G4ThreeVector &) const
 
void Dump (std::ostream &os) const
 
void DumpMap (std::ostream &os, G4int pol, const G4String &name) const
 
void Dump_NMap (std::ostream &os, G4int pol, const G4String &name) const
 
void SetDynamicalConstants (G4double Beta, G4double Gamma, G4double Lambda, G4double Mu)
 
void SetScatteringConstant (G4double b)
 
void SetAnhDecConstant (G4double a)
 
void SetLDOS (G4double LDOS)
 
void SetSTDOS (G4double STDOS)
 
void SetFTDOS (G4double FTDOS)
 
G4double GetBeta () const
 
G4double GetGamma () const
 
G4double GetLambda () const
 
G4double GetMu () const
 
G4double GetScatteringConstant () const
 
G4double GetAnhDecConstant () const
 
G4double GetLDOS () const
 
G4double GetSTDOS () const
 
G4double GetFTDOS () const
 

Detailed Description

Definition at line 41 of file G4LatticeLogical.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MAXRES 

Definition at line 85 of file G4LatticeLogical.hh.

85{ MAXRES=322 }; // Maximum map resolution (bins)

Constructor & Destructor Documentation

◆ G4LatticeLogical()

G4LatticeLogical::G4LatticeLogical ( )

Definition at line 39 of file G4LatticeLogical.cc.

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++) {
44 for (G4int j=0; j<MAXRES; j++) {
45 for (G4int k=0; k<MAXRES; k++) {
46 fMap[i][j][k] = 0.;
47 fN_map[i][j][k].set(0.,0.,0.);
48 }
49 }
50 }
51}
int G4int
Definition: G4Types.hh:85
void set(double x, double y, double z)

◆ ~G4LatticeLogical()

G4LatticeLogical::~G4LatticeLogical ( )
virtual

Definition at line 53 of file G4LatticeLogical.cc.

53{;}

Member Function Documentation

◆ Dump()

void G4LatticeLogical::Dump ( std::ostream &  os) const

Definition at line 221 of file G4LatticeLogical.cc.

221 {
222 os << "dyn " << fBeta << " " << fGamma << " " << fLambda << " " << fMu
223 << "\nscat " << fB << " decay " << fA
224 << "\nLDOS " << fLDOS << " STDOS " << fSTDOS << " FTDOS " << fFTDOS
225 << std::endl;
226
227 Dump_NMap(os, 0, "LVec.ssv");
228 Dump_NMap(os, 1, "FTVec.ssv");
229 Dump_NMap(os, 2, "STVec.ssv");
230
231 DumpMap(os, 0, "L.ssv");
232 DumpMap(os, 1, "FT.ssv");
233 DumpMap(os, 2, "ST.ssv");
234}
void DumpMap(std::ostream &os, G4int pol, const G4String &name) const
void Dump_NMap(std::ostream &os, G4int pol, const G4String &name) const

Referenced by operator<<().

◆ Dump_NMap()

void G4LatticeLogical::Dump_NMap ( std::ostream &  os,
G4int  pol,
const G4String name 
) const

Definition at line 248 of file G4LatticeLogical.cc.

249 {
250 os << "VDir " << name << " " << (pol==0?"L":pol==1?"FT":pol==2?"ST":"??")
251 << " " << fDresTheta << " " << fDresPhi << std::endl;
252
253 for (G4int iTheta=0; iTheta<fDresTheta; iTheta++) {
254 for (G4int iPhi=0; iPhi<fDresPhi; iPhi++) {
255 os << fN_map[pol][iTheta][iPhi].x()
256 << " " << fN_map[pol][iTheta][iPhi].y()
257 << " " << fN_map[pol][iTheta][iPhi].z()
258 << std::endl;
259 }
260 }
261}
double z() const
double x() const
double y() const
const char * name(G4int ptype)

Referenced by Dump().

◆ DumpMap()

void G4LatticeLogical::DumpMap ( std::ostream &  os,
G4int  pol,
const G4String name 
) const

Definition at line 236 of file G4LatticeLogical.cc.

237 {
238 os << "VG " << name << " " << (pol==0?"L":pol==1?"FT":pol==2?"ST":"??")
239 << " " << fVresTheta << " " << fVresPhi << std::endl;
240
241 for (G4int iTheta=0; iTheta<fVresTheta; iTheta++) {
242 for (G4int iPhi=0; iPhi<fVresPhi; iPhi++) {
243 os << fMap[pol][iTheta][iPhi] << std::endl;
244 }
245 }
246}

Referenced by Dump().

◆ GetAnhDecConstant()

G4double G4LatticeLogical::GetAnhDecConstant ( ) const
inline

Definition at line 79 of file G4LatticeLogical.hh.

79{ return fA; }

Referenced by G4LatticePhysical::GetAnhDecConstant().

◆ GetBeta()

G4double G4LatticeLogical::GetBeta ( ) const
inline

Definition at line 74 of file G4LatticeLogical.hh.

74{ return fBeta; }

Referenced by G4LatticePhysical::GetBeta().

◆ GetFTDOS()

G4double G4LatticeLogical::GetFTDOS ( ) const
inline

Definition at line 82 of file G4LatticeLogical.hh.

82{ return fFTDOS; }

Referenced by G4LatticePhysical::GetFTDOS().

◆ GetGamma()

G4double G4LatticeLogical::GetGamma ( ) const
inline

Definition at line 75 of file G4LatticeLogical.hh.

75{ return fGamma; }

Referenced by G4LatticePhysical::GetGamma().

◆ GetLambda()

G4double G4LatticeLogical::GetLambda ( ) const
inline

Definition at line 76 of file G4LatticeLogical.hh.

76{ return fLambda; }

Referenced by G4LatticePhysical::GetLambda().

◆ GetLDOS()

G4double G4LatticeLogical::GetLDOS ( ) const
inline

Definition at line 80 of file G4LatticeLogical.hh.

80{ return fLDOS; }

Referenced by G4LatticePhysical::GetLDOS().

◆ GetMu()

G4double G4LatticeLogical::GetMu ( ) const
inline

Definition at line 77 of file G4LatticeLogical.hh.

77{ return fMu; }

Referenced by G4LatticePhysical::GetMu().

◆ GetScatteringConstant()

G4double G4LatticeLogical::GetScatteringConstant ( ) const
inline

Definition at line 78 of file G4LatticeLogical.hh.

78{ return fB; }

Referenced by G4LatticePhysical::GetScatteringConstant().

◆ GetSTDOS()

G4double G4LatticeLogical::GetSTDOS ( ) const
inline

Definition at line 81 of file G4LatticeLogical.hh.

81{ return fSTDOS; }

Referenced by G4LatticePhysical::GetSTDOS().

◆ Load_NMap()

G4bool G4LatticeLogical::Load_NMap ( G4int  tRes,
G4int  pRes,
G4int  polarizationState,
G4String  map 
)

Definition at line 101 of file G4LatticeLogical.cc.

102 {
103 if (tRes>MAXRES || pRes>MAXRES) {
104 G4cerr << "G4LatticeLogical::LoadMap exceeds maximum resolution of "
105 << MAXRES << " by " << MAXRES << ". terminating." << G4endl;
106 return false; //terminate if resolution out of bounds.
107 }
108
109 std::ifstream fMapFile(map.data());
110 if(!fMapFile.is_open())
111 {
112 return false;
113 }
114
115 G4double x,y,z; // Buffers to read coordinates from file
116 G4ThreeVector dir;
117 for (G4int theta = 0; theta<tRes; theta++) {
118 for (G4int phi = 0; phi<pRes; phi++) {
119 fMapFile >> x >> y >> z;
120 dir.set(x,y,z);
121 fN_map[polarizationState][theta][phi] = dir.unit(); // Enforce unity
122 }
123 }
124
125 if(verboseLevel != 0)
126 {
127 G4cout << "\nG4LatticeLogical::Load_NMap(" << map << ") successful"
128 << " (Vdir " << tRes << " x " << pRes << " for polarization "
129 << polarizationState << ")." << G4endl;
130 }
131
132 fDresTheta=tRes; //store map dimensions
133 fDresPhi=pRes;
134 return true;
135}
double G4double
Definition: G4Types.hh:83
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
Hep3Vector unit() const

Referenced by G4LatticeReader::ProcessNMap().

◆ LoadMap()

G4bool G4LatticeLogical::LoadMap ( G4int  tRes,
G4int  pRes,
G4int  polarizationState,
G4String  map 
)

Definition at line 61 of file G4LatticeLogical.cc.

62 {
63 if (tRes>MAXRES || pRes>MAXRES) {
64 G4cerr << "G4LatticeLogical::LoadMap exceeds maximum resolution of "
65 << MAXRES << " by " << MAXRES << ". terminating." << G4endl;
66 return false; //terminate if resolution out of bounds.
67 }
68
69 std::ifstream fMapFile(map.data());
70 if(!fMapFile.is_open())
71 {
72 return false;
73 }
74
75 G4double vgrp = 0.;
76 for (G4int theta = 0; theta<tRes; theta++) {
77 for (G4int phi = 0; phi<pRes; phi++) {
78 fMapFile >> vgrp;
79 fMap[polarizationState][theta][phi] = vgrp * (m/s);
80 }
81 }
82
83 if(verboseLevel != 0)
84 {
85 G4cout << "\nG4LatticeLogical::LoadMap(" << map << ") successful"
86 << " (Vg scalars " << tRes << " x " << pRes << " for polarization "
87 << polarizationState << ")." << G4endl;
88 }
89
90 fVresTheta=tRes; //store map dimensions
91 fVresPhi=pRes;
92 return true;
93}

Referenced by G4LatticeReader::ProcessMap().

◆ MapKtoV()

G4double G4LatticeLogical::MapKtoV ( G4int  polarizationState,
const G4ThreeVector k 
) const
virtual

Definition at line 143 of file G4LatticeLogical.cc.

144 {
145 G4double theta, phi, tRes, pRes;
146
147 tRes=pi/fVresTheta;
148 pRes=twopi/fVresPhi;
149
150 theta=k.getTheta();
151 phi=k.getPhi();
152
153 if(phi < 0)
154 {
155 phi = phi + twopi;
156 }
157 if(theta > pi)
158 {
159 theta = theta - pi;
160 }
161
162 G4double Vg = fMap[polarizationState][int(theta/tRes)][int(phi/pRes)];
163
164 if(Vg == 0){
165 G4cout<<"\nFound v=0 for polarization "<<polarizationState
166 <<" theta "<<theta<<" phi "<<phi<< " translating to map coords "
167 <<"theta "<< int(theta/tRes) << " phi " << int(phi/pRes)<<G4endl;
168 }
169
170 if (verboseLevel>1) {
171 G4cout << "G4LatticeLogical::MapKtoV theta,phi=" << theta << " " << phi
172 << " : ith,iph " << int(theta/tRes) << " " << int(phi/pRes)
173 << " : V " << Vg << G4endl;
174 }
175
176 return Vg;
177}
double getTheta() const
double getPhi() const
const G4double pi

Referenced by G4LatticePhysical::MapKtoV().

◆ MapKtoVDir()

G4ThreeVector G4LatticeLogical::MapKtoVDir ( G4int  polarizationState,
const G4ThreeVector k 
) const
virtual

Definition at line 185 of file G4LatticeLogical.cc.

186 {
187 G4double theta, phi, tRes, pRes;
188
189 tRes=pi/(fDresTheta-1);//The summant "-1" is required:index=[0:array length-1]
190 pRes=2*pi/(fDresPhi-1);
191
192 theta=k.getTheta();
193 phi=k.getPhi();
194
195 if(theta > pi)
196 {
197 theta = theta - pi;
198 }
199 //phi=[0 to 2 pi] in accordance with DMC //if(phi>pi/2) phi=phi-pi/2;
200 if(phi < 0)
201 {
202 phi = phi + 2 * pi;
203 }
204
205 G4int iTheta = int(theta/tRes+0.5);
206 G4int iPhi = int(phi/pRes+0.5);
207
208 if (verboseLevel>1) {
209 G4cout << "G4LatticeLogical::MapKtoVDir theta,phi=" << theta << " " << phi
210 << " : ith,iph " << iTheta << " " << iPhi
211 << " : dir " << fN_map[polarizationState][iTheta][iPhi] << G4endl;
212 }
213
214 return fN_map[polarizationState][iTheta][iPhi];
215}

Referenced by G4LatticePhysical::MapKtoVDir().

◆ SetAnhDecConstant()

void G4LatticeLogical::SetAnhDecConstant ( G4double  a)
inline

Definition at line 69 of file G4LatticeLogical.hh.

69{ fA=a; }

Referenced by G4LatticeReader::ProcessValue().

◆ SetDynamicalConstants()

void G4LatticeLogical::SetDynamicalConstants ( G4double  Beta,
G4double  Gamma,
G4double  Lambda,
G4double  Mu 
)
inline

Definition at line 63 of file G4LatticeLogical.hh.

64 {
65 fBeta=Beta; fGamma=Gamma; fLambda=Lambda; fMu=Mu;
66 }

Referenced by G4LatticeReader::ProcessConstants().

◆ SetFTDOS()

void G4LatticeLogical::SetFTDOS ( G4double  FTDOS)
inline

Definition at line 72 of file G4LatticeLogical.hh.

72{ fFTDOS=FTDOS; }

Referenced by G4LatticeReader::ProcessValue().

◆ SetLDOS()

void G4LatticeLogical::SetLDOS ( G4double  LDOS)
inline

Definition at line 70 of file G4LatticeLogical.hh.

70{ fLDOS=LDOS; }

Referenced by G4LatticeReader::ProcessValue().

◆ SetScatteringConstant()

void G4LatticeLogical::SetScatteringConstant ( G4double  b)
inline

Definition at line 68 of file G4LatticeLogical.hh.

68{ fB=b; }

Referenced by G4LatticeReader::ProcessValue().

◆ SetSTDOS()

void G4LatticeLogical::SetSTDOS ( G4double  STDOS)
inline

Definition at line 71 of file G4LatticeLogical.hh.

71{ fSTDOS=STDOS; }

Referenced by G4LatticeReader::ProcessValue().

◆ SetVerboseLevel()

void G4LatticeLogical::SetVerboseLevel ( G4int  vb)
inline

Definition at line 46 of file G4LatticeLogical.hh.

46{ verboseLevel = vb; }

The documentation for this class was generated from the following files: