37    inline double a(
int p, 
int l, 
int m) {
 
   40        return p%2==0 ? 
r : -
r ;
 
   44      if (m1 < 0 || m2 < 0) {
 
   45        throw std::invalid_argument(
"RooLegendre: m coefficients need to be >= 0.");
 
   47      if (
l1 < m1 || 
l2 < m2) {
 
   48        throw std::invalid_argument(
"RooLegendre: m coefficients need to be smaller than corresponding l.");
 
   56  _l1(1),_m1(1),_l2(0),_m2(0)
 
 
   67 , _l1(
l),_m1(
m),_l2(0),_m2(0)
 
 
   77 , _l1(
l1),_m1(m1),_l2(
l2),_m2(m2)
 
 
   98  double ctheta = std::max(-1., std::min((
double)
_ctheta, +1.));
 
 
  111void compute(  
size_t batchSize, 
const int l1, 
const int m1, 
const int l2, 
const int m2,
 
  126  for (
size_t i=0; i<batchSize; i++) {
 
  129    } 
else if (
TH[i] >= 1.0) {
 
  157        ? std::abs(
x.min() + 1.) < 1.e-8 && std::abs(
x.max() - 1.) < 1.e-8
 
  158        : std::abs(
x.min(
range) + 1.) < 1.e-8 && std::abs(
x.max(
range) - 1.) < 1.e-8;
 
  205    if (
_m1==0&&
_m2==0) 
return 1;
 
  207    if (
_l1<3&&
_l2<3) 
return 1;
 
 
  220        static const double m2[3] = { 3,3 };
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Abstract base class for objects that represent a real value and implements functionality common to al...
bool 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.
std::span< const double > at(RooAbsArg const *arg, RooAbsArg const *caller=nullptr)
std::span< double > output()
Compute the associated Legendre polynomials using ROOT::Math::assoc_legendre().
double evaluate() const override
Note: P_0^0 = 1, so P_l^m = P_l^m P_0^0.
Int_t getMaxVal(const RooArgSet &vars) const override
Advertise capability to determine maximum value of function for given set of observables.
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
this was verified to match mathematica for l1 in [0,2], m1 in [0,l1], l2 in [l1,4],...
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=nullptr) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
void doEval(RooFit::EvalContext &) const override
Base function for computing multiple values of a RooAbsReal.
double maxVal(Int_t code) const override
Return maximum value for set of observables identified by code assigned in getMaxVal.
double assoc_legendre(unsigned l, unsigned m, double x)
Computes the associated Legendre polynomials.
double legendre(unsigned l, unsigned m, double x)
Double_t Factorial(Int_t i)
Computes factorial(n).
Double_t Gamma(Double_t z)
Computation of gamma(z) for all z.