|
22 | 22 | #include "HFInvMassFitter.h" |
23 | 23 |
|
24 | 24 | #include <RooAddPdf.h> |
| 25 | +#include <RooCrystalBall.h> |
25 | 26 | #include <RooDataHist.h> |
26 | 27 | #include <RooExponential.h> |
27 | 28 | #include <RooFitResult.h> |
@@ -517,6 +518,29 @@ void HFInvMassFitter::fillWorkspace(RooWorkspace& workspace) const |
517 | 518 | RooAbsPdf* reflFuncDoubleGaus = new RooAddPdf("reflFuncDoubleGaus", "reflection pdf", RooArgList(gausRefl1, gausRefl2), fracRefl); |
518 | 519 | workspace.import(*reflFuncDoubleGaus); |
519 | 520 | delete reflFuncDoubleGaus; |
| 521 | + // signal DSCB pdf |
| 522 | + const ParameterRanges dscbAlphaLParamRanges{mDscbAlphaLLowLimit, mDscbAlphaLUpLimit, mDscbAlphaLInitialValue}; |
| 523 | + const ParameterRanges dscbNLParamRanges{mDscbNLLowLimit, mDscbNLUpLimit, mDscbNLInitialValue}; |
| 524 | + const ParameterRanges dscbAlphaRParamRanges{mDscbAlphaRLowLimit, mDscbAlphaRUpLimit, mDscbAlphaRInitialValue}; |
| 525 | + const ParameterRanges dscbNRParamRanges{mDscbNRLowLimit, mDscbNRUpLimit, mDscbNRInitialValue}; |
| 526 | + RooRealVar alphaL("alphaL", "left tail alpha", randomizeInitialParameter(dscbAlphaLParamRanges), dscbAlphaLParamRanges.lower, dscbAlphaLParamRanges.upper); |
| 527 | + RooRealVar nL("nL", "left tail n", randomizeInitialParameter(dscbNLParamRanges), dscbNLParamRanges.lower, dscbNLParamRanges.upper); |
| 528 | + RooRealVar alphaR("alphaR", "right tail alpha", randomizeInitialParameter(dscbAlphaRParamRanges), dscbAlphaRParamRanges.lower, dscbAlphaRParamRanges.upper); |
| 529 | + RooRealVar nR("nR", "right tail n", randomizeInitialParameter(dscbNRParamRanges), dscbNRParamRanges.lower, dscbNRParamRanges.upper); |
| 530 | + if (mFixedDscbTailParams) { |
| 531 | + printf("Fixing DSCB tail parameters to initial values.\n"); |
| 532 | + alphaL.setVal(mDscbAlphaLInitialValue); |
| 533 | + alphaL.setConstant(true); |
| 534 | + alphaR.setVal(mDscbAlphaRInitialValue); |
| 535 | + alphaR.setConstant(true); |
| 536 | + nL.setVal(mDscbNLInitialValue); |
| 537 | + nL.setConstant(true); |
| 538 | + nR.setVal(mDscbNRInitialValue); |
| 539 | + nR.setConstant(true); |
| 540 | + } |
| 541 | + RooAbsPdf* sgnFuncDSCB = new RooCrystalBall("sgnFuncDSCB", "double sided crystal ball signal", mass, mean, sigma, alphaL, nL, alphaR, nR); |
| 542 | + workspace.import(*sgnFuncDSCB); |
| 543 | + delete sgnFuncDSCB; |
520 | 544 | // reflection poly3 |
521 | 545 | const ParameterRanges polyReflParam0ParamRanges{-1., 1., 0.5, 0.1}; |
522 | 546 | RooRealVar const polyReflParam0("polyReflParam0", "polyReflParam0", randomizeInitialParameter(polyReflParam0ParamRanges), polyReflParam0ParamRanges.lower, polyReflParam0ParamRanges.upper); |
|
0 commit comments