Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

LSQFit.h

Go to the documentation of this file.
00001 //## begin module.cm preserve=no
00002 //        %X% %Q% %Z% %W%
00003 //## end module.cm
00004 
00005 //## begin module.cp preserve=no
00006 //## end module.cp
00007 
00008 //## Module: LSQFit; Package specification
00009 //## Subsystem: reconstruction
00010 //      d:\code\glastsim\reconstruction
00011 //## Source file: d:\code\glastsim\reconstruction\LSQFit.h
00012 
00013 #ifndef __LSQFIT_H
00014 #define __LSQFIT_H 1
00015 
00016 #include <vector>
00017 
00018 #include "geometry/Point.h"
00019 
00020 
00021 //## begin module.declarations preserve=no
00022 //## end module.declarations
00023 
00024 //## begin module.additionalDeclarations preserve=yes
00025 //## end module.additionalDeclarations
00026 
00027 
00028 //## Class: FitData
00029 //## Category: reconstruction
00030 //## Subsystem: reconstruction
00031 //## Persistence: Transient
00032 //## Cardinality/Multiplicity: n
00033 
00034 
00035 class FitData
00036 {
00037   //## begin FitData.initialDeclarations preserve=yes
00038 private:
00039         friend class LSQFit;
00040   //## end FitData.initialDeclarations
00041 
00042   public:
00043     //## Constructors (specified)
00044       //## Operation: FitData%907927192; C++
00045       FitData (unsigned int i, float dX, float dZ, float dwX)
00046         //## begin FitData::FitData%907927192.hasinit preserve=no
00047         //## end FitData::FitData%907927192.hasinit
00048         //## begin FitData::FitData%907927192.initialization preserve=yes
00049         : index( i ), x( dX), z(dZ), wt( dwX) 
00050         //## end FitData::FitData%907927192.initialization
00051       {
00052         //## begin FitData::FitData%907927192.body preserve=yes
00053         //## end FitData::FitData%907927192.body
00054       }
00055 
00056       //## Operation: FitData%1210066552; C++
00057       FitData ()
00058         //## begin FitData::FitData%1210066552.hasinit preserve=no
00059         //## end FitData::FitData%1210066552.hasinit
00060         //## begin FitData::FitData%1210066552.initialization preserve=yes
00061         //## end FitData::FitData%1210066552.initialization
00062       {
00063         //## begin FitData::FitData%1210066552.body preserve=yes
00064         //## end FitData::FitData%1210066552.body
00065       }
00066 
00067       //## Operation: FitData%666052249; C++
00068       FitData (const FitData& data)
00069         //## begin FitData::FitData%666052249.hasinit preserve=no
00070         //## end FitData::FitData%666052249.hasinit
00071         //## begin FitData::FitData%666052249.initialization preserve=yes
00072         //## end FitData::FitData%666052249.initialization
00073       {
00074         //## begin FitData::FitData%666052249.body preserve=yes
00075           index = data.index;
00076           x = data.x;
00077           z = data.z;
00078           wt = data.wt;
00079           res = data.res;
00080         //## end FitData::FitData%666052249.body
00081       }
00082 
00083     //## Destructor (specified)
00084       //## Operation: ~FitData%790131244; C++
00085       ~FitData ()
00086       {
00087         //## begin FitData::~FitData%790131244.body preserve=yes
00088         //## end FitData::~FitData%790131244.body
00089       }
00090 
00091     // Data Members for Class Attributes
00092 
00093       //## Attribute: index
00094       //        unique index tagging this data point
00095       //## begin FitData::index.attr preserve=no  public: unsigned int {VA} 
00096       unsigned int index;
00097       //## end FitData::index.attr
00098 
00099       //## Attribute: x
00100       //        2D space point for fit
00101       //## begin FitData::x.attr preserve=no  public: float {VA} 
00102       float x;
00103       //## end FitData::x.attr
00104 
00105       //## Attribute: z
00106       //        2D space point for fit
00107       //## begin FitData::z.attr preserve=no  public: float {VA} 
00108       float z;
00109       //## end FitData::z.attr
00110 
00111       //## Attribute: wt
00112       //        fit weights
00113       //## begin FitData::wt.attr preserve=no  public: float {VA} 
00114       float wt;
00115       //## end FitData::wt.attr
00116 
00117       //## Attribute: res
00118       //        fit Residuals
00119       //## begin FitData::res.attr preserve=no  public: float {VA} 
00120       float res;
00121       //## end FitData::res.attr
00122 
00123     // Additional Public Declarations
00124       //## begin FitData.public preserve=yes
00125       //## end FitData.public
00126 
00127   protected:
00128     // Additional Protected Declarations
00129       //## begin FitData.protected preserve=yes
00130       //## end FitData.protected
00131 
00132   private:
00133     // Additional Private Declarations
00134       //## begin FitData.private preserve=yes
00135       //## end FitData.private
00136 
00137   private:  //## implementation
00138     // Additional Implementation Declarations
00139       //## begin FitData.implementation preserve=yes
00140       //## end FitData.implementation
00141 
00142 };
00143 
00144 //## begin FitData.postscript preserve=yes
00145     bool operator<(const FitData&, const FitData&);
00146     bool operator==(const FitData&, const FitData&);
00147 
00148 
00149 #include <stdlib.h>
00150 #include "geometry/Vector.h"
00151 
00152 #include <iostream>
00153 #include <vector>
00154 
00155 // End Implementation Dependencies -----------------------------------
00156 
00157 class Ray;
00158 
00159 //## end FitData.postscript
00160 
00161 
00162 
00163 //## Class: LSQFit
00164 //## Category: reconstruction
00165 //## Subsystem: reconstruction
00166 //## Persistence: Transient
00167 //## Cardinality/Multiplicity: n
00168 
00169 //## Uses: <unnamed>; Point { -> }
00170 //## Uses: <unnamed>; ostream { -> }
00171 
00172 class LSQFit 
00173 {
00174   //## begin LSQFit.initialDeclarations preserve=yes
00175   //## end LSQFit.initialDeclarations
00176 
00177   public:
00178     //## Constructors (specified)
00179       //## Operation: LSQFit%-287297432; C++
00180       //        End Implementation Dependencies
00181       //        -----------------------------------
00182       LSQFit ();
00183 
00184       //## Operation: LSQFit%1816016125; C++
00185       LSQFit (const LSQFit& fit);
00186 
00187     //## Destructor (specified)
00188       //## Operation: ~LSQFit%1575098630; C++
00189       virtual ~LSQFit ();
00190 
00191 
00192     //## Other Operations (specified)
00193       //## Operation: clear%1564145804; C++
00194       //        ---------------------------------------------------------
00195       //        ---
00196       //        Member functions to access fit results
00197       //        ---------------------------------------------------------
00198       //        ---
00199       void clear ();
00200 
00201       //## Operation: position%-438469547; C++
00202       float position (float s)
00203       {
00204         //## begin LSQFit::position%-438469547.body preserve=yes
00205 return (x0 + slopeX*s);
00206         //## end LSQFit::position%-438469547.body
00207       }
00208 
00209       //## Operation: slope%-1768319281; C++
00210       float slope ()
00211       {
00212         //## begin LSQFit::slope%-1768319281.body preserve=yes
00213 return slopeX;
00214         //## end LSQFit::slope%-1768319281.body
00215       }
00216 
00217       //## Operation: chiSquare%-1141137480; C++
00218       float chiSquare () const
00219       {
00220         //## begin LSQFit::chiSquare%-1141137480.body preserve=yes
00221 return chisq;
00222         //## end LSQFit::chiSquare%-1141137480.body
00223       }
00224 
00225       //## Operation: scatter%206744814; C++
00226       float scatter () const
00227       {
00228         //## begin LSQFit::scatter%206744814.body preserve=yes
00229 return rmsResid;
00230         //## end LSQFit::scatter%206744814.body
00231       }
00232 
00233       //## Operation: maxResidual%-1294063902; C++
00234       float maxResidual (int* index);
00235 
00236       unsigned int numDataPoints () const;
00237 
00238       //## Operation: compareFits%-248894077; C++
00239       int compareFits (const LSQFit& fit);
00240 
00241       //## Operation: getHit%588524840; C++
00242       Point getHit (unsigned int i);
00243 
00244       //## Operation: getHitIndex%-1565627155; C++
00245       //        ---------------------------------------------------------
00246       //        ---
00247       //        Member functions to store data and do the fit
00248       //        ---------------------------------------------------------
00249       //        ---
00250       unsigned int getHitIndex (unsigned int i);
00251 
00252       //## Operation: doFit%-966633323; C++
00253       float doFit ();
00254 
00255       //## Operation: addData%860586691; C++
00256       int addData (float x, float z, float wx);
00257 
00258       //## Operation: addData%-2047337558; C++
00259       int addData (unsigned int idx, float x, float z, float wx);
00260 
00261       //## Operation: removeData%-2110859248; C++
00262       int removeData (unsigned int index);
00263 
00264       //## Operation: truncateFit%-10029783; C++
00265       //        ---------------------------------------------------------
00266       //        ---
00267       //        Displaying and Printing
00268       //        ---------------------------------------------------------
00269       //        ---
00270       float truncateFit ();
00271 
00272       //## Operation: printOn%353614648; C++
00273       //        ---------------------------------------------------------
00274       //        ----
00275       virtual void printOn (std::ostream& os = std::cout) const;
00276 
00277   protected:
00278     // Data Members for Class Attributes
00279 
00280       float x0;
00281       float slopeX;
00282       float chisq;
00283       float rmsResid;
00284 
00285     // Data Members for Associations
00286 
00287       std::vector< FitData > dataList;
00288 
00289 };
00290 
00291 #endif

Generated at Wed Nov 21 12:20:44 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000