BALL  1.4.1
crystalInfo.h
Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 
00004 #ifndef BALL_XRAY_CRYSTALINFO_H
00005 #define BALL_XRAY_CRYSTALINFO_H
00006 
00007 #ifndef BALL_CONCEPT_PERSISTENTOBJECT_H
00008 #include <BALL/CONCEPT/persistentObject.h>
00009 #endif
00010 
00011 #ifndef BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H
00012 #include <BALL/STRUCTURE/geometricTransformations.h>
00013 #endif
00014 
00015 #ifndef BALL_DATATYPE_STRING_H
00016 #include <BALL/DATATYPE/string.h>
00017 #endif
00018 
00019 #ifndef BALL_COMMON_EXCEPTION_H
00020 # include <BALL/COMMON/exception.h>
00021 #endif
00022 
00023 #ifndef BALL_CONCEPT_PERSISTENCEMANAGER_H
00024 # include <BALL/CONCEPT/persistenceManager.h>
00025 #endif
00026 
00027 
00028 #include <string>
00029 
00030 namespace BALL
00031 {
00036   class BALL_EXPORT CrystalInfo
00037     : public PersistentObject
00038   {
00039     public:
00040 
00044 
00047       struct BALL_EXPORT Option
00048       {
00051         static const char* SPACE_GROUP_FILE;
00052       };
00053       
00056       struct BALL_EXPORT Default
00057       {
00060         static const char* SPACE_GROUP_FILE;
00061       };
00062 
00064 
00067       //
00068       
00071       CrystalInfo();
00072 
00075       CrystalInfo(String group, Vector3 dim, Angle alpha, Angle beta, Angle gamma);
00076       
00079       CrystalInfo(const CrystalInfo& ci);
00080     
00081       BALL_CREATE(CrystalInfo)
00084       ~CrystalInfo();
00086   
00087       bool setSpaceGroup(const String& sg);
00088       const String& getSpaceGroup() const;
00089       
00090       void setCellDimensions(const Vector3& dim);
00091       
00092       void setCellEdgeLengthA(const float& a);
00093       const float& getCellEdgeLengthA() const;
00094       
00095       void setCellEdgeLengthB(const float& b);
00096       const float& getCellEdgeLengthB() const;
00097       
00098       void setCellEdgeLengthC(const float& c);
00099       const float& getCellEdgeLengthC() const;
00100       
00101       void setCellAngles(const Angle& alpha, const Angle& beta, const Angle& gamma);
00102       
00103       void setCellAngleAlpha(const Angle& alpha);
00104       const Angle& getCellAngleAlpha() const;
00105       
00106       void setCellAngleBeta(const Angle& beta);
00107       const Angle& getCellAngleBeta() const;
00108       
00109       void setCellAngleGamma(const Angle& gamma);
00110       const Angle& getCellAngleGamma() const;
00111 
00112       void setZScore(const int& zscore);
00113       const int& getZScore() const;
00114       
00115       Size getNumberOfSymOps() const ;
00116       const Matrix4x4& getSymOp(Position p) const;
00117 
00118       Size getNumberOfNCSSymOps() const;
00119 
00123       const Matrix4x4& getNCS(Position p) const;
00124       
00128       Matrix4x4& getNCS(Position p);
00129       
00133       bool isgivenNCS(Position p) const;
00134       
00138       bool insertNCS(Position p, Matrix4x4 ncsm, bool is_given = 0);
00139       
00140       void pushbackNCS(Matrix4x4 ncsm, bool is_given = 0);
00141       
00145       bool eraseNCS(Position p);
00146 
00147       const Matrix4x4& getCart2Frac() const;  
00148       const Matrix4x4& getFrac2Cart() const;  
00149 
00153 
00156       //void write(PersistenceManager& pm) const;
00157       void persistentWrite(PersistenceManager& pm, const char* name) const;
00158 
00161       //bool read(PersistenceManager& pm);
00162       void persistentRead(PersistenceManager& pm);
00163 
00165 
00166 
00167     protected:
00168 
00169       void calculateMatrices_();
00170       bool retrieveSymOps_(const String& sg);
00171 
00172       String space_group_;
00173       Vector3 cell_dimensions_;
00174       Angle alpha_, beta_, gamma_;
00175       int z_score_;
00176       String filename_;
00177       
00178       Matrix4x4 cart2frac_;
00179       Matrix4x4 frac2cart_;
00180 
00181       vector<Matrix4x4> ncs_symops_;
00182       vector<bool> ncs_isgiven_;
00183       vector<Matrix4x4> sg_symops_;
00184 
00185   };
00186 } // namespace BALL
00187 
00188 #endif // BALL_XRAY_CRYSTALINFO_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines