63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
#define ROOEXPANDGAUSS_CXX
|
|
|
|
#include "RooExpAndGauss.hpp"
|
|
#include "RooRealVar.h"
|
|
|
|
ClassImp(RooExpAndGauss)
|
|
|
|
// default constructor to make RooFit workspaces happy
|
|
/*
|
|
RooExpAndGauss::RooExpAndGauss():
|
|
RooAbsPdf("RooExpAndGaussDefault", "RooExpAndGauss Default"),
|
|
x("xRV", "x", 0.0, 1.0),
|
|
sh_mean("sh_mean", "sh_mean", 0.0, 1.0),
|
|
sh_sigma("sh_sigma","sh_sigma", 0.0, 1.0),
|
|
sh_trans("sh_trans","sh_trans", 0.0, 1.0)
|
|
{
|
|
}
|
|
*/
|
|
|
|
RooExpAndGauss::RooExpAndGauss()
|
|
{
|
|
RooRealVar xRV("xRV","x", 0.0, 1.0);
|
|
RooRealVar sh_meanRV("sh_meanRV", "sh_mean", 0.0, 1.0);
|
|
RooRealVar sh_sigmaRV("sh_sigmaRV","sh_sigma", 0.0, 1.0);
|
|
RooRealVar sh_transRV("sh_transRV","sh_trans", 0.0, 1.0);
|
|
|
|
RooExpAndGauss("RooExpAndGauss", "RooExpAndGauss", xRV, sh_meanRV, sh_sigmaRV, sh_transRV);
|
|
}
|
|
|
|
RooExpAndGauss::RooExpAndGauss(const char *name, const char *title,
|
|
RooAbsReal& _x,
|
|
RooAbsReal& _sh_mean,
|
|
RooAbsReal& _sh_sigma,
|
|
RooAbsReal& _sh_trans) :
|
|
RooAbsPdf(name,title),
|
|
x("x","x",this,_x),
|
|
sh_mean("sh_mean","sh_mean",this,_sh_mean),
|
|
sh_sigma("sh_sigma","sh_sigma",this,_sh_sigma),
|
|
sh_trans("sh_trans","sh_trans",this,_sh_trans)
|
|
{
|
|
}
|
|
|
|
|
|
RooExpAndGauss::RooExpAndGauss(const RooExpAndGauss& other, const char* name) :
|
|
RooAbsPdf(other,name),
|
|
x("x",this,other.x),
|
|
sh_mean("sh_mean",this,other.sh_mean),
|
|
sh_sigma("sh_sigma",this,other.sh_sigma),
|
|
sh_trans("sh_trans",this,other.sh_trans)
|
|
{
|
|
}
|
|
|
|
|
|
Double_t RooExpAndGauss::evaluate() const
|
|
{
|
|
double beta = (sh_mean - sh_trans)/(sh_sigma*sh_sigma);
|
|
double c = exp(-0.5*pow((sh_trans-sh_mean)/sh_sigma,2))*exp(-beta*sh_trans);
|
|
if (x <= sh_trans){
|
|
return c*exp(beta*x);
|
|
};
|
|
return exp(-0.5*pow((x-sh_mean)/sh_sigma,2)); //think a 1/2 was missed before BsMuMuPy v4.4
|
|
}
|