/***************************************************************************** * Project: RooFit * * * * This code was autogenerated by RooClassFactory * *****************************************************************************/ // Your description goes here... #include "Riostream.h" #include "GaussExpConv.h" #include "RooAbsReal.h" #include "RooAbsCategory.h" #include #include "TMath.h" ClassImp(GaussExpConv) GaussExpConv::GaussExpConv(const char *name, const char *title, RooAbsReal& _x, RooAbsReal& _mean, RooAbsReal& _sig, RooAbsReal& _tau) : RooAbsPdf(name,title), x("x","x",this,_x), mean("mean","mean",this,_mean), sig("sig","sig",this,_sig), tau("tau","tau",this,_tau) { } GaussExpConv::GaussExpConv(const GaussExpConv& other, const char* name) : RooAbsPdf(other,name), x("x",this,other.x), mean("mean",this,other.mean), sig("sig",this,other.sig), tau("tau",this,other.tau) { } Double_t GaussExpConv::evaluate() const { double val1 = exp(0.5*tau*(2*mean+tau*sig*sig-2*x)); double val2 = erfc((mean+tau*sig*sig-x)/(sqrt(2)*sig)); return 0.5*tau*val1*val2; } // Double_t GaussExpConv::getIntegral() const // ==1 // { // double val1 = erf(0.707107*(x-mean)/sig); // double val2 = exp(tau*(mean+0.5*tau*sig*sig-x)); // double val3 = erfc(0.707107*(mean+tau*sig*sig-x)/(sig)); // return 0.5*(val1 - val2*val3); // } Double_t GaussExpConv::getEquivGaussianIntegral() const { return sqrt(2*TMath::Pi()*sig*sig); }