00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __HKA_HPP__
00025 #define __HKA_HPP__
00026
00027 #include <vector>
00028 #include <boost/tuple/tuple.hpp>
00029
00030 namespace Sequence
00031 {
00037 struct HKAdata
00038 {
00043 mutable unsigned SA,SB;
00048 mutable double D;
00052 mutable unsigned nA,nB;
00053 HKAdata();
00054 HKAdata(const HKAdata & d);
00055 HKAdata(unsigned sa,unsigned sb,double d,
00056 unsigned na,unsigned nb);
00057 };
00058
00067 struct HKAresults
00068 {
00074 const std::vector< double > thetas;
00079 typedef boost::tuple<double,double,double,double> chisq_tuple;
00084 enum chisq_tuple_elements {POLY,DIV,POLYA,POLYB};
00098 std::vector< chisq_tuple > chisquareds;
00103 const double fhat;
00108 const double That;
00112 const double xsq;
00117 const double xsqA;
00122 const double xsqB;
00123 explicit HKAresults (const std::vector<double> & _thetas,
00124 const std::vector< chisq_tuple > & _chisquareds,
00125 const double & _fhat, const double & _That,
00126 const double & _xsq,
00127 const double & _xsqA, const double & _xsqB);
00128 };
00129
00130 HKAresults calcHKA ( const std::vector< HKAdata > & data );
00131 }
00132
00133 #endif