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
1.2.3 written by Dimitri van Heesch,
© 1997-2000