00001 #ifndef MultiGaussianState1D_H_ 00002 #define MultiGaussianState1D_H_ 00003 00004 #include "TrackingTools/GsfTools/interface/SingleGaussianState1D.h" 00005 00006 #include <vector> 00007 00012 class MultiGaussianState1D { 00013 public: 00014 typedef std::vector<SingleGaussianState1D> SingleState1dContainer; 00015 00016 public: 00017 00018 MultiGaussianState1D() : theCombinedStateUp2Date(false) {} 00019 00020 MultiGaussianState1D(const SingleState1dContainer& stateV) 00021 : theComponents(stateV), theCombinedStateUp2Date(false) {} 00022 00023 ~MultiGaussianState1D() {} 00024 00026 double weight() const; 00028 double mean() const; 00030 double variance() const; 00032 const SingleState1dContainer& components() const {return theComponents;} 00033 00034 // protected: 00035 private: 00037 void checkCombinedState() const; 00038 00039 // should become a vector of pointers to const SingleState 00040 const SingleState1dContainer theComponents; 00041 mutable SingleGaussianState1D theCombinedState; 00042 mutable bool theCombinedStateUp2Date; 00043 }; 00044 00045 #endif