#include <RooRelBreitWigner.hh>
Public Member Functions | |
RooRelBreitWigner (const char *name, const char *title, RooAbsReal &_x, RooAbsReal &_mean, RooAbsReal &_width, RooAbsReal &_radius, RooAbsReal &_mass_a, RooAbsReal &_mass_b, RooAbsReal &_spin) | |
RooRelBreitWigner (const RooRelBreitWigner &other, const char *name=0) | |
virtual TObject * | clone (const char *newname) const |
virtual | ~RooRelBreitWigner () |
Protected Member Functions | |
Double_t | evaluate () const |
Protected Attributes | |
RooRealProxy | x |
RooRealProxy | mean |
RooRealProxy | width |
RooRealProxy | radius |
RooRealProxy | mass_a |
RooRealProxy | mass_b |
RooRealProxy | spin |
Private Member Functions | |
Double_t | getWidth () const |
Double_t | getQterm (Double_t q, Double_t q0) const |
Double_t | getFF (Double_t q) const |
Double_t | getQ (Double_t mass) const |
Definition at line 9 of file RooRelBreitWigner.hh.
RooRelBreitWigner::RooRelBreitWigner | ( | const char * | name, | |
const char * | title, | |||
RooAbsReal & | _x, | |||
RooAbsReal & | _mean, | |||
RooAbsReal & | _width, | |||
RooAbsReal & | _radius, | |||
RooAbsReal & | _mass_a, | |||
RooAbsReal & | _mass_b, | |||
RooAbsReal & | _spin | |||
) |
Referenced by clone().
RooRelBreitWigner::RooRelBreitWigner | ( | const RooRelBreitWigner & | other, | |
const char * | name = 0 | |||
) |
Definition at line 54 of file RooRelBreitWigner.cc.
00055 : 00056 RooAbsPdf(other,name), 00057 x("x",this,other.x), 00058 mean("mean",this,other.mean), 00059 width("width",this,other.width), 00060 radius("radius",this,other.radius), 00061 mass_a("mass_a",this,other.mass_a), 00062 mass_b("mass_b",this,other.mass_b), 00063 spin("spin",this,other.spin) 00064 { 00065 }
virtual RooRelBreitWigner::~RooRelBreitWigner | ( | ) | [inline, virtual] |
virtual TObject* RooRelBreitWigner::clone | ( | const char * | newname | ) | const [inline, virtual] |
Definition at line 23 of file RooRelBreitWigner.hh.
References RooRelBreitWigner().
00023 { 00024 return new RooRelBreitWigner(*this,newname); 00025 }
Double_t RooRelBreitWigner::evaluate | ( | ) | const [protected] |
Definition at line 68 of file RooRelBreitWigner.cc.
References getWidth(), mean, and x.
00069 { 00070 Double_t temp = mean*getWidth(); 00071 RooComplex T(x*x,0.0); 00072 RooComplex denom(mean*mean-x*x,-1*temp); 00073 T = T /denom; // Transition probability 00074 return(T.abs2()); // Amplitude (arbitrary scale) 00075 }
Double_t RooRelBreitWigner::getFF | ( | Double_t | q | ) | const [private] |
Definition at line 99 of file RooRelBreitWigner.cc.
Referenced by getWidth().
00100 { 00101 00102 Double_t z = q * radius; 00103 Double_t result(1.0); 00104 00105 if (spin==1) { 00106 result = 1.0/(1+z*z); 00107 } else if (spin==2) { 00108 result = 1.0/(9 + 3*z*z + z*z*z*z); 00109 } 00110 00111 return (result); //square of the Blatt-Weisskopf form factor 00112 }
Double_t RooRelBreitWigner::getQ | ( | Double_t | mass | ) | const [private] |
Definition at line 115 of file RooRelBreitWigner.cc.
References mass_a, and mass_b.
Referenced by getWidth().
00116 { 00117 00118 if (mass < (mass_b+mass_a)) {return(0);} 00119 00120 const Double_t mDaugSumSq = (mass_b+mass_a)*(mass_b+mass_a); 00121 const Double_t mDaugDiffSq = (mass_b-mass_a)*(mass_b-mass_a); 00122 00123 Double_t q = sqrt((mass*mass-mDaugSumSq)*(mass*mass-mDaugDiffSq))/(2*mass); 00124 return(q); 00125 }
Double_t RooRelBreitWigner::getQterm | ( | Double_t | q, | |
Double_t | q0 | |||
) | const [private] |
Definition at line 92 of file RooRelBreitWigner.cc.
References spin.
Referenced by getWidth().
00093 { 00094 Double_t result = pow(q/q0,2*spin+1); 00095 return (result); // result = (q/q0)^(2*spin+1); 00096 }
Double_t RooRelBreitWigner::getWidth | ( | ) | const [private] |
Definition at line 78 of file RooRelBreitWigner.cc.
References getFF(), getQ(), getQterm(), mean, width, and x.
Referenced by evaluate().
00079 { 00080 Double_t q = getQ(x); 00081 Double_t q0 = getQ(mean); 00082 Double_t result(0.0); 00083 00084 if (q>0 && q0>0 && x>0 && mean>0) { 00085 result = width * getQterm(q,q0) * (mean/x) 00086 * (getFF(q) / getFF(q0)); 00087 } 00088 return (result); 00089 }
RooRealProxy RooRelBreitWigner::mass_a [protected] |
RooRealProxy RooRelBreitWigner::mass_b [protected] |
RooRealProxy RooRelBreitWigner::mean [protected] |
RooRealProxy RooRelBreitWigner::radius [protected] |
RooRealProxy RooRelBreitWigner::spin [protected] |
RooRealProxy RooRelBreitWigner::width [protected] |
RooRealProxy RooRelBreitWigner::x [protected] |