3434#include < RtypesCore.h>
3535
3636#include < array>
37- #include < cstdio>
3837#include < string>
3938#include < vector>
4039
@@ -70,133 +69,41 @@ class HFInvMassFitter : public TNamed
7069 HFInvMassFitter () = delete ;
7170 HFInvMassFitter (TH1* histoToFit, double minValue, double maxValue, int fitTypeBkg = Expo, int fitTypeSgn = SingleGaus);
7271 ~HFInvMassFitter () override ;
73- void setHistogramForFit (TH1* histoToFit)
74- {
75- delete mHistoInvMass ;
76- mHistoInvMass = histoToFit;
77- mHistoInvMass ->SetDirectory (nullptr );
78- }
72+ void setHistogramForFit (TH1* histoToFit);
7973 void setUseLikelihoodFit () { mFitOption = " L,E" ; }
8074 void setUseChi2Fit () { mFitOption = " Chi2" ; }
8175 void setFitOption (const std::string& opt) { mFitOption = opt; }
8276 RooAbsPdf* createBackgroundFitFunction (RooWorkspace* w1) const ;
8377 RooAbsPdf* createSignalFitFunction (RooWorkspace* w1);
8478 RooAbsPdf* createReflectionFitFunction (RooWorkspace* w1) const ;
8579
86- void setFitRange (double minValue, double maxValue)
87- {
88- mMinMass = minValue;
89- mMaxMass = maxValue;
90- }
91- void setFitFunctions (int fitTypeBkg, int fitTypeSgn)
92- {
93- mTypeOfBkgPdf = fitTypeBkg;
94- mTypeOfSgnPdf = fitTypeSgn;
95- }
96- void setSigmaLimit (double sigmaValue, double sigmaLimit)
97- {
98- mSigmaValue = sigmaValue;
99- mParamSgn = sigmaLimit;
100- }
80+ void setFitRange (double minValue, double maxValue);
81+ void setFitFunctions (int fitTypeBkg, int fitTypeSgn);
82+ void setSigmaLimit (double sigmaValue, double sigmaLimit);
10183 void setParticlePdgMass (double mass) { mMassParticle = mass; }
10284 [[nodiscard]] double getParticlePdgMass () const { return mMassParticle ; }
103- void setInitialGaussianMean (double mean)
104- {
105- mMass = mean;
106- mSecMass = mean;
107- }
108- void setInitialGaussianSigma (double sigma)
109- {
110- mSigmaSgn = sigma;
111- mSecSigma = sigma;
112- }
85+ void setInitialGaussianMean (double mean);
86+ void setInitialGaussianSigma (double sigma);
11387 void setInitialSecondGaussianSigma (double sigma) { mSigmaSgnDoubleGaus = sigma; }
11488 void setInitialFracDoubleGaus (double frac) { mFracDoubleGaus = frac; }
11589 void setInitialRatioDoubleGausSigma (double fracSigma) { mRatioDoubleGausSigma = fracSigma; }
116- void setFixGaussianMean (double mean)
117- {
118- setInitialGaussianMean (mean);
119- mFixedMean = true ;
120- }
121- void setBoundGaussianMean (double mean, double meanLowLimit, double meanUpLimit)
122- {
123- if (mean < meanLowLimit ||
124- mean > meanUpLimit) {
125- printf (" Invalid Gaussian mean limit!\n " );
126- }
127- setInitialGaussianMean (mean);
128- mMassLowLimit = meanLowLimit;
129- mMassUpLimit = meanUpLimit;
130- mBoundMean = true ;
131- }
132- void setBoundReflGausMean (double mean, double meanLowLimit, double meanUpLimit)
133- {
134- if (mean < meanLowLimit ||
135- mean > meanUpLimit) {
136- printf (" Invalid Gaussian mean limit for reflection!\n " );
137- }
138- setInitialGaussianMean (mean);
139- mMassReflLowLimit = meanLowLimit;
140- mMassReflUpLimit = meanUpLimit;
141- mBoundReflMean = true ;
142- }
143- void setFixGaussianSigma (double sigma)
144- {
145- setInitialGaussianSigma (sigma);
146- mFixedSigma = true ;
147- }
148- void setBoundGausSigma (double sigma, double sigmaLimit)
149- {
150- setInitialGaussianSigma (sigma);
151- setSigmaLimit (sigma, sigmaLimit);
152- mBoundSigma = true ;
153- }
154- void setFixSecondGaussianSigma (double sigma)
155- {
156- if (mTypeOfSgnPdf != DoubleGaus) {
157- printf (" Fit type should be 2Gaus!\n " );
158- }
159- setInitialSecondGaussianSigma (sigma);
160- mFixedSigmaDoubleGaus = true ;
161- }
162- void setFixFrac2Gaus (double frac)
163- {
164- if (mTypeOfSgnPdf != DoubleGaus &&
165- mTypeOfSgnPdf != DoubleGausSigmaRatioPar) {
166- printf (" Fit type should be 2Gaus or 2GausSigmaRatio!\n " );
167- }
168- setInitialFracDoubleGaus (frac);
169- mFixedFracDoubleGaus = true ;
170- }
171- void setFixRatioToGausSigma (double sigmaFrac)
172- {
173- if (mTypeOfSgnPdf != DoubleGausSigmaRatioPar) {
174- printf (" Fit type should be set to k2GausSigmaRatioPar!\n " );
175- }
176- setInitialRatioDoubleGausSigma (sigmaFrac);
177- mFixedRatioDoubleGausSigma = true ;
178- }
90+ void setFixGaussianMean (double mean);
91+ void setBoundGaussianMean (double mean, double meanLowLimit, double meanUpLimit);
92+ void setBoundReflGausMean (double mean, double meanLowLimit, double meanUpLimit);
93+ void setFixGaussianSigma (double sigma);
94+ void setBoundGausSigma (double sigma, double sigmaLimit);
95+ void setFixSecondGaussianSigma (double sigma);
96+ void setFixFrac2Gaus (double frac);
97+ void setFixRatioToGausSigma (double sigmaFrac);
17998 void setFixSignalYield (double yield) { mFixedRawYield = yield; }
18099 void setNumberOfSigmaForSidebands (double numberOfSigma) { mNSigmaForSidebands = numberOfSigma; }
181100 void plotBkg (RooAbsPdf* mFunc , Color_t color = kRed );
182101 void plotRefl (RooAbsPdf* mFunc );
183102 void setReflFuncFixed ();
184103 void doFit ();
185104 void setInitialReflOverSgn (double reflOverSgn) { mReflOverSgn = reflOverSgn; }
186- void setFixReflOverSgn (double reflOverSgn)
187- {
188- setInitialReflOverSgn (reflOverSgn);
189- mFixReflOverSgn = true ;
190- }
191- void setTemplateReflections (TH1* histoRefl)
192- {
193- if (histoRefl == nullptr ) {
194- mEnableReflections = false ;
195- return ;
196- }
197- mHistoTemplateRefl = histoRefl;
198- mHistoTemplateRefl ->SetName (" mHistoTemplateRefl" );
199- }
105+ void setFixReflOverSgn (double reflOverSgn);
106+ void setTemplateReflections (TH1* histoRefl);
200107 void setDrawBgPrefit (bool value = true ) { mDrawBgPrefit = value; }
201108 void setHighlightPeakRegion (bool value = true ) { mHighlightPeakRegion = value; }
202109 [[nodiscard]] double getChiSquareOverNDFTotal () const { return mChiSquareOverNdfTotal ; }
@@ -217,14 +124,7 @@ class HFInvMassFitter : public TNamed
217124 [[nodiscard]] double getSecSigmaUncertainty () const { return mRooSecSigmaSgn ->getError (); }
218125 [[nodiscard]] double getFracDoubleGaus () const { return mRooFracDoubleGaus ->getVal (); }
219126 [[nodiscard]] double getFracDoubleGausUncertainty () const { return mRooFracDoubleGaus ->getError (); }
220- [[nodiscard]] double getReflOverSig () const
221-
222- {
223- if (mReflPdf != nullptr ) {
224- return mReflOverSgn ;
225- }
226- return 0 ;
227- }
127+ [[nodiscard]] double getReflOverSig () const { return mReflPdf != nullptr ? mReflOverSgn : 0 .; }
228128 void calculateSignal (double & signal, double & signalErr) const ;
229129 void countSignal (double & signal, double & signalErr) const ;
230130 void calculateBackground (double & bkg, double & bkgErr) const ;
0 commit comments