File indexing completed on 2025-01-18 09:58:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #ifndef G4LatticePhysical_h
0033 #define G4LatticePhysical_h 1
0034
0035 #include "G4LatticeLogical.hh"
0036 #include "G4RotationMatrix.hh"
0037 #include "G4ThreeVector.hh"
0038
0039 class G4LatticePhysical
0040 {
0041 public:
0042 G4LatticePhysical(const G4LatticeLogical* Lat = nullptr,
0043 const G4RotationMatrix* Rot = nullptr);
0044 virtual ~G4LatticePhysical() = default;
0045
0046 void SetVerboseLevel(G4int vb) { verboseLevel = vb; }
0047
0048
0049 G4double MapKtoV(G4int, G4ThreeVector) const;
0050 G4ThreeVector MapKtoVDir(G4int, G4ThreeVector) const;
0051
0052 void SetLatticeLogical(const G4LatticeLogical* Lat) { fLattice = Lat; }
0053 void SetPhysicalOrientation(const G4RotationMatrix* Rot);
0054 void SetLatticeOrientation(G4double, G4double);
0055 void SetMillerOrientation(G4int, G4int, G4int);
0056
0057 public:
0058 const G4LatticeLogical* GetLattice() const { return fLattice; }
0059
0060 G4double GetScatteringConstant() const { return fLattice->GetScatteringConstant(); }
0061 G4double GetAnhDecConstant() const { return fLattice->GetAnhDecConstant(); }
0062 G4double GetLDOS() const { return fLattice->GetLDOS(); }
0063 G4double GetSTDOS() const { return fLattice->GetSTDOS(); }
0064 G4double GetFTDOS() const { return fLattice->GetFTDOS(); }
0065 G4double GetBeta() const { return fLattice->GetBeta(); }
0066 G4double GetGamma() const { return fLattice->GetGamma(); }
0067 G4double GetLambda() const { return fLattice->GetLambda(); }
0068 G4double GetMu() const { return fLattice->GetMu(); }
0069
0070
0071 G4ThreeVector RotateToGlobal(const G4ThreeVector& dir) const;
0072 G4ThreeVector RotateToLocal(const G4ThreeVector& dir) const;
0073
0074 private:
0075 G4int verboseLevel{0};
0076
0077 G4double fTheta{0}, fPhi{0};
0078 const G4LatticeLogical* fLattice;
0079
0080 G4RotationMatrix fLocalToGlobal;
0081 G4RotationMatrix fGlobalToLocal;
0082 };
0083
0084 #endif