Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

Scatterer.h

00001 #ifndef _OBJCRYST_SCATTERER_H_
00002 #define _OBJCRYST_SCATTERER_H_
00003 
00004 #include "CrystVector/CrystVector.h"
00005 
00006 #include "ObjCryst/General.h"
00007 
00008 #include "ObjCryst/ScatteringPower.h"
00009 
00010 #include <string>
00011 
00012 namespace ObjCryst
00013 {
00014 extern const RefParType *gpRefParTypeScatt;
00015 extern const RefParType *gpRefParTypeScattTransl;
00016 extern const RefParType *gpRefParTypeScattOrient;
00017 extern const RefParType *gpRefParTypeScattConform;
00018 extern const RefParType *gpRefParTypeScattConformBondLength;
00019 extern const RefParType *gpRefParTypeScattConformBondAngle;
00020 extern const RefParType *gpRefParTypeScattConformDihedAngle;
00021 extern const RefParType *gpRefParTypeScattOccup;
00022 //######################################################################
00023 //
00024 //      SCATTERER
00040 //######################################################################
00041 
00042 class Scatterer:virtual public RefinableObj
00043 {
00044    public:
00046       Scatterer();
00048       Scatterer(const Scatterer &old);
00050       virtual ~Scatterer();
00053       virtual Scatterer* CreateCopy() const=0;
00054       virtual const string GetClassName() const;
00055             
00057       virtual int GetNbComponent() const=0;
00058       
00065       virtual const ScatteringComponentList& GetScatteringComponentList() const=0;
00074       virtual string GetComponentName(const int i) const=0;
00075 
00079       double GetX() const;
00083       double GetY() const;  
00087       double GetZ() const;
00088       
00097       double GetOccupancy() const ;
00098 
00102       virtual void SetX(const double x);
00106       virtual void SetY(const double y);  
00110       virtual void SetZ(const double z);
00119       virtual void SetOccupancy(const double occupancy) ;
00120       
00124       operator string()const;
00126       virtual void Print() const=0;
00127             
00131       virtual const string& GetColour()const;
00135       virtual const float* GetColourRGB()const;
00136       
00142       virtual ostream& POVRayDescription(ostream &os,
00143                                          const bool noSymmetrics=false)const=0;
00153       virtual void GLInitDisplayList(const bool noSymmetrics=false,
00154                                      const double xMin=-.1,const double xMax=1.1,
00155                                      const double yMin=-.1,const double yMax=1.1,
00156                                      const double zMin=-.1,const double zMax=1.1)const=0;
00158       const RefinableObjClock& GetClockScatterer()const;
00160       void SetCrystal(const Crystal&);
00162       const Crystal& GetCrystal()const;
00163    protected:
00178       virtual void Update() const=0;
00180       virtual void InitRefParList()=0;
00185       virtual void InitRGBColour();
00187       const RefinableObjClock& GetClockScattCompList()const;
00189       CrystVector_double mXYZ;
00190       
00195       double mOccupancy; 
00197       string mColourName;
00199       float mColourRGB[3];
00201       RefinableObjClock mClockScatterer;
00203       mutable RefinableObjClock mClockScattCompList;
00208       const Crystal *mpCryst;
00209       
00210    private:
00211    #ifdef __WX__CRYST__
00212    public:
00213       virtual WXCrystObjBasic* WXCreate(wxWindow*);
00214       friend class WXScatterer;
00215    #endif
00216 };
00217 
00219 extern ObjRegistry<Scatterer> gScattererRegistry;
00220 
00221 
00222 }//namespace
00223 
00224 #include "ObjCryst/Crystal.h"
00225 
00226 #endif //_OBJCRYST_SCATTERER_H_

Generated on Wed Nov 14 19:48:36 2001 for ObjCryst++ by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001