00001 #ifndef BALL_NMR_SHIFTMODEL1D_H
00002 #define BALL_NMR_SHIFTMODEL1D_H
00003
00004 #ifndef BALL_NMR_SHIFTMODULE_H
00005 # include <BALL/NMR/shiftModule.h>
00006 #endif
00007
00008 #ifndef BALL_NMR_SPECTRUM_H
00009 #include <BALL/NMR/spectrum.h>
00010 #endif
00011
00012
00013 namespace BALL
00014 {
00018 class BALL_EXPORT ShiftModel1D
00019 : public ShiftModule
00020 {
00021
00022 public:
00023 BALL_CREATE(ShiftModel1D)
00024
00025
00028
00029 enum SPECTRUM_TYPE{
00030 H = 1,
00031 N,
00032 C,
00033 H_ON_BACKBONE,
00034 N_BACKBONE,
00035 C_BACKBONE
00036 };
00037
00039
00042
00045 ShiftModel1D();
00046
00051 ShiftModel1D(const String& filename,SPECTRUM_TYPE st, bool compute_shifts=true);
00052
00057 ShiftModel1D(const String& filename,SPECTRUM_TYPE st, double origin, double dimension, double spacing, bool compute_shifts=true);
00058
00061 ShiftModel1D(const ShiftModel1D& model);
00062
00065 virtual ~ShiftModel1D();
00066
00069 void clear();
00070
00072
00075
00078 void setFilename(const String& filename)
00079 throw(Exception::FileNotFound);
00080
00083 const String& getFilename() const
00084 {
00085 return parameters_.getFilename();
00086 };
00087
00090 const Parameters& getParameters() const
00091 {
00092 return parameters_;
00093 };
00094
00097 const std::vector<Peak1D>& getPeaks() const
00098 {
00099 return peaks_;
00100 };
00101
00104 void setPeaks(std::vector<Peak1D> peaks)
00105 {
00106 peaks_ = peaks;
00107 };
00108
00109
00112 const double& getOrigin() const
00113 {
00114 return origin_;
00115 };
00116
00119 void setOrigin(const double& origin)
00120 {
00121 origin_ = origin;
00122 };
00123
00126 const double& getDimension() const
00127 {
00128 return dimension_;
00129 };
00130
00133 void setDimension( const double& dimension)
00134 {
00135 dimension_ = dimension;
00136 }
00137
00140 const double getSpacing() const
00141 {
00142 return spacing_;
00143 };
00144
00147 void setSystem( System* system)
00148 {
00149 system_ = system;
00150 };
00151
00154 const System* getSystem() const
00155 {
00156 return system_;
00157 };
00158
00159
00160 void operator >> (Spectrum1D& spectrum);
00161
00163
00166
00169 bool isValid() const;
00170
00172
00175
00178 bool start();
00179
00182 bool finish();
00183
00186 Processor::Result operator () (Composite& composite);
00188
00189 protected:
00190
00191
00192
00193
00194
00195
00196
00197 bool init_()
00198 throw(Exception::FileNotFound);
00199
00200
00201
00202 std::vector<Peak1D> peaks_;
00203
00204
00205
00206 double origin_;
00207
00208
00209
00210 double dimension_;
00211
00212
00213
00214 double spacing_;
00215
00216
00217
00218 SPECTRUM_TYPE type_;
00219
00220
00221
00222 Parameters parameters_;
00223
00224
00225
00226 System* system_;
00227
00228
00229
00230
00231 bool valid_;
00232
00234 bool compute_shifts_;
00235
00236 bool hasType_(Atom* a, SPECTRUM_TYPE type);
00237
00238 };
00239
00240 }
00241
00242 #endif // BALL_NMR_SHIFTMODEL1D_H