#include <RooBallack.hh>
Public Member Functions | |
RooBallack (const char *name, const char *title, RooAbsReal &_x, RooAbsReal &_mean, RooAbsReal &_width, RooAbsReal &_tail, RooAbsReal &_alpha, RooAbsReal &_n) | |
RooBallack (const RooBallack &other, const char *name=0) | |
virtual TObject * | clone (const char *newname) const |
virtual | ~RooBallack () |
Protected Member Functions | |
Double_t | evaluate () const |
Protected Attributes | |
RooRealProxy | x |
RooRealProxy | mean |
RooRealProxy | width |
RooRealProxy | tail |
RooRealProxy | alpha |
RooRealProxy | n |
Definition at line 19 of file RooBallack.hh.
RooBallack::RooBallack | ( | const char * | name, | |
const char * | title, | |||
RooAbsReal & | _x, | |||
RooAbsReal & | _mean, | |||
RooAbsReal & | _width, | |||
RooAbsReal & | _tail, | |||
RooAbsReal & | _alpha, | |||
RooAbsReal & | _n | |||
) |
Referenced by clone().
RooBallack::RooBallack | ( | const RooBallack & | other, | |
const char * | name = 0 | |||
) |
Definition at line 38 of file RooBallack.cc.
00038 : 00039 RooAbsPdf(other, name), 00040 x("x", this, other.x), 00041 mean("mean", this, other.mean), 00042 width("width", this, other.width), 00043 tail("tail", this, other.tail), 00044 alpha("alpha", this, other.alpha), 00045 n("n", this, other.n) 00046 { 00047 }
virtual RooBallack::~RooBallack | ( | ) | [inline, virtual] |
virtual TObject* RooBallack::clone | ( | const char * | newname | ) | const [inline, virtual] |
Definition at line 31 of file RooBallack.hh.
References RooBallack().
00031 { 00032 return new RooBallack(*this,newname); }
Double_t RooBallack::evaluate | ( | ) | const [protected] |
Definition at line 49 of file RooBallack.cc.
References alpha, mean, n, tail, width, and x.
00050 { 00051 // build the functional form 00052 00053 double qa=0,qb=0,qc=0,qx=0,qy=0; 00054 00055 double A=0,B=0,C=0,a=0,c1=0,c2=0; 00056 double sigTail=0, sigMean=0; 00057 00058 a = sqrt(log(4.)); 00059 00060 const Double_t lowlimit = 1.0e-7; 00061 00062 // Make a symmetric function around x=0 00063 if(x<0) { 00064 sigTail = -tail; 00065 sigMean = -mean; 00066 } 00067 else { 00068 sigTail = tail; 00069 sigMean = mean; 00070 } 00071 00072 if(TMath::Abs(tail) < lowlimit) { 00073 qc = 0.5*TMath::Power(((x-sigMean)/width),2); 00074 A = 1.e7; 00075 } 00076 else { 00077 qa = sigTail*a; 00078 qb = sinh(qa)/qa; 00079 qx = (x-sigMean)/width*qb; 00080 qy = 1.+sigTail*qx; 00081 00082 //---- Cutting curve from right side 00083 if( qy > lowlimit) { 00084 qc = 0.5*(TMath::Power((log(qy)/sigTail),2) + sigTail*sigTail); 00085 } 00086 else { 00087 qc = 15.0; 00088 } 00089 00090 // Preparing the polynomial tail 00091 A = alpha*width*a/sinh(sigTail*a); 00092 } 00093 00094 // Determine the side ofthe tail and polynomial 00095 if( x>=sigMean-fabs(A) && sigTail<0 ) { 00096 return exp(-qc); 00097 } 00098 if( x<=sigMean+fabs(A) && sigTail>0 ) { 00099 return exp(-qc); 00100 } 00101 else { 00102 if( (1+alpha) > lowlimit ) { 00103 B = -0.5*(TMath::Power( (log(1+alpha)/sigTail), 2 ) + sigTail*sigTail); 00104 } 00105 else { 00106 B = -15.0; 00107 } 00108 00109 C = n*A*sigTail*sigTail*(1+alpha)*(TMath::Power( (sigMean+A), n-1. )); 00110 c2 = - alpha*log(1+alpha)*exp(B)/C; 00111 c1 = exp(B) - c2*(TMath::Power( (sigMean+A), n)); 00112 00113 return c1 + c2*(TMath::Power(x,n)); 00114 } 00115 00116 }
RooRealProxy RooBallack::alpha [protected] |
RooRealProxy RooBallack::mean [protected] |
RooRealProxy RooBallack::n [protected] |
RooRealProxy RooBallack::tail [protected] |
RooRealProxy RooBallack::width [protected] |
RooRealProxy RooBallack::x [protected] |