Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
XPhysicalLattice Class Reference

#include <XPhysicalLattice.hh>

Collaboration diagram for XPhysicalLattice:

Public Member Functions

void SetDynamicalConstants (double, double, double, double)
 
void SetScatteringConstant (G4double)
 
void SetAnhDecConstant (G4double)
 
void SetLDOS (double)
 
void SetSTDOS (double)
 
void SetFTDOS (double)
 
double GetBeta ()
 
double GetGamma ()
 
double GetLambda ()
 
double GetMu ()
 
G4double GetScatteringConstant ()
 
G4double GetAnhDecConstant ()
 
double GetLDOS ()
 
double GetSTDOS ()
 
double GetFTDOS ()
 
 XPhysicalLattice ()
 
 XPhysicalLattice (G4VPhysicalVolume *, XLogicalLattice *)
 
 ~XPhysicalLattice ()
 
double MapKtoV (int, G4ThreeVector)
 
G4ThreeVector MapKtoVDir (int, G4ThreeVector)
 
G4VPhysicalVolumeGetVolume ()
 
void SetPhysicalVolume (G4VPhysicalVolume *)
 
void SetXLogicalLattice (XLogicalLattice *)
 
void SetLatticeOrientation (G4double, G4double)
 
void SetLatticeOrientation (G4double, G4double, G4double)
 
void SetMillerOrientation (int, int, int)
 
void SetUnitCell (XUnitCell *)
 
G4ThreeVector ProjectMomentumVectorFromWorldToLattice (G4ThreeVector &, G4ThreeVector &)
 
G4ThreeVector ProjectMomentumVectorFromLatticeToWorld (G4ThreeVector &, G4ThreeVector &)
 
G4ThreeVector GetLatticeDirection (G4ThreeVector &)
 
XUnitCellGetXUnitCell ()
 
XLogicalLatticeGetLogicalLattice ()
 
G4int GetMiller (G4int)
 
G4ThreeVector GetLatticeAngles ()
 
G4ThreeVector GetCurvatureRadius ()
 
void SetCurvatureRadius (G4ThreeVector)
 
G4ThreeVector ComputeBendingAngle (G4ThreeVector &)
 
G4bool IsBent ()
 
G4double ComputeInterplanarPeriod ()
 
void SetThermalVibrationAmplitude (G4double)
 
G4double GetThermalVibrationAmplitude ()
 

Public Attributes

G4AffineTransform fLocalToGlobal
 
G4AffineTransform fGlobalToLocal
 

Detailed Description

Definition at line 40 of file XPhysicalLattice.hh.

Constructor & Destructor Documentation

XPhysicalLattice::XPhysicalLattice ( )

Definition at line 38 of file XPhysicalLattice.cc.

38  {
39  fLattice=NULL;
40  fVolume=NULL;
41  fTheta=0.;
42  fPhi=0.;
43  fOmega=0.;
44 
45 
46  fCurvatureRadius = G4ThreeVector(0.,0.,0.); // if cr = 0 == no bending
47  fThermalVibrationAmplitude = 0.1 * angstrom; // no physical meaning
48  fMillerOrientation[0] = 2;
49  fMillerOrientation[1] = 2;
50  fMillerOrientation[2] = 0;
51 }
CLHEP::Hep3Vector G4ThreeVector
static constexpr double angstrom
Definition: G4SIunits.hh:102
XPhysicalLattice::XPhysicalLattice ( G4VPhysicalVolume Vol,
XLogicalLattice Lat 
)

Definition at line 55 of file XPhysicalLattice.cc.

56  {
57  fLattice=Lat;
58  fVolume=Vol;
59  fA=fLattice->GetAnhDecConstant();
60  fB=fLattice->GetScatteringConstant();
61  fDosL=fLattice->GetLDOS();
62  fDosST=fLattice->GetSTDOS();
63  fDosFT=fLattice->GetFTDOS();
64  fBeta=fLattice->GetBeta();
65  fGamma=fLattice->GetGamma();
66  fLambda=fLattice->GetLambda();
67  fMu=fLattice->GetMu();
68 
69  G4RotationMatrix *rot = fVolume->GetObjectRotation();
70 
73 }
G4AffineTransform fLocalToGlobal
G4AffineTransform & Invert()
G4double GetAnhDecConstant()
G4RotationMatrix * GetObjectRotation() const
G4AffineTransform fGlobalToLocal
G4double GetScatteringConstant()

