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
143 for (
int p1=0; 2*p1 <=
_l1-
_m1 ;++p1) {
145 for (
int p2=0; 2*p2 <=
_l2-
_m2 ; ++p2) {
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 };
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.