00001 #ifndef MinL3Algorithm_H 00002 #define MinL3Algorithm_H 00003 00017 #include <vector> 00018 #include <iostream> 00019 00020 using namespace std; 00021 00022 00023 class MinL3Algorithm 00024 { 00025 public: 00028 MinL3Algorithm(float kweight_ = 0., int squareMode_ = 5, int mineta_ = 1, int maxeta_ = 85, int minphi_ = 1, int maxphi_ = 20); 00029 00031 ~MinL3Algorithm(); 00032 00036 vector<float> iterate(const vector<vector<float> >& eventMatrix, const vector<int>& VmaxCeta, const vector<int>& VmaxCphi, const vector<float>& energyVector, const int& nIter, const bool& normalizeFlag = false); 00037 00038 00040 void addEvent(const vector<float>& eventSquare, const int& maxCeta, const int& maxCphi, const float& energy); 00041 00043 vector<float> recalibrateEvent(const vector<float>& eventSquare, const int& maxCeta, const int& maxCphi, const vector<float>& recalibrateVector); 00044 00046 vector<float> getSolution(bool resetsolution=true); 00047 00049 void resetSolution(); 00050 00052 int indexSqr2Reg(const int& sqrIndex, const int& maxCeta, const int& maxCphi); 00053 00054 00055 private: 00056 00057 float kweight; 00058 int squareMode; 00059 int mineta, maxeta, minphi, maxphi; 00060 int countEvents; 00061 int Nchannels, Nxtals; 00062 vector<float> wsum; 00063 vector<float> Ewsum; 00064 00065 }; 00066 00067 #endif // MinL3Algorithm_H