Here is the call graph for this function:

XPhysicalLattice::~XPhysicalLattice ( )

Definition at line 77 of file XPhysicalLattice.cc.

77 {;}

Member Function Documentation

G4ThreeVector XPhysicalLattice::ComputeBendingAngle ( G4ThreeVector vPosition)

Definition at line 379 of file XPhysicalLattice.cc.

379  {
380 
381  G4double vAngleX = 0.;
382  G4double vAngleY = 0.;
383 
384  if(GetCurvatureRadius().x() != 0){
385  vAngleX = vPosition.phi();
386  }
387 
388  return G4ThreeVector(vAngleX,0.,vAngleY);
389 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector GetCurvatureRadius()
tuple x
Definition: test.py:50
double phi() const
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double XPhysicalLattice::ComputeInterplanarPeriod ( )

Definition at line 413 of file XPhysicalLattice.cc.

413  {
414  G4double vInterplanarPeriod =
416  GetMiller(1),
417  GetMiller(2));
418  return vInterplanarPeriod;
419 }
G4int GetMiller(G4int)
XUnitCell * GetXUnitCell()
G4double ComputeDirectPeriod(G4int, G4int, G4int)
Definition: XUnitCell.cc:222
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double XPhysicalLattice::GetAnhDecConstant ( )

Definition at line 165 of file XPhysicalLattice.cc.

166 {
167  return fA;
168 }
double XPhysicalLattice::GetBeta ( )

Definition at line 129 of file XPhysicalLattice.cc.

129  {
130  return fBeta;
131 }
G4ThreeVector XPhysicalLattice::GetCurvatureRadius ( )

Definition at line 362 of file XPhysicalLattice.cc.

362  {
363  return fCurvatureRadius;
364 }

Here is the caller graph for this function:

double XPhysicalLattice::GetFTDOS ( )

Definition at line 187 of file XPhysicalLattice.cc.

188 {
189  return fDosFT;
190 }
double XPhysicalLattice::GetGamma ( )

Definition at line 136 of file XPhysicalLattice.cc.

136  {
137  return fGamma;
138 }
double XPhysicalLattice::GetLambda ( )

Definition at line 142 of file XPhysicalLattice.cc.

142  {
143  return fLambda;
144 }
G4ThreeVector XPhysicalLattice::GetLatticeAngles ( )

Definition at line 407 of file XPhysicalLattice.cc.

