RooRelBreitWigner Class Reference

#include <RooRelBreitWigner.hh>

List of all members.

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


Detailed Description

Definition at line 9 of file RooRelBreitWigner.hh.


Constructor & Destructor Documentation

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]

Definition at line 26 of file RooRelBreitWigner.hh.

00026 { }


Member Function Documentation

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.

References radius, and spin.

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 }


Member Data Documentation

RooRealProxy RooRelBreitWigner::mass_a [protected]

Definition at line 34 of file RooRelBreitWigner.hh.

Referenced by getQ().

RooRealProxy RooRelBreitWigner::mass_b [protected]

Definition at line 35 of file RooRelBreitWigner.hh.

Referenced by getQ().

RooRealProxy RooRelBreitWigner::mean [protected]

Definition at line 31 of file RooRelBreitWigner.hh.

Referenced by evaluate(), and getWidth().

RooRealProxy RooRelBreitWigner::radius [protected]

Definition at line 33 of file RooRelBreitWigner.hh.

Referenced by getFF().

RooRealProxy RooRelBreitWigner::spin [protected]

Definition at line 36 of file RooRelBreitWigner.hh.

Referenced by getFF(), and getQterm().

RooRealProxy RooRelBreitWigner::width [protected]

Definition at line 32 of file RooRelBreitWigner.hh.

Referenced by getWidth().

RooRealProxy RooRelBreitWigner::x [protected]

Definition at line 30 of file RooRelBreitWigner.hh.

Referenced by evaluate(), and getWidth().


The documentation for this class was generated from the following files:
Generated on 30 Oct 2013 for RooRarFit by  doxygen 1.4.7