4 #ifndef ROOT_TFractionFitter
5 #define ROOT_TFractionFitter
7 #ifndef ROOT_TVirtualFitter
11 #ifndef ROOT_TObjArray
27 class TFractionFitter:
public TObject {
30 TFractionFitter(TH1* data, TObjArray *MCs, Option_t *option=
"");
31 virtual ~TFractionFitter();
34 ROOT::Fit::Fitter* GetFitter()
const;
35 void ErrorAnalysis(Double_t UP);
36 void SetRangeX(Int_t low, Int_t high);
38 void SetRangeY(Int_t low, Int_t high);
40 void SetRangeZ(Int_t low, Int_t high);
42 void ExcludeBin(Int_t bin);
43 void IncludeBin(Int_t bin);
44 void Constrain(Int_t parm, Double_t low, Double_t high);
45 void UnConstrain(Int_t parm);
46 void SetData(TH1 *data);
47 void SetMC(Int_t parm, TH1 *MC);
48 void SetWeight(Int_t parm, TH1* weight);
51 void GetResult(Int_t parm, Double_t& value, Double_t& error)
const;
58 Double_t GetChisquare()
const;
60 Double_t GetProb()
const;
63 TH1* GetMCPrediction(Int_t parm)
const;
66 Double_t EvaluateFCN(
const Double_t * par) {
68 ComputeFCN(f, par, 0);
73 void CheckParNo(Int_t parm)
const;
74 void CheckConsistency();
75 void FindPrediction(
int bin,
double& t_i,
int& k_0,
double& A_ki)
const;
76 void ComputeFCN(Double_t& f,
const Double_t* par, Int_t flag);
77 void GetRanges(Int_t& minX, Int_t& maxX, Int_t& minY, Int_t& maxY,
78 Int_t& minZ, Int_t& maxZ)
const;
79 void ComputeChisquareLambda();
80 bool IsExcluded(Int_t bin)
const;
90 std::vector<Int_t> fExcludedBins;
102 Double_t fIntegralData;
103 Double_t* fIntegralMCs;
104 Double_t* fFractions;
106 ROOT::Fit::Fitter *fFractionFitter;
110 ClassDef(TFractionFitter, 0);
119 void TFractionFitFCN(Int_t& npar, Double_t* gin, Double_t& f, Double_t* par, Int_t flag);
121 #endif // ROOT_TFractionFitter