407  {
408  return G4ThreeVector(fPhi,fTheta,fOmega);
409 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector XPhysicalLattice::GetLatticeDirection ( G4ThreeVector vPosition)

Definition at line 336 of file XPhysicalLattice.cc.

336  {
337  G4ThreeVector dir = G4ThreeVector(0.,0.,1.);
339  vPosition);
340 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector ProjectMomentumVectorFromLatticeToWorld(G4ThreeVector &, G4ThreeVector &)

Here is the call graph for this function:

double XPhysicalLattice::GetLDOS ( )

Definition at line 173 of file XPhysicalLattice.cc.

173  {
174  return fDosL;
175 }
XLogicalLattice * XPhysicalLattice::GetLogicalLattice ( )

Definition at line 393 of file XPhysicalLattice.cc.

393  {
394  return fLattice;
395 }

Here is the caller graph for this function:

G4int XPhysicalLattice::GetMiller ( G4int  vIndex)

Definition at line 399 of file XPhysicalLattice.cc.

399  {
400  if(vIndex<3 && vIndex>=0)
401  return fMillerOrientation[vIndex];
402  else return -1;
403 }

Here is the caller graph for this function:

double XPhysicalLattice::GetMu ( )

Definition at line 149 of file XPhysicalLattice.cc.

150 {
151  return fMu;
152 }
G4double XPhysicalLattice::GetScatteringConstant ( )

Definition at line 157 of file XPhysicalLattice.cc.

158 {
159  return fB;
160 }
double XPhysicalLattice::GetSTDOS ( )

Definition at line 180 of file XPhysicalLattice.cc.

180  {
181  return fDosST;
182 }
G4double XPhysicalLattice::GetThermalVibrationAmplitude ( )

Definition at line 294 of file XPhysicalLattice.cc.

294  {
295  return fThermalVibrationAmplitude;
296 }

Here is the caller graph for this function:

G4VPhysicalVolume * XPhysicalLattice::GetVolume ( )

Definition at line 231 of file XPhysicalLattice.cc.

231  {
232  return fVolume;
233 }

Here is the caller graph for this function:

XUnitCell * XPhysicalLattice::GetXUnitCell ( )

Definition at line 350 of file XPhysicalLattice.cc.

350  {
351  return fUnitCell;
352 }

Here is the caller graph for this function:

G4bool XPhysicalLattice::IsBent ( )

Definition at line 368 of file XPhysicalLattice.cc.

368  {
369  if(fCurvatureRadius.x() != 0.) {
370  return true;
371  }
372  else {
373  return false;
374  }
375 }
double x() const

Here is the call graph for this function:

Here is the caller graph for this function:

double XPhysicalLattice::MapKtoV ( int  polarizationState,
G4ThreeVector  k 
)

Definition at line 199 of file XPhysicalLattice.cc.

199  {
200  double groupVelocity;
201 
202  k.rotate(G4ThreeVector(0,1,0), fTheta).rotate(G4ThreeVector(0,0,1), fPhi);
203  groupVelocity = fLattice->MapKtoV(polarizationState, k);
204  k.rotate(G4ThreeVector(0,0,1), -fPhi).rotate(G4ThreeVector(0,1,0), -fTheta);
205 
206  return groupVelocity;
207 }
CLHEP::Hep3Vector G4ThreeVector
double MapKtoV(int, G4ThreeVector)
Hep3Vector & rotate(double, const Hep3Vector &)
Definition: ThreeVectorR.cc:28

Here is the call graph for this function:

Here is the caller graph for this function:

G4ThreeVector XPhysicalLattice::MapKtoVDir ( int  polarizationState,
G4ThreeVector  k 
)

Definition at line 216 of file XPhysicalLattice.cc.

217  {
218 
219  G4ThreeVector GroupVelocity;
220 
221  k=k.rotate(G4ThreeVector(0,1,0), fTheta).rotate(G4ThreeVector(0,0,1), fPhi);
222  GroupVelocity = fLattice->MapKtoVDir(polarizationState, k);
223 
224  return GroupVelocity.rotate(G4ThreeVector(0,0,1), -fPhi)
225  .rotate(G4ThreeVector(0,1,0), -fTheta).unit();
226 }
CLHEP::Hep3Vector G4ThreeVector
G4ThreeVector MapKtoVDir(int, G4ThreeVector)
Hep3Vector unit() const
Hep3Vector & rotate(double, const Hep3Vector &)
Definition: ThreeVectorR.cc:28

Here is the call graph for this function:

Here is the caller graph for this function:

G4ThreeVector XPhysicalLattice::ProjectMomentumVectorFromLatticeToWorld ( G4ThreeVector vMomentum,
G4ThreeVector vPosition 
)

Definition at line 319 of file XPhysicalLattice.cc.

320  {
321  vMomentum.rotate(G4ThreeVector(0.,0.,1.), -fPhi)
322  .rotate(G4ThreeVector(0.,1.,0.), -fTheta)
323  .rotate(G4ThreeVector(1.,0.,0.), fOmega);
324 
325  if(IsBent() ){
326  G4ThreeVector vBendingAngle = ComputeBendingAngle(vPosition);
327  vMomentum.rotate(G4ThreeVector(0.,1.,0.), -vBendingAngle.x())
328  .rotate(G4ThreeVector(1.,0.,0.), -vBendingAngle.z());
329  }
330 
331  return vMomentum;
332 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
G4ThreeVector ComputeBendingAngle(G4ThreeVector &)
double z() const
Hep3Vector & rotate(double, const Hep3Vector &)
Definition: ThreeVectorR.cc:28

Here is the call graph for this function:

Here is the caller graph for this function:

G4ThreeVector XPhysicalLattice::ProjectMomentumVectorFromWorldToLattice ( G4ThreeVector vMomentum,
G4ThreeVector vPosition 
)

Definition at line 301 of file XPhysicalLattice.cc.

302  {
303  vMomentum.rotate(G4ThreeVector(1.,0.,0.),fOmega)
304  .rotate(G4ThreeVector(0.,1.,0.), fTheta)
305  .rotate(G4ThreeVector(0.,0.,1.), fPhi);
306 
307  if(IsBent() ){
308  G4ThreeVector vBendingAngle = ComputeBendingAngle(vPosition);
309  vMomentum.rotate(G4ThreeVector(1.,0.,0.), vBendingAngle.z())
310  .rotate(G4ThreeVector(0.,1.,0.),vBendingAngle.x());
311  }
312 
313  return vMomentum;
314 }
CLHEP::Hep3Vector G4ThreeVector
double x() const
G4ThreeVector ComputeBendingAngle(G4ThreeVector &)
double z() const
Hep3Vector & rotate(double, const Hep3Vector &)
Definition: ThreeVectorR.cc:28

Here is the call graph for this function:

void XPhysicalLattice::SetAnhDecConstant ( G4double  b)

Definition at line 102 of file XPhysicalLattice.cc.

102  {
103  fB=b;
104 }
tuple b
Definition: test.py:12
void XPhysicalLattice::SetCurvatureRadius ( G4ThreeVector  cr)

Definition at line 356 of file XPhysicalLattice.cc.

356  {
357  fCurvatureRadius = cr;
358 }
void XPhysicalLattice::SetDynamicalConstants ( double  Beta,
double  Gamma,
double  Lambda,
double  Mu 
)

Definition at line 81 of file XPhysicalLattice.cc.

85 {
86  fBeta=Beta;
87  fGamma=Gamma;
88  fLambda=Lambda;
89  fMu=Mu;
90 }
void XPhysicalLattice::SetFTDOS ( double  FTDOS)

Definition at line 122 of file XPhysicalLattice.cc.

122  {
123  fDosFT = FTDOS;
124 }
void XPhysicalLattice::SetLatticeOrientation ( G4double  t_rot,
G4double  p_rot 
)

Definition at line 245 of file XPhysicalLattice.cc.

245  {
246  fTheta=t_rot;
247  fPhi= p_rot;
248 }
void XPhysicalLattice::SetLatticeOrientation ( G4double  t_rot,
G4double  o_rot,
G4double  p_rot 
)

Definition at line 252 of file XPhysicalLattice.cc.

254  {
255  fTheta = t_rot;
256  fOmega = o_rot;
257  fPhi = p_rot;
258 }
void XPhysicalLattice::SetLDOS ( double  LDOS)

Definition at line 109 of file XPhysicalLattice.cc.

109  {
110  fDosL=LDOS;
111 }
void XPhysicalLattice::SetMillerOrientation ( int  l,
int  k,
int  n 
)

Definition at line 262 of file XPhysicalLattice.cc.

262  {
263  //fTheta=pi/2-std::atan2(n+0.000001,l+0.000001)*rad;
264  //fPhi=pi/2-std::atan2(l+0.000001,k+0.000001)*rad;
265 
266  // // // added for channeling // // //
267  fMillerOrientation[0]=l;
268  fMillerOrientation[1]=k;
269  fMillerOrientation[2]=n;
270  // // // // // // // // // // // // //
271 }
const G4int n
void XPhysicalLattice::SetPhysicalVolume ( G4VPhysicalVolume Vol)

Definition at line 238 of file XPhysicalLattice.cc.

238  {
239  fVolume=Vol;
240 }
void XPhysicalLattice::SetScatteringConstant ( G4double  a)

Definition at line 95 of file XPhysicalLattice.cc.

95  {
96  fA=a;
97 }
std::vector< ExP01TrackerHit * > a
Definition: ExP01Classes.hh:33
void XPhysicalLattice::SetSTDOS ( double  STDOS)

Definition at line 115 of file XPhysicalLattice.cc.

116 {
117  fDosST = STDOS;
118 }
void XPhysicalLattice::SetThermalVibrationAmplitude ( G4double  vThermalVibrationAmplitude)

Definition at line 288 of file XPhysicalLattice.cc.

288  {
289  fThermalVibrationAmplitude = vThermalVibrationAmplitude;
290 }
void XPhysicalLattice::SetUnitCell ( XUnitCell cell)

Definition at line 344 of file XPhysicalLattice.cc.

344  {
345  fUnitCell = cell;
346 }
void XPhysicalLattice::SetXLogicalLattice ( XLogicalLattice Lat)

Definition at line 276 of file XPhysicalLattice.cc.

276  {
277  fLattice=Lat;
278 }

Member Data Documentation

G4AffineTransform XPhysicalLattice::fGlobalToLocal

Definition at line 57 of file XPhysicalLattice.hh.

G4AffineTransform XPhysicalLattice::fLocalToGlobal

Definition at line 56 of file XPhysicalLattice.hh.


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