13 #include <../../BAT/BCH1D.h>
14 #include <../../BAT/BCH2D.h>
15 #include <../../BAT/BCLog.h>
16 #include <../../BAT/BCMath.h>
17 #include <../../BAT/BCParameter.h>
44 for (
int i = 0; i < n; ++i)
72 for (
int i = 0; i < nmeas; ++i) {
82 if ( (min.size() != npar) || (max.size() != npar) ) {
83 BCLog::OutWarning(
"BCMVCDataModel::SetnMeasurementRanges. Size of ranges does not fit the number of measurements.");
88 for (
unsigned i = 0; i < npar; ++i) {
110 TVectorD observables(nmeas);
111 TVectorD measurements(nmeas);
113 for (
int i = 0; i < nmeas; ++i) {
115 measurements[i] = parameters[i];
118 TVectorD prod1 = observables - measurements;
120 double prod = prod1 * prod2;
122 logprob = -0.5 * prod - log(TMath::Power(2*TMath::Pi(), nmeas/2.) * sqrt(
fDetCovariance));
147 for (
int i = 0; i < nchains; ++i) {
151 TVectorD observables(npar);
152 TVectorD measurements(npar);
154 for (
int j = 0; j < npar; ++j) {
156 measurements[j] =
fMCMCx.at(i * npar + j);
159 double chi2 =
Chi2(observables, measurements);
171 if ( (filename.find_last_of(
".") != std::string::npos) &&
172 (filename.substr(filename.find_last_of(
".")+1) ==
"pdf") ) {
176 else if ( (filename.find_last_of(
".") != std::string::npos) &&
177 (filename.substr(filename.find_last_of(
".")+1) ==
"ps") ) {
187 TCanvas* c1 =
new TCanvas(
"");
198 BCLog::OutWarning(
"BCMVCDataModel::PrintToys. Chi2 histogram not normalized. Abort printing.");
206 hist_chi2->
Draw(
"BTllB1CS1L", 1-pvalue);
208 c1->Print(std::string(filename+
"(").c_str());
211 for (
int i = 0; i < npars; ++i) {
216 hist_par->
Draw(
"BTllB1CS1L", 1-p);
217 c1->Print(filename.c_str());
221 for (
int i = 0; i < npars; ++i) {
222 for (
int j = 0; j < i; ++j) {
228 hist_par->
Draw(
"BTfB3CS1");
229 TMarker* m =
new TMarker();
230 m->SetMarkerStyle(21);
231 m->DrawMarker(obs_j, obs_i);
232 if (i == npars - 1 && j == i-1)
233 c1->Print(std::string(filename+
")").c_str());
235 c1->Print(filename.c_str());
244 std::cout <<
" Goodness-of-fit test:" << std::endl << std::endl;
256 std::cout <<
" chi2 : " << chi2 << std::endl;
257 std::cout <<
" p-value : " << pvalue << std::endl;
258 std::cout << std::endl;
265 TVectorD prod1 = observables - measurements;
267 double chi2 = prod1 * prod2;