51 for (
const auto& anAtomPos :
GetAtomBase(anElement)->GetPos()) {
52 G4double aDouble = h * anAtomPos.x() + k * anAtomPos.y() + l * anAtomPos.z();
53 GFS +=
G4complex(std::cos(CLHEP::twopi * aDouble), std::sin(CLHEP::twopi * aDouble));
56 SF +=
G4complex(AFF * GFS.real(), AFF * GFS.imag());
69 for (
const auto& anAtomPos :
GetAtomBase(anElement)->GetPos()) {
70 G4double aDouble = h * anAtomPos.x() + k * anAtomPos.y() + l * anAtomPos.z();
71 GFS +=
G4complex(std::cos(CLHEP::twopi * aDouble), std::sin(CLHEP::twopi * aDouble));
81 for (
size_t i = 0; i < 6; ++i) {
82 for (
size_t j = 0; j < 6; ++j) {
92 if (p > 0 && p < 7 && q > 0 && q < 7) {
101 if ((theCrystalAtomBaseMap.count(anElement) < 1)) {
102 G4String astring =
"Atom base for element " + anElement->
GetName() +
" is not registered.";
107 return theCrystalAtomBaseMap[anElement];
114 std::vector<G4ThreeVector> pos;
115 for (
auto& asinglepos :
GetAtomBase(anEl)->GetPos()) {
118 vecout.insert(std::end(vecout), std::begin(pos), std::end(pos));
127 std::vector<G4ThreeVector> pos;
132 vecout.insert(std::end(vecout), std::begin(pos), std::end(pos));
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::complex< G4double > G4complex
void SetElReduced(const ReducedElasticity &mat)
G4complex ComputeStructureFactorGeometrical(G4int h, G4int k, G4int l)
G4CrystalExtension(G4Material *, const G4String &name="crystal")
G4CrystalAtomBase * GetAtomBase(const G4Element *anElement)
void AddAtomBase(const G4Element *anElement, G4CrystalAtomBase *aBase)
G4complex ComputeStructureFactor(G4double kScatteringVector, G4int h, G4int k, G4int l)
G4bool GetAtomPos(const G4Element *anEl, std::vector< G4ThreeVector > &vecout)
ReducedElasticity fElReduced
G4double[6][6] ReducedElasticity
void SetCpq(G4int p, G4int q, G4double value)
G4bool FillAtomicPos(G4ThreeVector &pos, std::vector< G4ThreeVector > &vecout)
const G4String & GetName() const
const G4ElementVector * GetElementVector() const