40 inline double a(
int p,
int l,
int m) {
43 return p%2==0 ?
r : -
r ;
50 _l1(1),_m1(1),_l2(0),_m2(0)
60 , _ctheta(
"ctheta",
"ctheta", this, ctheta)
61 , _l1(
l),_m1(
m),_l2(0),_m2(0)
71 , _ctheta(
"ctheta",
"ctheta", this, ctheta)
72 , _l1(l1),_m1(m1),_l2(l2),_m2(
m2)
80 , _ctheta(
"ctheta", this, other._ctheta)
81 , _l1(other._l1), _m1(other._m1)
82 , _l2(other._l2), _m2(other._m2)
94 double ctheta = std::max(-1., std::min((
double)
_ctheta, +1.));
100 throw std::string(
"RooLegendre: ERROR: This class require installation of the MathMore library") ;
110 return range == 0 || strlen(range) == 0
159 if (
_m1==0&&
_m2==0)
return 1;
161 if (
_l1<3&&
_l2<3)
return 1;
166 inline double maxSingle(
int i,
int j) {
174 static const double m2[3] = { 3,3 };
static double p1(double t, double a, double b)
static double p2(double t, double a, double b, double c)
double pow(double, double)
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Bool_t matchArgs(const RooArgSet &allDeps, RooArgSet &numDeps, const RooArgProxy &a) const
Utility function for use in getAnalyticalIntegral().
RooArgSet is a container object that can hold multiple RooAbsArg objects.
virtual Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
Double_t evaluate() const
TODO: check that 0<=m_i<=l_i; on the other hand, assoc_legendre already does that ;-) Note: P_0^0 = 1...
virtual Double_t analyticalIntegral(Int_t code, const char *rangeName=0) const
this was verified to match mathematica for l1 in [0,2], m1 in [0,l1], l2 in [l1,4],...
virtual Double_t maxVal(Int_t code) const
Return maximum value for set of observables identified by code assigned in getMaxVal.
virtual Int_t getMaxVal(const RooArgSet &vars) const
Advertise capability to determine maximum value of function for given set of observables.
RooRealProxy is the concrete proxy for RooAbsReal objects A RooRealProxy is the general mechanism to ...
double assoc_legendre(unsigned l, unsigned m, double x)
Computes the associated Legendre polynomials.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
static constexpr double m2
Double_t Factorial(Int_t i)
Compute factorial(n).
Double_t Gamma(Double_t z)
Computation of gamma(z) for all z.