36 #ifndef TPWALIKELIHOOD_H
37 #define TPWALIKELIHOOD_H
44 #define BOOST_DISABLE_ASSERTS
45 #include "boost/multi_array.hpp"
46 #include "boost/tuple/tuple.hpp"
48 #include "Math/IFunction.h"
56 #include "sumAccumulators.hpp"
64 template<
typename complexT>
94 typedef boost::accumulators::accumulator_set
95 <double, boost::accumulators::stats
96 <boost::accumulators::tag::sum(boost::accumulators::compensated)> >
timeAccType;
112 virtual void FdF(
const double* par,
114 double* gradient)
const;
116 virtual void Gradient(
const double* par,
117 double* gradient)
const;
120 virtual double DoEval (
const double* par)
const;
122 unsigned int derivativeIndex)
const;
126 unsigned int nmbWaves (
const int reflectivity = 0)
const;
129 std::vector<std::string>
waveNames ()
const;
137 {
return boost::accumulators::sum(
_funcCallInfo[func].funcTime); }
139 {
return boost::accumulators::sum(
_funcCallInfo[func].normTime); }
150 const std::string& waveListFileName,
151 const std::string& normIntFileName,
152 const std::string& accIntFileName,
153 const std::string& ampDirName =
".",
154 const unsigned int numbAccEvents = 0,
155 const bool useRootAmps =
false);
159 std::vector<double>& phaseSpaceIntegral)
const;
163 std::vector<std::complex<double> >& prodAmps,
164 std::vector<std::pair<int,int> >& parIndices,
165 std::vector<std::string>& prodAmpNames,
166 const bool withFlat =
false)
const;
168 std::ostream&
print(std::ostream& out = std::cout)
const;
169 std::ostream&
printFuncInfo(std::ostream& out = std::cout)
const;
179 void readWaveList (
const std::string& waveListFileName);
182 const std::string& accIntFileName,
183 const std::string& integralTKeyName =
"integral");
186 const bool useRootAmps =
false,
187 const std::string& ampLeafName =
"amplitude");
205 double* outPar)
const;
252 #endif // TPWALIKELIHOOD_H