41 std::vector<G4LogicalVolume*> G4LogicalCrystalVolume::fLCVvec;
51 :
G4LogicalVolume(pSolid,pMaterial,name,pFieldMgr,pSDetector,pULimits,optimise),
52 hMiller(1), kMiller(0), lMiller(0), fRot(0), verboseLevel(0)
55 fLCVvec.push_back(
this);
62 fLCVvec.erase( std::remove(fLCVvec.begin(),fLCVvec.end(), this ),
70 return std::find(fLCVvec.begin(), fLCVvec.end(), aLV) != fLCVvec.end();
78 ->RetrieveExtension(
"crystal"));
99 G4cout <<
"G4LatticePhysical::SetMillerOrientation(" << h <<
" "
110 if (verboseLevel>1)
G4cout <<
" norm = " << norm <<
G4endl;
117 if (verboseLevel>1)
G4cout <<
" fOrient = " << fOrient <<
G4endl;
G4CrystalUnitCell * GetUnitCell() const
G4Material * GetMaterial() const
const G4ThreeVector & GetBasis(G4int idx) const
HepRotation & rotateY(double delta)
const G4CrystalExtension * GetCrystal() const
HepRotation inverse() const
~G4LogicalCrystalVolume()
static DLL_API const HepRotation IDENTITY
G4GLOB_DLL std::ostream G4cout
Hep3Vector & transform(const HepRotation &)
void SetMillerOrientation(G4int h, G4int k, G4int l, G4double rot=0.)
const G4ThreeVector & RotateToSolid(G4ThreeVector &dir) const
static constexpr double deg
const G4ThreeVector & RotateToLattice(G4ThreeVector &dir) const
HepRotation & rotateZ(double delta)
static G4bool IsLattice(G4LogicalVolume *aLV)
G4LogicalCrystalVolume(G4VSolid *pSolid, G4ExtendedMaterial *pMaterial, const G4String &name, G4FieldManager *pFieldMgr=0, G4VSensitiveDetector *pSDetector=0, G4UserLimits *pULimits=0, G4bool optimise=true, G4int h=0, G4int k=0, G4int l=0, G4double rot=0.)
const G4ThreeVector & GetBasis(G4int i) const