LowEnergyThetaBraggCorrectionReader.cpp

Go to the documentation of this file.
00001 // LowEnergyThetaBraggCorrectionReader.cpp: implementation of the LowEnergyThetaBraggCorrectionReader class.
00002 //
00004 
00005 #ifdef WIN32 
00006 #pragma warning(disable:4786)
00007 #endif
00008 #include "LowEnergyThetaBraggCorrectionReader.h"
00009 
00010 #include <stdlib.h>
00011 #include <stdio.h>
00012 using namespace std;
00013 
00014 
00015 namespace Interpolator
00016 {
00017 
00019 // Construction/Destruction
00022 LowEnergyThetaBraggCorrectionReader::LowEnergyThetaBraggCorrectionReader()
00023 {
00024 
00025 }
00027 LowEnergyThetaBraggCorrectionReader::~LowEnergyThetaBraggCorrectionReader()
00028 {
00029 
00030         if (_mEnergy)
00031         {
00032                 delete [] _mEnergy;
00033                 _mEnergy = 0;
00034         }
00035 
00036         if (_mThetaDiff)
00037         {
00038                 delete [] _mThetaDiff;
00039                 _mThetaDiff = 0;
00040         }
00041         if (_mFitDiff)
00042         {
00043                 delete [] _mFitDiff;
00044                 _mFitDiff = 0;
00045         }
00046         if (_mFWHMResolution)
00047         {
00048                 delete [] _mFWHMResolution;
00049                 _mFWHMResolution = 0;
00050         }
00051 
00052 }
00053 
00056 LowEnergyThetaBraggCorrectionReader::LowEnergyThetaBraggCorrectionReader(const std::string& sFileName) : FileReader(sFileName) 
00057 {
00058         Parse();
00059 }
00060 
00065 LowEnergyThetaBraggCorrectionReader::LowEnergyThetaBraggCorrectionReader(const std::string& sFileName,long lNbColumns,long lNbLines) : FileReader(sFileName,lNbColumns,lNbLines)
00066 {
00067         Parse();
00068 }
00069 
00075 void LowEnergyThetaBraggCorrectionReader::Parse() // throw (ParseException)
00076 {
00077 
00078 int iNbData = getNbData();
00079 if(Interpolator::_verb == true) cout << "NbData : " << iNbData << endl;
00080 
00081 int iNbVariables = getNbVariables();
00082 if(Interpolator::_verb == true) cout << "NbVariables : " << iNbVariables << endl;
00083 
00084 //Reading of the first line to extract the variables names
00085 std::string sColumnName;
00086  int i=0;
00087 
00088 for (i=0;i<iNbVariables;i++) 
00089 {
00090         sColumnName = extractString();
00091         if(Interpolator::_verb == true) cout << "Column " << i << " --> " << sColumnName << endl;
00092         
00093         switch (i) 
00094         {
00095         case 0 :
00096                 _sEnergyName            = sColumnName;
00097                 break;
00098         case 1 :
00099                 _sThetaDiffName         = sColumnName;
00100                 break;
00101         case 2 :
00102                 _sFitDiffName           = sColumnName;
00103                 break;
00104         case 3 :
00105                 _sFWHMResolutionName= sColumnName;
00106                 break;
00107         }
00108 }
00109 
00110 _mEnergy                        = new double[iNbData];
00111 _mThetaDiff                     = new double[iNbData];
00112 _mFitDiff                       = new double[iNbData];
00113 _mFWHMResolution        = new double[iNbData];
00114 double dValue;
00115 
00116 for (i=0;i<iNbData;i++) 
00117 {
00118         for (int j=0;j<iNbVariables;j++) 
00119         {
00120                 dValue = extractDouble();
00121                         
00122                 switch (j) 
00123                 {
00124                 case 0 :
00125                         _mEnergy[i]                     = dValue/1000.0; // On divise par 1000 car la table est fournie en eV
00126                         break;
00127                 case 1 :
00128                         _mThetaDiff[i]          = DegresToRadians(dValue);
00129                         break;
00130                 case 2 :
00131                         _mFitDiff[i]            = dValue;
00132                         break;
00133                 case 3 :
00134                         _mFWHMResolution[i]     = dValue;
00135                         break;
00136                 default://Trow a ParseException !!!!
00138                         break;
00139                 }
00140         }       
00141 }
00142 
00143 /*if(Interpolator::_verb == true) cout << "_mEnergy" <<endl;
00144 for (int k=0;k<iNbDatas;k++)
00145 {
00146         if(Interpolator::_verb == true) cout.precision(15);
00147         if(Interpolator::_verb == true) cout << k << " --> " << _mEnergy[k] << endl;
00148         
00149 }
00150 getchar();
00151 if(Interpolator::_verb == true) cout << "_mThetaDiff" <<endl;
00152 for (int l=0;l<iNbDatas;l++)
00153 { 
00154         if(Interpolator::_verb == true) cout.precision(15);
00155         if(Interpolator::_verb == true) cout << l << " --> " << (double)_mThetaDiff[l] << endl;
00156         
00157 }
00158 getchar();
00159 if(Interpolator::_verb == true) cout << "_mFitDiff" <<endl;
00160 for (int m=0;m<iNbDatas;m++)
00161 {
00162         if(Interpolator::_verb == true) cout.precision(15);
00163         if(Interpolator::_verb == true) cout << m << " --> " << _mFitDiff[m] << endl;
00164         
00165 }
00166 getchar();      
00167 if(Interpolator::_verb == true) cout << "_mFWHMResolution" <<endl;
00168 for (int n=0;n<iNbDatas;n++)
00169 {
00170         if(Interpolator::_verb == true) cout.precision(15);
00171         if(Interpolator::_verb == true) cout << n << " --> " << _mFWHMResolution[n] << endl;
00172         
00173 }
00174 
00175 getchar();
00176 */
00177 }
00178 
00181 double* LowEnergyThetaBraggCorrectionReader::getEnergy() const // throw (NullPointerException)
00182 {
00183         if (_mEnergy == 0) throw NullPointerException("_mEnergy","LowEnergyThetaBraggCorrectionReader::getEnergy()",__FILE__,__LINE__);
00184         return _mEnergy;
00185 }
00186 
00188 double* LowEnergyThetaBraggCorrectionReader::getThetaDiff() const // throw (NullPointerException)
00189 {
00190         if (_mThetaDiff == 0) throw NullPointerException("_mThetaDiff","LowEnergyThetaBraggCorrectionReader::getThetaDiff()",__FILE__,__LINE__);
00191         return _mThetaDiff;
00192 }
00193 
00195 double* LowEnergyThetaBraggCorrectionReader::getFitDiff() const // throw (NullPointerException)
00196 {
00197         if (_mFitDiff == 0) throw NullPointerException("_mFitDiff","LowEnergyThetaBraggCorrectionReader::getFitDiff()",__FILE__,__LINE__);
00198         return _mFitDiff;
00199 }
00200 
00202 double* LowEnergyThetaBraggCorrectionReader::getFWHMResolution() const // throw (NullPointerException)
00203 {
00204         if (_mFWHMResolution == 0) throw NullPointerException("_mFWHMResolution","LowEnergyThetaBraggCorrectionReader::getFWHMResolution()",__FILE__,__LINE__);
00205         return _mFWHMResolution;
00206 }
00207 
00208 
00212 double LowEnergyThetaBraggCorrectionReader::getValue(int iColumn, int iIndex) const // throw (IndexOutOfBoundException)
00213 {       
00214 
00215         if ( (iIndex<0) || (iIndex>=getNbData())) throw IndexOutOfBoundException("iIndex",iIndex,0,getNbData(),"LowEnergyThetaBraggCorrectionReader::getValue(int iColumn, int iIndex)",__FILE__,__LINE__);
00216         
00217         switch (iColumn) 
00218         {
00219         case 0 :
00220                 return _mEnergy[iIndex];
00221                 break;
00222         case 1 :
00223                 return _mThetaDiff[iIndex];
00224                 break;
00225         case 2 :
00226                 return _mFitDiff[iIndex];
00227                 break;
00228         case 3 :
00229                 return _mFWHMResolution[iIndex];
00230                 break;
00231         default:
00232                 throw IndexOutOfBoundException("iColumn",iColumn,0,getNbVariables(),"LowEnergyThetaBraggCorrectionReader::getValue(int iColumn, int iIndex)",__FILE__,__LINE__);
00233         }       
00234 }
00235 
00237 double LowEnergyThetaBraggCorrectionReader::getEnergyValue(int i) const
00238 {
00239         return getValue(0,i);
00240 }
00241 
00243 double LowEnergyThetaBraggCorrectionReader::getThetaDiffValue(int i) const
00244 {
00245         return getValue(1,i);
00246 }
00247 
00249 double LowEnergyThetaBraggCorrectionReader::getFitDiffValue(int i) const
00250 {
00251         return getValue(2,i);
00252 }
00253 
00255 double LowEnergyThetaBraggCorrectionReader::getFWHMResolutionValue(int i) const
00256 {
00257         return getValue(3,i);
00258 }
00259 
00261 std::string LowEnergyThetaBraggCorrectionReader::getEnergyName()                        const
00262 {
00263         return _sEnergyName;
00264 }
00266 std::string LowEnergyThetaBraggCorrectionReader::getThetaDiffName()             const
00267 {
00268         return _sThetaDiffName;
00269 }
00271 std::string LowEnergyThetaBraggCorrectionReader::getFitDiffName()               const
00272 {
00273         return _sFitDiffName;
00274 }
00276 std::string LowEnergyThetaBraggCorrectionReader::getFWHMResolutionName()        const
00277 {
00278         return _sFWHMResolutionName;
00279 }
00280 
00281 }
00282 

Generated on Tue Apr 14 09:50:28 2009 for Interpolator Library by  doxygen 1.4.5