11 #ifndef __BCMVCOMBINATION__H
12 #define __BCMVCOMBINATION__H
14 #include "../../BAT/BCModel.h"
17 #include <TMatrixDEigen.h>
41 void AddObservable(std::string name,
double min,
double max);
45 void AddUncertainty(std::string name);
52 void AddMeasurement(std::string name, std::string observable,
double value, std::vector<double> uncertainties);
58 {
return fNObservables; };
61 int GetNUncertainties()
62 {
return int(fUncertainties.size()); };
65 int GetNMeasurements()
66 {
return int(fMeasurements.size()); };
69 int GetNActiveMeasurements();
73 {
return fUncertainties.at(index); }
77 {
return fMeasurements.at(index); }
80 TMatrixD GetCovarianceMatrix()
81 {
return fCovarianceMatrix; };
84 TMatrixD GetBLUEWeights()
85 {
return fBLUEWeights; };
88 TVectorD GetBLUECentralValues()
89 {
return fBLUECentral; };
92 TVectorD GetBLUEUncertainties()
93 {
return fBLUEUncertainties; };
98 TVectorD GetBLUEUncertainties(
int index)
99 {
return fBLUEUncertaintiesPerSource.at(index); };
102 TMatrixD GetBLUECovarianceMatrix()
103 {
return fBLUECovarianceMatrix; };
108 TMatrixD GetBLUECovarianceMatrix(
int index)
109 {
return fBLUECovarianceMatrices.at(index); };
114 TMatrixD GetBLUECorrelationMatrix(
int index)
115 {
return fBLUECorrelationMatrices.at(index); };
118 TMatrixD GetBLUECorrelationMatrix()
119 {
return fBLUECorrelationMatrix; };
122 std::vector<int> GetVectorObservable()
123 {
return fVectorObservable; };
126 TVectorD GetVectorMeasurements()
127 {
return fVectorMeasurements; };
130 int GetIndexMeasurement(std::string measurement, std::string observable);
133 int GetIndexUncertainty(std::string name);
136 int GetIndexObservable(std::string name);
141 int ReadInput(std::string filename);
144 void CalculateCorrelationMatrix(
int index);
147 void CalculateCovarianceMatrix(std::vector<double> nuisance = std::vector<double>(0));
150 void CalculateHelperVectors();
153 bool PositiveDefinite();
156 void CalculateBLUE();
159 void PrepareAnalysis();
164 void PrintBLUEResults(std::string filename);
166 void PrintMatrix(TMatrixT<double> &matrix, std::string name=
"matrix");
168 void PrintVector(TVectorD &vector, std::string name=
"vector");
177 int index_uncertainty;
178 int index_measurement1;
179 int index_measurement2;
180 int index_rhoparameter;
185 std::vector<BCMVCUncertainty*> fUncertainties;
188 std::vector<BCMVCMeasurement*> fMeasurements;
191 TMatrixD fCovarianceMatrix;
194 TMatrixD fInvCovarianceMatrix;
197 double fDetCovariance;
200 TVectorD fVectorMeasurements;
203 TVectorD fVectorActiveMeasurements;
206 std::vector<int> fVectorObservable;
209 std::vector<int> fVectorActiveObservable;
212 TMatrixD fBLUEWeights;
215 TVectorD fBLUECentral;
218 TVectorD fBLUEUncertainties;
221 std::vector<TVectorD> fBLUEUncertaintiesPerSource;
224 TMatrixD fBLUECovarianceMatrix;
227 std::vector<TMatrixD> fBLUECovarianceMatrices;
230 std::vector<TMatrixD> fBLUECorrelationMatrices;
233 TMatrixD fBLUECorrelationMatrix;
239 int fNNuisanceCorrelation;
242 std::vector<NuisanceParameter> fNuisanceCorrelation;
245 std::vector<BCMVCObservable*> fObservables;
The base class for all user-defined models.
double LogLikelihood(const std::vector< double > ¶meters)