#include <RooGounarisSakurai.hh>
Public Member Functions | |
RooGounarisSakurai (const char *name, const char *title, RooAbsReal &_x, RooAbsReal &_mean, RooAbsReal &_width, RooAbsReal &_spin, RooAbsReal &_radius, RooAbsReal &_mass_a, RooAbsReal &_mass_b) | |
RooGounarisSakurai (const RooGounarisSakurai &other, const char *name=0) | |
virtual TObject * | clone (const char *newname) const |
virtual | ~RooGounarisSakurai () |
Protected Member Functions | |
Double_t | evaluate () const |
Protected Attributes | |
RooRealProxy | x |
RooRealProxy | mean |
RooRealProxy | width |
RooRealProxy | spin |
RooRealProxy | radius |
RooRealProxy | mass_a |
RooRealProxy | mass_b |
Private Member Functions | |
Double_t | Gamma () const |
Double_t | KFunction (Double_t X) const |
Double_t | FFunction (Double_t X) const |
Double_t | dFunction () const |
Double_t | hFunction (Double_t X) const |
Double_t | dhds () const |
Double_t | fFunction (Double_t X) const |
Definition at line 16 of file RooGounarisSakurai.hh.
RooGounarisSakurai::RooGounarisSakurai | ( | const char * | name, | |
const char * | title, | |||
RooAbsReal & | _x, | |||
RooAbsReal & | _mean, | |||
RooAbsReal & | _width, | |||
RooAbsReal & | _spin, | |||
RooAbsReal & | _radius, | |||
RooAbsReal & | _mass_a, | |||
RooAbsReal & | _mass_b | |||
) |
Referenced by clone().
RooGounarisSakurai::RooGounarisSakurai | ( | const RooGounarisSakurai & | other, | |
const char * | name = 0 | |||
) |
Definition at line 48 of file RooGounarisSakurai.cc.
00049 : 00050 RooAbsPdf(other,name), 00051 x("x",this,other.x), 00052 mean("mean",this,other.mean), 00053 width("width",this,other.width), 00054 spin("spin", this, other.spin), 00055 radius("radius", this, other.radius), 00056 mass_a("mass_a", this, other.mass_a), 00057 mass_b("mass_b", this, other.mass_b) 00058 { 00059 }
virtual RooGounarisSakurai::~RooGounarisSakurai | ( | ) | [inline, virtual] |
virtual TObject* RooGounarisSakurai::clone | ( | const char * | newname | ) | const [inline, virtual] |
Definition at line 30 of file RooGounarisSakurai.hh.
References RooGounarisSakurai().
00030 { 00031 return new RooGounarisSakurai(*this,newname); 00032 }
Double_t RooGounarisSakurai::dFunction | ( | ) | const [private] |
Definition at line 169 of file RooGounarisSakurai.cc.
References KFunction(), mass_a, mass_b, and mean.
00170 { 00171 // assume that the pion mass is the average of the two pion masses used. 00172 Double_t mpi = 0.5*(mass_a + mass_b); 00173 Double_t mpi2 = mpi*mpi; 00174 Double_t kfunc = KFunction(mean); 00175 Double_t kfunc2 = kfunc*kfunc; 00176 00177 Double_t logCoeff = (3*mpi2)/(M_PI*kfunc2); 00178 Double_t one = (mean + 2*kfunc)/(2*mpi); 00179 Double_t two = mean/(2*M_PI*kfunc); 00180 Double_t three = (mpi2*mean)/(M_PI*kfunc2*kfunc); 00181 00182 return (logCoeff * log(one) + two - three); 00183 }
Double_t RooGounarisSakurai::dhds | ( | ) | const [private] |
Definition at line 110 of file RooGounarisSakurai.cc.
References hFunction(), KFunction(), and mean.
Referenced by fFunction().
00111 { 00112 if(mean == 0.0) return 0.0; 00113 Double_t k = KFunction(mean); 00114 if(k == 0.0) return 0.0; 00115 Double_t h = hFunction(mean); 00116 Double_t m0_2 = mean*mean; 00117 return h*( 1.0/(8.0*k*k) - 1.0/(2.0*m0_2)) + 1.0/(2*M_PI*m0_2); 00118 }
Double_t RooGounarisSakurai::evaluate | ( | ) | const [protected] |
Definition at line 62 of file RooGounarisSakurai.cc.
References fFunction(), Gamma(), mass_a, mass_b, mean, and x.
00063 { 00064 Double_t arg= x*x - mean*mean - fFunction(x); 00065 Double_t gammaf = mean*Gamma(); 00066 00067 // return (1 + d * width/mean)*(1 + d * width/mean) / (arg*arg + gammaf*gammaf); 00068 // the 1-dGamma_0/m_0 term is constant and can be ignored. RF will deal with the 00069 // normalisation properly. 00070 if(x < (mass_a + mass_b)) return 0; 00071 else return x*x / (arg*arg + gammaf*gammaf); 00072 }
Double_t RooGounarisSakurai::fFunction | ( | Double_t | X | ) | const [private] |
Definition at line 136 of file RooGounarisSakurai.cc.
References dhds(), hFunction(), KFunction(), mean, and width.
Referenced by evaluate().
00137 { 00138 /* 00139 * Argument is X = sqrt(s) 00140 */ 00141 Double_t grad = dhds(); 00142 Double_t h_s = hFunction(X); 00143 Double_t h_m0 = hFunction(mean); 00144 Double_t k_s = KFunction(X); 00145 Double_t k_m0 = KFunction(mean); 00146 if(k_m0 == 0.0) return 0.0; 00147 Double_t k2_m0 = k_m0*k_m0; 00148 Double_t k3_m0 = k2_m0*k_m0; 00149 Double_t mean2 = mean*mean; 00150 00151 Double_t func = k_s*k_s*(h_s - h_m0) + (mean2 - X*X)*k2_m0*grad; 00152 return func * width*mean2 / k3_m0; 00153 }
Double_t RooGounarisSakurai::FFunction | ( | Double_t | X | ) | const [private] |
Definition at line 97 of file RooGounarisSakurai.cc.
References spin.
00098 { 00099 /* 00100 * These are the Blatt-Weisskopf form factors. The argument 00101 * X = sqrt(s) 00102 */ 00103 if(spin==0) return 1.0; 00104 if(spin==1) return 1.0/(1 + X*X); 00105 if(spin==2) return 1.0/(9 + 3*X*X + X*X*X*X); 00106 return 1.0; 00107 }
Double_t RooGounarisSakurai::Gamma | ( | ) | const [private] |
Definition at line 75 of file RooGounarisSakurai.cc.
References KFunction(), mean, spin, width, and x.
Referenced by evaluate().
00076 { 00077 /* 00078 * This is the mass (and momentum) dependent width 00079 * For the GS model, there is no Blatt-Weisskopf FF ratio 00080 */ 00081 Double_t kx = KFunction((double)x); 00082 Double_t km = KFunction(mean); 00083 Double_t rk = 0.0; 00084 if(km!=0){ 00085 rk = (kx/km); 00086 if(spin ==1){ 00087 rk = rk*rk*rk; 00088 } 00089 if(spin ==2){ 00090 rk = rk*rk*rk*rk*rk; 00091 } 00092 } 00093 return width*(mean/x)*rk; 00094 }
Double_t RooGounarisSakurai::hFunction | ( | Double_t | X | ) | const [private] |
Definition at line 121 of file RooGounarisSakurai.cc.
References KFunction(), mass_a, and mass_b.
Referenced by dhds(), and fFunction().
00122 { 00123 /* 00124 * Argument X = sqrt(s) 00125 */ 00126 if(X == 0.0) return 0.0; 00127 // assume that the pion mass is the average of the two pion masses used. 00128 Double_t mpi = 0.5*(mass_a + mass_b); 00129 Double_t k = KFunction(X); 00130 00131 Double_t theLog = log( (X + 2.0*k) / (2.0* mpi) ); 00132 return (2.0*k/(M_PI*X))*theLog; 00133 }
Double_t RooGounarisSakurai::KFunction | ( | Double_t | X | ) | const [private] |
Definition at line 156 of file RooGounarisSakurai.cc.
References mass_a, and mass_b.
Referenced by dFunction(), dhds(), fFunction(), Gamma(), and hFunction().
00157 { 00158 /* 00159 * This is momentum calculation 00160 * Argument X = sqrt(s) 00161 */ 00162 if(X==0) return 0; 00163 Double_t massone = sqrt(1 - (mass_a + mass_b)*(mass_a + mass_b)/(X*X)); 00164 Double_t masstwo = sqrt(1 - (mass_a - mass_b)*(mass_a - mass_b)/(X*X)); 00165 return X/2.0 * massone * masstwo; 00166 }
RooRealProxy RooGounarisSakurai::mass_a [protected] |
Definition at line 42 of file RooGounarisSakurai.hh.
Referenced by dFunction(), evaluate(), hFunction(), and KFunction().
RooRealProxy RooGounarisSakurai::mass_b [protected] |
Definition at line 43 of file RooGounarisSakurai.hh.
Referenced by dFunction(), evaluate(), hFunction(), and KFunction().
RooRealProxy RooGounarisSakurai::mean [protected] |
Definition at line 38 of file RooGounarisSakurai.hh.
Referenced by dFunction(), dhds(), evaluate(), fFunction(), and Gamma().
RooRealProxy RooGounarisSakurai::radius [protected] |
Definition at line 41 of file RooGounarisSakurai.hh.
RooRealProxy RooGounarisSakurai::spin [protected] |
RooRealProxy RooGounarisSakurai::width [protected] |
RooRealProxy RooGounarisSakurai::x [protected] |